Human Who Codes Newsletter - Code Portability


Code portability

If you’ve been following me recently, you’ve probably seen me mention Bredbox, my new application for saving bookmarks. This is the first time in years I’ve built a web application, so I put a lot of thought into the process. My philosophy is to leave as many options open as possible in case I need to change direction later. That’s why I recommend targeting Node.js for JavaScript applications, even if you plan to run them on Deno or Bun. Both Deno and Bun are largely compatible with Node.js APIs, which makes switching between runtimes straightforward. By contrast, if you build with Deno- or Bun-specific APIs, you’ll need to rewrite or abstract those parts of your code.

With the growing number of JavaScript runtimes and frameworks, portability matters more than ever. The goal is to avoid getting locked into a specific runtime, hosting provider, or any other tool that limits flexibility. With that in mind, here are the choices I made for Bredbox to keep it as portable as possible.

  • Application Framework - Astro. Astro is best known for building static sites, but it also includes a solid application server that works well for fully dynamic apps. It can be deployed to a wide range of cloud services, making it easy to switch providers. Astro also lets you use popular frontend frameworks interchangeably, so you can start with React and later move to Vue or SolidJS without changing your application framework.
  • Server Framework - Hono. I’ve long used Express and Fastify for headless applications, but I’ve since switched to Hono. Hono is built on the standard Request and Response objects while offering an interface familiar to Express developers. Best of all, it runs almost anywhere JavaScript runs: Node.js, Deno, Bun, Cloudflare Workers, Supabase Edge Functions, and more. That means you can build with Hono without being tied to a specific runtime or hosting provider.
  • Database - Supabase. At first glance, Supabase might seem like a proprietary option, but it’s actually an open source alternative to Firebase built on PostgreSQL. If needed, you can export your entire database and run it anywhere PostgreSQL is supported. You can even self-host Supabase, which provides another layer of flexibility. Knowing I have these options makes me comfortable relying on their platform.
  • Storage - Cloudflare R2. For object storage, it’s best to choose an S3-compatible service so you can switch providers without hassle. Cloudflare R2 fits that requirement and also offers zero egress fees, meaning you won’t be charged for data transfer out of the Cloudflare network. That’s a big advantage if you ever decide to migrate to another provider.

By making these choices, I’ve set up Bredbox to be flexible and future-proof. Whether it’s changing runtimes, swapping hosting providers, or adjusting infrastructure, I can adapt without major rewrites. If you’re starting a new project, I encourage you to think about portability early—it’s one of the best ways to keep your options open as your application grows.

Key Takeaways

  • Designing for portability early makes it easier to switch runtimes, frameworks, or hosting providers without major rewrites.
  • Choosing open, widely supported technologies — like Node.js, Astro, Hono, Supabase, and S3-compatible storage — maximizes flexibility.
  • Keeping your options open allows your application to evolve over time, reducing long-term technical debt and increasing adaptability.

Understanding JavaScript Promises

My e-book, Understanding JavaScript Promises, now includes information about Promise.withResolvers() and a whole new chapter on using and creating abortable functions.


Stuff I've Enjoyed this Month

🎬 GPT 5: Five AI model improvements to address LLM weaknesses by IBM Technology
The release of GPT-5 brings the promise of improvements across the board, many of which I've already experienced personally. This video explain what makes GPT-5 different than its predecessors.

📖 The Good Life by Robert Waldinger M.D. and Marc Schulz Ph.D
What's the secret to a happy life? Researchers at the Harvard Study for Adult Development, which has now been running for over 80 years, think they have the answer. This book explains what they've learned by interviewing multiple generations of participants over this extended timespan.

📝 LLMs get lost in multi-turn conversations by Elvis Savaria
Have you ever noticed that LLMs get dumber as the conversation goes on? A recent study shows this is common and this post explores the results along with the recommendations.

🎬 You should drop Express and try Hono by Syntax
As already mentioned, I'm using Hono for Bredbox, and this video gave me a good overview of what Hono is and what it's capable of.

📝 What Img Srcset Does In HTML5: A Quick & Simple Guide by Adam Wood
I only recently remembered that the <img> element has a srcset attribute, but I couldn't remember how to use it. This article got me back up to speed quickly.

📖 Our Dollar, Your Problem by Kenneth Rogoff
If you've ever wondered how currency actually works, especially as it relates to international trade, this book is for you. It's a bit technical and wonky, but I found it interesting.

🎬 Index data in the background with Cloudflare Workflows by Cloudflare Developers
Another part of the Cloudflare infrastructure I learned about this month was workflows. This video explains what workflows are and what kind of tasks they're good for.


What I'm Working On

🏠 Real Estate: Another of my syndications I invested in got bit by the high interest rate environment. Whereas the plan was to refinance out of their initial loan, that couldn't work. So the property was sold to another group that agreed to keep investors like me involved in the deal. That likely means I won't get my investment back, and if I do, it won't be for many years. Very disappointing outcome. Follow my Instagram for real estate photos.

📝 Blog: I did a bunch of writing this past month:

💻 Open Source: I released S3Bucket, a small (89KB) JavaScript utility for CRUD operations on any S3-compatible storage bucket.

🍞 Bredbox: Bredbox is getting ready to let in the first batch of test users. I'm pretty excited about this and will be slowly rolling out to everyone on the waiting list in the coming months.

💻 ESLint:


Coaching for Tech Leads and Staff+ Engineers

If you're a tech lead or staff+ engineer, chances are your manager has no experience in your role. While they may be well-intentioned, they may not know how to help you grow in such a challenging position.

That's where working with me can help. As a former tech lead and principal engineer at multiple companies, I learned firsthand the ins and outs of these roles. I work with my clients one-on-one to develop their leadership, communication, organization, and problem-solving skills to succeed in the upper ranks of the individual contributor track.

Human Who Codes Newsletter

A once-per-month newsletter discussing topics important to senior-level software engineers, with a particular focus on frontend technology and leadership.

Read more from Human Who Codes Newsletter

The return of tech specs When I was studying computer science as an undergraduate from 1996 to 2000, I took a course called Software Engineering that focused on the formal process of developing software. We learned to write a functional requirements document describing what the application should do, followed by a technical specification outlining how the software would achieve that. Only after completing both documents, often a semester-long effort with multiple review cycles, were we...

Deno: What happened? When Ryan Dahl introduced Deno at JSConf EU 2018, it generated significant interest in the JavaScript community. As the creator of Node.js, Dahl presented a compelling vision: a new runtime that would address the common pain points developers face. Deno (a palindrome of "node") promised a fresh approach with new core APIs, ESM-only modules, familiar web APIs, independence from npm, and security by default. Who better to reimagine the JavaScript runtime than the person who...

Getting Buy-In You’re a tech lead with an idea for a large project, one that would make your life easier. But to make it happen, you'll need help. The project requires additional developers and possibly some cross-team collaboration. That means getting it on the roadmap and securing resources. Whether this is your first proposal or not, there’s a clear path you can follow to get your project approved. Start by clearly defining the problem. To build a strong case for your project, you need to...