It’s basically impossible to block because it doesn’t rely on you storing anything — it just asks you to draw a picture, and every computer draws it slightly differently, but any individual computer always draws it the same way. Devilish.
With Square and Simple thoroughly captured by the existing financial establishment, Stripe remains the company to watch for innovation in financial services. (Also, why do all financial startups start with S?)
This mini-boom is unusual in the developed economies and is going to be good for the US economy in general. It will unfortunately suck for the members of that generation themselves, since they will spend their whole lives competing with more of their peers than we did. It will be particularly good for the generation *before* them — mine — currently in their 30s, who will get a cheaper workforce and easier hiring.
A comparison of diversity at three major tech companies
Something really unusual happened recently: Google, then Yahoo, and finally today Facebook all released diversity reports, detailing how their workforces break down along gender and racial lines.
This is unusual first because this is data they previously kept secret, and also because of the striking uniformity of the reports — they all chose to report in the same categories and even gave those categories exactly the same names. I’m not sure how that happened — maybe they conferred, maybe there’s a third party driving all three of them to do it — but whatever happened, it means it’s possible to do an apples-to-apples comparison of these three, which collectively employ around 60,000 people (Google is by far the largest company).
First up, gender breakdown across US employees:
Unsurprisingly given what we hear about tech, men are over-represented. The only other interesting thing is that Yahoo is the only company to acknowledge a non-binary gender option (though they include “undisclosed” in that group, so it’s not clear how many employees are taking advantage of that). But interestingly, all three companies chose to further break down their stats by “technical” and “non-technical” positions. None disclosed how they made that classification, but the results are strikingly similar. Here’s non-technical staff:
Not bad at all. But here’s technical staff:
Boom. The problem with gender diversity isn’t in “Silicon Valley companies” it’s in engineering. In case you needed the point rammed home any harder, this is 100% tech’s problem. The companies are doing generally okay, but the engineering organizations are ridiculous, averaging only 16% women.
The racial data has fewer surprises. Here’s all US employees again:
Again, I had to make no adjustments at all to this data. All three used exactly the same names for categories. Is there some national standard for reporting this data I’m not aware of, or is there some coordinated campaign? Anyway, these companies are hella white, and basically everybody who isn’t white is asian. The breakdown amongst non-technical staff is pretty much identical across all three companies:
With the one surprise being in the data on technical staff:
Yahoo’s engineering staff is majority asian, by a huge margin. I triple-checked my data to make sure I wasn’t getting this wrong, and that this is only about US employees (Yahoo India is a substantial organization). But no. For some reason Yahoo employs way more asians compared to the other companies, and all the “extra” asians are engineers. As an ex-Yahoo myself I can’t say I ever noted this myself, but there it is.
What does this say about our industry? Nothing we didn’t know before: tech companies are very mostly white and very male, and engineering organizations embarrassingly so. Engineering orgs are also disproportionately asian (the Bay Area is 23% asian, and non-technical staff match that figure). But here’s some nice, solid, clean data, all released in the same six-week period, to back that up.
If you want the actual numbers, you can save some typing by cloning this spreadsheet, which also has the charts from this post.
 Thanks to Tom Coates for suggesting I clarify this.
