Recent writing

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.

On learning Elixir

As you might have noticed, I’ve been learning Elixir for the past few weeks. Why? You might wonder. I’m a programming languages nerd. I like learning about how different languages solve the same challenges, which gives me new perspectives a…

On finding passion in devising developer experiences

What am I professionally? I don't have a clear answer. I used to say I was an iOS developer with a passion for Swift , but that's no longer true. Shopify turned me into a more generalist developer and, more importantly, helped me see techno…

Modular projects, Typescript, and developer experience

Have you tried to set up a modular Typescript project with multiple NPM packages? It's painful. Typescript tried to solve that with project references , an API to declare the project graph to Typescript for it to build the packages in the c…

On embracing my chaos

Over the past few years, I’ve tried and failed many times at giving my chaotic self some order — something that inevitably made me feel anxious . I tried to organize myself using todo apps. I always used any random piece of paper that I fou…

Mitigating 'delete node_modules'

If you've worked in the Javascript ecosystem, you might already be familiar with the "delete node_modules" solution commonly suggested on StackOverflow and GitHub Issues. People make fun of it, but it's a frustrating scenario that…

But they are developers too

I often hear a statement when justifying decisions in building developer tools: but they are developers too. It bugs me a ton because it throws all the developers into the same bag and assumes that they know what you know. If we want to bui…

Javascript, ESM, and tools

I'm using Javascript, Typescript, and Node a lot these days as part of my work at Shopify and Gestalt and I'm really loving it. In particular, its module system because it allows extensibility in ways it'd be more challenging with compiled…

CLIs are products too

Over the years of working on command-line interface tools I observed that they are not often perceived as products. Consequently, organizations don't embrace the same principles as UI-oriented products, which leads to complex tools designed…

Users don't care about your web app's portable binary

We, software crafters, naturally tend to distance ourselves from users led by excitement for technological cycles and innovation. Our industry is full of examples. For instance, the crypto trend is an excellent example of that. No one can o…

OSS and extrinsic motivators

More and more, we see open-source projects being backed by investment rounds . It's positive for the projects because they can innovate faster and sustain themselves by paying people to work on it full-time, making money one of the main dri…

Platform-dependent CLIs

I'm a firm believer that shaping products as developer platforms is an amazing idea to let developers from all over the world make your product diverse . Otherwise, you have products like Facebook and Apple 's that work great in California…

On evolving opinions

I recently came across a tweet that suggested me to undo my blog post on Web3 after sharing some bad things I'd uncovered in the technology. I couldn't understand why an undo and not a follow-up . I see opinions as alive entities that evolv…

Migrated to SvelteKit

I migrated this blog to SvelteKit . I did it to consolidate everything I had learned about the framework, and be able to SSR static pages with dynamic content. For example, I'll be able to collect data from external sources like GitHub and…