-
On Being Efficient: My Mac Setup
As a Software Engineer, I spend most of my day working on a computer. Over the years, I’ve come to customize my setup to align better to the way I work and become more efficient. Efficiency is important because of the time you save, but not because you can do more with the time saved. It’s allows you to keep focus on what you want to accomplish, instead of the mechanics of accomplishing it.
-
The REPL: Issue 54 - February 2019
Move fast and migrate things: how we automated migrations in Postgres
Vineet Gopal from Benchling writes an interesting post about their approach to running migrations on highly-contested databases in production. A new concept for me was that they automatically retry migrations that fail due to lock timeouts. This reduces the number of failed deployments and manual intervention steps.
Rescue from errors with a grace
In this post Paweł Dąbrowski shows how to leverage Ruby’s value equality (
===
) method, and overriding the default functionality in custom exceptions. The results is cleaner exception handling code.Distributed Phoenix Chat with PubSub PG2 adapter
Alvise Susmel writes in detail how to use Phoenix Chat PubSub implementation using the
pg2
library. The result a distributed, multi-node chat service that does not have an external dependency to a separate system (like Redis). -
Dragons in benchmark-ips
My go-to tool for analyzing ruby performance is benchmark-ips. It’s an enhancement to Ruby’s own stdlib tool
Benchmark
. It’s easy to use, and reports meaningful information by default. -
The REPL: Issue 53 - January 2019
Detecting Agile BS
I don’t know what I like more about this guide: The fact that it calls BS a lot of what is gospel for many in the software industry, the fact that it’s published by the Department of Defense, or the power-point-y graphics.
Distributed Transactions: The Icebergs of Microservices
In this article, Graham Lea explains many potential pitfalls with distributed transactions, and general advice on how to avoid them in the first place, or deal with them effectively when must.
The solution to distributed transactions in microservices is simply to avoid them like the plague.
Our Software Dependency Problem
Russ Cox writes about software dependencies, and goes into great detail of what dependencies are and what risks they bring into software projects. I found myself nodding in agreement throughout the post. The need to have a good policy towards updating project dependencies has been a pet-peeve of mine for a while.
-
Don't Rescue RuntimeError
I came across some code recently that attempted a long series of steps, and on failure issued a notification. Something functionally similar to: