Havoc's Blog

this blog contains blog posts

Build a workbench in 2 years

(This post has nothing to do with software, move along if you aren’t into woodworking…) Here’s my somewhat different workbench design (based on Christopher Schwarz’s “Knockdown Nicholson” plans which became this article), thinking someone out there might be interested. Also it’s a lesson in how to make simple plans ten times more complicated — whether […]

Dear package managers: dependency resolution results should be in version control

If your build depends on a non-exact dependency version (like “somelibrary >= 3.1”), and the exact version gets recomputed every time you run the build, your project is broken. You can no longer build old versions and get the same results. Want to cut a bugfixes-only release from an old branch? Sorry. Want to use […]

Layout APIs don’t have to be terrible — lessons from Bokeh

Our APIs for arranging elements on the screen are stuck in the stone age. Using these APIs in the simplest way results in an ugly layout. To achieve pretty layouts we deploy tricks that aren’t obvious to newcomers, though many of us have internalized them and don’t notice anymore. If you ask a designer to […]

Professional corner-cutting

Steve Jobs famously cared about the unseen backs of cabinets. Antique furniture built with hand tools isn’t like that at all. Cabinetmakers made each part to the tolerance that mattered. The invisible parts were left rough, with plane and saw marks, to save time. The visible parts, however, were cleaned up and polished. Some surfaces were […]

The dangerous “UI team”

Background: customers hire products to do a job I enjoyed Nikkel Blaase’s recent discussion of product design. In this article he puts it this way: In another article he puts it this way: This isn’t a new insight, but it’s still important, and well-stated here in these graphics. The product has to work and it […]

JSON-like config, a spectrum of under/overengineering

Cynics might say that overengineered means I didn’t write it and don’t understand it yet. I found a nice real-world example, JSON-like configuration file formats, where reasonable developers have implemented many points on a complexity spectrum. (Full disclosure: I implemented one of these.) STOP. Don’t take this post as an excuse to defend the answer you […]

Working on Data Science User Experience

For the last month or so, I’ve been working at Continuum Analytics, doing product design and development to help out data scientists. I would be overjoyed to hire a few more awesome people to work with, and I’m hoping some of you reading this will be interested enough to learn more about it. If you’re […]

It’s not new

If you’ve ever written a technical article, or announced some software you created, chances are someone commented “this isn’t new, it’s just like _____.” Commenters of the world, slow down. Think about why you would say that. Readers, ask why you would think it, even if you don’t comment. Do you mean: “I have already […]

Fedora 20 Beta on Thinkpad T440s Report

Before buying a T440s I kept asking people on Twitter to tell me how it works with Linux, so I figure I should write down the answer. Note: this is a beta distribution on a brand-new laptop model. Punchline: Lenovo’s new clickpad is worse than the old physical buttons for me with the trackpoint, but […]

Don’t screw up your next presentation

Have you ever screwed up a talk or high-stakes presentation? You thought it would be fine, had a plan, did well in practice runs, but under pressure you fell apart and fell flat. In short: you choked. There’s almost a binary switch: sometimes you can tell a few minutes into an hour-long talk whether it’s […]