Imagining version control for APIs

Versioning is, right now, merely a human label. We have helpful conventions like semver, but one still relies on human judgment as to the definition of a “notable” change. ..

Three ways the new iOS ad blocking hurts Google

Apple’s ad blocking API is good for users and bad for Google, in 3 ways: ..

Three outcomes of the adpocalypse

It appears that Internet advertising is going through a bit of a shakeout. Ad blocking is becoming more pervasive (perhaps 30% of users), and a study by Google indicates that as many as 50% of ad “impressions” are never actually put in front of a human being. ..

Improve the median, not the mean

I like seeing Google Fiber prompt incumbent dinosaurs into boosting speeds. It’s great. ..

Liquidity, open source and security

Jeff has a thoughtful post about open source, security and incentives. A few points stood out to me. ..

Statements are statements, and expressions are expressions (in Go)

I got trolled by a facetious article on Go on April 1. But it did trigger a conversation about why Go doesn’t do certain things other languages do. ..

Theory of the firm: opt-in initiatives

I’ve become adamant about making internal initiatives opt-in for the following reason: it brings more information to bear. ..

Bugs are a failure of prediction

We think of bugs as flaws in code. This is incorrect, or at best, banal. ..

The legacy ad industry is wrong about ad blockers

I was recently directed to a couple of papers on browser ad-blocking software (here and here). They are not so much alarmist as they are self-serving and hindered by status quo bias. ..

Embedding a struct declaration in a text template in Go

Here’s a nice little technique I came across in developing gen. Say you have a text template, and that template is intended to output Go code. You’d like to pass a data structure into the template, and have the structure appear in the template as its own value literal. ..