Three Talks

I’ve been busy this month speaking at HackSI, YUIConf, and Bayjax. The videos will be available soon, but you can check out the slides now:

My testing talks reveal what I’ve been working on for a few months: yo/tests, a commit-based test report for YUI that helps us ship quality releases. Compared to Jenkins’ build-based test silos and build-based CI dashboards, yo/tests actually lets engineers know what’s broken by organizing results around commits instead of build numbers and hiding flaky tests and infrastructure.

Upstage is back

Upstage is my library for building web presentations. Created way back in 2010, before deck.js even existed, it’s the only presentation software I know of built on YUI. Last year I used it with getUserMedia to show multiple live demos of various tablets and phones on the big screen.

Since YUIConf and HackSI are right around the corner, and I’m speaking at both events, it’s about time Upstage got some love for 2013. I’ve switched Upstage from an Ant-based built system to Shifter, updated it to the latest YUI 3.13.0, and rewrote most of the README. It’s open-source under the BSD license. Happy presenting!

Status Board at Home

I have wanted my own always-on Status Board for years, displaying ambient status for things I’d otherwise forget. So, I made one.


I used a free trial of Geckoboard to bring all of these stats together. The most useful part of this screen is the graphs on the left that come from RescueTime that let me know where my time goes on the computer.

My experimentation with Geckoboard explains why Pingdom, Twitter, and YHOO widgets are up there: I was curious what they’d look like, but they aren’t useful on this screen. They’ll be replaced with birthday reminders and other distant calendar things I often miss. My roommate and I both use the UP by Jawbone fitness tracker, so I plan to introduce friendly competition by putting our stats up there too.

The heart of my status board is a little Android stick that’s powered by the TV’s USB port:


It’s basically a giant Android tablet. The Android stick turns on and off with the TV. (Sadly, it’s no BAT since there’s no touchscreen.) I use a tiny keyboard and trackpad combo to drive it. It can run Air Display, YouTube, AirPlay video, etc.

You can make this for about $250. Here’s what I used:

The LE32HDF3010 at Fry’s is no longer offered at $189. You can find the same model at Costco for $199. A similar TV by Sanyo at Fry’s is currently $189, so check their weekly ad for what’s cheap this week.

I preferred the LE32HDF3010 because unlike most sub-$200 TVs, it has a slim bezel. Because it’s LED, it’s very energy-efficient and only draws 45 watts—less than some of our lights. (I also turn the TV off before leaving the house or sleeping.) You can also move it from room-to-room pretty easily since it’s only 14 pounds. The resolution is 720p, which isn’t stellar but does the job.

You’ll want to shop around for the MK808, since there are lots of variations. I bought mine from Seeed Studio at discount, but they no longer offer it. The MK808 that I have does not play Netflix or Rdio out of the box and requires a firmware update to fix the problem. I don’t need these apps, so it’s not a problem for me.

I used the Auto-Start app to automatically launch the built-in browser app on startup and full!screen to hide Android’s bottom tool bar. The TV boots to Android and in about a minute the status board website appears.

It’s a fun setup and an easy project. If you’ve been wanting your own status board, it’s now pretty cheap to create.

A cartoonist’s advice

Gavin Aung Than created a wonderful comic around a quote taken from the graduation speech Bill Watterson gave at his alma mater, Kenyon College, in 1990. Watterson is the man behind the widely acclaimed Calvin and Hobbes comic strip.

The entire speech is full of great advice. Than’s comic is based around this quote:

Creating a life that reflects your values and satisfies your soul is a rare achievement. In a culture that relentlessly promotes avarice and excess as the good life, a person happy doing his own work is usually considered an eccentric, if not a subversive. Ambition is only understood if it’s to rise to the top of some imaginary ladder of success. Someone who takes an undemanding job because it affords him the time to pursue other interests and activities is considered a flake. A person who abandons a career in order to stay home and raise children is considered not to be living up to his potential — as if a job title and salary are the sole measure of human worth.

You’ll be told in a hundred ways, some subtle and some not, to keep climbing, and never be satisfied with where you are, who you are, and what you’re doing. There are a million ways to sell yourself out, and I guarantee you’ll hear about them.

To invent your own life’s meaning is not easy, but it’s still allowed, and I think you’ll be happier for the trouble.

While there are no prints of this comic planned, I made my own as a reminder of Watterson’s advice.

Inspirational quote from Bill Watterson as wall-comic

Commas for Developers

Brent Simmons pays attention to the details and gets right to the point:

If your writing — in tweets and especially on your blog and product pages — is full of misspellings and improper capitalization and other errors, I will lose trust in you and your product. If you’re careless with language, are you also careless with software development?

I make misspellings and other errors more often than I’d like. Everybody makes these mistakes. Yet, I think it’s important to put as much care into finding errors in language at least as much as finding errors in code.

(The crux of his post is something that I was instructed to avoid over and over again in middle school. I can relate.)

Sharding & IDs at Instagram (2012)

Back in 2012, Instagram Engineering wrote about sharding & IDs. I re-read it yesterday and this particular requirement for their ID generation system still stands out:

The system should introduce as few new ‘moving parts’ as possible—a large part of how we’ve been able to scale Instagram with very few engineers is by choosing simple, easy-to-understand solutions that we trust.

“Simple, easy-to-understand solutions that we trust.” Their solution skipped fancier alternatives for something that worked. Remember: you’re paid to write code that works.