Writing

Reclaiming Mental Peace: My Personal Odyssey

Battling daily mental fatigue, I embarked on a personal journey to rediscover clarity. Through exercise, mindful task management, and self-reflection, I'm finding my way back.

Hitting memory limits deploying Vapor apps to Fly

Deploying a Vapor app to Fly encountered unexpected issues. Swift's linter requires more memory than Fly's 2048 MB limit. Scaling via fly scale didn't solve the problem. Workaround: built locally with Docker, then pushed to Fly's image registry for deployment.

Static imports with ESM and startup time

When building a Command-line interface (CLI) with Javascript and ESM to run on NodeJS , one can end up with a CLI that's slow to launch (above hundreds of milliseconds). It's common for developers to use static imports at the top of the sou…

An explicit build graph with Nx for a better DX

When I started doing Javascript more actively, something that got my attention was the absence of a build system that allowed declaring a build graph explicitly. Most of the time, developers combine package.json scripts with shell operators…

Hot-reloading and ESM

While building Gestalt , I realized that many web frameworks don’t move away from CommonJS because their usage of modules in ESM would lead to a slower hot-reloading experience. This is primarily due to how module graphs are loaded with ESM…

Growing as a Staff Developer

A couple of months ago, I reached Shopify 's Senior Staff Developer level. They were exciting news and excellent proof that Shopify continues to be a place for growth. Yet they pushed me out of my comfort zone, throwing me into a new realm…

Typing file-system paths in Typescript

Learn about an NPM package that we published recently, typed-file-system-path, that adds primitives to work with file-system paths more safely using types.