Google Glass Teardown - <AUTHOR> http://catwig.com/google-glass-teardown <comment><USER2> "Although functional, the experience was subpar, because the head proximity sensor was very unreliable when next to a lens."

I turned off my proximity sensor (that's an option in settings -- "On-Head Detection") because the false positives (like turning on or off because my finger covered the sensor briefly) were more annoying than having to turn it on and off with the power button.

So unless there's more use for the proximity sensor I'd say this is a small price to pay if you want to attach google glass to your regular glasses.

One possible use for the proximity sensor, though, is wink detection: [https://github.com/kaze0/winky](https://github.com/kaze0/winky)

On the other hand, there's a dedicated button for taking a picture so winking as an input method I think would only be useful in situations where you don't want to use either your hands or your voice. And there may well be such situations.

<comment><USER3> people haven't learned from microsoft office clipper!

Everyone rather have control than implied ominous prediction.

i hate that i can't press a button on my phone and switch from landscape/portrait modes. rotation sensor is silly most of the time.

</comment></comment><comment><USER4> It uses an old OMAP4430, also in the Samsung Galaxy 2: [http://en.wikipedia.org/wiki/OMAP#OMAP_4](http://en.wikipedia.org/wiki/OMAP#OMAP_4)

As chips get faster, wearable computing will benefit more than smartphones, because (eg) an iPhone 5 is more powerful than a smartphone can utilize (and more powerful than even a desktop needs to be, for most mainstream tasks.)

<comment><USER5> The chip is taken from the specs, you cannot see it in the photos.

<comment><USER6> I think the memory is mounted on top of the SoC as a package on package.

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

</comment></comment></comment><comment><USER7> Great, now put it back together. I am the worst at reassembly of electronics I would have wasted +-$1,500.

<comment><AUTHOR> I put it back together and it works fine! Only, it has suffered some irreversible cosmetic damage..

</comment></comment><comment><USER8> Ideal for those who always dreamed of becoming a spy (or Stasi informant). $1500 gets you a stealthy camera with NSA uplink.

<comment><USER9> Stealthy? Have you actually _seen_ somebody wearing glass? It's the most noticeable thing about them. During IO there were a bunch of Glass wearers wandering around Moscone and people couldn't stop staring (myself included).

You'd be much better off with something like this: [http://www.amazon.com/Waterproof-Camera-Watch-Video- Recorder...](http://www.amazon.com/Waterproof-Camera-Watch-Video- Recorder/dp/B009EOX2YY/ref=sr_1_2?s=photo&ie=UTF8&qid=1371014663&sr=1-2).

<comment><USER8> Sure, everyone can see they're wearing glasses. However, outside of our little tech circle, most people don't know that those glasses contain a camera, mic, and location tracker. And even if a Glass-wearer gets called out, they can deny that they were recording or taking pictures (unlike if you point a camera watch at someone).

<comment><USER10> You could do much better by getting rid of the HUD entirely and embedding just a camera lens/sensor, which can be really small, into some normal glasses ... for spy pictures you don't need perfect composition ... 😓

</comment></comment></comment></comment><comment><USER11> So based on the teardown, anyone want to predict what the MSRP will be?

<comment><USER12> 499$ Glass is the new iPad.

<comment><USER13> All kidding aside, Glass will go head to head with iWatch or whatever else wearable devices that the various companies come out with.

<comment><USER14> A watch computer != a HUD.

A watch could never do augmented reality overlays -- heck, even a phone can do those better than a watch ever could. IMO that's like saying the iPad will go head to head with laptops -- it's an apples-to-oranges comparison.

<comment><USER15> Glass can't do AR overlays either, unless you only wanted to overlay a small area in the upper right of your vision.

<comment><USER14> It's still a step up from holding your smartphone at arms length in front of your face. You have to start somewhere =)

</comment></comment></comment></comment></comment></comment><comment><USER16> Very well presented and designed too. Thanks for sharing!

</comment><comment><USER17> I see a chip marked SIRF - does it have GPS?

<comment><USER18> I hope so, as this will enable Google Maps-like functionality.

<comment><USER12> Yes it already has inbuilt GPS unit. Source: I own one

<comment><USER15> Then why does it need the MyGlass app running for GPS?

<comment><USER5> Probably for AGPS and a better positioning using both GPS chips and other positioning sensors (cell towers, wifi). The Glass GPS antenna is tiny, it can take ages to synchronize without aid.

<comment><USER15> "Ages" must mean more than half an hour inside a car, then. If I don't have the MyGlass app running on my phone, the location accuracy is so limited that I can only assume it's based on WiFi.

But what do you mean "without aid"? Even without MyGlass running, Glass still has WiFi-based location and an Internet connection (tethering is separate from MyGlass) -- isn't that sufficient for AGPS?

</comment></comment></comment></comment></comment></comment><comment><USER19> What are the QR codes used for?

I parsed two of them and came up with "|224010712|01294" and "0200014672"

<comment><USER20> As a complete guess: Much electronics manufacturing requires items to have individual (or batch) numbers for quality control.

When items fail test you can investigate the batch to find and eliminate problems of manufacture.

Sometimes this is good and effective and it works. You see that batch #3762387 failed, and that they all used a component from a delivery, so you look at the other batches using that component and they fail too.

Sometimes, however, it's just a paperwork exercise. It's frustrating for everyone trying to do the work, and the results are hopeless for anything because people are just faking the paperwork, or the paperwork is garbage. The company is only doing all of this to get a logo for their letterhead, and they must have that logo to do business with some other companies.

In the UK some of these systems (ISO900x; BS5750; etc) are sometimes seen as expensive makework nonsense.

Let me know if you ever need to find flaws in someone's paperwork because there are a few things where it's trivially easy to trip them up once you know what to look for.

<comment><USER19> The quality control and tracking reasons makes sense. It would allow for faster and more automated identifying of parts.

"Let me know if you ever need to find flaws in someone's paperwork because there are a few things where it's trivially easy to trip them up once you know what to look for."

I'm interested in this, can you give some more details?

<comment><USER20> Electronic companies use ElectroStatic Discharge (ESD) protection. Often this is the form of a conductive wrist strap connected (via a safety resistor) to ground. Operators are usually required to check that this strap works using a test station. They then have to sign a sheet.

The real function of this: You want to know if Bob has a faulty strap, so that if a batch of product is failing, and you see that Bob is the common element, you can check Bob's paperwork. When you see that Bob had a faulty wrist strap on the 14th of June you have found the possible cause of the faults, and you have some acton you can take.

Several things actually hapen: The wrist strap tests are offered as "Pass" or "fail". No-one likes saying they have failed a test. People think the purpose is just to get a working strap, so if it fails they'll do some fiddling, wiggling the wire until it passes, or licking their wrist. These temporary measures fail when they're back at the bench, but the paperwork doesn't reflect that. And people often forget to do the test, so they'll just sign off a bunch of days when they do remember.

Thus, when you visit a factory you can gauge the understanding of QA procedures by looking at these kinds of paperwork. You'll see a sheet full of signatures. That looks great, until you realise that this factory has almost zero absenteeism, and people rarely take holidays, and sometimes people have tested their wrist-straps on public holidays when the factory was closed.

When you have a barcode printed on a device it's hard to lose track of the numbers, but sometimes route-cards are just bits of paper attached to a box. Ask people how they can be assured that the devices in that box belong to that route-card.

Paperwork is often designed poorly, and is onerous to do. It's often kludged in from above, rather than reflecting the actual job. Give people extra work, while pressuring them to get product out, and they will take shortcuts. That's often the paperwork. Often just asking people about the paperwork, in a sympathetic voice ("Oh wow, all these forms, eh? Which are the useful ones, and which ones are a bit annoying?") will get remarkable answers.

Framing language is handy. Ask people using solder paste (screen printing circuit boards with paste prior to surface mount pick and place) about "waste" \- they'll say they don't waste anything. Because no-one likes to waste stuff. But actually, paste has a life, and waste is part of production. A good answer would be "We like to keep the paste clean for production, so once it gets old we move it through to jobs with less-fine pitch components, or we use it for rework, or we use it for training. I guess you could call that waste. At the end of life we carefully dispose of it to recyclers, along with our other lead dross and tin / copper snippings" but people will tend to say "we don't waste anything" and you can ask them "so, you re-use that paste? It goes back into the pot, and you use it again?" and they'll say "yep".

Some of these are trick questions and don't really tell you much about actual production. You just get to know that the QA logo is just paperwork exercise.

If it's any reassurance the QA I experienced for ground-side aviation stuff was _much_ better - it was rigorous and detailed and investigative and we did it all properly, and the auditing was very very good.

</comment></comment></comment></comment><comment><USER21> Well this just makes me want Glass even more - I wouldn't be able to resist taking it apart!

</comment><comment><USER22> In public surveillance terms, this is basically the equivalent of gluing your camera to your temple. The Snowcrash quote is pertinent. Glassholes will be excluded from free spaces.

<comment><USER20> I don't get why glass is so different from ubiquitous smart phone cameras or (in the UK) CCTV.

Parents already have problems taking photographs of their children at school events[1] and people are regularly harassed and arrested because they are taking photographs in public. Most people seem to think this is too extreme, but I get the impression that they wouldn't mind if it was happening to glass users.

As far as public surveillance goes there are much worse situations than actual people wearing (currently) expensive hardware wandering around. It's cheaper and better to mount CCTV everywhere; and it's good for the operators to have hidden[2] low[3] level cameras.

[1] Although I agree with Louis CK about this - don't video the kids, watch them. The resolution on the kid is much better than on that little phone screen.

[2] To avoid vandalism.

[3] Face height, not on a tall pole.

<comment><USER23> The difference between Google Glass and smartphones is that with Google Glass it is much more difficult to know if someone is recording you.

<comment><USER24> Well, yes and no. They'll have to basically be staring at you for the duration of the video - which is somewhat normal in one-on-one conversations, but sticks out much more in group settings.

</comment></comment></comment></comment><comment><USER25> You'd think Star would be a little bit gunshy about wearable electronics. I kid, Star if you are reading this, I'm kidding!

</comment><comment><USER26> Down for me due to a Cloudflare error: "DNS Points to Prohibited IP".

</comment><comment><USER27> Well done. Nice site design and beautiful high res images.

</comment><comment><USER28> Can anyone spot where the TI Omap 4 processor is in this?

<comment><USER29> Yep, it's right here: [http://www.catwig.com/google-glass- teardown/teardown/mainboa...](http://www.catwig.com/google-glass- teardown/teardown/mainboard-cpuside.jpg)

Of the three largest chips, it's the furthest to the right (in case the large Texas shape didn't tip you off ;) ).

<comment><USER5> That's a TWL6030 power management chip, used for charging and powering the board from the battery. There are no side photos, but sometimes there is a trick you can do with the OMAP: put it under the RAM. It can provide pins for the RAM to be soldered on.

<comment><USER30> Yup, the BeagleBoards do this.

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

</comment></comment></comment></comment><comment><USER31> You just open sourced Google's IP related to Hardware Design of Glass. Now just waiting for cheap knockoff's from China flooding the Walmart's of the world or flooding eBay catalogs.

<comment><USER32> Hardware is going to be easy to copy.

Google services (search, maps, etc)? Good luck to the imitators.

<comment><USER33> They could just use the software that is on Glass now. If the hardware is exactly the same it could work.</comment></comment></comment>


Russian-Style Kleptocracy Is Infiltrating America - <AUTHOR> https://www.theatlantic.com/magazine/archive/2019/03/how-kleptocracy-came-to-america/580471/ <comment><USER2> > Washington had placed its faith in the new regime's elites; it took them at > their word when they professed their commitment to democratic capitalism.

It is exactly this idea, with sides reversed, which is at least quite popular in Russia when discussing the trajectories of decision made at the time. Russian decision makers took Western advisers at their word regarding what steps, how and why should be made for the country to progress towards liberal values.</comment>


Ask HN: How Would You Design a "Net Invisible" System - <AUTHOR> Answering in the spirit of an IETF RFC, how would you design an "Internet-invisble", zero footprint (or equivalent, spoofed, etc) computing system, from hardware to software?  How would you draft the base requirements for this stealth system?  What existing technology (standards and protocols) would support such a project?  What new protocols, hacks and/or experimental tech (quantum, bio) would be needed to make it a reality?<p>Understand "Internet-" or "Net-invisible" to mean the state a device is in once it has connected to the Internet, or any network for that matter, wherein it has no visible presence to the network. How that is accomplished is irrelevant as long as the illusion of non-existence, or "internet invisibility" is achieved. This might seem ridiculous at first when once considers the volume of communication, handshakes and other functions that are executed and required to connect to a network, but then that is the challenge of the question, assuming some version of this is actually possible. The product would then be a "stealth computer system" that one could quickly access and utilize without fear of discovery. <comment><USER2> What do you mean by "internet-invisible"?

<comment><AUTHOR> I have updated the question to include that clarification. If one reads through the RFC library and recent papers on networking protocols and design, especially when hardware is included in the mix, the possibilities begin to emerge.</comment></comment>


The internet is actually controlled by 14 people who hold 7 secret keys - <AUTHOR> http://www.businessinsider.com/the-internet-is-controlled-by-14-people-2014-3 <comment><USER2> Introducing 'the internet': [https://www.youtube.com/watch?v=iDbyYGrswtg](https://www.youtube.com/watch?v=iDbyYGrswtg)

</comment><comment><USER3> This kind article comes out every year or two and it's always incredibly misleading. They always try to make it sound spooky and dystopic. What would it even mean for 14 people to "control" the internet in any newsworthy way?

</comment><comment><USER4> "The group conducts the ritual, then each person files out of the room one by one, and then they all head to a restaurant and party."

Well, I now know where I would attack if I had any interest in a takeover of DNS.

</comment><comment><USER5> Misleading title. More accurate title would be "the domain name system is actually controlled..."

<comment><USER6> The domain name system functions fine regardless of who has the DNSSEC root keys or what they do with them. The private keys could be posted to Pastebin today and --- I mean this literally --- nothing important on the Internet would break.

"Ceremony" is a good word for what this stuff is.

<comment><USER7> This statement is not provably true. With a DNSSEC signed root anyone can host their own copy of the root zone, and we can all cryptographically verify that it is the same root. If someone were to sign a different root with the same key we would no longer be sure which was the right one. An attacker could redirect traffic away from TLD nameservers to their own nameservers.

I think you understand this. What I don't understand is why you think this scenario would not be a problem.

<comment><USER8> TLS works on the assumption that DNS is insecure. So, since everything that matters happens over TLS, it's not a problem if DNSSEC is compromised. It wouldn't matter if DNSSEC wasn't invented to begin with. It might be better that way, actually, given its problems.

<comment><USER7> Let's Encrypt, and pretty much any other CA, will issue me a TLS cert based on what they find in DNS. So how's that for circular reasoning :)

