Designing an Overkill workbench for home office - <AUTHOR> https://www.techprowd.com/home-office-project-overkill-workbench-series/ <comment><USER2> Glad to learn about cutlistoptimizer as I looked casually for something like that in the past. I'll have to figure out how to feed it from Fusion360.

Also interesting to learn that Japanese "2x4"s are in that ratio exactly. In the US, they're 1/2" under nominal size (so 1.5" by 3.5"). Makes it awkward to stack pieces together at times. (2 2x2s next to each other in the US are smaller than a 2x4.)

<comment><USER3> I knew about the smaller 2x4s, but now I have a sudden irrational anger that the 2x2s are not also smaller...

How 2x4s depreciate according to Twin Peaks: [0].

It appears in the US they start out at 2x4 and are trimmed down to make them look more finished.

[0][https://m.youtube.com/watch?v=txPcLOtbG3s](https://m.youtube.com/watch?v=txPcLOtbG3s)

EDIT to ask if OP means 'bigger' rather than 'smaller'?

<comment><USER2> I meant smaller. A US nominal 2x2 piece of framing lumber is 1.5" x 1.5" (for the same reason a 2x4 is 1.5" x 3.5")

If you still want to have anger, you can take solace that 2 1x2s do stack up to be (very close to) a 2x2, but 2 2x2s do not make a 2x4.

[https://www.archtoolbox.com/materials-systems/wood- plastic-c...](https://www.archtoolbox.com/materials-systems/wood-plastic- composites/dimensional-lumber-sizes-nominal-vs-actual.html)

<comment> frosted-flakes Actually, 2x2s are often or usually 1⅜" x 1⅜", which is rather annoying at times. I'm not sure if that has always been the case, but these days they're mostly only available in finger-joint spruce/fir/pine (presumably from offcuts of larger sizes), which might have something to do with it.

(Unlike solid 2x2s, which tend to twist and warp so much as to be completely useless, finger-joint 2x2s are super stable, and always come dead straight.)

<comment><USER4> Is there a sane explanation for why 2 = 1.375?

<comment><USER5> Lumber mills used to separate sawing and milling, so the roughsawn 2"x4" might have been about that (+-5 mm or so), but if you mill that square and (relatively) flat you're loosing a bunch of material. The milled lumber probably still got called 2"x4" since it was made from that. And then things shifted to milled lumber only, and the dimension change stuck.

</comment></comment></comment></comment></comment></comment><comment><USER6> I'm also in Japan and finding the right materials can be really tough when you're mainly learning from US-based makers and woodworkers. The fact that space is also very limited here (no garages or lawns...) also doesn't help with DIY stuff!

</comment><comment><USER7> I've been working on a workshop workbench, also using 20 series aluminum extrusion. Here's a picture of 2 of the 4 pieces: [https://photos.app.goo.gl/AMaBwa5pRBQfqDPQ7](https://photos.app.goo.gl/AMaBwa5pRBQfqDPQ7)

Aluminum extrusion is pretty nice to work with, though in retrospect I probably wouldn't do it again for the workbench. I was able to source it from China via Alibaba, and even with $200 shipping the pricing is way less than you can get it in the US. It was so inexpensive that I ordered a bunch extra in case I want to build a custom 3D printer or CNC or something. The extra was nearly free.

You can cut aluminum on woodworking tools. I went slow, and the cuts I got looked nearly as good as the factory cuts. They are quite sturdy.

My idea was that I could use the extrusion channels for mounting accessories or clamping. For example, mounting rollers when using it as an in/out feed table. A jig for flattening some raw wood using a router. Channels to lock the 4 into a 4x8 assembly table, but split it apart to store along the back and sides of the garage.

<comment><USER8> Looks good! What's the reason you say you wouldn't use aluminum next time?

<comment><USER7> I meant to go into a little more detail about that, got sidetracked. Part of it was cost/ease of obtaining. Part of it was COVID delays, but it took months to get the extrusion. Part of it is that it's an extra step; I had to build the extrusion frame and then build the panels and tongue them to fit the extrusion. As opposed to just putting together a simple cabinet and top. And if I damage it, it may involve significant disassembly to replace.

I kind of wanted to use it for stiffness and straightness, but in retrospect adding T track to wooden carcasses probably would have been a better option. Especially as 20 profile isn't the same size as typical T-track and associated tooling. It is stiff and strong and straight though.

</comment></comment></comment><comment><USER9> Something that bothers me a lot with desks: The legs sticking out and cutting into your foot space. Especially when you have an "L" desk and the legs stick out to block the entire "inner corner" bit.

I have a custom designed desk for my office that I had somebody help me fabricate. During that time I realized that, if you use a thick piece of hardwood, you can completely skip the inner legs. In my case it is 1.5" cherry wood.

Knowing that now, I've realized there are other benefits like my monitors shaking less because the desk is so rigid. I'd definitely recommend a solid, hardwood surface to anybody looking to get a custom work desk setup!

<comment><USER10> One of the best home-brewed desks I have used was fabricated from a large, and thick solid-core hardwood-veneer door. It rested on a two-drawer file cabinet at each end and was rock-solid. I used the pre-cut hole for the doorknob to pass the cabling from the workstation to the monitors, etc. I used it for a video-editing setup.

<comment><USER11> I've got that setup right now, but I find that the door on top of two-drawer HON file cabinets is just a bit (about 1.5 inches) too high for a normal office chair, and isn't doing my wrists any favors either. What I really need is a very thin desktop that's just as solid.

<comment><USER9> Pardon the delay. Check out something like this and it might fix your problem!

I love this w/ my desk because I can adjust my height all day :)

Rise UP Electric Adjustable Height Width Standing Desk Legs Frame Base. Ergonomic Motorized sit to Stand up Home Commercial Office Table. Dual 2 Motors. 4 Programmable Memory. Gray [https://smile.amazon.com/dp/B072XCVYVX/ref=cm_sw_r_cp_api_i_...](https://smile.amazon.com/dp/B072XCVYVX/ref=cm_sw_r_cp_api_i_bDzyFbGANXB1Z)

</comment></comment></comment></comment><comment><USER12> My favorite design idea: move your computer out of the room. My PC is in the next room / closet and the room is completely silent. In my case all I needed was a small hole for an HDMI and a USB cable.

<comment><USER13> If you don't need a high-end GPU, it's pretty easy to make a PC essentially silent. And even for a GPU it's possible if you're willing to sacrifice some performance and lower the power target. My desktop is not specifically designed to be silent, but the CPU and case fans are not audible from a typical distance.

<comment><USER5> Honestly I find people claiming something is "inaudible" or "not audible" on the internet extremely dubious, because every time I buy some cooler that people claim is "inaudible", I find it very audible. Either I have good ears, or people have very bad ears or loud environments. I assume in many of these cases people simply live in loud cities and have lost any feeling for what the word quiet means and regard PC fans whirling around at 20-25 dBA as quiet.

And in any case, with air cooling and components that aren't bottom-of-the- barrel, the quiet part ceases as soon as load is applied anyway. But that's what I'm here for, so a PC that's only quiet as long as I don't use it - pointless.

<comment><USER14> I have a standard computer without an extra video card (only the one on the MB) that I use as my main server running 30 services or so on docker.

It sits in the living room and I honestly do not hear it ever, except when it starts to vibrate for some reason sometimes (I will hunt that down someday)

This includes the time I slept a few times on the couch that is just next to it and I was annoyed by a small wall clock 5 meters away (I took the battery off and it is 11:15-ish now for 2 or 3 years, nobody noticed I think)

So that really may happen.

EDIT : I just checked and the clock is still off :)

</comment></comment></comment></comment><comment><USER15> I recently purchased an adjustable height workbench from Home Depot. I'm in the process of designing a subblememtal top so I can use it as an adjustable height desk (standing desk / regular desk).

I opted for with drawers but that might have been a mistake. I'll know soon.

[https://www.homedepot.com/p/Husky-46-in-Adjustable-Height- Wo...](https://www.homedepot.com/p/Husky-46-in-Adjustable-Height-Work-Table- with-2-Drawers-in-Black-HOLT4602B12/312063230)

<comment><USER16> I have two without the drawers. They are wonderful.

I think they will have a much longer lifespan than the electronically controlled sit/stand desks.

<comment><USER15> Yup. I have no interest in electric. Sooner or later they'll breakdown. On the other hand, this thing is sturdy and well made. It will always be work bench worthy. My only issue is that at full-height it's a bit short for my taste as a standing desk. But I knew that would be the case. That's where the supplemental top comes in.

If anyone is wondering, the hand crank is easy to turn. But if I had to I could trick it out so it's longer to add leverage and make it easier to turn.

The issue with the drawers is one of leg room. I would love to be able to use them but it might not workout that way. Give me a couple days for design. Then a buildout on the weekend.

<comment> frosted-flakes Could you take off the hand crank and fit a battery-powered drill in its place? A drill is almost a necessity to own for me, but is not something I use all that often, so if its storage place is chucked onto my desk, that would work just fine.

<comment><USER15> Con - It would have to be a drill with a lot of torque. The handle on the crank is approx 6". That's adequate for manual, but less would take significant effort. A knob would be tough (and would take too long). Of the drills I own, I'm not sure any of them could do it. But I also do not own anything super-duper top of the line.

Pro - Yes, the hand crank is removable. The socket the crank sits in is maybe a 3/8" hex (female). That is, getting the drill to interface w/ the socket should be straight forward. The concern is the drill being powerful enough.

\-- What if the crank was larger? Say 12" or more, like a wheel? Would that help you? Perhaps the drill could leverage that somehow? But my recommendation would be - if you are physically able to use it - to extend the crank to 2 feet (or more). That should help.

Let me know if you have any other questions.

<comment> frosted-flakes An impact driver could probably handle it fine, but I can't imagine the hammering action would be good for the mechanism.

Physically I would be able to use a hand crank just fine, but if it's anything like reclining the seat in my Volkswagen (a 3" knob on the seatback hinge, rather than the typical lever), I'd hate to do it more than once a day. If it's not convenient to use, I would likely just leave it in the down position permanently out of laziness. I really like the idea of a motorized adjustable desk with one-touch memory buttons, but the cost and usual implementation is not to my liking.

<comment><USER15> It's not a knob. The crank helps. Worst case, just extend the crank if the drill can't cut it.

Ideally, once I get used to standing, I don't intend to sit, sans the weekends.

<comment> frosted-flakes It's not the effort that would be a problem, it's the _time_. I like the crank seat adjustment on my VW when it comes to fine adjustability, but if I want to recline the seat back all the way it ... just ... takes ... way ... too ... long.

A longer crank handle would just make it take longer. And I don't want to stand full time. I tried that for a few weeks with a makeshift standing desk (a bunch of boxes stacked on top of my filing cabinet to the correct height) just to see if I would like it, and it was great for an hour or three, but I did not want to stand all day. Ideally, I'd be able to switch modes 2-4 times a day.

<comment><USER15> To clarify, I trying to mindful of the fact that you might have a disability of some sort.

The longer handle would make it faster because the same amount of energy would move the "dial" further.

That said, your actual question is: How many total crank rotations to get from lowest to highest?

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER17> It looks like this guy plans to do a lot of jumping up and down on his desk.

<comment><USER4> I wouldn't accept a desk that wouldn't hold my weight on top of its usual load anywhere close my home. When we were building a custom workbench in a Hackerspace, I put it in as requirement. You don't want your table to collapse when somebody sits on it.

<comment><USER18> Does that happen a lot?

<comment><USER4> It's enough that it happens once. When it does, you'll have a broken desk, and possibly a medical emergency on your hands.

</comment></comment></comment></comment><comment><USER19> Is there is link for his old UK desk build? Those steel tubes look boss, great look, and might be something I could tackle myself.

This new Japan project looks a lot more ambitious, good luck xD.

<comment><USER20> Looks like this: [https://simplifiedbuilding.co.uk/kits/desk- tables](https://simplifiedbuilding.co.uk/kits/desk-tables).

<comment><USER21> If you're ok with a slightly rougher finish on the casting but the same material properties as Kee Klamp, you can get cheaper store-brand variants of many of the common connector types from Global Industrial, Grainger, and other industrial suppliers.

Also, structural pipe is usually pretty dirty from production and I've found it's worth the cost to just have a local metal fabricator take care of the cleaning.

[https://www.globalindustrial.com/c/storage/fittings- framing-...](https://www.globalindustrial.com/c/storage/fittings-framing- rail/Kee-Klamp-Fittings)

</comment></comment></comment><comment><USER22> Looking forward to the follow up!

I have a question: what CAD software do you use? Would you recommend it to a beginner?

I'm desperate in that software space, everything seems either clunky, too complex (as a beginner) or overly expensive...

<comment><USER23> As a beginner (have been learning CAD since a week ago), I tried OpenSCAD then FreeCAD and found FreeCAD to be simple enough to get started. I followed the tutorial in FreeCAD Wiki[1], particularly the Toothbrush Head Stand[2] one (since my primary use was 3D printing) and could get comfortable with the software within a day or two.

[1]: [https://wiki.freecadweb.org/Tutorials](https://wiki.freecadweb.org/Tutorials)

[2]: [https://wiki.freecadweb.org/Toothbrush_Head_Stand](https://wiki.freecadweb.org/Toothbrush_Head_Stand)

<comment><USER24> For anyone else reading this:

The key thing to know in FreeCAD is that you almost always want to use the "Part Design" workbench. Then the workflow for creating a part starts with creating a "Body". The "Body" represents a single solid. The major features of your part are created with 2-dimensional sketches (either on the base planes, or on flat surfaces of the part, or on datum planes that you can define). The sketches are then "Padded" up to form a solid bit or "Pocketed" down to form holes in the solid bits (although there are other operations as well - Pad and Pocket are the most important).

Knowing that much should be enough to help you mentally plan your part, and then looking at the tutorials should be enough to learn how to use the UI. If you are reading this and are having trouble with FreeCAD please feel free to email me (address in bio) and I will try to help you.

I love FreeCAD and I wish it was the "default" hobbyist CAD instead of Fusion360.

<comment><USER25> That's the difference between freecad, sketch, and blender? I often see these names thrown around but not sure if each is used for a different purpose or if they're all the same but different people just prefer different software.

<comment><USER23> CAD is operated based on constraint, e.g. make a square box and say "I want this to be 30mm x 45mm with this point, add a fillet (rounded corner) then make it coincident with this point" and let the software figure out how to shape/position the object. While Blender is more of a free-hand drawing, e.g. make a square box, make it certain size, make a corner rounded, then move it to the a certain point.

Blender has ability to do simple constraint, but it's not its primary uses. FreeCAD can also be used the Blender way but the software will warn about being under-constraint. Both FreeCAD and Blender can export to STL file (used by CAD softwares), but Blender's STL usually need to be scaled to real world measurements. In case of 3D printing, this STL file can be imported into a slicer software such as PrusaSlicer, which outputs GCode to control the printer (e.g. X, Y, Z coordinates, extrusion temperature, etc.)

</comment></comment></comment></comment></comment><comment><USER26> I wonder what CAD software has been used. What I find most limiting is lack of good free / open source 2D and 3D software. I know there is FreeCAD and Blender, but the former doesn't have many features that exist in AutoCAD, and the latter doesn't really cover precise modeling use cases.

<comment><USER27> Sketchup is good enough for projects like these. It's a little awkward because it doesn't have the concept of a body, only faces. But that's only relevant if you're doing simulations on the design.

The biggest issue is that the web version is lacking but the desktop version hasn't been updated in like a decade. So be sure to have a shortcut list handy on another screen because you _have_ to use shortcuts if you're going to be remotely productive.

</comment></comment><comment><USER28> Some thoughts: You'll probably want some decent light under the hanging cabinets (plus some shading so you're not looking into them while sitting on your PC). Now is a good time to plan for the necessary cabling/switches/...

The overall intent of the structure seems to be "make it sturdy", and yes, overkill :P If you're like me and your monitor(s) are wobbling while typing (=programming = working), a simper solution is to get monitor arms and attach them NOT to the table. So either screw them directly to the wall, or (what I'm doing) to a piece of wood clamped to the window ledge, or something like that. (That's more a hint for the general HN crowd).

Have fun with the woodworking :)

<comment><AUTHOR> Regarding lighting, I will have some led white and of course some RGB strips too with overhang so no eye pain, and rgb under the small shelf too and etc :)

</comment></comment><comment><USER29> Check the weight rating on those Northern bayous. With a big monitor they won't hold the weight.

</comment><comment><USER30> That looks like a ridiculously cozy desk. I recently just moved myself and am in the process of designing my office, and might go with something like this instead of a flat, boring desk. Thank you for the inspiration.

</comment><comment><USER31> This is really impressive documentation, though I comment only that this reminds me of many objects I have constructed inside a room without thinking about how to remove it =)

Luckily yours does not appear to be concrete...

</comment><comment><AUTHOR> I have part 2 already written just waiting for youtube to process video, going to post a link to part 2 about shopping all the materials!

<comment><AUTHOR> Here go, part 2 of my series with Hyperlapse video. Enjoy! [https://www.techprowd.com/home-office-project-overkill- workb...](https://www.techprowd.com/home-office-project-overkill-workbench- series-part-2-going-shopping/)

</comment></comment><comment><USER32> Cool project. You really put some planning into it.

As others have mentioned S4S lumber in the US is not standardized in size. It can vary. If your using a softwood like Pine, it will also not be strait. This is going to cause your tight tolerances to be off. You should build this with lumber that has been fully dried, and fully straitened and taken to a lesser tolerance, something that can be plained and jointed down to.

<comment><USER27> S4S lumber is the most straight variety you can buy with the lowest variance in size.

<comment><USER33> Yeah, the SxS system typically isn't used for construction lumber, but a 2x4 is _technically_ S4S.

</comment></comment></comment><comment><USER34> I guess the room does not leave many options, but he picked the one with one window from behind where he sits.

</comment><comment><USER35> Watching this with interest. I'm living in Tokyo and would like to undertake a similar project.

</comment><comment><USER36> I built some really nice lab benches using the laminated "butcher block" tops. One has a 48"x72" work surface to accommodate deep test equipment and still have 24" of working depth. A 24"x72" shelf on top of that for more equipment. With the butcher block you don't need additional framing for support. Just sturdy legs at either end.

[https://www.globalindustrial.com/g/work- benches/components/t...](https://www.globalindustrial.com/g/work- benches/components/tops/butcher-block-work-bench-tops)

<comment><USER37> Ikea and Lumber Liquidators (in the US) both have very reasonably priced Oak and Birch butcher block. It makes for great table tops.

<comment><USER38> I believe Ikea stopped making solid wood butcher blocks years ago. They are all veneers now.

<comment><USER37> Looks like you're right about their countertops, they only have veneers listed. Too bad.

They do still have tabletops, although I incorrectly remembered it as Birch it's actually Beech: [https://www.ikea.com/us/en/p/gerton-tabletop- beech-50106773/](https://www.ikea.com/us/en/p/gerton-tabletop-beech-50106773/)</comment></comment></comment></comment>


Trapped in his own body - <AUTHOR> http://www.guardian.co.uk/world/2009/nov/23/man-trapped-coma-23-years

<comment><USER2> Debunked here:

[http://www.randi.org/site/index.php/swift-blog/783-this- crue...](http://www.randi.org/site/index.php/swift-blog/783-this-cruel-farce- has-to-stop.html)

(Link is getting a lot of traffic, may not be able to load it.)

</comment><comment><USER3> Oh, please. This is about as real as applied kinesiology.

If a facilitator is moving a vegetable's hand for him, isn't it obvious that it's complete bullshit?</comment>


D.C. police plan for future seizure proceeds years in advance - <AUTHOR> http://www.washingtonpost.com/investigations/dc-police-plan-for-future-seizure-proceeds-years-in-advance-in-city-budget-documents/2014/11/15/7025edd2-6b76-11e4-b053-65cea7903f2e_story.html?hpid=z4 <comment><USER2> To everyone who wants to answer "Fuck the police": No, don't.

If your hometown has a police department that acts like a gang:

Don't fuck the police. Don't date, them, either.

Don't sell to police. If they want groceries or gas, let them have to explicitly confiscate the stuff.

Don't talk to police officers unless they force you. Don't talk to them at all when they are off duty.

There are two ways a community can fight against a mafia -- a shooting war, or comprehensive shunning. Guess which works better in the long term?

<comment><USER3> In some places, not selling to police is illegal discrimination.

For example, in California it is a violation of the Unruh Civil Rights Act. See Long v. Valentino (1989). [http://www.lawlink.com/research/caselevel3/66962](http://www.lawlink.com/research/caselevel3/66962) . A police offer attended a public ACLU meeting. Once the ACLU organizers discovered that this was the case, they told the officer to leave. The trial established that this was illegal discrimination under Unruh.

> And defendants' attorneys correctly agreed at oral argument that an > announcement such as "You can't eat in my diner because you are a lawyer, > bricklayer, female, or Indian chief" would be actionable under the Unruh > Act, although words alone were the means employed to effect unlawful > discrimination. (See Koire v. Metro Car Wash (1985) 40 Cal.3d 24, 35-36 [219 > Cal.Rptr. 133, 707 P.2d 195]; Marina Point, Ltd. v. Wolfson (1982) 30 Cal.3d > 721, 726 [180 Cal.Rptr. 496, 640 P.2d 115, 30 A.L.R.4th 1161].) > Nevertheless, defendants do urge an exception for on duty police officers, a > proposition we consider in the following section.

...

> At the same time, however, police officers are literally on duty 24 hours a > day under California law. (See People v. Corey (1978) 21 Cal.3d 738, 746 > [147 Cal.Rptr. 639, 581 P.2d 644]; People v. Derby (1960) 177 Cal.App.2d > 626, 631 [2 Cal.Rptr. 401]; Pen. Code, ?? 142, 830.1.) And they are as much > entitled to the protections of the Unruh Act as any other citizen. They may > not be refused service in a restaurant, denied an apartment, or ejected from > a public meeting merely because of their occupation, whether working a shift > or on vacation. We find defendants' position on this point, at least as > articulated at oral argument, to be as reprehensible as the police abuses > decried above. Police officers as individuals have rights, too, and can > bring actions for violations of those rights even though their injury has > arisen in some way related to the performance of their duties. (City of Long > Beach v. Bozek (1982) 31 Cal.3d 527, 538, fn. 9 [183 Cal.Rptr. 86, 645 P.2d > 137].)

> A somewhat different problem is presented by the contention that a police > officer on a mission to spy on individuals and organizations holding a > public meeting may be excluded, however. We agree that is not quite the same > as refusing to serve a beat cop a cup of coffee because the owner does not > like police. ...

BTW, compare your "Don't talk to them at all when they are off duty." to the above mention that they are "literally on duty 24 hours a day".

<comment><USER2> You can say "I do not feel safe interacting with someone who has a firearm, please come back without". That means you have to be consistent about it, of course, and also kick out other members of the public who have a weapon.

That's legitimate because it has nothing to do with race, gender, ethnicity, or occupation - a lot of stores have "no firearms allowed" signs, you just have to add "absolutely no exceptions".

It's also the same logic behind asset forfeiture... you don't have a problem with a person, you have a problem with a thing. So, +1 to poetic justice I guess.

If your business is internet-only, I guess it doesn't work.

<comment><USER3> While it's true that some police officers do carry a gun, not all do so. Your original call was "Don't sell to police", not "Don't sell to those carrying a gun." You are using that as a proxy workaround. However, it likely won't work as I believe the laws regarding "no firearms allowed" signs exempt law enforcement from following those signs.

(Consider, for example, the difficulty of entering a business where the business owner is sniping passer-bys and has also posted "no firearms allowed" signs on the entrances.)

FWIW, the Unruh Civil Rights Act is broader in scope than Title III of the Civil Rights Act, which I believe is what you are referring to. For example, it also includes discrimination against someone "who wore long hair and dressed in an unconventional manner".

My point remains: it _may_ be illegal for a business to discriminate against someone based on their occupation. It's best to check with the laws before carrying out your proposed social rejection scheme, if only to have an idea of the possible consequences.

</comment></comment></comment></comment><comment><USER4> If cities arent allowed to include projected seizure revenue in future budgets, but D.C. has budgeted for their seizure revenue through 2019, whats going to give this new reform any teeth? Whats the difference in flouting one law or two?

</comment><comment><USER5> All, or maybe most, well and good. Not sure if re-directing the proceeds from police to general funds will eliminate conflicts of interest.

Instead, the incentives to seize assets might well expand now that the legislative power will be tasting the goodies.

I know at least one cop who will vouch that at least one place he worked enforced a quota system for traffic tickets.

If you believe such pressure would not extend to asset seizure, you might want to cut back on your drug consumption.

</comment><comment><USER6> every six months have a citizen ballot voting whether to return funds seized or allow the department to use the funds for specified purposes

keep - 2 million in cash from a child pornography ring

return - 2500$ taken from an individual pulled over for a traffic violation without a citation or criminal charge

if the funds are voted to be returned then the department has to pay interest to the original owner of the seized assets

set the interest's equivalent to something that remains contemporary over time, alike a 401k investment equivalent, or if the funds were in an IRA, etc.

<comment><USER3> From the article: "Since 2009, D.C. officers have made more than 12,000 seizures under city and federal laws"

That's 2,000 per year, or 1,000 per six months.

Do you think a citizen ballot with 1,000 items on it will be a meaningful check on police powers?

Also, "from a child pornography ring" is likely incorrect. It should more likely be "from what is claimed to be a child pornography ring".

Otherwise the ballot will say "$15,000 from a drug dealer" even if it's better described as "$15,000 from someone the officer thinks might be a drug dealer but doesn't have any real evidence other than that drug dealer carry a large amount of cash."

<comment><USER6> i agree the idea is fleshed superficially, child pornography is pretty easy to get people to rally against where as drug issues enter grey areas of ethics and morality..

i am more interested in the idea of punishment for improper use of this and other vague laws as a method of deincentivising abuse

i also think the logic of 'there are too many instances to be able to regulate' is flawed and incentivises the offenders to be more aggressive

a possible solution to volume could be only deal in values less than a certain threshold and raise said threshold with each vote depending on number of instances until all instances are voted on

you could backlog previous periods of unvoted instances into later months with lower number of instances

the goal is to reduce the number of instances so this issue will hopefully solve itself

as for terse yet comprehensive descriptions of the events that led to the forfeiture there is room for a discussion on how best to handle that

the recent vote in my city carried with it a number of numbered and alphabetized bills that carried a sentence or two description on the ballot i figured something similar

imperfect but better than 'well, its out of control so let's hope it just rights itself'

<comment><USER3> Your proposals are untenable. If my $20,000, which I got from friends and family to buy a backhoe loader for my contracting work, is confiscated for up to 6 months, then that's a huge pain in my life and career. If my car is confiscated then that's a huge impact on my ability to get to work.

If you then "backlog previous periods of unvoted instances into later months with lower number of instances" it becomes worse.

Prohibit civil forfeiture. It's much easier.

If you want citizen oversight, get a citizen review board, and require that the putative owner is allowed to have a public defender. And make sure the public defender's office is sufficiently funded.

</comment></comment></comment></comment><comment><USER7> How about funds raised from the confiscated property go towards paying down the national debt for federal confiscations, and offset appropriated federal taxes for state confiscations?

<comment><USER8> How about we just stop letting them steal from us?

</comment></comment><comment><USER9> If this isn't stopped soon next they will go after your 401ks like in eastern Europe and then your bank accounts like Cyprus.

The Constitution means nothing to these thieves.

</comment><comment><USER10> Even in city general fund creates the same conflict of interest. Forfeited property should be destroyed.

<comment><USER3> Okay, so the forfeited car is smashed into a cube. It's destroyed as a car, but not destroyed as a collection of potentially useful atoms.

What then? Do they sell the metal? Or does the metal recycling center get to profit from the free lump of metal on their doorstep?

Individually, the same applies for the parts. The battery is easily recycled for the lead, and under environmental laws can't simply be tossed into the trash heap. Who gets the profit from that?

It's a reduction of value, certainly, but I don't see how the value in a destroyed car goes to 0, so there will still be some conflict of interest.</comment></comment>


Recent events highlight an unpleasant scientific practice: ethics dumping - <AUTHOR> https://www.economist.com/science-and-technology/2019/02/02/recent-events-highlight-an-unpleasant-scientific-practice-ethics-dumping <comment><USER2> At one of my companies we were encouraged by our investors to do Phase I (and some Phase II) clinical trials in the Dominican Republic, Mexico, Angola, and other such places.

Back then we did do _device_ studies in Germany because the regulations were at the time quite lax (basically you just needed a German MD to decide it was OK and to actually use the device). They've since tightened up the rules.

Interestingly, in the device case, people who were squeamish about doing studies in poor countries with poor IRBs and such were perfectly happy to do the device studies in Germany. Not sure what to make of that.

<comment><USER3> Isn't it obvious? Germany is a respected western country, what goes there must be OK, even if not according to other western country's laws. And surely there are sanity checks at place there. Angola, on the other hand, is a poor developing country in third world and that just signals that something nefarious is going on. The participants probably felt doing stuff there would have no such sanity checks and it would also taint their reputation.

<comment><USER2> > Isn't it obvious?

Well isn't it condescending to assume that Angola can't have reasonable safety laws while Germany can?

Germany is hardly immune to corruption (as a German speaker I am well aware of this) and that indeed was part of the reason why this loophole (placed there at the behest of German medical device manufacturers) was ultimately removed (thanks, EU!) while plenty of poor countries manage to have non-corrupt governments and reasonable protections in place in particular against the depredations of foreign companies.

As it happens Angola this week removed the laws barring same sex relations, making them more liberal than bigger and so-called "more developed" countries like Russia, China, et al.

<comment><USER4> > Well isn't it condescending to assume that Angola can't have reasonable > safety laws while Germany can?

No. Germany is rich and has a high HDI, both of which correlate with safety laws that would be too expensive in poor countries.

</comment></comment></comment></comment><comment><USER5> Mostly unrelated but Are there "dark journals"? Ones which will only establish the knowledge validity of something and ignore the ethical standards?

<comment><USER6> Ignoring ethical standards _compromises_ the validity of any evidence and resulting claims: if we know that the author is willing to ignore ethical principles, we have no reason to believe that they aren't lying about their data/results. The baby goes out with the bathwater.

There are plenty of journals (and websites) that will publish junk research, but that's all it is -- junk.

<comment><USER7> > Ignoring ethical standards compromises the validity of any evidence and > resulting claims...

Unfortunately this logic is flawed. Ethical standards are a moving target not the same as scientific standards (also a moving target). For the validity of research I would be only interested in how far scientific standards are met.

To give a current example: a good chunk of scientists think that science should be open access - an ethical standard. They still have no general doubt in the validity of payed journals.

<comment><USER6> As 'daveFNbuck points out, believing in open access (as I do) _does_ entail an amount of skepticism towards the current journal system -- I _do_ think that the current incentive structure behind journal publishing threatens (if not totally compromises) the results within.

Ethical standards are indeed a moving target, and it's the job of applied ethics to determine that target at any given point. This is exactly how it _should_ be -- it gives prior research ethical historicity that we can revisit and evaluate to determine whether our priors are as sound as we think they are.

<comment><USER7> Open access was just one example.

While I'm all in all very happy with the current ethical standards, it's worth to point out that in the past science was significantly advanced by transgressing the ethical standards of the time (i.e. [1]) and it's easy to imagine botched ethics that are diametrical to scientific principles.

I stand firm that not following some ethical standard does not invalidate scientific results and consequently that OPs "dark journals" are very well possible (obviously not desirable).

[1] [https://en.wikipedia.org/wiki/Galileo_Galilei](https://en.wikipedia.org/wiki/Galileo_Galilei)

<comment><USER6> > it's worth to point out that in the past science was significantly advanced > by transgressing the ethical standards of the time

This misses the point: Gallileo's persecution was (and is) morally impermissible, even if the powers at the time claimed otherwise. "Transgressing the ethical standards of the time" isn't at all contentious, because the ethical standards were clearly _wrong_.

By contrast, there's no clear sense in which our current ethical standards (in the domain of scientific research) are actually _wrong_ \-- I might (and happen to) disagree with their metaethical foundations, but their actual practice is perfectly satisfactory: harm reduction, respect for fundamental rights, consideration against exploitative forces, &c.

It's perfectly consistent (and correct) to say that following _some_ misguided ethical standard will not invalidate scientific findings. What invalidates those findings is failing to obey our current, _very good_ ethical standards.

</comment></comment></comment></comment></comment></comment><comment><USER8> John le Carré's 2001 novel, "The Constant Gardener," described this practice in action nearly two decades ago.

</comment><comment><USER9> I was practicing at a medtech company in high school and the team really wanted to conduct tests in China, since the best product testing would be to shoot live pigs from a cannon into a concrete wall for treatment with the device afterward.

To my knowledge it never happened, because adhering to local ethics requirements would be better for seeking investments. But I also think the company went under because of lacking real world results in the limited trials that could be done.

<comment><USER10> I have to ask, what the hell was the treatment and what was it for exactly?

<comment><USER9> It was a device for use in trauma patients (car crashes being the most common use case). So that's what they wanted to test, and it is an unsafe procedure for trials, requiring sedation and risking the health of the patient, but possibly increasing positive outcomes in real cases.

I don't feel comfortable outing the company.

</comment></comment></comment><comment><USER5> Of course this has been happening for a while. When I was a child, I recall reading this in the newspaper when it was revealed that Johns Hopkins dodged normal process by testing drugs in India. [https://www.ncbi.nlm.nih.gov/pmc/articles/PMC1121689/](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC1121689/)

Interesting that you could simply test on people in India without establishing safety on animals first.

<comment><USER11> The history of the Tuskegee syphilis experiment along with others shows that you don't need to leave home to disregard ethical practices. At home or abroad, the rule is that abusive people and companies will target groups without a voice. It's the same reason people can be tortured or killed by police and jailers, and the public only pays lip service to reform. The only thing that really changes is who has no voice or power, and then becomes victims.

</comment></comment><comment><USER12> Someone should write a scifi story about alien ethics dumping.

</comment><comment><USER13> anyone care to pastebin a copy of the text?

<comment><USER14> [http://archive.is/nKaVz](http://archive.is/nKaVz)

</comment></comment><comment><USER15> This is the dark side of globalism and it's not just testing, it's every aspect of capitalism where it touches countries in the developing world. Everything from the food you buy to the clothes you wear is the result of horrific exploitation.

</comment><comment><USER16> "Ethics dumping" is a weasel word and I sincerely doubt is actually happening to any extent, if at all.

The examples in the article were stopped/got in trouble due to ethics or were not dumps.

But I wish it was common, the millions who die each year due to overly convoluted delays in testing and high prices it creates is a travesty.

People creating fake issues like "Ethics dumping" are the real villains in this world.</comment>


Groupon wanted $1B in breakup fees from Google - <AUTHOR> http://blogs.forbes.com/christophersteiner/2010/12/08/why-groupon-dumped-google-is-the-government-to-blame/

<comment> brown9-2 "The tradeoff for assenting to a period of future ambiguity, of course, is the promise of a large breakup fee if the deal were not to go through. "

Really? I would have thought the tradeoff was promise of the large _purchase price_.

</comment><comment><USER2> That fee seems a little excessive. I can see wanted an amount high enough to offset any disruption cause by the merge and then breakup, but that number is quite a bit higher than the disruption that would be caused, I'd think.

<comment><USER3> I agree. But I think that fee included putting a dollar value on cultural disruption as well.

</comment></comment><comment><USER4> The rumors circulating around the deal surely did more for their valuation than their business model. They should be paying Google.

<comment><USER5> Not sure - maybe they went disclosing more strategic items than they would have hoped... I'm really wondering.</comment></comment>


Pair Programming (give it a rest) - <AUTHOR> http://peniwize.wordpress.com/2013/11/17/pair-programming-give-it-a-rest/ <comment><USER2> I can't tell if this is sincere or parody [1].

If it's sincere, I think the author is attacking a rather extreme position.

Sometimes I like to write code by myself. Sometimes I like to pair on stuff. It depends on a lot factors. Is it complicated code? Do I know the language/framework/codebase well? Do I have a peer who knows more than I do about the problem I'm trying to solve? Is it important that multiple people be able to maintain this code? Etc. Like most things, pairing is a trade-off. It can have benefits, but it costs twice as much to write code.

That said, I think most people in our industry could benefit from pairing more, not less. Studies on pair programming show significant advantages in many circumstances [2]. If the author is sincere, I hope he'll keep an open mind about an occasional pairing session in the future.

1\. [http://en.wikipedia.org/wiki/Poe's_law](http://en.wikipedia.org/wiki/Poe's_law)

2\. [http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.101...](http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.101.824&rep=rep1&type=pdf)

<comment><USER3> If he was insincere, let me assure you that I could make all the same assertions and be entirely sincere. Pair programming is for mediocre programmers who need a lot of support. As a highly productive programmer with decades of successful projects behind me, I can assure you that pair programming would be disastrously disruptive to me; in fact my entire team would bail if it were pushed upon us.

<comment><USER4> > I can assure you that pair programming would be disastrously disruptive to > me

And so you refuse to do it even if it would be tremendous help for the other person. You won't pair with a colleague, because you don't like it, because it would "disrupt your work", even though you could cause the other person to become much more productive in much shorter time. You're not only being a jerk by doing so, you're actually undermining your project and putting your "decades of successful projects" at risk.

Yeah, highly rational decision, based on your dislike of (as per OP) interacting with other people. I'm so happy I never met you.

<comment><USER3> Projecting. I help other programmers routinely; I mentor high school students; I run architecture meetings for the group.

I don't get anything done if I'm made to waste large portions of my day hand- holding other programmers. My work is best done in a silent room with hours uninterrupted.

I'm sure you'd be glad to meet me; I don't dislike interaction at all. Lets just do it at a coffee shop.

</comment></comment></comment></comment><comment><USER5> At work we have a consultant in at the moment doing technical mentoring. He's gone right back to basics on a lot of stuff, unit testing, TDD, refactoring, pair programming etc. For a while it felt like a waste of time, I didn't need to be doing this etc. But a realisation is growing on me.

Shared understanding is vital, even more so in a team of "left brain" introverts. Whether it is establishing what everyone thinks TDD to be and the metrics to be extracted. Or whether it is making sure that at least one other person knows what your code does, that it is the best way of doing it, that you're not taking shortcuts or making "clever solutions" that aren't needed and sacrifice maintainability.

Being a professional isn't about being dismissive of 9 to 5 paycheck developers and their skills whilst slamming out loads of code. If your experience is all of introverts who want to be left alone I dread to think what your code review practices are like...

<comment><USER6> > At work we have a consultant in at the moment doing technical mentoring. > He's gone right back to basics on a lot of stuff

How did you go around to finding him? I feel we really need that where I work, go back to basics and take up some "good habits"[0], but without a consultant/trainer to suggest it feels like whining without contributing. Attempting cultural changes internally on a suggestion basis doesn't really work, people (me included) just go back to their previous stable state.

[0] both small scale, the testing and refactoring stuff, and larger-scale with system architecture.

<comment><USER7> I understand your frustration with trying to do this "internally", but stay positive and keep with it. If you (and like minded supporters) keep talking about "best practices", your peers _will_ notice and _will_ start playing with them in their work.

At our workplace, we have a monthly hour-long "Lunch and Learn" where we all meet to do three things: listen to someone share some interesting code they worked on that month (which helps to generate some enthusiasm and spread some knowledge around); talk together about a specific best-practice; collectively review some code with a focus on using that best-practice to improve the code. It is a very simple, low-cost, low-time-cost way to formalize the fact that you want everyone to pay attention to these things, and (in our case) has really stimulated a desire among the developers to improve their code practice.

To implement this, put someone in charge (or take charge yourself :) and just start asking people to contribute. You will probably find there is a lot more interest in this than you think.

Also, be sure to go easy on yourself and your peers as you try to change habits. If you look back at code you wrote, say, three years ago, you will probably say to yourself, "What was I thinking? I could write that so much better now." In the same way, three years from now you will be able to say, "What was I thinking? I could [test|commit|organize|pair-program|etc] that so much better now."

<comment><USER5> Cheers - I actually had a really good conversation in the pub on Friday with some other relatively junior staff, and we all came to a much better understanding of our goals and motivations, and how closely aligned they are.

It really drives the point - the social connections are what makes or breaks you in an organisation. Any meaningful change needs allies, needs to persuade people, and needs to deal with ego and politics. The people responsible for what you want to change are probably those currently in management roles! It's probably one of the harder transitions from academic/training when there are absolute truths, to business where things become much more complex.

</comment></comment></comment></comment><comment><USER8> I'm sorry, but I don't agree at all.

Part of writing good software is the ability to _interact_ with people. That requires certain social abilities and the ability to talk confidently to people about code, the same as pair programming.

Truly introverted developers may write elegant and beautiful code, but they generally need an abstraction layer between them and the user/customer, which can cause the most beautiful code to be wrong, because it doesn't fulfil the requirement.

Pairing with people improves code quality by forcing you to _explain_ your decisions, allowing you a better understanding of what you write, sharing knowledge of the codebase across the team, and preventing tangents that aren't what the client wants. It's not just about being more productive -- my personal opinion is it's actually _slower_ than 2 developers working separately -- but that doesn't make it less worthwhile.

<comment><USER9> I think you're missing the point of the article. The core of it is essentially: "being happy is one of the most important things in my life, and pair programming would make me unhappy; therefore I will not do it."

Yes, he does try to rationalize a little bit here and there, but overall I think that's it.

I don't at all believe that pair programming necessarily gives you a better end product. I think it _can_ , but I think it depends a lot on the project and individuals involved. Personally I'm not a fan. I'm not quite the hater that the OP is, but I, too, would likely look for a new job if my company suddenly required regular pair programming of everyone.

I think I'm pretty damn good at what I do. That's obviously a subjective statement, but I could back it up with some facts that would seem to indicate I know what I'm doing. If I paired with someone on certain projects, would it create a better outcome? I'm not sure. Maybe it would. Maybe it wouldn't. But I really don't care, because I'm certain I wouldn't enjoy the process. Does that potentially limit my greatness as a developer? Maybe. Maybe not. But that's where the happiness thing comes in. If pairing truly could make me a better developer, and there's nothing else that could, then I'm honestly totally fine not being the best developer I could be, because I wouldn't be happy while practicing my craft.

As an aside: I'm talking about two peers of roughly the same skill pairing. I'd be happy to pair with a junior dev for the purposes of mentorship or knowledge transfer. Actually, I think pairing with _anyone_ for the purpose of knowledge transfer is probably a good thing. I just wouldn't enjoy pairing as a fundamental part of working on a project.

</comment></comment><comment><USER10> I like to pair. I like to talk about pairing. I have worked with people who don't pair well. I worked with one person whose wife noticed that his entire personality changed for the worse when he tried to pair. He stopped pairing.

You don't like to pair. You don't want people to try to pair with you.

So far, I'm with you.

How do you get from there to "if you ever talk about pairing, you're incompetent and horrible"? I have trouble with that part.

</comment><comment><USER11> This whole article is predicated on the absurd straw man argument that there are legion pair programming evangelists ruining the software industry with their philosophy. In reality, even the people I know who practice pair programming only do so less than half the time. It's hardly an epidemic.

As an aside: I am pretty tired of people saying "I'm an introvert," when what they mean is "I'm an asshole." Even if you're introverted, you have the same responsibility as everyone else to communicate in order to get things done.

<comment><USER12> > I am pretty tired of people saying "I'm an introvert," when what they mean > is "I'm an asshole."

And I'm pretty tired of extroverts expecting everyone else to be like them and consider anyone "assholes" when they aren't.

<comment><USER11> That's not what's going on here. And I apologize for being pithy. My deeper point is that a few (ironically) vocal assholes make introverts look bad by using their supposed introversion as an excuse to be a dick.

</comment></comment></comment><comment><USER13> Introverted programmers have always coded with other people, communicating through emails, code reviews, bug hunts, source control comments, phone calls, brainstorming and planning sessions. "Pair programming" seems to be a modern fetish to get wallflowers to dance together in hopes they'll both write better code. It's awkward for the introverted. Brain power that should be going towards code is siphoned off into social interaction. Coding is an inherently creative act, unless you're just stamping out boilerplate code at the software factory, in which case pairing makes sense.

<comment><USER14> In a good pairing session, you are almost unaware that there's any social interaction going on. You and your pair are both in the zone, applying more than double the brainpower to the problem. The old saying is true, two heads are better than one. The only reason it's not effective with more than two is that the realtime communication breaks down.

<comment><USER15> People talk a lot about pair programming, but when have you ever read about how to do it. What are the mechanics of it? What should a member of a pair do or not do? I suspect that a lot of the problem with pair programming boils down to people who don't know how to do it that end up creating a bad social interaction and offending their partner.

</comment></comment></comment><comment><USER16> I think this is the nub of it: "the very small squeaky obnoxiously loud minority".

Most people really don't like being preached at, and the agile community is very preachy. They're also very certain that agile is best practice, while everything else is cowboy.

I'm confident at this point that a sizeable chunk of the agile mantra is pretty poor practice. TDD, for example, definitely seems worse than actually using your human intelligence to plan ahead and design.

I don't necessarily agree with this article. I think most programmers do want and benefit from some degree of collaboration on problems. Mostly at the start when they're figuring out what they should actually build. I certainly sympathise with it though. Sometimes I just wish agilists would shut up and go away.

<comment><USER17> There's nothing about TDD that prevents you from "using your human intelligence to plan ahead and design". I really don't understand why so many people think that.

The main point of TDD is organically "growing" modular and testable code. Also, after a session, you have unit and function tests for free, instead of having to implement them afterwards. Having a plan from the start, however, is beneficial with TDD as well, as long as you're flexible enough to modify it if necessary.

</comment></comment><comment><USER18> The problem isn't pair programming, per se. It's the forced nature of it in many locations. Every line of code has to be written/modified in a pair.

The irony? Pair programming has become a dogmatic process over the needs of the individual developer in many locations, yet is still considered a core Agile technique. That just isn't right.

Like the author, I'm more introverted. I prefer to code alone. Forced coding or working with others drains me. However, if assistance is needed--myself or others--I've no issues working in a temporary pair to solve a problem.

Pair programming wasn't intended to be an iron dictate of "you must". It was intended to be a "it's ok to ask for help if you have a problem, because working software is the goal".

<comment><USER14> You're right, anything's bad if it's forced on a team or applied dogmatically.

(Also I'd edit the last sentence to read proscriptively rather than historically: "Pair programming shouldn't be an iron dictate..." since that's really more interesting.)

</comment></comment><comment><USER19> Yes I too am an introvert. But saying _pair programming doesn 't work with introverts_ is not quite right. Introverts are not _no-talkers_ , they like talking about stuff that they love. They don't _come out and talk_ , but are truthful if you ask questions. So as a programmer introvert, I love discussing about programming, new tools and languages, etc.

Its OK if you hate Pair Programming. Its even OK if you hate it without even trying it. But just don't generalize it with being an introvert.

<comment><USER20> don't confuse being shy with being an introvert. Introversion has nothing to do with enjoying talking to people. it is actually about where you get your energy... for e.g do you feel exhausted after a day of social interactions and need alone time? or do you feel energized and are ready to hit the town? introverts would typically need aone time off to 'recharge'..

</comment></comment><comment><USER21> As a student, I support pair programming. Last semester, we did a six-man project building an client-server battleships game that offered singleplayer and multiplayer.

We had to create a strategy to manage the quality of the project and chose a task-based pair programming strategy. In those student projects it is often the case, that the better students do a rather big portion of the project while the others try to keep up. With pair programming this was not the case. Everyone developed on a similar level. Yes, it probably slowed down some of the developers, but for a student project, the main goal is to learn. And pair programming was a way to do that.

Also, our project quality really benefitted from this. After developing the basic server, client and game logic, we switched teams to do the next step. For example, the team that connected the client to the server would now have a person that knows the server side and one that ones the client side. This team changing was done on a regular basis and helped putting the software together. There were less problems with the code of different people working together than in most other projects and I believe, that pair programming was a big factor in that.

So, I can't speak for the work environment, but for learning to be a software developer, it really was a good experience.

<comment><USER22> You're arguing a point unrelated to the post. The author is saying that as a highly competent SE, paired programming would be a detriment to him due to his personality etc.

<comment><USER8> I know you're not agreeing in this statement, but I think part of anyones role as a senior SE is to help raise others to that level, even if it's to the detriment of his own productivity.

<comment><USER23> Well a cynic would say that in the case of the student assignment it was more about forcing everyone to put in the same number of hours than it was about efficient knowledge transfer.

</comment></comment></comment></comment><comment><USER24> A team's responsibilities go beyond delivering good software, a team must also ensure it is always improving in its ability to deliver software in future; raising the standards as individuals and as a group and sharing knowledge, patterns and practices. Pairing is an extremely effective way of achieving this, I've yet to see another way that even comes close.

Quite apart from his stubbornness around pairing, his broad-stroke presumptions about people who do pair, people who are introvert and people who are enthusiastic about sharing their patterns and practices smack of the worst kind of smug arrogance.

It's fine if the author isn't interested in the benefits of pairing, everyone's different. However I don't think I'd be particularly interested in working with him or hiring him.

</comment><comment><USER25> Even though I agree that pair programming is not necessary (I think it's useful, I sometimes do it and enjoy it, and sometimes I really need to work alone), I do not like how this post sounds. It does not sound like "pair programming is good, but I prefer to work alone and I think it's equally good", it's more like "I work for 20+ years in the industry and I'm highly qualified engineer and I don't want to work with people, so shut up all of you that try to encourage people to try different things". That does not prove any point, it's just a rant.

<comment><USER9> _That does not prove any point, it 's just a rant._

You do realize that the first line of the post is "this is a rant", right?

</comment></comment><comment><USER26> This is a little silly. As a developer, I love cutting code. I really don't care if I'm pair programming or not. I don't like to write tests nearly as much. If you swap in "write unit tests" in place of "pair programming", the article pretty much works the same, the one difference is the authors social anxiety.

So really, this isn't about pair programming, it's about the fact the the poster has social anxiety, and needs to address that. (And I need to stop posting on HN and write some tests).

<comment><USER3> You're projecting. I completely understand the OPs position; I concur 100%. You can dismiss it as some foolish antisocial whine if you like; or you could understand that his position is entirely valid.

If you've never gotten into the zone; if you've never spent an entire afternoon and missed meals and been utterly surprised at the clock when you come up for air; if you've never been productive at the level of a seriously skilled programmer, then I suppose you would dismiss this as a silly rant. But that says more about you than the OP.

<comment><USER14> If you've never gotten into the zone WITH a pair you're really missing out. It's a far more incredible experience than doing it yourself, just like many things... ;-)

</comment></comment></comment><comment><USER27> 20+ years of experience as a prima donna who refuses to work with others and can't even discuss code with another programmer isn't very impressive. With that attitude, the experience wouldn't be enough to qualify someone for an entry-level junior developer position anywhere that I've worked. In my experience, programmers who don't want anyone else to see their code and aren't willing to discuss it have good reason to hide it.

</comment><comment><USER28> I have no issue with four eyes looking at a problem for a bit. But I would never sit next to someone all day long every day. I have no trouble communicating when it's necessary but to me pair programming seems a complete waste of 50% of your bandwidth, with virtually no proof that you make it up in quality of output. If it works for your team fine, but don't expect that it means it works for everyone.

<comment><USER14> In my experience pairing works best when it forces you to focus. If you have only a two or three hour pairing session with someone, you're going to make sure you use it effectively. You're right, sitting next to someone all day long is a waste.

</comment></comment><comment><USER29> The OP clearly doesn't believe that he has a responsibility to teach those around him to be better. Imagine that you were the CEO of a company that had one great programmer and four average ones. Don't you think the CEO would want the great one to spread some of his/her knowledge? Now, imagine you were one of the four average developers, wouldn't it seem crazy that you sit three feet away from a great developer but never learn anything from him/her?

Do we want this to be an industry where only the self taught succeed? I don't. I believe there are still some things that I can learn from others. I believe I am obligated to help those around me get better- it should be part of the job description. Pair programming, if it does nothing else, does open up what is normally a solitary activity and gives people a chance to learn from others.

<comment><USER3> You're projecting. He never said any of that - he may spend his afternoons mentoring and building housing for lepers for all you know.

</comment></comment><comment><USER30> Why such a rant at all? If you can't change your job, change your job. Luckily for you, pairing shops are in the vast minority, I'd guess you'd have to go out of your way to find another one no matter where you live.

It's the same as any software practice: TDD, which form of typing, vim/emacs/IDE, OO, etc. Without solid measurable proof that it's best for your specific job/domain/team (basically impossible) it's all just preference anyway. And someone who hates OO is going to constantly find ways why OO is terrible.

So we gather into jobs and teams that all share the same religious faith on all the above mentioned. Interviews are basically the same as you get in any church: do you believe these core faiths about our doctrine, and are you cool? Great, you're in!

</comment><comment><USER31> I think that blog could have done with another pair of eyes.

</comment><comment><USER32> I don't see anything wrong with Pair Programming unless we overdo it.

Does this mean Code/Peer Reviews should be given a rest too?

<comment><USER9> Why put words in the author's mouth? He's talking about one specific thing he doesn't like. He hasn't given us any indication of his feelings on reviews, so there are no conclusions you can draw.

</comment></comment><comment><USER33> It sounds like this is a conversation you should have with your boss, and not really a pair programming problem.

A specific type of interaction is not for everyone, its clear you are not making any claims about it except for it doesn't work for your personality.

</comment><comment><USER34> He's a bit late to the party. The pair programming hype is long gone.

</comment><comment><USER35> Give it ten years, employers will make their underlings have radio transmitters implanted deep into their heads in order to communicate over great distances.

This is the future of pair programming... Hive programming.</comment>


10000 things all CS students should do before graduating - <AUTHOR> http://tagide.com/blog/2011/06/things-ics-students-should-do-before-graduating/ <comment><USER2> I'm a computer scientist, not a web monkey (FOOTNOTE). I'd say these are not the things all CS students should do before graduating. The field has much more to it.

How about:

1) add or modify a significant feature of a working kernel

2) write a toy programming language

3) program in a programming language with concurrent constructs (e.g., erlang)

4) study some theoretical area, develop a practical application based on the theory

I don't know, these are some things a CS student should aspire to. Setting up a WordPress blog and configuring a basic Apache instance? Yeah, good stuff-- but I would in no way attach computer scientist to these activities. It's like calling the Best Buy Geek Squad folks electrical engineers.

(FOOTNOTE let me caveat that I do on occasion, work as a web monkey.)

<comment><USER3> Stuff on the list gets you jobs. Your stuff doesn't.

<comment><USER4> I think you are being a little shortsighted. You may mean it doesn't get you jobs in the specific area that employs most of the people you share online/offline time with.

I'de bet most of the guys that programmed the operating system you were running when writing that post got paid for they job. The same goes for people developing compilers or VMs, like, you know, the one Python/PHP runs on... and don't get me started on database servers.

<comment><USER3> That is definitely true. But how many compiler and VM jobs are there? How many web monkey jobs are there? It's like automotive engineers, as opposed to mechanics and drivers.

Now, I realize that we're being trained as automotive engineers, but most of us get jobs driving. I think the blog post's advice is much more useful for that.

<comment><USER5> Good analogy, but then developers are more mechanics than drivers.

You can use your cool and deep automotive engineering knowledge to "do mechanics", but most of the time is not efficient cost/benefit wise. Most of the time it's more important to get the thing running in order to start the business.

<comment><USER3> That is what I am trying to say.

</comment></comment></comment></comment></comment></comment><comment><USER6> I think a lot of people here missed the point. This isn't a list of "stuff that will make you SUPER BALLER," it's a list of easy things that teach you very much and give you a lot of confidence for a very small amount of effort. Plus, all of these tasks are highly relevant in our web database-driven world. Not everyone wants to be Johnny Writes His Own C Compiler Geek, but every CS student SHOULD be able to configure LAMP.

<comment><USER7> While I totally agree with you, I don't think that: "1000 -Use a packet sniffer to learn about the network requests your computer does to your favorite game server." Is an easy thing to do. The first time I learned networking, packet encapsulation, protocols and so on, it took me a while to get the concepts. It's only after a few years of CS studying that I got fluent in wireshark (if that's even possible).

This is a list of hard things to do from a beginner, freshman, perspective. But they are also highly necessary if you want to work on fun stuff later on.

A sysadmin who doesn't understand pools of threads will go nowhere, same goes for a developpers who doesn't know what database replication implies.

<comment><USER8> Wireshark should be a required tool for any developer writing netcode. If you don't understand the OSI model, or how a 3-way handshake works, how can you possibly debug your code?

I've had to work with customers before who were writing code to send data over XML to a web server before who had no idea how to use tcpdump and Wireshark - it was unbelievable, but I was able to show them bugs in their code because I could see where the TCP conversation broke down.

<comment><USER9> tcpdump is also great, and I prefer it to wireshark.

I've learned how to read the packets coming through in real time, at an office environment. I can tell people "I don't even see the code anymore, all I see is blonde, brunette, redhead."

</comment></comment></comment></comment><comment><USER10> How is any of that _computer science_?

I mean, is there a list out there for astronomy students that includes, grind your own lenses?

<comment><USER11> That's the point. There's a general disconnect in a good amount of CS programs between the curriculum and reality. This post is trying to bridge the two.

I'd also like to add:

      10000 Learn to use source control, use it to store your new LAMP code on Github.
      10001 Start studying design: web, graphic, type.

<comment><USER10> I am wary of that sort of very specific advice. Why LAMP, just because it's fashionable? There are many, many other sorts of web stack alone, let alone the many, many other sorts of application. Same with GitHub (which I use myself, btw), there are plenty of others.

It just sounds like ESR's advice, to be a great hacker you should be just like me...

<comment><USER12> Sure, just because it's fashionable. X86 is fashionable, C++, Java, JavaScript, HTML, CSS. You definitely should try to become familiar with everything fashionable in our industry. Yeah they're all messy, but they are the reality of how things are done. People who think they don't need to are why we have the term "ivory tower".

</comment></comment></comment></comment><comment><USER13> It's an interesting list, but I do believe it lacks a lot of computer-specific things which I personally think people should do. For example

      - Build your own computer
      - Build your own (small) operative system
      - Build your own programming language

would be on my list of things a CS-student should do before graduating, because you will most likely get into problems where knowledge of the three things mentioned above will help you understand/solve the problem. Obviously, that list is not complete, but I think those are some of the more important points.

<comment><USER14> Building your own computer or your own operating system very rarely help, in my opinion, because the real systems you work on are so much more complex than the pretend stuff you build that you miss massive layers of complexity. It's far better to have a good knowledge of how modern systems work than waste years attempting to build such a system.

Similarly, I have no idea why you would build your own programming language. You're very rarely likely to run into a problem with closure conversion in a programming language you wrote, but you might run into a problem with peephole optimization that you would never get to implementing unless you have a PhD in PL.

<comment><USER15> > Similarly, I have no idea why you would build your own programming language.

So, I might be biased because I'm a wannabe languages geek, but I think studying PL really does give you a lot of insight. I think if more people tried to write their own language, there would be far fewer flame wars about inane things like syntax, and far fewer poorly argued debates about types.

Plus, learning about parsing is definitely practical and useful.

<comment><USER14> I'm doing research in PL, but as much as I like it I just don't think that designing your own PL is much of a benefit.

 _I think if more people tried to write their own language, there would be far fewer flame wars about inane things like syntax, and far fewer poorly argued debates about types._

I'd much rather people just leaf through some the PL research that already exists rather than try and invent their own. Most people don't even know what HM is.

 _Plus, learning about parsing is definitely practical and useful._

I completely disagree. Writing a parser is a character-building exercise. It ultimately wastes more time than its worth and you're better off using someone else's parsing system anyway.

<comment><USER15> Actually I think we basically agree, it's just a matter of degree. When I read "write your own language" I'm mostly thinking of the kinds of work you might do in an undergrad PL class, which I think works well as a kind of antidote to the Java monoculture. I agree that inventing and designing a custom language with no reference, in a vacuum, would probably not be helpful.

As for parsing, that was almost exactly my point, learning about parsing, and realizing what kind of work is involved, is just the experience you need to reject being assigned the writing of a custom XML parser by a clueless manager (true story).

</comment></comment></comment></comment></comment><comment><USER16> I'm a CS student, near the end, and let me add at least one or two things to this list:

\- Meet a lot of interesting students outside of CS

\- Go to at least one random social even that has no connection to CS

\- Minor in something non-technical, or at least take a few classes

Not to detract from CS at all, but it discourages me how many of my classmates spend 4 years doing nothing but computer science and never think/learn anything else and become even the slightest bit well-rounded. So many of them barely socialize at all for 4 years, even within CS, much less outside of it.

There's more to being a good student and having a good life than knowing the ins and outs of programming languages and kernels, and your career will benefit from being a little rounded.

<comment><USER17> I agree with this list, but let me add that when you say "Go to at least one random social even that has no connection to CS" I hope you mean "make a commitment to a social group that has no connection to CS".

Also w/ regards to "Minor in something non-technical, or at least take a few classes" I can't agree more. I am a CE, not CS, but close enough. Currently I am taking German, and I would say it is one of my favorite classes. It has completely changed my way of thinking about languages, including English.

To be honest, my involvement with student gov, fraternity, and German is what keeps me sane for my technical classes.

</comment></comment><comment><USER18> Why can't I down vote? That advice was horrid, and basically said 'learn all about buzz technology and blog stuff'.... Seriously, thats what they should be doing way LESS.. They should do more things such as the following: (My own biased list)

1\. Designing their own CPU (this will go along with learning memory management, paging, translations, etc) 2\. Learn about Linking and Loading 3\. Write Toy OS 4\. Learn C and x86 assembly 5\. Learn TCP/IP and OSI model well. 6\. Write some damn code and try to contribute to open-source 7\. Learn about application security (stack overflows, heap, etc.) 8\. Write your own API for anything to learn how to create consistent and easy to use code. 9\. Apply what you learn about an algorithm or data structur in a novel way to solve a practical problem. Who knows you may see something and say 'wow I could use that algorithm and apply it to finding words that rhyme' or something like that.... 10\. Please... have some damn system administration skills. Learn your way around a modern system be it linux, bsd, windows. 11\. Figure out why design patterns and OO aren't goddamn silver bullets for every issue. 12\. Christ sakes, learn some damn math. 13\. Stop trying to learn every damn language you see. Just because proggit/hackernews is buzzing about some new technology doesn't mean it is worth your time. Be different go against the grain.

... and other stuff I can't think of..

<comment><USER19> I agree, the advice is off mark.

Studying Computer Science should be about learning the fundamentals. Algorithms, Discrete Math, Operating Systems, Compilers, Computer Architecture, etc.

</comment></comment><comment><USER20> Silly me. I hesitated clicking on the link because I was affraid of reading a super long list.

<comment><USER21> Yeah, especially after I saw he'd increased from 1010 to 10000 items. That's a difference of 10101... right? I should've paid more attention to the binary subtraction section in class.

</comment></comment><comment><USER22> Let me compress this list, for those people in CS programs which focus on theoretical/more abstract paradigms, it is useful ( and fun ) to code. SO

10 Write code in <language> for <project> based on <technology/idea> on <platform>

20 goto 10

<comment><USER23> Maybe release it at some point? For me, actually _shipping_ things is often the hardest part...

</comment></comment><comment><USER9> I just finished my first year of Uni.

I'm spending the summer at an intership, where I'm writing very low level code. (For example, right now, I'm writing a utility to arping an address range. I've learned all about OSI, ethernet interfaces [I'm using BPFs [1]], etc.).

In my free time, I'm playing with opencv. For example, here [2] is an image I took of myself, ran through an edge detector, ran again through a distance transformer. I'm thoroughly enjoying myself.

I also know how to configure a LAMP [3], but that's nowhere near as interesting as the previous two paragraph.s

[1] [http://www.FreeBSD.org/cgi/man.cgi?query=bpf&apropos=0&#...
[2] http://michaelbrindle.com/images/meDistTrans.jpg
[3] in my case: FreeBSD, Lighttpd, mysql, and python, so... FLMP

</comment><comment><USER24> This list has nothing to do with CS students. It's just (specifics about LAMP/etc aside) stuff any competent programmer should do.

</comment><comment><USER25> 10001 - Talk to a girl.

<comment><USER26> Beat me to it. :)

There is, sadly, some truth hidden in this quip.

</comment></comment><comment><USER27> Quite web-specific (not necessarily bad!) It's been over 10 years since my MSc in CS and even more since I started working in IT and I still haven't done most of the things.

</comment><comment><USER28> I think there are about two things on that list I haven't done, besides not having started CS/Comp. Engineering yet.

It might just be me but shouldn't just a whole bunch of debugging, technical know-how and actually having a strong interest in technology also be important? I know many CS students that besides gaming are not really interested in nerdy technical things and I know there are a lot of people starting CS (at least here in my country) that have never really used a computer for anything other than internet surfing and word processing.

It's not like you become a good programmer or computer person over night just by taking a three year long CS bachelor.

Somebody who is already committed to learning more things on their spare time and already has an interest in these things before starting school will always come out of the situation/bachelor better. Don't you think so?

I would also have included a bit of electrical engineering knowledge (like soldering, electrical circuits and things like that) because just because you are a CS student and work in software it shouldn't mean you should know nothing of the systems and technology you use.

</comment><comment><USER29> Maybe different lists can be prepared for different career tracks. The items enumerated in the main article obviously has a Web development feel to it. For perhaps another track, I feel that the following tasks, actually performed by someone, can be re-formed into a similar list.

* modifying the Linux implementation of strace to implement system call interposition for CDE

* modifying the official C implementation of the Python interpreter to create IncPy and SlopPy

* prototyping Python interpreter extensions by hacking on PyPy, a Python interpreter (written in Python!)

* enhancing Klee, an automated test generation and bug-finding tool based on the LLVM compiler infrastructure (written in C++)

* performing quantitative data analysis using SQLite for data storage and retrieval, Python for ad-hoc data munging, and the R project for statistics

* creating lightweight interactive data visualizations using HTML and JavaScript with jQuery

* writing lots of Python scripts to automate routine tasks and to administer computational experiments

* writing a custom memory allocator for C programs

* creating dynamic program analysis tools in C using the Valgrind code instrumentation framework

* building components of a software simulator for semiconductor tester hardware using C++ within the Microsoft Visual Studio IDE

* creating an interactive image filtering application in C++ using OpenGL and GLU for image rendering and Qt toolkit for GUI.

* building graphical applications for Palm OS handheld devices in C using the Metrowerks CodeWarrior IDE

* writing a GUI for a handwriting recognition application in C++ using the Qt GUI toolkit

Programming, and indeed all of computer science, is a very mixed bag!

Source: <http://www.stanford.edu/~pgbovine/academic.htm>

</comment><comment><USER30> I don't think you actually learn much from doing any of these things. For example, most of the developers I meet set up apache the following way: google a bunch of conf files; bash at it until it works; never touch it again. In any case, what good does it do you to rote memorize how any one piece of software works? What if Apache didn't exist, what if it was 1999 and all these shiny Web 2.0 APIs didn't exist - how would you write a web server or communicate with other applications then? Seems like that's the sort of knowledge you want to have, and precisely the sort of handwavey theoretical stuff you have the luxury of spending time on in college.

</comment><comment><USER31> Well, the author intends to give us advice on the the general purpose CS stuff which all the CS students should have a practical knowledge in.

I think its taken for granted that while graduating, we would be doing the more demanding things such as: -designing our own programming language. -developing a minimal OS dedicated for some specific task. -develop an new alogorithm or drastically improve upon an existing one. -etc...

While doing the things mentioned in the author's list, you may surely implement a few of the crypting concepts which you have learned during your graduation. No one is stopping you to do that.

</comment><comment><USER32> Why is the rule restricted to LAMP? And why should the P = PHP & Python? What makes these special? Both are poorly designed languages (since I assume we're not talking Python 3k here)?

If anything, I'd say, "Do the systems engineer job application challenge at Square in 2 languages of your choice, one of which should be Valley mainstream. Keep Python or Ruby in slot one, and aim for a big-iron language for #2, like maybe Scala or C++ or OCaml or Haskell.

<comment><USER33> > _"Why is the rule restricted to LAMP? And why should the P = PHP & Python? > What makes these special? Both are poorly designed languages (since I assume > we're not talking Python 3k here)?"_

Hehe, I think this is the _exact_ attitude the author is trying to prevent. Far too many CS students become too enamored and obsessed with language purity, the _perfect_ design, etc etc, that they end up never _building_ anything.

The LAMP stack (in both its variations) is by a _really_ long shot the easiest stack to string together (honestly though, Rails will work too). PHP is incredibly easy to approach from the perspective of someone who hasn't written too much code before, the documentation is _way_ more extensive than just about any other platform, the user base is heavy and has a long track record for helping out. For a novice programmer this is an ideal way to _build_ something end-to-end (which is the whole point of that advice) and learn the pitfalls that come with building a whole product (as opposed to one small module of a larger thing).

The industry needs _people who build things_. Whether or not you're familiar with Silicon Valley's Incestuous Circle of Hot Languages And Platforms is strictly secondary.

<comment><USER32> > Hehe, I think this is the exact attitude the author is trying to prevent. > Far too many CS students become too enamored and obsessed with language > purity, the perfect design, etc etc, that they end up never building > anything.

I build plenty of things. I just don't get why you'd focus on PHP, which has little business value anymore (no NEW, serious project is going to use it) or Python (which is itself less questionable, but in a big period of transition right now). I'm suggesting building something with technology you'll probably end up working with once you're out of school, and Python 2.* is probably leaving that list.

I don't know where you get "language purity" from.

> The LAMP stack (in both its variations) is by a really long shot the easiest > stack to string together (honestly though, Rails will work too).

 _Nonsense._

> PHP is incredibly easy to approach from the perspective of someone who > hasn't written too much code before, the documentation is way more extensive > than just about any other platform, the user base is heavy and has a long > track record for helping out.

The target audience here is CS students. Odds are they've got a _bit_ of coding experience.

> The industry needs people who build things.

Actually, the industry needs people who can both build and learn. _EVERY JOB_ you go to will have its own stack, with its own idiosyncrasies, and its own tooling. If you are not ready to learn something new every time you go into work, you probably shouldn't be in this career. Seriously. It's this sort of attitude ("Stop fucking around with all that _learning_ and _build_ something") that has screwed our industry over so consistently. It is possible, and mandatory, to do both.

> Whether or not you're familiar with Silicon Valley's Incestuous Circle of > Hot Languages And Platforms is strictly secondary.

Not if you'd like to be employed.

<comment><USER34> Wouldn't C# and Java be the two obvious choices for employability? Neither seems to show much sign of slowing down at the enterprise level, where there are huge numbers of jobs.

Edit: I live 1800 mi. from the Valley.

<comment><USER32> I did say a big-iron language, did I not? Java and C# are certainly valid.

But, for example, it's not unreasonable at all for you to be expected to know how to set up and use Redis, even at a Big Company™.

</comment></comment></comment></comment></comment><comment><USER35> This is very web-based, which is good and I think it should be done by current CS students - it shows passion/motivation and actually getting real-world exp.

On the other hand, for a more CS-based list of tips, this is what Joel Spolsky has to say: <http://www.joelonsoftware.com/articles/CollegeAdvice.html>

</comment><comment><USER36> Web-monkeys need to get of their shell more.

There's a gigantic world of computing out there, with good jobs to boot, that has nothing to do with web 2.0.

</comment><comment><USER37> I've done all of that many times before, and I don't have any CS degree. Do I get an honorary one now? :P

<comment><USER38> I eat a burrito - that doesn't make me Mexican :)

<comment><USER39> Burrito eating was never a prerequisite to being a Mexican :)

</comment></comment></comment><comment><USER40> It is sad that CS students are now encouraged to become fancy sysadmins, linking existing technologies together 95% of the time and maybe adding 5% of actual stuff.

No wonder resumes come with tens of technology names on it, but the owner fails to implement basic things like itoa.

</comment><comment><USER41> This is essentially the same advice I give to people when they ask me. A great way to become a self-sufficient developer is to try coordinating a group of machines all running software you've written. Bonus points if someone actually uses it.

</comment><comment><USER21> First step for anyone who actually WANTS to be a skilled programmer is, in my opinion, find a mentor who: 1). is really really good at programming; 2). is even better at teaching complex matters in understandable ways.

Made all the difference for me.

<comment><USER42> So, where does one find said mentor?

<comment><USER21> Have to talk to people and network. Make friends and so forth.

</comment></comment></comment><comment><USER43> > Install an Apache web server and configure it in a non-trivial way, e.g. to > serve multiple domains.

Since when adding 3-4 self-describing lines (bare minimum required to add a virtual host) to config file is non-trivial?

</comment><comment><USER44> numbering computer-related lists in binary stopped being cute a long time ago

</comment><comment><USER45> 10000) Learn arc welding, plumbing, or other genuinely useful skill.

</comment><comment><USER46> I'd go further and suggest completing most of these _before_ entering a CS program. Consider it the start of a long career of self-education and improvement.

</comment><comment><USER47> Before GRADUATING?!

This was all things I was doing before I started ATTENDING university. It's super simple, and you won't be downloading Slackware on 30 floppy disks any more!

</comment><comment><USER48> Learn to install _and reinstall_ Windows. Not just Vista or 7, but XP as well. Learn how to add/remove/troubleshoot device drivers without killing yourself. Connect to a local server, get networking set up, get wifi working.

Because someone, somewhere, shortly after you graduate, will ask you to do this. You might even have to do it for yourself at your first job.

[EDIT] You can downvote me, but any fellow CS grad that makes it to a business environment will encounter _some_ coworker that will want help with their machine, and I guarantee it will be running some version of Windows. Trust me on this one.

</comment><comment><USER49> I would add: Visit an art museum and learn about the different styles of art. It's about different forms of expression that don't involve 1s and 0s.

</comment><comment><USER50> This is more like what "IT" students should do before entering the workforce.

CS students, lucky sods, should be making transistors.

</comment><comment><USER51> Binary... not a literal 10,000 item list, a mere 16 items in base-10.

<comment><USER52> <http://cowbirdsinlove.com/43>

</comment></comment><comment><USER53> 10 - learn to count in hex instead of binary.

</comment><comment><USER54> Isn't CS supposed to be a branch of math?

<comment><USER55> Yes and no. This list makes me sad because it neglects every single computer scientist that's interested in doing work on theory. I am one such computer scientist, and much of the work that I do involves merely pen and paper. There are a lot of people on HN that are web monkeys and make good money doing Web 2.0 stuff, and there are a lot of people that know pretty much nothing about computer science but use computers and program. These people equate CS with programming and the other sorts of tasks described in this article and then forget that there are computer scientists that could conceivably have no idea how to program in a modern language and still make contributions to the field.

But maybe HN is the wrong place to go looking for discourse on this sort of material. The point, though, is that this article is misleading. Perhaps it would have better been titled "10000 things every software engineer-hopeful should do" or "10000 anyone who writes code for the web should do".

</comment></comment><comment><USER56> And do MBA.

Writing software != Selling software

</comment><comment><USER57> All of these I did the first five years of my career - I feel that I got a lot more out of them than if I would have done them while in my CS program. With a few years of experience, I have a much better context into which to place these experiences.

</comment><comment><USER58> up to 0100 and haven't been accepted to a CS program...

(havent applied yet either)

<comment><USER37> Actually that's not a bad comment about how an actual College CS program may not have anything to do with the real world. I run my own servers, I code my sites from scratch in HTML, JavaScript, PHP, SQL etc.. build all my computers.. made several open source contribution coding in C.. I can do everything in that list and much more..

Yet when I applied to a local University in a CS program a couple years ago I was denied. Why? High School Math grades not quite high enough.

<comment><USER59> That just isn't true. CS _isn't_ about "running servers, coding sites in HTML, JavaScript, PHP, etc.."

Computer Science is about (per your example): 1\. developing the programming paradigms underlying javascript

2\. creating SQL (i.e., defining the grammar, but also proving it's correctness and completeness)

3\. Architecting the network protocols that provide HTTP and HTML their plush delivery

\---3.1, Naturally, is involves inter-and-inner domain routing, name system protocols, reliability and transmission throttling. Not to mention, generally, complex autonomous systems

\-----3.2 To formalize, define, and prove the correctness of each the protocol/solution these problems, you must resort to deep results in graph theory and other branches of applied mathematics that are useful for modelling computational problems.

\</comment></comment></comment><comment>----3.3 This requires the study into the purely theoretical realms of computational complexity theory, graph theory, etc... in order to define properties of the structures in the aforementioned fields of applied mathematics. This is the traditional heart of computer science, one in which true "computer scientists" generally have to express their results in terms of.

So I'm glad you can do everything on that list and much more. But that isn't computer science. sure you're hacking around, that's great, but don't go around thinking school is dumb because they don't appreciate your web development and unix skillz

<comment><USER58> And for those reasons 'vbtemp' I fully intend to apply once my pre-reqs are fulfilled.

My plan is to double major: Finance+CS.</comment></comment>