James Shore: Testing Without Mocks: A Pattern Language
Playing to Learn Predictive TDD | Ted M. Young
Video recording of my presentation to Agile Lunch & Learn on how to learn Test-Driven Development by playing JitterTed's TDD Game.
HTML Invoker Commands Achieve Baseline Support Across All Major Browsers
The HTML Invoker Commands API revolutionizes web interactivity by enabling developers to create button controls for popovers and dialogs without JavaScript. Supported across major browsers, it streaml
Web dependencies are broken. Can we fix them? • Lea Verou
Dear JS ecosystem, I love you, but you have a dependency management problem when it comes to the Web, and the time has come for an intervention.
HTML-only conditional lazy loading (via preload + media)
Chrome DevTools Features I Use All the Time (and Why You Should Too)
Most developers open Chrome DevTools, check a couple of network requests, maybe refresh the page once or twice — and that's it.
I used to do the same.
Over time, DevTools became something else entirely for me. Not just a debugging tool, but a way to understand how the browser actually experiences
How To Dynamically Install Custom Elements
A reusable pattern for custom elements installation
Managing Side Effects: A JavaScript Effect System in 30 Lines or Less
If you look at the source code of a typical application, you will likely find business logic tangled with database calls, HTTP requests firing off in the middle of validation rules, and try/catch blocks sprinkled here and there. The biggest casualty of this coupling is testability…
Omakase Computing · Omacom · DHH
C++ Core Guidelines
The C++ Core Guidelines are a set of tried-and-true guidelines, rules, and best practices about coding in C++
Searching for better scoring knobs
The 💖For You feed has a few parameters that determine what content gets to the top of the feed.
Open Social — overreacted
The protocol is the API.
Introducing RSC Explorer — overreacted
My new hobby project.
URL Pattern API - Web APIs | MDN
The URL Pattern API defines a syntax that is used to create URL pattern matchers.
These patterns can be matched against URLs or individual URL components.
Why TypeScript’s “strict: true” isn’t enough | ITNEXT
A practical guide to configuring TypeScript compiler options beyond strict mode, with real-world examples and step-by-step fixes
Optimise for continuous change, not modernisation or
Jake reframes the legacy vs. modernisation debate, urging leaders to focus instead on how adaptable their organisation truly is.
Directives and the Platform Boundary | TanStack Blog
A Quiet Trend in the JavaScript Ecosystem For years, JavaScript has had exactly one meaningful directive, "use strict". It is standardized, enforced by runtimes, and behaves the same in every environm...
How to check for overlapping intervals - zayenz.se
Personal website with research, publications, and blog
Configuration files are user interfaces
We have all been there. Your software keeps growing and you feel the need to make it customizable. It is too soon for a full-blown UI with all the bells and whistles, so your pragmatic instinct suggests a text-based configuration file. Yes, that’s exactly it!
You rejoice knowing the software’s configuration will be trivial to version control. Your pragmatic instinct is satisfied as well; the door remains open to creating a proper UI later, since it would be merely a graphical view of your configuration’s structured data.
TypeScript Style Guide |
TypeScript Style Guide provides a concise set of conventions and best practices for creating consistent, maintainable code.
Performance
TypeScript is a superset of JavaScript that compiles to clean JavaScript output. - microsoft/TypeScript
Component Composition is great btw
Component composition is one of the best parts of React, and I think we should take more time to break our components into manageable parts before littering one component with conditional renderings.
A Day in the Life of a Palantir Forward Deployed Software Engineer
A Palantir Forward Deployed Software Engineer talks about why he joined Palantir, his typical workday, and what makes engineering at Palantir unique.
Saying NO is not a free action in the world of software engineering
Why declining requests is stressful, who it affects most, and how to navigate the pressure without burnout.
CUPID: the back story
“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.
Parse, don’t validate
File-system conventions: Parallel Routes
Simultaneously render one or more pages in the same view that can be navigated independently. A pattern for highly dynamic applications.
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…
127. Opening Chrome: A High Level View of CS Concepts