But seriously, wouldn't it be better if DNS wasn't so insecure? Or do you think that DNS being insecure provides a net good?

<comment><USER6> No, it wouldn't be better if DNS was less insecure: applying cryptography to address security problems adds cost (along several dimensions), and those costs outweigh the marginal benefit. It's like asking, "wouldn't the Internet be better if ARP were secure?"

<comment><USER7> I don't get the Internet ARP reference? That's just false equivalence.

I think we're just going to continue to disagree. We've argued over DNSSEC on HN many times and it's clear to me we don't see eye-to-eye. That's fine, and I respect your opinion. I just think you're wrong, and I doubt anything you say will convince me otherwise.

</comment></comment></comment></comment></comment></comment></comment><comment><USER9> This is only for DNSSEC signing for the root zone, right? If you don't use DNSSEC, those 14 people don't affect you in any way.

<comment><USER7> 22.214.171.124 DNSSEC validates. So that's a lot of people right there. I think Comcast also validates. There are others but I think you get the point.

You might be relying on DNSSEC validation without knowing it.

<comment><USER6> Where by "relying on" you mean "impacted by outages and little else", since we systemically do not validate DNSSEC and any attack that DNSSEC "prevents" can simply be aimed at a different part of the communications infrastructure.

Also, obviously, people who "rely on" 188.8.131.52 doing DNSSEC lookups are in fact relying on a _single bit_ in an unencrypted DNS response packet that vouches for the validation that the server did. Nothing 184.108.40.206 can do will protect the link between the user's stub resolver and Google's DNS server.

