Rob Pike’s 5 Rules of Programming

Rob Pike’s 5 Rules of Programming

  • Rule 1. You can’t tell where a program is going to spend its time. Bottlenecks occur in surprising places, so don’t try to second guess and put in a speed hack until you’ve proven that’s where the bottleneck is.

  • Rule 2. Measure. Don’t tune for speed until you’ve measured, and even then don’t unless one part of the code overwhelms the rest.

  • Rule 3. Fancy algorithms are slow when n is small, and n is usually small. Fancy algorithms have big constants. Until you know that n is frequently going to be big, don’t get fancy. (Even if n does get big, use Rule 2 first.)

  • Rule 4. Fancy algorithms are buggier than simple ones, and they’re much harder to implement. Use simple algorithms as well as simple data structures.

  • Rule 5. Data dominates. If you’ve chosen the right data structures and organized things well, the algorithms will almost always be self-evident. Data structures, not algorithms, are central to programming.

A bit more can be found at the source here: http://users.ece.utexas.edu/~adnan/pike.html

In my experience, I’ve come across Rule 1 enough times to know how to avoid the lesser obvious bottlenecks (which for me generally focus on data merging). I’ve definitely come across Rule 4. Rule 5 trumps them all, as it were. A deep understanding of the appropriateness of data structures is core to good code. Rules 2 and 3 don’t generally impact my day-to-day programming.

Via Hacker News, which I’m sure will lead to a killer comments thread.

Animated Pile of Poo

“If you were wondering what humanity would do when given access to the most advanced facial animation, now you know.”

—Apple’s Craig Federighi, demonstrating the new animoji feature by turning his face into an animated pile of poo on the new iPhone.

So proud of my chosen discipline, Computer Science.

Or not.

Two Books

Two novels can change a bookish fourteen-year old’s life: The Lord of the Rings and Atlas Shrugged. One is a childish fantasy that often engenders a lifelong obsession with its unbelievable heroes, leading to an emotionally stunted, socially crippled adulthood, unable to deal with the real world. The other involves orcs.

—Anonymous

HTML today is the same as it was in 1993

HTML is the kind of thing that can only be loved by a computer scientist. Yes, it expresses the underlying structure of a document, but documents are more than just structured text databases; they have visual impact. HTML totally eliminates any visual creativity that a document’s designer might have.

— Roy Smith 1993

HTML today is no different without CSS.

Adobe ending Flash support in 2020

Just saw this on Ars Technica:

Flash will be supported through to the end of 2020, after which the Flash player will cease to be developed and distributed.

I’m not going add anything of value here other than to echo what I think a lot of other people are going to say: Good fucking riddance. Flash has been a thorn in my side for years now. They could get rid of it today and my world wouldn’t change one bit.

Don’t use the cell color in Excel; add column values instead

Pro tip: When using Excel as a poor man’s database, don’t use the cell color to highlight rows. Instead, add a column and populate each cell in that column with some meaningful value where needed. You can sort by column, but you can’t (easily as far as I know) sort by cell color. It’s a little extra work with a lot of utility.

That is all.

Let the Game of Thrones Excuses Begin

No, I have not started watching the new season of Game of Thrones.

No, I am not busy; I’ve had time. I’ve chosen to do other things with it.

I don’t know. Next week, maybe? Probably just before Verizon and HBO decide to charging me to watch episodes. How long is that? Two weeks?

Yes, you can talk about it in front of me. No, I don’t care.

No, I am not the person who reads the last pages of a book first. My life simply does not revolve around TV shows. I have other things that I do, too.

The best argument for Net Neutrality I’ve read so far.

Found on Hacker News (all highlighting mine):

Assume for a moment that we had effective competition for ISPs, and almost everyone in the country could select among three or more ISPs. In a world that looked like that, restricting how ISPs can structure their networks is both unnecessary and potentially harmful, given the historical precedents of law tending to encode outdated assumptions about technology. (As a random example, some proposed versions of Network Neutrality rules I’ve seen would also stop CDNs from handing ISPs a box full of content or arranging fast links to their caching servers.) If we had effective competition for ISPs, any ISP engaging in any of the terrible behaviors NN advocates are genuinely concerned about would find themselves with an abrupt loss of customers.

The main problem is that we don’t have effective competition for ISPs; many people have only one choice, or two choices where one is also incredibly terrible for other reasons.

Personally, I’d like to see some focus on regulations to break ISP monopolies, and in particular to ensure that there’s an independent source of fiber to everyone’s door, with a wide selection of ISPs willing to light up that fiber. But until we have that, we need Network Neutrality to stop abuses by the current ISP monopolies.

And a follow-up comment summarizes it even more neatly:

Competition would fix this more effectively than net neutrality regs, but competition in ISPs is typically blocked by state-enforced monopoly laws or by the technical and economic challenge of deploying an ISP.

Wired ISPs are what is often termed a natural monopoly.

One solution would be to open up a lot more wireless spectrum to ISP use and license it to many upstarts. This would allow wireless alternatives to last-mile wired connectivity such as what would amount to neighborhood-scale WiFi. That would dramatically reduce cost of entry for the ISP business.

Until or unless we can find a way to open the ISP business to a lot more competition, net neutrality regulations are absolutely essential to preserve the Internet as a medium for open innovation.

It’s so simple, it’s brilliant: Until we have more and better competition between ISPs, we need Net Neutrality. That’s it. One thing that is important to not gloss over is the problems presented by state-enforced monopoly laws and the technical and economic challenges of deploying an ISP.

If your city or state government was stupid enough to sign some exclusive contract with an ISP, call your representative and remind them of the importance of free market competition. Fairly straightforward.

But the issue of the economic burden of establishing an ISP is a tougher nut to crack. Until someone else comes along offering a choice, to simply surrender control over your media access to companies in such a way that they would have no obligation to your rights as a customer and citizen is just as irrational as your local government forcing an ISP on you that you did not choose. If you believe in your right to choose in open markets, then net neutrality is the best, and so far only, place to start.

Blake Watson: Why I deleted my Facebook account

Great article on quitting Facebook by Blake Watson. It came down to two reasons: Privacy concerns and the “unhealthy addiction” of getting notifications.

Over time, we’ve become hooked on the social validation Facebook (and other services) provide. Before I hit the delete button on my account, one of the last things that kept me on Facebook—after I had largely stopped posting and reading the News Feed—was simply checking my notifications. I unconsciously craved that little hit of happiness one gets when they see, So-and-so liked your post. But that’s not real happiness. It’s an unhealthy addiction.

I’ll admit I have two Facebook accounts: one I share with my family—photos and events—and one I established for when I was going to school, and a lot of stuff being posted was irrelevant to my family. My use of both have sputtered to almost nothing since most people I know maintain a passive use of it that is similar to my own: generally, curious to see what other people are doing, but not really interested in posting anything themselves, which I totally get. I’d post, but I’d get few, if any, likes, which again I totally get.

But the comments on Hacker News, where I found the article, really hit the nail on the head in terms of my real problem: the complete time sink Facebook represented. It hits all my ADD receptors and I had to delete it off my phone and remove all traces from my primary browser to get away from it. Even as I stripped my feed to nothing but Reuters and AP articles, Facebook still mixes in all sorts of other stuff in there. It’s maddening. The privacy issues concern me, but the time sink created by its ability to manipulate is what really hit home. I just can’t use it anymore.