• The REPL: Issue 13 - August 2015

    Making Architecture Matter

    In this keynote at OSCON 2015, Martin Fowler gives a great overview about how to think about software architecture to get the most benefit. As quoted in the comments:

    It’s particularly relevant now as we push more and more toward continuous delivery, continuous deployment, features updated over the Internet all the time. That degree of being able to respond to change becomes important. That’s the economic reason why software architecture is important, because if we don’t keep good architecture, we are, in the end, deceiving our customers — in fact, stealing from our customers — because we’re slowing down their ability to compete.

    Binary pattern matching in Elixir

    Zohaib Rauf writes a great post that shows the great power of pattern matching in Elixir. Step by step, he builds a small module that parses PNG binaries. The explanations are clear and the resulting code is really elegant: One main function that parses the header and calls a private recursive function that parses each of the chunks. Worth a read, even if you are not into Elixir (yet!).

    Work Hard, Live Well

    Dustin Moskovitz writes about work life balance in the software industry and his personal experience at Facebook. The article resonates with me: I often say that in the modern world, sleep is a competitive advantage: Being tired decreases cognitive ability. When I was a freshman in college, I stayed up late to study for a physics exam, which I presented after only 4 hours of sleep. I had flunked because of basic algebraic mistakes applying the correct physical formulae. I took the lesson to heart. After that, for me exam preparation always included adequate rest.

    Read on →

  • Using ActiveRecord::Base#merge

    The API for ActiveRecord::Base is very large, which makes it easy to miss some of the great convinences it affords.

    Read on →

  • Book Review: Understanding Computation

    I have two University degrees in different engineering disciplines, but came to Software Engineering without any formal training in Computer Science. I learned how to use databases and shortly later how to write programs. I mostly learned from practical books and online resources. All my deeper knowledge of computer theory came years later. Understanding Computation: From Simple Machines to Impossible Programs by Tom Stuart seems to have been written for people like me: Thirsty for knowledge about computer theory, with explanations written in the language we use every day and without the mathematical notation1.

    1. I actually do like mathematics, but mostly as a tool to explore physics. My familiarity with the math underpinnings of computation is lacking. 

    Read on →

  • Celluloid, Nice to Meet You

    In my projects, I regularly encounter the need for a long-running process that runs in the background. In ruby, it’s easy to reach for Thread:

    Read on →

  • The REPL: Issue 12 - July 2015

    Elixir in times of microservices

    José Valim, creator of Elixir and Rails Core member, weighs in on microservices. He makes a great case on why Elixir, leveraging the Erlang VM makes it easier to work with distributed systems and imposes less up-front tradeoffs than the current trend of microservices communicating via JSON API.

    Elegant APIs with JSON Schema

    At work, I have been exploring how to work effectively with microservices on a Rails stack. JSON Schema, comes up often, especially, especially with all the tools open-sourced by Heroku/Interagent. The blog post by @brandur, is the best introduction to JSON Schema I have read so far.

    Improved production stability with circuit breakers

    The circuit breaker pattern provides a way for resiliency and stability when working with distributed systems. In this post, Heroku introduces their new Ruby library for implementing the pattern. I especially liked the idea of having a roll-out strategy introducing logging-only circuit breakers first. At the very end, they advise to tune timeout settings for underlying libraries. Don’t know how to do that? Check the Ultimate Guide To Timeouts In Ruby

    Read on →