1. 3 Feb 2015 Tabs vs. Spaces: A Treatise

    The programming world is full of epic battles. Mac vs. PC. iOS vs. Android. Vim vs. Emacs. One of my favorites is the epic battle concerning source code file indentation: tabs vs. spaces. It’s one of my favorites not only because it seems to be one that evokes the greatest passions, but because I started out firmly on one side but switched over, and in doing so, developed what I find to be a well-reasoned argument for my decision.

  2. 15 Jul 2014 Thoughts on Swift

    I was invited to give an informal talk about Swift at ThoughtWorks by my friend Kyle yesterday. As a functional programming aficionado, I wanted to give a high-level, executive summary of some of the functional programming features found in Swift. Historically, OS X and iOS development has been done in a very object-oriented style, but I think Swift offers some exciting avenues for taking a more functional approach to OS X and iOS development. My talk was titled “Functional Programming in Swift”, and I was lucky enough to have a receptive audience to my attempts at persuasive speaking. I’m also writing a book on Swift for Wiley, so it was great to take some of my material for a test run.

  3. 29 May 2014 Modeling States and Transitions in Relational Databases

    One common problem in software development is how to model states and the transitions between them in a database—essentially, to persist a finite state machine. The quintessential examples of this problem are version control systems, which save the state of files over time, allowing users to examine the exact state of those files at any given point in their history. We can think of the contents of files at various points in time as states, and the edits that were made to those files as the state transitions.

  4. 25 May 2014 Clojure: A Retrospective

    Going into college, I (sort of) knew exactly one language: VBScript. Four years later, with a shiny BA in Comp Sci in hand, I had added five to my repertoire: Java, C, Objective-C, Python, and Ruby. A year out of college, I’d added another, Scala; I knew Erlang and Haskell well enough to muddle my way through a codebase. But then a funny thing happened: I stopped learning new languages. Since 2009, I’ve learned none.

  5. 20 Aug 2013 Women, Programming, and Limitations

    Yesterday the Internet was abuzz with an article by Dave Winer questioning whether biological differences led to the dearth of women in the programming sector. Dave’s article isn’t nearly as offensive as many things I’ve heard and read about women in the tech industry, and at first, I was reluctant to write a response. The article had created a “shitstorm” and I wasn’t inclined to pile it on.