Welcome to my little corner of the Interweb. This is my metaphorical scratchpad, soapbox, and junk drawer. And hey, while I’ve got your attention: my company is hiring developers and designers!

My five loyal readers already know this from my hiring plea at the top of the page, but in case you missed it, I’ve been working on starting a new company. Today we’re becoming a little less stealthy. My old friend and co-founder Jonathan Schwartz is announcing (via Twitter, of course) his participation. We’ve also put up a website: pictureofhealth.com. At this point we’re just saying the company is about “the intersection of innovation and public health”.

I’ve worked on several technologies whose goal was to improve the “health” of computers. As those systems were deployed around the world, I saw PCs everywhere became measurably more reliable and easier to use. I also saw how, once those systems became prevalent, the very process of creating and deploying software was changed for the better.

My goal, and hope, is that we can help to bring about a similar transformation in public health. I like to tell myself I helped to improve the mental health of millions of people by making Windows better, but I’d love to see a more direct effect on human happiness.

Needless to say, this is going to be a big job, and I need some help! I’m building our development and design team. We’ve posted a couple of job descriptions on the Picture of Health job page, and if this sounds interesting, please push the big Apply button. Actually, if you’re in the “smart and gets things done” category, please get in touch even if we haven’t figured out we need you yet.


I’ve received a couple of questions about how my new site is built. (If you want to hit “next” now, feel free!)

I used to have a Wordpress site. I maintain several sites for other people using WP, including my wife, so I’ve become fairly knowledgeable about it, though certainly not a guru. If you need a blog, a simple CMS, or a combination of the two, you can certainly do a lot worse.

For my personal site, though, here’s the thing. Well, two things.

First, Wordpress does way more than I want. I don’t want a dashboard showing me posts from other peoples’ blogs. I don’t want a categorized linkroll, or a custom taxonomy system, or a comment system (Disqus works great). In fact, I don’t even want the ability to edit posts in the browser. I want a minimal site where every feature is there because I see a need for it, and the workflow is designed around the way I like to work.

Second—and yes, this is a cliché—the thing is written in PHP. Not even the new-fangled PHP where they’ve layered objects and stuff onto the old-fangled one, but good old function-based code-in-the-template PHP. Every time I want to open the hood and customize or debug something, I am faced with this reality.

So when I decided to revamp my site, I realized that I should just start with nothing and add features until I got what I wanted. I found that other people had this same idea (see Toto, Jekyll, etc.) and took inspiration from them. (Of course, using one of those projects would defeat the purpose!)

The result is about 300 lines of Ruby (with comments), based on Sinatra. No database, just Git. I edit in TextMate, deploy to Heroku, and let Varnish do the heavy lifting.

When I explain this, sometimes people want the code. Well, my code isn’t all that. (To be clear, sometimes my code is all that—just not in this case.) Just do it yourself—it’s not that hard, and you’ll probably learn something.


There’s good news and bad news regarding technical bookstores here in Seattle. Bad news first.

Barnes and Noble: bad

The University Village Barnes and Noble has reorganized their technical department, and it is now essentially impossible to browse. Most of the computer-related books are in a single section called “Programming”, which is arranged by author. That’s about as dumb as arranging the “Travel” section by author, which I doubt would ever happen. So now, unless you know exactly what book you’re looking for, your only browsing option is to examine every book in the section to see if it’s relevant to your interests. And if you already know what book you want, wouldn’t you just buy it online?

I heard from a B&N employee that they’ve been eliminating “lead” positions, which are employees dedicated to a single section of the store. The result is this generic filing system that can be maintained by whatever staff is assigned to the department on a given day. While I’m sure this saves on payroll, it has the unfortunate effect of rendering in-person visits to the department almost pointless.

Perhaps it’s B&N’s strategy to remove reasons to go to their physical stores, thus driving sales to bn.com. Unfortunately, there’s another online bookstore that has better prices, recommendations, and service.

Ada’s Books: good

