Author Archives: John

When a README accidentally becomes a manifesto

I recently started work on a project I’m calling Ensemble. Ensemble will be a minimalist data-sharing platform. It will allow data scientists to quickly and easily create public dashboards with no web development experience.

In the process of writing a project README, I realized I had accidentally written my software development manifesto, the distillation of my thoughts on crafting valuable software in today’s environment. The document does discuss some specifics of this project, but the broader points do apply generally.

Continue reading

Less is more

When writing software, we should approach our own ideas with skepticism. We have more ideas than users have needs.

Features do not guarantee success. If they did, we would line up to trade smartphones for punchcards. Myspace would acquire Twitter. Picasa would be the new Instagram. This doesn’t happen. The history of software is the history of simplicity and elegance winning. We succeed when we attend to what really matters, not when we build every feature imaginable.

Continue reading

Using the Optimizely API to avoid flashes of unstyled content in A/B tests

We use Optimizely on the Mozilla Developer Network to build and analyze split experiments. We find that the tool helps us move forward with confidence, understanding how changes affect user behavior. We care about accuracy and user experience, so we were concerned when we discovered a problem in a recent experiment that could have affected both.

Continue reading

Context menus and the design of design

I often recommend that software developers become familiar with the fundamentals of usability—we are all designers, whether we know it or not. But each of us is on a different part of this journey, and we cannot expect everyone to have made the same discoveries we have. When we are not able to design usable interfaces ourselves, then, it can be wise to rely on frameworks, conventions, and other resources that make design decisions on our behalf. But what happens when these resources lead us astray?

Continue reading