<comment><USER7> > Where by "relying on" you mean "impacted by outages and little else", since > we systemically do not validate DNSSEC and any attack that DNSSEC "prevents" > can simply be aimed at a different part of the communications > infrastructure.

You could make that statement about nearly any security mechanism. It still doesn't explain why you think unsigned DNS responses are better than signed ones.

> Also, obviously, people who "rely on" 22.214.171.124 doing DNSSEC lookups are in > fact relying on a single bit in an unencrypted DNS response packet that > vouches for the validation that the server did. Nothing 188.8.131.52 can do will > protect the link between the user's stub resolver and Google's DNS server.

Yes, which is why the kind folks at the IETF are working on DNSoTLS. But that's orthogonal to DNSSEC.

<comment><USER6> No, you don't understand what I'm saying. I'm saying that by using Google DNS to "verify" DNSSEC, you're playing pretend, because DNSSEC doesn't do anything to protect the last mile between your stub resolver and Google's servers; instead, it sets a single bit in the header to reassure your resolver that "yes, Google verified this DNSSEC request". But any coffee shop MITM can simply flip that bit back!

Google DNS's DNSSEC support is pure security theater.

<comment><USER7> Which is why I brought up DNSoTLS which you conveniently ignored. That 'last mile' problem you speak of is being worked on at the IETF. It's not an easy problem to solve. But I suspect this argument of yours, which is valid BTW, will be less of problem in 5 years. We're already starting to see DNSoTLS testing happening.

You could also run a DNSSEC validating stub resolver on your laptop. Or you can run DNSMasq on my home router with DNSSEC validation enabled. Both of these effectively prevent the MITM you bring up.

</comment></comment></comment></comment></comment></comment><comment><USER10> "the Elders of the Internet"

</comment><comment><USER11> I got this article a day before from a friend and he brought up the question which I have no answer for: > what if all 14 are assassinated? > 14 is not that many, especially when they meet occasionally

