-
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.
-
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.
-
Book Review: SQL Performance Explained
SQL Performance Explained
by Markus Winand
-
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.
-
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.