Posts

lima, colima, M1

For one reason or another, you’ve switched from Docker Desktop to lima or colima and you’re on an M1 MacBook.

By default, lima and colima use qemu under the hood. To get a 1.5–2× speedup 1, you need to launch the VM with virtualization options that swap qemu for Virtualization.Framework2.

Read more →

oasdiff

Given:

  • Two versions of the same application: A and B.
  • Both versions expose a contract described in OpenAPI.
  • The application has consumers that rely on the current contract.

The task:

  • Determine whether the new version’s contract introduces any backwards-incompatible changes.
  • Determine what additional changes the contract has undergone.

Read more →

Golang Test Summary

The standard Go tooling doesn’t print a summary of your tests. But on a large project, when you need to see the overall picture, that kind of summary is useful. Say you’re bringing your own fork up to date with upstream and you need to gauge the size of the problems caused by merging the changes.

Read more →

APFS Case Sensitive

By default, the filesystem on macOS is case-insensitive. That means file.txt and FILE.txt are the same to it. In some — admittedly rare — situations, developing or supporting certain projects requires case sensitivity. Reformatting the disk and reinstalling the OS is a long, thankless undertaking. Here’s how I solved this problem.

Read more →

/usr/bin/arch

A lot of us have ended up on Macs with M1 chips lately. Rosetta exists to support apps built for Intel processors. In this post I want to highlight the extended arch utility — which on Macs goes a bit beyond uname -m — and the situations where it can come in handy.

Read more →

Leetcode 2

Leetcode offers three difficulty levels: Easy, Medium, and Hard. Solving harder problems obviously gives you more rating points. But right now we don’t care about the rating — we care about how the company you’re interviewing with views your profile.

Read more →

Leetcode 1

Let’s talk about the goals developers set for themselves when solving problems on leetcode. Based on those, we’ll settle on the programming language we’ll use to solve them. In my view, there are at least three options:

  • Improve your own level of algorithmic preparation — the most obvious one;
  • Try out data-handling approaches in a specific programming language;
  • Take pride in the number next to your profile photo — “grind” your rating and brag to coworkers.

Read more →

Leetcode 0

Many developers have a very mixed attitude toward algorithm interviews. Some consider the algorithms section mandatory, others don’t. A lot of companies — even though for the actual day-to-day work and their real tasks, knowledge and understanding of clean architecture, design patterns, and deep familiarity with one framework or another matter much more — still include an algorithms section, often with non-trivial problems that are quite hard to solve under stress and on the clock.

Read more →

pre-commit

My team and I ran into a problem where Code Style violations were being caught too late: in CI or at Code Review. A shared .editorconfig clearly wasn’t enough on its own, since editorconfig can’t fully describe every nuance of formatting.

Read more →