Refactoring is Like Exercise


Refactoring, they say, is vital to maintaining a healthy code base. We all know we should do it, but many of us don’t. Exercise, they say, is vital to living a long and healthy life. We all know we’ve got to do it, but many of us don’t. Maybe we dabble from time to time, […]

Why Software Becomes a Big Ball of Mud


“Big ball of mud” is one of the more common pejoratives thrown at “legacy” code. Systems suffering from a wide variety of different problems get tarred with the brush of “mud,” but generally the overall experience of a developer facing a big ball of mud is one of constant low-grade terror. A sense that everything […]

Ternary Operators Considered Harmful


Conditionals are, if we’re honest, an embarrassingly large part of most programs deployed in the world. I say “embarrassingly” because a two-year-old understands conditionals, and we as developers often fancy ourselves creators of vast systems of profound, innate, and valuable complexity. Sometimes our use of conditionals is just for making a series of little form […]

Why Bad Software Succeeds


One of the hardest things to accept, as a justice-loving maker of software, is that a perfectly engineered and beautifully designed piece of software can go completely unused. Similarly, a lot of the software on which the world relies a great deal can be terrible — riddled with poor design decisions if not outright and undeniable […]

Ember Computed Properties and the Perks of Uniform Access


In almost any object-oriented programming system, you’ll sometimes have an object whose properties can be composed into more meaningful units of data about that object. For example, an address that you might use to send an envelope of papers consists of a number of properties — a street address, a city, a state, and maybe […]

The Two Fundamental Elements of Computation: State and Transformation


I was recently having a conversation about how computers work. And it was in the course of that conversations that I understood quite how ignorant I’d been my whole life about the real fundamental elements of computation. I don’t think there’s a ton to be gained from writing an article on a programming site all […]

Mistakes I Made in My First Ember Project


I recently was presented with a completely greenfield project. We were making a not-uncommon CRUD (create-read-update-delete) app for a business that was looking to move beyond the constraints of their Microsoft Excel-based data-tracking system. We also had a limited but important numbers of use cases where data from all over (what was Excel sheets) would […]

Programming is About People


It’s easy to think about programming as an exercise of computers, or of languages and design. But at its heart programming is just about people. I bring this up because it’s so easy to lose sight of the fact that people are who you’re really programming for, and I just need a reminder sometimes. Maybe […]

Programming is Storytelling


I was pair programming recently, and I had a bit of revelation: programming is just storytelling. I was “leading” at the time, the more experienced of us in the problem space we were in, and my partner seemed to need the most help seeing how all the little bits fit together into a coherent and […]