Tailwind: A game-changer for web styling, with seamless integration into Swift server projects using SwiftyTailwind.
Writing
Fly CLI + Docker on M1/M2 architecture caused issues, so I switched to GitHub Actions for deployment. No more problem!
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.
Learn how to easily configure VSCode to use your preferred alternative shell installation like ZSH or Fish instead of the default profiles.
Implementing Sign in with Apple on a macOS app using JWT and Phoenix. Learn how to generate a client secret for web authentication.
I share the investigation into Visual Studio Code not loading Typescript and the solution I found - enabling the @builtin typescript extension.
Some notes on what changes I'm introducing to my learning system.
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…
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…
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…
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…
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.
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…
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…
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…
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…
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…
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…
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…
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…