“If you had to offer some principles for modern software development, which would you choose?”
At a recent Extreme Tuesday Club (XTC) virtual meet-up, we were discussing whether the SOLID principles are outdated. A while ago I gave a tongue-in-cheek talk on the topic, so ahead of the meet-up one of the organizers asked what principles I would replace SOLID with since I disagreed with them. I have been thinking about this for some time and I proposed five of my own, which form the acronym CUPID.
Stop writing CLI validation. Parse it right the first time.
This post introduces Optique, a new library created to address the pervasive problem of repetitive and often messy validation code in CLI tools. The author was motivated by the observation that nearly every CLI tool reinvents the wheel with similar validation patterns for dependent options, mutually exclusive options, and environment-specific requirements. Optique leverages parser combinators and TypeScript's type inference to ensure that CLI arguments are parsed directly into valid configurations, eliminating the need for manual validation. By describing the desired CLI configuration with Optique, TypeScript automatically infers the types and constraints, catching potential bugs at compile time. The author shares their experience of deleting large chunks of validation code and simplifying refactoring tasks. Optique aims to provide a more robust and maintainable approach to CLI argument parsing, potentially saving developers from writing the same validation logic repeatedly.
When Does Framework Sophistication Becomes a Liability?
How our quest for “best practices” turned a simple API change into a multi-day debugging marathon, and why I’m now convinced that strongly-typed simplicity beats framework complex…
Adding a multi-step form, for example user onboarding, is really straight-forward to do with Rails. This article outlines a solution that is easy to follow, easy to adapt and tweak.
The .well-known directory is a convention that is used by web servers to provide information about the server or website to client software. It is a standard way of exposing machine-readable data…
When you get a certificate from Let’s Encrypt, our servers validate that you control the domain names in that certificate using “challenges,” as defined by the ACME standard. Most of the time, this validation is handled automatically by your ACME client, but if you need to make some more complex configuration decisions, it’s useful to know more about them. If you’re unsure, go with your client’s defaults or with HTTP-01.
✨ Module Bundlers, Demystified: What You Actually Need to Know
Struggling to understand module bundlers? This guide breaks down what they do, why they matter, and how they optimize your frontend apps. Perfect for developers who want faster, more efficient code! 🚀
Browsertech Digest: Encrypting offline storage for local-first apps
Hey folks! This issue is about IndexedDB, WebCrypto, and my surprising conclusion to the problem of where to put the key in a local-first app. You can also...