There is a thing about privilege and power that I don’t think we say often enough, whether the conversation is about gay marriage, or women in tech, or any of the dozens of other places the battle for equality is being fought.
The objection of the privileged when people demand equality is basically “but this will make me less powerful!” It’s often expressed as “this is trampling my rights!” or “reverse discrimination!” or other phrases that sound like they might be reasonable but aren’t. Campaigners for equality often respond along the lines of “giving us equal rights doesn’t take yours away. Giving us power doesn’t diminish yours.”
But honestly, that’s not true. Power is a relative measure. If I get more, you have less. If your rights include excluding me from places, then including me takes that right away. We gain nothing by denying this.
So here’s the thing we should say more clearly: yes, this will make you less powerful. Yes, we are taking some of your rights away. That’s okay. You are too powerful, and you have more rights than you deserve.
And then at least we can stop having this circular argument.
Roll your own with errorbacks, use async to make handling callbacks easier, or move into promises with bluebird: it’s completely up to you. I’ve written code in all three styles this week. Each time I picked the one that felt most appropriate for the problem in front of me.
Use semantic versioning
I sometimes let development dependencies, like the must assertion library, ride free with *. More often I just use npm install --save module-of-awesome, which will save the dep in package.json as ^3.2.1. Periodically I’ll check for out-of-date-ness with npm outdated --depth=0, update, test, and check in a fresher set of version numbers.
Debug with console.log()
For the last 30 years they’ve been telling me that the age of interactive debuggers is here, but for every one of those thirty years I’ve debugged most problems with the humble printf(). It’s fast to implement, reliable, and can be run overnight on complex production systems to catch rare incidents. You should be logging a lot anyway to help with forensic analysis of surprising incidents.
Use REST when appropriate
Not that people these days seem to have trouble with this one; I see RESTful APIs more often than not. I only get cheesed off when somebody bills an RPC API as ‘REST’. RPC is fine too, though it’s out of fashion right now.
Stop caring whether people use semicolons or not
Use comma-first if you like it
I don’t do it, but hey, I get why other people do! I solve that problem this way:
_ = require('lodash'),
P = require('bluebird'),
util = require('util')
But I can totally see how comma-first solves the same problem. Also I am aware nobody else in the world formats the way I do. Which, by the way, doesn’t bug me. I’m okay with being different from you. I can read your code just fine when I need to, and I presume you can read mine too.
Change all your own rules periodically
Set your tab stops to some new & exciting value! Switch indenting styles! Find out what Hungarian notation is good for!1 Change your font! Change your editor’s color scheme! Try a new editor! Try promises! Try going without dependencies altogether!
Stop caring what other people do. It’s all good.
I lied. I’ll totally judge you if you use Hungarian notation. ↩
The top result for “how to install node on ubuntu 14.04” is currently this DigitalOcean article. Unfortunately, their first suggestion, installing via apt-get, will install an old version of node and a very old version of npm that cannot properly update itself (because of path differences). Their second suggestion is much better. Simply:
sudo add-apt-repository ppa:chris-lea/node.js
sudo apt-get update
sudo apt-get install nodejs
This is all you need to do. npm is bundled with node.js and will be installed automatically if you install this way. If you want to make sure you’ve got the very most recent release of npm, you can do:
sudo npm install npm -g
This step is optional. At the moment Chris Lea’s PPA will give you npm 1.4.9, which is recent enough to have no showstopper problems (the version that comes with apt, 1.3.10, is not terrible but has some known bugs).
An astonishing experimental therapy; the virus, rendered harmless to its host, used tumor cells to reproduce the way it always does: by reproducing itself inside of them and forcing them to explode and die. By giving her a massive dose of the vaccine, the viruses attacked all the tumor cells at once, eliminating the cancer.
This isn’t a shock, though the scale surprised me — home page traffic at major news sites is falling, because people don’t go to home pages to check for news anymore, they expect for it to get pushed to them by social media.
This jerk is getting a ton of press coverage for his “medical” objection to homosexuality and gay marriage, saying that anal sex is harmful (his stance on same-sex marriage between lesbians is unclear, but presumably he’s okay with it? Somebody should ask).
He’s also trotted out a subtler and more insidious attack on homosexuality, referring to it as a “genetic breakdown” like cancer. It’s insidious because it has a grain of believability, because homosexuality doesn’t seem to be an advantageous condition, in evolutionary terms — it predisposes the individual to relationships where reproduction is impossible. So why does homosexuality exist? Maybe it’s just a genetic problem, like cancer?
The fact is that we don’t know why homosexuality exists. But we do know for sure that it can’t be a genetic error, because homosexuality is far more common than any genetic disorder. Something like 2-4% of the population is homosexual, but individual genetic disorders are vanishingly rare, seldom cracking more than 0.1% of the population. In fact, at 4% of the population, homosexuality is almost as common as all genetic disorders combined.
Whatever the evolutionary advantage of homosexuality is, there must be one, because otherwise evolution would have weeded it out a long, long time ago.