Then I was just reading the [https://github.com/orisi/wiki/wiki/Orisi-White- Paper](https://github.com/orisi/wiki/wiki/Orisi-White-Paper) which has a "contract amendments" section saying: "... if over 50% of oracles notice that one of them fell, they can transfer the contract funds to another multisig address, with the dead oracle replaced by another one, allowing for safe and long-term contract management."

which sounds like they don't have plan for 100% death rate either.

I guess in case of such an horrible event, we would finally setup a different process which wouldn't require the collocation of several people...

</comment><comment><USER12> Someone has got to write _Lord of the Keys_.

<comment><USER13> [http://www.azlyrics.com/lyrics/helloween/keeperofthesevenkey...](http://www.azlyrics.com/lyrics/helloween/keeperofthesevenkeys.html)

</comment></comment><comment><USER14> Now may we please have Namecoin .bit domains? Thanks.

<comment><USER15> No one is stopping you from making alternate root servers. AlterNIC [1] offered them for years.

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

<comment><USER14> I'm surprised at the violently negative voting reaction to this common- sensical wish. What am I missing? Sure, nobody is stopping me from making alternate root servers. But I'm not competent to run alternate root servers. Don't we all need a decentralized DNS? I suppose some people interpreted my remarks to be trolling, but I wouldn't know enough to do a good troll on this topic. I'm just a dumb user, who suspects peer DNS would eliminate the value in DDOS against centralized DNS.</comment></comment></comment>


Is your anger is killing your art? - Seth Godin - <AUTHOR> http://sethgodin.typepad.com/seths_blog/2011/08/anger-232.html

<comment><USER2> Anger and Creativity are mutually exclusive?

Perhaps in business, but I am not convinced this is true in Art. There are a lot of angry musicians out there. (Would we have had Punk without it?) Although it's out of my area of expertise, I would guess the same is true with painting.

Anger clouds and narrows the mind, but isn't it a stretch to say it can not occur side by side with creativity?

Seth is usually right, but I disagree with him on this one.</comment>


Let me guess: You sleep with your iPad, don't you? - <AUTHOR> http://www.niemanlab.org/2012/10/let-me-guess-you-sleep-with-your-ipad-dont-you/

<comment><USER2> This is really bad for your[0], but unfortunately a lot of people don't realize that. The health benefits of putting away your gadgets at least an hour before sleeping are _huge_.

0: [http://lifehacker.com/5778483/screen-reading-before-bed- stil...](http://lifehacker.com/5778483/screen-reading-before-bed-still-bad- for-sleep-and-we-all-still-do-it)

<comment><USER3> Since I stopped taking the iPad and laptop into my sleeping room (the old e-ink Kindle is still allowed in, with wi-fi turned off) I was able to normalize my sleeping pattern, sleep a full 7 hours per night and work out as soon as I wake up, feeling energized for the whole day.

Just the other day I took my computer because I needed to reply a rather longish email... boom, I couldn't sleep before 3am, on a Tuesday. Never making that mistake again.

<comment><USER2> Yep, this is why I'm considering getting the new Kindle Paperwhite, which has been getting rave reviews[0]. The display is front-lit, not back-lit, which makes a big difference when it comes to affecting our ability to fall asleep on time (i.e., front-lit = not a problem). All computers, tablets, and phones (and other back-lit devices) definitely have to stay out of the bedroom.

0: [http://www.theverge.com/2012/9/30/3433110/amazon-kindle- pape...](http://www.theverge.com/2012/9/30/3433110/amazon-kindle-paperwhite- review)

</comment></comment></comment><comment><USER4> Interesting despite the link-bait headline (an editors, not the OPs). Source can be found here:

<http://www.journalism.org/analysis_report/future_mobile_news>

There is a link above the table of contents that allows the entire paper to be downloaded as a pdf.

</comment><comment><USER5> Isn't it easier to "sleep with" a laptop than a tablet?

A laptop holds the screen in a vertical orientation that you can watch while lying down. How do you do this with a tablet?

I ask as someone who has "slept with" a laptop more or less every night for five or six years.

<comment><USER6> The iPad, at least, has a slide switch on the side which allows you to hold the screen in either orientation.

<comment><USER7> You can also lock orientation on iPhone in the menu that appears with the triple-press of home button.

</comment></comment></comment><comment><USER8> Nah, I sleep with the Nexus 7. Better battery life, for one, and it doesn't feel like a wet dog nose (cold aluminum) poking me in the chest.

</comment><comment><USER9> My first reaction: well duh!

During my 9-5(ish) I'm on a real computer. Why would I bother with a tablet? If I'm out and about, the iPad's just one more thing to carry with me, so I'm using my phone instead. I only really use the iPad when I'm settled in somewhere but don't want to mess with my laptop to do something. I use the iPad like a bigger, slightly less convenient to carry but nicer to use smartphone.

If enough people are at all like me, I'd expect the iPad to be used mostly at home before and after work, and I'd expect it to lead to more media consumption simply because it makes passive media consumption less painful.

<comment><USER10> There is also the cost to consider. With all those extra gadgets laying around, it's easy to set your iPad aside and have it disappear. Then you're out $500-$900

</comment></comment><comment><USER11> I wonder, though. How much is the increased news consumption a reflection of who owns tablets vs. the effects of tablets themselves?

Even without my iPad, I'd still read lots of news (though probably less from Twitter late at night), and I'm sure I'm not the only one. I would just guess that many of the factors correlated with owning a tablet (wealthy, tech-user, etc.) would also predict high news consumption.

As tablets become more mainstream, will tablet users continue to consume more news than average, because of the convenience of using a tablet, or will usage begin to look more like the general population?

</comment><comment><USER12> Technology is banned from my bedroom. Books and a Casio watch - that is all that is allowed.

Much healthier for the mind from experience!

</comment><comment><USER13> My wife and I do (with the phone) and I'm not really sure it's healthy. She'll stay up for hours playing short little time waster games, and I'll do the same on reddit (as a long-term non-game time waster). Then we're right back at it for 15-30 minutes in the morning. I can't say either of us actually benefit from the experience, and it definitely interrupts sleep and makes for hasty mornings.

Unfortunately I need my phone nearby in case something happens at work, and they have some of the most convenient alarms in the world on them. Not really sure how to attack this problem besides pure force of will. Any ideas?

</comment><comment><USER14> I did with my kindle, until I rolled over one night. The screen has such a pretty pattern on it now. All the time.

Now I read my kindle books on my phone.

<comment><USER15> Order a new screen (ED060SC7 for Kindle 3) and replace it yourself. It's super-easy and there are tutorials for it on the web. I did it recently with my girlfriend's Kindle to her great delight :). It's cheaper than buying new or paying someone to fix it, and then there's also this ego boost :).

</comment></comment><comment><USER16> Nope. And I still get my news from multiple source before 8am. BBC world news on the tv in the morning as I'm getting ready for work, and NPR on the drive in to the office. After I'm at the office, a quick check of the tech news sites while the coffee is brewing. That's all before 7, 7:30 if traffic was bad.

My tablet lives on the coffee table.

</comment><comment><USER17> The word "news" shows up in that article 51 times (with 5 non-article occurrences on the page). Not sure if this bothered anyone else but it drove me nuts and I couldn't finish the article.

</comment><comment><USER18> I usually sleep with my glasses _and_ my iPad under our pillows in an attempt to keep them safe from our marauding Burmese cats who love to chew on expensive items.

<comment><USER19> Sounds like you need a drawer.

</comment></comment><comment><USER20> I sleep next to my iPad almost every night. By reading articles right before sleep, I often wonder if it's affecting the quality of my sleep.

<comment><USER21> I used to do this. I had the same suspicion. About two months ago, in an effort to improve my sleep quality, I banned the iPad (and all other devices, except a first generation books-only non-backlit Kindle) from the bed when sleeping. My sleep is indeed better, in part because I no longer spent "just a few more minutes" randomly browsing before going to bed, in part because if I wake up early or in the middle of the night, I can't just reach for a device and start checking email.

</comment></comment><comment><USER22> Yes, and it would be cool if the tablet could detect when I fall asleep so Netflix doesn't think I finished watching what was playing.

</comment><comment><USER23> I fall asleep every night watching starcraft2 games on my ipad1 (Mostly from sc2casts.com for the interested).

</comment><comment><USER24> No, but I do with my android phone.

</comment><comment><USER25> Nein!</comment>


How to be a great software developer - <AUTHOR> http://peternixey.com/post/83510597580/how-to-be-a-great-software-developer <comment><USER3> I for one _loathe_ the term "Rockstar" programmer. For those of us over 40, it connotes someone who is young, with no familial commitments, can work 80+ hours a week, only needs RedBull and Mountain Dew to exist, has no loyalty and will burn out by the time they're 30.

I for one run away from any company looking to hire a "Rockstar" anything. It's overused and abused.

<comment><USER4> Can we also add "Ninja" and "Genius" to the list of abused recruitment buzzwords?

And don't even get me started on "passion". (David Mitchell's take: [http://youtu.be/Bz2-49q6DOI](http://youtu.be/Bz2-49q6DOI))

<comment><USER5> I'll disagree with the last one. Whanever I hire for, I always look for "passion for the craft" \- whether it's design, code, marketing, or whatever. A great question is "What's the last book or blog post you've read in your field that got you excited?" If people love what they do enough to explore it in their off-time, they'll (usually) be a cut above the rest... And they won't get bored/tired of their work as soon or as easily (assuming you can provide interesting work).

<comment><USER6> Does that make it a negative if you're time away from work involves family, outdoor activities, DIY projects, etc? I think that what you are saying is what most people look for. Someone who writes code for a living and then goes home to write code to relax. That generally fits the young, unmarried/no kids, recent college grad stereotype.

I'm curious because I have been burnt out at work and decided to focus on those things I mentioned. I'm much healthier and productive overall. Yet if I went to an interview I wouldn't have hours of OSS commits on projects I worked on after work to meet most job requirements.

<comment><USER7> I'm 30 (dunno if that's "young"), married, and write code to relax... kids might change that though (or at least change how much time I have to relax!). Not that I think everyone needs to work the same, mind you...

<comment><USER8> Kids don't change that. My little girl is 5 weeks old and I find much solace behind my editor during quiet times :) It's reinvigorated with the hope of whatever I learn I can pass down in the future.

<comment><USER9> 5 weeks is a piece of cake. Years 2-18 is where my spare time evaporated.

<comment><USER10> I totally agree. Coding while monsters from cartoons and video games are growling in the background. Or when my 4yr and 6yr old are fighting and a teenager is playing loud music.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER11> On a side note, I asked a fairly successful tech professional->CTO->CEO what it took be a great programmer/engineer. Ironically the answer I got was not even related remotely to software in any way.

The thing he told me was that in all his experience, working with awesome people he found that "working things on paper", gave massive clarity in most projects. Human minds are not great at visualizing large stacks, diagrams and lists. Hence writing down things, simplifies things. In fact when you write things down. Draw that diagram, talk to yourself and refine your ideas on paper in a couple of iterations. You largely solve that problem of reuse, variable naming, problem identification. Agreed that some things demand you play with code a little to proceed further. Yet, planning on paper solves most problems which programmers face today.

Agile fashion unfortunately glorified many bad practices.

The more I pondered over that though the more I realized, how many bad practices came into software development with this quick development- deployment methodology. In the days of the past while you worked out some documentation before you started a project, you often probed, visualized and solved problems on paper. These days a lot of software is developed by the time you realize its actually bad. By then going back is not an option and you have live with it.

<comment><USER12> I really like this comment. But I bet some folks gloss over a particular point of importance.

For me, there's a huge advantage in literally using tree-paper, either for code-reading, designing, taking notes, what have you.

It involves more of your senses, it's more tangible, every letter is written with more care and the medium is incredibly flexible (maybe I feel like drawing a circle on a whim, can't do that in emacs.)

It's better for scratch-pads than a text-buffer, imo.

Insights come more consistently and easily after iteratively marking up a printout. It's just fully-intuitive.

</comment></comment><comment><USER13> A lot of software engineers don't realize that it's not about how much you work, but how strong you work when you work. It's about efficiency, good decisions, and total concentration.

\- Turn off e-mail.

\- Turn off chat.

\- Don't check hacker news. Or any website that is not for your current task.

\- Don't let coworkers interrupt you.

\- Get noise canceling headphones.

\- Have a goal to get through, and apply yourself to it completely.

\- Get very good at evaluating 3rd party code, then before you write code, see if there's a library/native code that will do the work for you.

\- When you write code, if you _know_ the right way to do something, do it right the first time.

\- If you're not _sure_ you know the right way to do something, then just get the code out into the editor. After it's functional, take a look at the code later and decide how it can be refactored. Refactor it immediately.

\- Don't write any tough code when you're not at your best mental capacity. When you feel yourself mentally drifting on a hard task, put the code away and go work on easy features. Work on your hardest problems during your best hours.

<comment><USER14> That's all very hard to do when your code takes 10 minutes to compile. Yes it's C++.

<comment><USER15> Have you considered running distcc on every machine in the building? It greatly speeds up compiles.

[http://manpages.ubuntu.com/manpages/precise/man1/distcc.1.ht...](http://manpages.ubuntu.com/manpages/precise/man1/distcc.1.html)

Quote: "Zeroconf: This option is only available if distcc was compiled with Avahi support enabled at configure time. When this special entry is present in the hosts list, distcc will use Avahi Zeroconf DNS Service Discovery (DNS-SD) to locate any available distccd servers on the local network. This avoids the need to explicitly list the host names or IP addresses of the distcc server machines. The distccd servers must have been started with the "\--zeroconf" option to distccd. An important caveat is that in the current implementation, pump mode (",cpp") and compression (",lzo") will never be used for hosts located via zeroconf."

The above relatively new feature means that compiles will complete even if some local machines go on and off line during the work session.

</comment></comment></comment><comment><AUTHOR> Two things always stand out to me:

1) Are you thinking before you touch the keyboard?

If you have the mental model right for data structures, patterns, networking, caching, then you'll have fewer bugs. Get the mental model wrong, and one can treat a bug as a code smell, it probably indicates a fire that you've just not noticed yet.

2) As all bugs that have ever gone live have got past testing, Q&A and user acceptance... are you better at reacting to the unexpected (bugs) than the expected (testing)?

