• The REPL: Issue 66 - February 2020

    Challenges with distributed systems

    Jacob Gabrielson about the challenges of distributed systems at Amazon. He comes up with failures modes inherent in all distributes systems, and calls them the eight failure modes of the apocalypse. Engineering distributed systems is hard, being cognizant about all failure modes helps by providing some structure to tackling the problem.

    Rails has added strict loading mode to prevent lazy loading

    Rohit Kumar points out that Rails 6.1 will add strict loading support. With it turned on, Rails will raise an error instead of allowing association lazy loading. I welcome this change. Lazy loading seems like a feature that speeds up development in Rails, but is the cause of N+1 queries. I have yet to work on Rails app that doesn’t have performance issues because of this.

    On recursive queries

    Egor Rogov gives an overview of the recursive syntax in SQL, and walks through a step-by-step example of how to write a useful, performant recursive query, that solves a realistic business-logic example.

    Read on →

  • The REPL: Issue 65 - January 2020

    The No-Code Delusion

    Alex Hudson writes a post tackles the idea that soon, we will be able to produce software with significant functionality that doesn’t require coding. I agree with author’s conclusions: The goal is probably a pipe-dream that has been oversold. I’ll add that I’ve been the block a few times, and seen that software generated without change control quickly becomes unmaintainable. Back in the day, MS Access allowed power users to deal with data in a much better fashion than excel files. However, evolving them was very painful.

    3 ways Webpack surprises web developers

    I wish I had read Ross Kaffenberger’s post 2 or 3 months ago, when trying to use Webpack in a brand new Rails 6 application for the first time. I was especially confused how Webpack expects css dependency declarations in javascript.

    A forty year career

    In is an inspiring post by Will Larson, discusses career growth in software engineering. He divides the area of focus into Pace, People, Prestige, Profit, and Learning. Growth in different areas comes at different times. Like in finance, investing early brings compounding gains.

    Read on →

  • Book Review: SQL Performance Explained

    SQL Performance Explained

    by Markus Winand

    Read on →

  • Abstractions With Database Views

    Wikipedia defines a software abstraction as:

    In software engineering and computer science, abstraction is… the process of removing physical, spatial, or temporal details or attributes in the study of objects or systems to focus attention on details of greater importance; it is similar in nature to the process of generalization;

    A database view can provide a useful abstraction; a concept that represents something in a domain. Recently, I had the opportunity to do use a view to create an abstraction, to represent data that is missing from the database.

    Read on →

  • Deployments With Schema Migrations

    Deploying code that depends on database schema migrations successfully requires putting some thought into when to run them during the deployment. This post develops a framework to reason about it, through analysis of a specific code example and multiple kinds of deployments. While the example is specific to Ruby on Rails, the lesson carries over to any similar web framework.

    Read on →