• Don’t be an Architecture Hipster – A guide

    One of my more popular HN comments was a teardown of an all-too-common engineering subculture. The article in question sought to teach “Software Architecture,” but ultimately annoyed me and many other HN readers. Tl; dr:Software architecture discussions are so polluted by software-hipsters that the majority of software engineers are disinclined to discuss and study architecture at all. Know-it-all /…

  • Solving rush-hour

    For those who’ve been inspired by last programming challenge, I thought I’d give annotations on a programming exercise I’ve created. The challenge: code an AI to solve Rush Hour, you can play Rush Hour online if you aren’t familiar with how the game works. If you want to follow along, you can find my solution on github. Let me start…

  • Understanding engineers by understanding authors

    I’ve written before about the challenge it can be for non-engineers to understand engineering work. I’m not the the first to observe that the non-technical need a metaphor to understand invisible and often abstract output an engineer creates. Traditionally, that metaphor has been physical engineering/construction. Others have already, and rightly, criticized the physical labor metaphor. Instead of ridiculing the wrong metaphor, I…

  • Stories, and Meaning [at work]

    Tl; Dr: All people are motivated by meaning of their work. The ability to shape the “stories” that we tell ourselves gives meaning and thus is an essential motivational tool. This meaning is also key for personal satisfaction. Let’s consider a standard engineer. There are a lot of “outlooks” this engineer might have. I’ll go over 5 out…

  • Sopping Wet — Today’s Software Ecosystem Isn’t DRY

    Tl; Dr: Section 1: Some examples 1. Why is there more than one unix/linux package manager? Do we really need a different package manager with the same commands but renamed for each programming language? Why do we need a distinct package manager for each distro? 2. Nobody seems to admit it, but Php, Ruby, Python, and Javascript are…

  • My Brainf Quine

    A quine is something simple to describe yet surprisingly challenging to implement– a program which outputs exactly its own source-code. It is something of a rite-of-passage for an engineering afficianado. For those that consider ourselves one level beyond afficianado we always are looking to up the ante. I took two years exploratory years off after high…