Bugs will happen, best to have great processes for when they occur.

I advocate insane measuring and monitoring which means thinking of instrumentation when you author code. This goes back to thinking, as a team and company one can fight the cargo cults with evidence. Monitoring and measuring dramatically reduces the time it takes to react to an incident, and guides which things should be tested in future.

<comment><USER16> > Are you thinking before you touch the keyboard?

I can't stand developers who "feel" their way through projects. Take the time to make a design document, whether it be a list of bullet points or pseudo- code. Something is better than nothing.

<comment><USER17> With all due respect -- that is just how some of us work internally. We learn by experimentation, intuition and repetition.

I often find it extremely difficult to write a design document for a system, particularly a system owned by somebody else. I have written design documents in the past, and they rarely end up describing the eventual system, no matter how hard I work to maintain and update them.

In my experience, software design and engineering is an iterative process, like gradually groping in the dark to determine the shape of a room. I cannot simply turn on the lights and take a photograph of the room at the start of the project.

Having said that, I completely agree that _in principle_ it is great to start new projects with a complete design document, at least a functional specification. Accurate technical specifications are a rare, elusive beast, though.

<comment><USER18> Well...

If you don't know what you're trying to build, you probably aren't going to manage to build it. But in practice, you never actually know for sure, because things always change.

You should know how you're going to build it (the architecture). But in practice, my ability to be omniscient is very limited. As I implement it, I find out that my design/architecture was wrong.

Maybe the key factor is this: When you find out that the architecture is wrong, _do you fix it?_ Or do you just hack it to get the next bit to work?

<comment><USER17> > When you find out that the architecture is wrong, do you fix it? Or do you > just hack it to get the next bit to work?

That's very project and organization dependent. Some projects are short lived prototypes (I'm working on one now) that are for internal use only, so it makes sense to try and get the damn thing finished without worrying too much about architecture.

Other projects are built to last, or have very high quality requirements, so you want to really get the architecture right, even if that means costly rewrites.

<comment><USER19> (Reading this a few days later in an open tab. :-) )

Imho the most important thing is to have a good design document for the data model. Partly because it often decides a lot of the structure of the code.

It is e.g. easier to rewrite code than realize that you lack some stuff you _should_ have captured about customers years ago...

</comment></comment></comment></comment></comment></comment><comment><USER20> I'm in an odd position on this one, because I agree with his list of desirable practices at the end, and disagree emphatically with his idea that writing something, anything, beats thinking about writing something 100% of the time. Much of the "quick" code we write in the real world ends up enshrined the minute it works, and never gets revisited or cleaned up. I once had to deal with a piece of data import code written by a predecessor who had moved on to management. He had a single 500-line try-catch block in which everything happened. When I mentioned that this wasn't the most maintainable or comprehensible approach, he simply replied that "it works." That statement, "it works", is a pretty low bar in software, imo.

<comment><USER21> I have to agree with that Mark. However there is (or a least should be) a difference between writing something and committing something. It can be hard to hold a manager off when you've got "functional code that's still a bit rubbish" but getting to that stage first before going over the top can (in my experience) massively accelerate development

<comment><USER20> Agreed. The question is whether, in those cases where you begin with a "rough version," you are afforded the time for refinement? Most clients don't understand code, much less the difference between good code and bad. And very few of them are equipped to evaluate the long term costs of maintaining bad code. Hell, very few of _us_ are equipped to do that. So I remain very wary of this concept that time spent thinking is time that could have been better spent at the keyboard. Too often you only get one shot.

</comment></comment></comment><comment><USER22> Development is a creative act, everybody creates differently. I don't think I'd be any more productive at four hours a day than I am at my current 2 hours. Some days it's closer to 30 minutes. Rare days push 5 hours.

At no time am I ever behind on anything. I often solve problems without touching my laptop, sitting in my boss's office thinking things through.

