Keith Ballinger

by Keith Ballinger

I like impossible computing.

Read this first

Things I’m Reading

Offered with minimal comment:

  • Notes on Distributed Systems for Young Bloods
    A review of important points in building non-trivial systems. Read it. Build something. Read it again.

  • How to Become a Good Theoretical Physicist.
    “The costs of becoming a theoretical physicist should not exceed much the price of a computer with internet connection, a printer, and lots of paper and pen.”

  • Are We There Yet?
    Hickey at his finest.

Continue reading →

Estimate Like a Boss


It was my great luck to work with two amazing engineers at Microsoft: Erik Christensen and Hervey Wilson. One of the most important lessons I learned from them was how to estimate. I’ve modified their methods to suit my needs, so don’t blame them if this doesn’t work for you.

Step 1: Write a small feature design document

This can be one page in google docs. Or a slide deck. Or even an interactive prototype. The key is that you can document the features you will be working on in a short and succinct amount of time.

Step 2: Make a spreadsheet of the tasks

I usually have the following columns: Area, Name, Priority, Hours, and Notes. I spend a lot of time here, re-working the areas and specific tasks. In general, I am done when the following is true:

  • No task is more than four hours
  • I have no more notes saying things like: “No idea how to do this.”
  • There are less than 80 hours in the...

Continue reading →

Designing a Secure Service

It’s a popular pattern today to build a set of APIs (usually with JSON and HTTP) to expose functionality to various applications (mobile and single-page applications.) These services are often the heart of a start-up. Ensuring they are secure is difficult, but required.

Keep in mind, if you write a service that isn’t useful or reliable, it doesn’t matter how secure it is, because no one will use it. Before you launch, though, you will need to be secure. But don’t think of it that way: security isn’t a spice that you season on your service. It’s a fundamental component of any distributed system.

I remember when an early employer of mine started taking security seriously. We stopped development on many projects, took classes, and made security a top-level component, like performance or reliability. Before then, we hadn’t taken shipping secure software seriously enough. But those tools...

Continue reading →

Get updated when Keith Ballinger publishes

Don’t worry; we hate spam with a passion.
You can unsubscribe with one click.