In happier news, a new technical bookstore, Ada’s Books, has recently opened in Capitol Hill. This is the kind of bookstore I love: a small place where all the books are good. It feels like someone who knows technology is choosing and organizing the books. In other words, the exact opposite of Barnes and Noble!

I also love when bookstores mix new and used books on the shelves, and Ada’s does this nicely. Alongside the latest hacker manuals you will find Norbert Wiener’s Cybernetics. A book on 802.11 networking is shelved with a U.S. Navy Radar School textbook from the 1940’s. If you’re interested in the history of technology as well as what happened last week, this is how it should be.

There are also comfy chairs, a public restroom, author readings, and friendly staff. What more could you want? Coffee? Joe Bar is right around the corner (try the crêpes).

They tell me it’s a coincidence, but their close proximity to Metrix Create:Space will surely help sales. Nevertheless, in the current economic climate, I hate to predict how long Ada’s Books or any other small independent bookstore will survive. I’m doing my part by throwing money at them, and recommend you do the same.

View Larger Map


☞ What Your Computer Does While You Wait

This is an excellent post describing the memory hierarchy in current PC architectures. It’s been a long time since I went to computer school, but I remember this being oversimplified even then. Nowadays, are students taught the horrible consequences of a cache miss? Or does one have to find it out for oneself?

Reading from L1 cache is like grabbing a piece of paper from your desk (3 seconds), L2 cache is picking up a book from a nearby shelf (14 seconds), and main system memory is taking a 4-minute walk down the hall to buy a Twix bar…waiting for a hard drive seek is like leaving the building to roam the earth for one year and three months.


My niece got married a while back and she asked me to make a video of the ceremony. I’m no professional videographer, but I hoped I was competent enough not to embarrass myself with the results.

I’ve missed out on the last few generations of camcorder technology, but I have a carefully-chosen Sony DCR-TRV38 from 2004 that (usually) does a fine job. The killer feature is that it can do anamorphic 16:9 widescreen recordings. Somehow the widescreen aspect adds several “pro points” to the end result (or it did, before everybody got an HD camera). My brother donated the use of a Zoom portable digital recorder we hid in the shrubbery to capture (relatively-) good audio of the ceremony.

Unfortunately, my recording of this precious event has some major flaws (other than those resulting from my cinematographic skill). As captured from the Firewire port, every so often the video drops a few frames. Each time this happens, the audio gets further out of sync with the video. I hadn’t used the camcorder for a while, and didn’t have time to give it a good run-through before the event, so I didn’t realize it was doing this.

I decided my niece wouldn’t give me a do-over on the wedding. I had to make do with what I had, which meant I would need to make an edit to the audio track at each video skip. I loaded the recording into iMovie and started editing.

I can report with some authority that iMovie is the wrong tool for this. It’s great when you just need to edit together some video clips, but audio is a second-class citizen by far. The nice editing operations you can do in video (in particular, splitting or duplicating a clip) just don’t apply to audio. I think it’s theoretically possible to do what I needed, but not in real life with real stress hormones.

As I was about to jump in the car and go to the Apple store to blow $200 on Final Cut Express to get this done, it occurred to me that I already have a pricey “pro” Apple product called Logic Studio. I use it all the time for music, but…wait a minute…doesn’t it have some sort of video feature too? Down to the basement studio I went to investigate.

It turns out that people use Logic to score film and video, and just for them Logic has a “Video” submenu that I don’t think I’ve ever opened in the years I’ve used the program. You can import a video, which stays in sync with the audio timeline. Of course, this is exactly what I needed. I rendered the video from iMovie, imported it into Logic, and went crazy with all the fine-tuning I needed to do on the audio. I even did a bunch of EQ and compression tweaking to improve the audibility of the ceremony. Finally, I exported the video with the new soundtrack, and voilá!

The point of telling this story is that your tools are probably hiding all sorts of goodies that you don’t know exist. If you stick to your well-worn paths, you’ll walk right by them. Take a look at those menus you never open. Maybe even skim the manual occasionally. You may not need these things now, but later perhaps you’ll say…wait a minute…