I talk myself and my boss out of anything that looks like work. (He never gets the hint and insists on working long hours. I'm gonna have to break him of that habit someday.)

Things on my end run smooth because code isn't being committed every day and I verify that it's working before I let it go. I happen to be a team of one, so this is easy.

I've come to the conclusion that focusing on productivity is mostly a sham. Before you do anything, spend half a day thinking about the necessity of doing that thing, what consequences it'll entail, where it fits into your overall plan, what you'll do if your approach is wrong and you have to backtrack, ways to change your approach so it's more flexible, whether you might be trying to solve the wrong problem and the problem you're having is actually social. Nobody spends enough time doing this.

If you have to, use a checklist, and force yourself to do it before touching a text editor. Don't think with a cursor and keyboard, guaranteed you'll find yourself working prematurely. Better to fuck off than do that. I want to run a software business where more time is spent on YouTube watching cat videos or whatever than on writing code. Writing code's not cool, you know what's cool? Erasing code. That's cool.

</comment><comment><USER23> 1\. collect paycheck. 2. save paycheck. 3. devote your time to more meaningful and/or pleasurable pursuits.

Downvote away. Now, I don't dislike programming. As far as jobs go, it's definitely on the better side. But there's a lot of things I'd rather be doing with my time most of the time.

<comment><USER24> Nope, won't downvote, because depending on the team you're working with, you're right. I work in a company where I started off following the author's suggested actions for becoming a great software developer. However, I still ended up being the difficult co-worker, the "dressage horse" as the author put it. Just because I strongly felt about using classes instead of putting an object's attributes in a single, vertical bar-delimited string. It works, they say, and I'm over-engineering.

Of course my problem is about not being a good fit with the way the majority of the team chooses to work and build software and perhaps the solution is to just get the fuck out ASAP before I'm used to the mediocrity and acquire it. But the working relations definitely got smoother when I kept my mouth shut and just thought of the paycheck and used my time to go to the gym instead of refactoring their code.

</comment></comment><comment><USER25> I agree with most of the points of the article (finding a balance for testing, naming, writing readable code, etc.) I'm not a fan of the tone, though. I might consider myself a "rockstar" programmer, if not for the fact that it sounds incredibly douchey. At least I'm closer to that than a "workhorse". And yet I don't think I fall into the negative stereotypes he mentions... I guess that explains my reaction (not to mention the self-quoting of tweets).

My biggest problem with software development as a profession is that people don't think before they do it. I've found that a lot of people just hack away randomly with some code that approximates their idea of how it should work. It usually doesn't work, so they just change things aimlessly until it appears to. I can definitely understand this mentality, I've been there--it happens to me when I'm programming beyond my understanding. But I try very hard to recognize when this happens, and stop to think more. There's very little value in writing code that even the author doesn't understand. Accumulate enough of this code, and you get the typical horribly-designed patchwork mess that nobody can read, debug, or change.

To me, the ability to solve problems that you're not familiar with is paramount in importance for actual software engineering. If you're just building some CRUDdy business app that does nothing remotely complicated, OK. But bubble sorts and link shorteners? Come on, that stuff is simple. Maybe you never need to implement those specific examples, but as a placeholder for general problem-solving skill, it's a low bar.

Perhaps that's why the title refers to "software developer" rather than "software engineer". I don't really know. But I do wish there were more jobs that required real problem solving skills (and don't require a PhD...).

<comment><USER26> > "But I do wish there were more jobs that required real problem solving > skills (and don't require a PhD...)."

Isn't PhD just about having a bigger cook-book to use recipes from? It's not like they are coming up with a new theory for every problem.

<comment><USER27> No, it means you've pushed the boundary out slightly.

[http://matt.might.net/articles/phd-school-in- pictures/](http://matt.might.net/articles/phd-school-in-pictures/)

</comment></comment></comment><comment><USER28> I'm rather against the "working horse," methodology to software development. Maybe it's because I'm lazy but I'd rather work with tools and processes that let me achieve more with less effort. The "get it done," attitude is admirable but ultimately, I believe, leads to the very same duplication of effort that the author admonishes.

For example, you're building a web application that has a signup process and the sales team uses an external CRM service to collect sales pipeline information. The programmer who shows up and does their four hours pulls out the usual libraries and writes the code to make it happen. The view fires up a few requests in an asynchronous task that updates some models and everyone is happy. However the sales team decides to change CRM services -- there's a shiny new kid on the block with features that would improve their sales process. The work-horse programmer gets the story and hunkers down. Four hours later there are a new set of tasks, a signup function, and hopefully a few tests.

The missed opportunity is that CRM software isn't terribly interesting and it should matter little when the web application signs up a new user whether you're talking to CRM A or B. I often find little scenarios like this that just add up over time. They're often missed because the focus is on getting something done for the next four hours/for the next sprint planning session/whatever. There's no real planning done beyond the next little bump in the road.

And so our solution is to use the same old tools and practices but simply hire more people to be work-horses.

I'd much rather engineer more robust RPC frameworks that can negotiate the protocols on their own so that a valid business decision to use a competing service doesn't cost me a couple of days of boring, tedious work. I'd rather just change a configuration line or two and sip an americano while reading the latest Vanity Fair in my garden.

So.. while a great article in many respects I would add that in order to become a great developer, in my opinion, you must refine your instincts towards laziness. You must become a connoisseur in methods by which you can avoid doing work. Being busy is not a virtue.

<comment><USER29> I'm probably misunderstanding you, but your example seems like the whole reason Rockstar programmers can be harmful to a team. I agree completely about laziness and looking to the future, however.

* It sounds like the upfront cost is higher than the simple solution.

* I don't think changing the CRM is going to be a common occurrence, so don't optimize for it. YAGNI

* I doubt you'll get it right up front. The new CRM is going to require a couple tweaks to the code in addition to a config line change

* Maintainer needs to learn the custom layer you've built on top, whose documentation, googleability, and stack overflow support will be much less than the standard libraries.

To me, that's what I took away from the article's work horses. They focus their efforts on moving the product forward and maintaining clean code. Sometimes, that means forgoing the fancy engineering challenges.

I like this xkcd for trying to keep myself honest: [http://xkcd.com/1205/](http://xkcd.com/1205/)

<comment><USER28> You're absolutely right. It makes far more sense to make the tactical decision to simply change the necessary code to work with the new CRM. I, and I suspect most of us, make the very same decision every day. When your goal is to build a product and ship then tactics, as in chess, will win you the game > 90% of the time.

I apologize if my trivial example failed to illustrate my point for you.

My point is that part of being a good developer is learning how to avoid doing the same task more than once. Tactical thinking inevitably leads to doing the same things more than once. The best programmers I've had the opportunity to work with rarely had to re-write anything they had to written. They had internalized the paradigms, patterns, and practices to avoid writing code that is brittle to changing requirements. This is what I mean when I say part of being a good developer is learning to cultivate laziness.

Focus on the things that matter but learn to internalize ways to avoid making work for yourself.

</comment></comment></comment><comment><USER30> This guy keeps quoting his own tweets... from today. [http://i.imgur.com/EePKQ.png](http://i.imgur.com/EePKQ.png)

<comment><USER21> joshdance is right. I'm not undecided as whether it's obnoxious but I wanted to see how it worked out as a way to encourage sharing. I'd not seen it done before and so I wanted to experiment.

FWIW so far it's not massively affecting sharing about 5x'd the rate at which people follow me on Twitter.

<comment><USER31> I thought the quotes were good and I don't mind that they are your own tweets. I think you should remove the attribution and the date to make them more like pull quotes. A discreet, low contrast link to the tweet would let people share if they want.

</comment></comment></comment><comment><USER32> Great post. If you want a even _further_ expanded version of this I highly recommend "Clean Code"[1] by Robert C. Martin, and I learned a few days ago that there is a follow up book, "The Clean Coder"[2] which I am yet to read

[1] - [http://www.amazon.com/Clean-Code-Handbook-Software- Craftsman...](http://www.amazon.com/Clean-Code-Handbook-Software- Craftsmanship/dp/0132350882)

[2] - [http://www.amazon.com/Clean-Coder-Conduct-Professional- Progr...](http://www.amazon.com/Clean-Coder-Conduct-Professional-Programmers- ebook/dp/B0050JLC9Y)

<comment><USER33> About _The Clean Coder_ : [http://maniagnosis.crsr.net/2012/03/clean- coder.html](http://maniagnosis.crsr.net/2012/03/clean-coder.html)

</comment></comment><comment><USER34> _You should aim for simplicity and over the years I have learned that simplicity is far more easily attained by time spent working and refactoring than hours of pure thought and "brilliance"._

This is where tests and egoless programming come into play. A lot of people seem to get mad when someone touches their code. It is almost like they think what they wrote is perfect, but the best programmers know that is never true. Great code comes from writing and refactoring code for readability first, and then refactoring for performance only after instrumentation.

</comment><comment><USER35> I think one of the most important things is to learn for learning's sake - <USER2> should want to improve yourself and expose yourself to new things, especially if it makes you uncomfortable. The important thing is to challenge yourself (near) continuously, since specific libraries can come and go, but patterns can last longer.

</comment><comment><USER36> > You should aim for simplicity and over the years I have learned that > simplicity is far more easily attained by time spent working and refactoring > than hours of pure thought and "brilliance".

Yup. It was Rich Hickey's presentation "Simple Made Easy" that finally allowed me to put it into words. I got so frustrated about only having a 1 hour presentation to link people to, that I ended up writing some notes to be able to refer people to.

This is the money shot I think.

[http://daemon.co.za/2014/03/how-complexity-affects- software/](http://daemon.co.za/2014/03/how-complexity-affects-software/)

This is also really relevant:

[http://thecodelesscode.com/case/108](http://thecodelesscode.com/case/108)

</comment><comment><USER37> I appreciated some of the author's points, but his presentation was egotistical. The pedantically phrased, autobiographical tweets didn't add much to each section. It would have been more humble and interesting to include quotes by other talented programmers.

<comment><USER38> Perhaps you should find these interesting tweets and suggest them to the author? It's easy to criticize. Hard to be constructive.

<comment><USER37> I'd love to! As a starting point, I'd recommend John Resig, Jeff Atwood and Simon Peyton Jones. These are some of my favorite programmers who write about being developers. I think they do a wonderful job of describing the process and using metaphors to illustrate concepts.

There are hundreds of thousands of articles, books and sayings about code and being a programmer. When an author thinks beyond himself (and doesn't quote himself), he has exciting opportunities to draw from this pool of knowledge.

</comment></comment></comment><comment><USER39> This might be a little bit off-topic, but...

The example of a link shortener algorithm (what algorithm? generating new unique url?) and a bubble sort (is it bubble sort the algorithm? really?) is simply bad.

I would rather say that not the experience with specific problems makes developers good, but rather the ability to tackle and solve new problems. And I would say that a good developer given the task of writing a link shortener should be able not only to do it but also do it right.

I do agree that being a good developer requires striking the right balance between under- and over- -thinking, -complicating, -testing, ... In fewer words: common sense.

But most of all (as also noted in the article) it requires doing things the right way. The author might not believe it but there are tasks which require not only good looking but also performant code. Some of us also actually have to use some algorithms in our work. It all depends on the task.

</comment><comment><USER40> Haven't we already had a great national discussion about the silliness of using "rockstar," "ninja," "guru," etc. when describing someone^? They're so vague...

I'm a rockstar Hacker News commenter ninja guru.

^ [Edit: Except in the case when someone is actually a rockstar, ninja, or guru.]

</comment><comment><USER36> I agree with most of his points, and the parts we disagree on are more of a philosophical difference.

I'm more of a sinatra-type than a rails-type, and I don't really trust 'frameworks' that try to do so many things for so many people. I like my dependencies to have a much more clearly defined scope with fewer assumptions made.

I also don't think loc is an indicator of simplicity. Removing duplication as in his example, sure. But it being one line of code versus being 10 lines of code because it relies on a specific set of side effects, that may drift over time... not so much.

</comment><comment><USER41> > Not only is their output erratic but their superiority is aspirational and > infectious. Their arrogance bleeds toxically into the rest of the team.

The gift of brilliant insight does not necessarily imply a negative impact elsewhere. I would agree this is probably an occasional side effect of having The Gift, but I think making a blanket blaming statement about these types of individuals is unfounded, and comes across as negative in and of itself.

That said, I think the rest of the post is absolutely bang on and wholeheartedly agree with it.

</comment><comment><USER42> I'll leave this here from Joshua Bloch:

[http://www.youtube.com/watch?v=heh4OeB9A-c](http://www.youtube.com/watch?v=heh4OeB9A-c)

How To Design A Good API and Why it Matters

</comment><comment><USER43> This post is great.

Couldn't agree more about the four hours per day piece. The best work I did in my career as a dev was the year I worked 20 hour weeks.

</comment><comment><USER44> In my opinion "depth vs. breadth" balance is very very tricky to get right. We keep saying that a "fat T" is what we're going after. "Depth" is obvious but "Breath" certainly helps in architecting, in seeing the bigger picture, in being able to think out of a platform/language/framework's patterns.

</comment><comment><USER45> tldr; things acquired by practice.

I wish we had a better way to measure and train specific parts of our brain. For example how much capacity you have in your short-term memory. How fast your analytical brain can combine things to find the best solution. How long you can stay focused on a single task.

If we where doing some kind of sport, we would use weight lifts to train specific muscles.

<comment><USER36> Or you can just acknowledge that we are limited. all of us.

Once you realize that, aiming for simplicity first is the obvious choice.

[http://en.wikipedia.org/wiki/The_Magical_Number_Seven,_Plus_...](http://en.wikipedia.org/wiki/The_Magical_Number_Seven,_Plus_or_Minus_Two)

</comment></comment><comment><USER46> I wish posts like this reduced their content to more concise descriptions so more people would finish reading them.

</comment><comment><USER47> Off-topic, but the each page of the site (not just the one linked to) makes my browser freeze for a couple of seconds and downloads ~3mb of crap. I don't think the ninja rockstar guru programmers are the only ones capable of writing a bubble sort and optimizing a page load.

</comment><comment><USER48> Why on earth is an article on creating great software, written by a CTO, completely unreadable on a tablet (nexus 7)?

I'm tempted to turn this observation into broader philosophical diatribe, but I'll refrain until I at least read the post somehow.

</comment><comment><USER49> Every programming [https://en.m.wikipedia.org/wiki/Language- agnostic](https://en.m.wikipedia.org/wiki/Language-agnostic) coder is a great developer IMO.

</comment><comment><USER50> "If there's one thing that software developers care about, it's becoming even better software developers."

Observational evidence suggests otherwise.

</comment><comment><USER51> I actually googled "Ronseal Code" thinking it was an established convention for writing code.

 _facepalm_

Any good links out there for clean code best-practices?

<comment><USER52> I did as well. To save everybody else from having to search, Ronseal is a maker of wood stains, and their slogan is "Does exactly what it says on the tin."

</comment></comment><comment><USER53> This blog entry is not very generalizable. It implies a certain kind of programming for a certain kind of business.

</comment><comment><USER54> Definitely going to keep all this in mind as I start my developer career. Thank you for this

</comment><comment><USER55> Should be, "How to be a useful software developer".

</comment><comment><USER56> Am I missing the point or is there really a mistake in this statement: "Remember, there are only _two_ hard problems in computer science: cache invalidation, naming, and off-by-one errors. " ?

<comment><USER57> It's a joke. Claiming two problems and listing three is an off-by-one error.

</comment></comment><comment><USER58> As much as I like this post because of beeing 'working horse' myself, I still believe that 'Rockstars' are very important when some brilliant solution is really needed.

</comment><comment><USER59> Worse is better.

</comment><comment><USER60> lucky to know

</comment><comment><USER61> Oh, yes, it's great to be a workhorse developer. You don't get any opportunities to use new technologies and improve your skills at work so you have a choice: program at home after work and in weekends or become useless in a few years and get out of the field or move into management if you're lucky.

It's really fun to make the first choice, because you either give up socializing and live a hollow life focused exclusively on programming, or you don't have time for physical exercises, cooking and eating real food(not junk) and other human routines that keep you healthy and you die at 40.

But never worry, because right before you'll leave this world you'll be able to say with immeasurable pride: "I've made someone else rich!".

Don't be stupid and care about interesting work and improving yourselves and especially don't boast about it because you make the workhorses feel bad(and FSM-forbid, even open their eyes). Shut up and keep your heads down because it will all be over soon.

<comment><USER62> Lol, Yup. It's funny he used the term "workhorse". I remember what happened to the workhorse in Animal Farm. A sucker is truly born every minute.

</comment></comment><comment><USER63> I like most of what he has to say, but I have to attack this:

 _It signals loud and clear that if you're smart enough you choose when you work and what you work on._

What's so wrong with that?

In practice, I would prefer that a company use Github/Valve-style open allocation, and extend that sort of freedom to the whole team. People who can't justify their own salaries in an open-allocation environment (noting that a typical engineer is worth 3-5x under closed allocation and 10-20x in open allocation) are those you shouldn't be hiring anyway.

Often, brilliant, high-variance people are binary (or, at least, sporadic) in output, not because they have an attitude problem, but because they're neurologically built that way. Environments that favor (or, even, demand) reliable mediocrity shut them down and lose the ability to hit the high notes.

The best way to work with such people is to give them an R&D environment where they direct their own work and career. They know what they're doing, and they make more of a profit with the hits than they lose on the misses. But I'm not convinced that anyone who's smart enough to be a decent programmer _shouldn 't_ have the same freedom (open allocation).

<comment><USER29> I'm coming from a large company mindset, but I disagree. We're working on projects that are too big for a single person, no matter how brilliant. Working well as a team is how we ship features.

Being predictable in our output is important to the business, because they have plans for the project/feature that we'll work on next. There are marketing and customer support teams working with us who also value our ability to deliver what we've promised, and when. There are customers who need features by a specific date.

I think the best engineers are the ones who improve the output of the entire team. Just like a good manager can improve the productivity of their engineers.

<comment><USER64> A team can absorb the natural peaks and lulls that accompany high performance far better than an individual can.

If you need everybody to be operating at 100% week on week in order to hit your deliverables then you have over promised and introduced an incredible amount of risk into your projects.

As a manager, if you care about the productivity and general well being of your team then you will be promising a max of around 70% team effort. Managing the expectations of other teams and departments is part of being a decent manager.

Spend two weeks sharpening the ax and then another cutting down the tree? No, the average company would rather you spend six, or even twelve, weeks chopping away with your blunt ax.</comment></comment></comment>


Obama: "They're going to pry [the BlackBerry] out of my hands." - <AUTHOR> http://www.nytimes.com/2009/01/08/us/politics/08berry.html

<comment><USER2> I hope he gets to keep the BB. We can't have a system that keeps technology away from our leaders. I did an interview with political consultants who told me their clients in congress had to fight to get access to Twitter. Our representatives shouldn't have to fight to stay in touch with the world.

<comment><USER3> I could really give a crap whether or not he keeps his friggin' Blackberry.

I'm a little more concerned with how he handles pressing issues like our failing economy, safety, and health care.

<comment><USER4> So if he handles them in a way you're dissatisfied with, you'd rather him be further insulated from the opinions, suggestions, and questions of the public?

</comment></comment></comment><comment><USER5> I think it's incredible that given the entire resources of the American state they can't give the president secure access to his email.

<comment><USER6> ... Through Canadian servers :).

<comment><USER7> With good crypto the server could be in Iran and it wouldn't matter.

<comment><USER8> I disagree. There's a big difference between having the ciphertext and having nothing. Big keys buy you time but that's just it -- it's time. Government secrets often outlive the design parameters of commercial crypto by decades.

To me it's surprising he gets a commercial cellular/smartphone at all. As much as we all just assume the systems are private and secure, it's really just not that way.

</comment></comment></comment></comment><comment><USER9> Am I the only one who finds it odd that the President will have to _fight_ over whether or not he can do something in his personal life? It seems to me that if we believe him to be intelligent enough to run the country, we must assume he is intelligent enough to override a decision about his personal safety.

<comment><USER6> If it was just his personal life, then sure. He uses his blackberry for far more than just personal stuff though.

</comment></comment><comment><USER10> This strikes me as being a PR thing - Obama being a 'man of the people' while accepting that it's a good thing because the emails would be discoverable.

</comment><comment><USER11> He can sneak a few emails on the side like cigarettes.</comment>


Ugly Babies and Customer Development - <AUTHOR> http://bigbangtechnology.com/post/ugly_babies_and_customer_development

<comment><AUTHOR> I've been running a customer development workshop in Toronto for the past four months where I run early stage startups through customer and problem discovery.

I've also worked with older startups who found out about customer development a bit late. These people tend to skip over a lot of problem validation.

That's why I wrote this article.</comment>


99 per cent of Quebec kids using iPads in school find them totally distracting - <AUTHOR> http://o.canada.com/technology/ipad-class-canadian-study/

<comment><USER2> ""Some of the teachers were getting the iPad on the first day of school with their students, can you imagine? All the students were on Facebook, Twitter and the teachers were like, 'Oh my God, this is not working,' and blaming the technology because he or she was not ready," said Karsenti, the Canada Research Chair for information and communication technologies in education."

My cousin was required to buy an iPad when he started secondary school (Grade 7). The teacher spent the first week trying to set up his own device.

I don't know how a tablet can prove useful given how most classes are taught in Quebec. You have to adjust how the teacher will interact with the student since the "teacher in front of the class" way won't work with iPads on every desk. I for one also don't listen as much when I have a screen in front of me.

If they're trying to close the gap between technology and learning, they're unfortunately not doing it right.

</comment><comment><USER3> _"You have teachers who are fully unaware of what's going on in the classroom, they're sitting reading their notes and the students are doing whatever they want."_

So there's at least _some_ benefit. But a locked-down consumption-oriented device is wrong tool; the kids should have real computers.</comment>


The growth of non-vocal communication - <AUTHOR> http://attentiv.com/we-dont-speak/ <comment><USER2> From personal experience as someone who's had a computer since around 8 years old (and is nearing 30), I have to say that I've learned to speak more confidently, especially in less-than-ideal situations; however, I will always be able to communicate better through text.

I've noticed this is mostly the trend with people around my age as we were raised during the era where instant messaging blew up. Nearly all of my extremely intense, extra personal conversations with my friends (who I have known since elementary/middle school) were through IM. Part of me thinks this was due to SMS costs being extremely high, but I digress.

When we hang out in person, it was only to talk about school, video games, cartoons, jokes, etc., but when it came time to air out the overstuffed emotional closet, it was always through IM. Sure, it would sometimes bleed over to the "physical" world and much more detail would come out through actual physical interaction, but the conversations would always start with text on a screen.

That said, I feel that actual speech has sort of become a facade to actual "conversation". Especially in cases where one's in an unfamiliar environment (meeting someone new, attempting to speak in a different mode of speech, etc.), we all seem to just recite a script as if it's a weird vocal handshake to show that you're a normal human being. Conversations through text removes so much of the external factors that just increase noise and I believe it's a much purer, higher quality form of conversation.

[Sorry, that became kind of ranty. This was part of an enjoyable paper I wrote during undergrad.]

<comment><USER3> I think that the primary effect of eConversations is that you get closer to the brain's raw consciousness. You skip past the social lessons you learnt as a child and go straight to a stream from the brain. It's far more volatile.

'Pure', in this context, takes a slightly different form.

</comment></comment><comment><USER4> Why are half of the charts missing axis labels?

Figure 1 is completely non-essential and just repeats the prior sentence in huge text.

Figure 2 I guess is "percentage of people doing once per day" from the following sentence, which does not reference the chart and uses different numbers than the chart.

Figure 3 pyramid plot seems like a fairly suboptimal visualization choice usually reserved for abstract hierarchies like human needs, not for trends and percentages because it has no numeric information.

Figure 4 should read "Total Number of Worldwide Internet Users (In Billions)", the growth would be the derivative of this plot (which actually would have some cool features from 2013-2015 and 2005-2009 that I would be interested in knowing about).

Nothing is technically wrong with Figure 5, however I immediately question numbers like 71,727,551, rounding them is more professional. Also a nice touch would be to have the names drawn on the pie slices, instead of using a legend.

No clue what Figure 6 means. In the world? In the USA? In a specific age group? The next sentence talks about Millenials...

Most of the time the text has little or nothing to do with the associated graphic.

</comment><comment><USER5> If you're going to monologue, I'll take a blog post over a speech any day. But if we need to work out details, let's get conference chairs. If we're planning a party, online will do. Once we're hanging out, we'd better be in the same room.

So long as you get out enough, I think this is fine. When you're doing something rational, online written communication is great--you omit all those distracting interpersonal protocols and focus on the issue at hand.

</comment><comment><USER6> I probably do 1/10th the amount of phone calls than 15 years ago. Overall, the trend of less communication by speech has improved my overall quality of life.

That said, the advantages of text-vs-talk depends on the relationship.

There are certain people that I prefer to keep in 100% text mode. When they call, their chats have little substance. My mind wanders and I wish they would get to the point. Since most can't touch type, if they are forced to communicate by email or SMS text, _they are succinct and get to the point!_. Technology is a beautiful thing.

But there are also others who I wish I had more frequent chats with. They have humour that makes me laugh and their upbeat tone doesn't translate into text. But they are busy with families, etc and so we've settled into twice-a-year catch up sessions.

Overall, I still prefer text over speech. I remember that there were old articles decades ago lamenting that _" we used to write long form letters to each other and the new fangled phone has killed that off."_ Back then, there was a value judgement in that letters were somehow "better" than phones.

<comment><USER7> The amount of time it took to get a letter across the country/world also made a difference to their signal to noise ratio. It especially comes across in the letters written by thoughtful people.

You could compare it to speech making or say a TED talk. The speaker knows she has one shot to make a mark, so a lot more effort goes into it. And it ends up leaving a mark.

</comment></comment><comment><USER8> I'd be interested in learning the reasons for this trend. Vocal communication seems more efficient than text. There's no pauses between what you say and what the other person says.

I wonder if that could be a reason for the decline of speaking on the phone...

<comment><USER9> It's not more efficient if the other person is just rambling at you.

As someone who's a good listener and doesn't like to interrupt people, this is a great reason to have digital communication. I can ignore your blathering. If we're doing an IRL 1:1 I'm going to slowly get more frustrated at your run-on thoughts.

If anyone has any tips for how to convey "Yes, I got the message, move on to the next thing you were going to say or stop talking." firmly & diplomatically, I'd love to hear it. It's been a lifelong struggle.

<comment><USER10> You're basically people-pleasing.

This is because you don't have the ability to replace the people you feel the need to please at your expense, with people you can have a reciprocal relationship with.

I'd say people are in this situation to some extent (and most people their whole lives, let's be honest :)) until they get high enough in their career and maturity to have enough power to have others cater to them and not vice versa.

Not cater in the sense that you abuse them and they can't abuse you but in terms of you having the wisdom to establish largely mutually-beneficial relationships and cut out the ones that aren't - win-win.

I'd say almost nobody younger than 30 has the ability or the wisdom to do this. As long as you are learning and becoming more and more independent, both financially and 'spiritually', then it'll be fine in due time.

If you're not doing that, you most likely bitch and moan to others as means of therapy and guess what, they don't wanna hear it either, they're thinking 'yes I got the message, move on', except you can't move on because you're not moving anywhere really :)

ps. What most people do is limit the amount of interaction they have with one another - you bitch to me for an hour a week and I bitch to you a similar amount. That way we both get to de-stress while not overwhelming one another. :P

</comment></comment></comment><comment><USER11> From the tone of TFA, this seems to be presented as a problem. If that's the case, why is it a problem? Is written communication somehow inferior to verbal?

</comment><comment><USER12> Theres a reason that a common depiction of an alien is hairless humanoid without a mouth. Devolve the traits that are no longer necessary.</comment>