Articles, tutorials, and deep dives into software engineering
Compilers preserve logic across abstraction boundaries. AI guesses intent from ambiguous prompts. Comparing the two ignores the brutal verification tax of generated code.
A lot of websites started to ask you if you want to use a passkey to log in, so what is that?
It's always been 'good enough' at scale, but AI and the pace of change have driven us into an era where 'barely good enough' is the accepted norm.
You click send and the email just shows up on the other end. But between your outbox and their inbox, your message goes on a pretty wild trip.
How we manage cognitive load has a huge impact on our ability to solve problems and write good code. Here are some ideas and observations I've gathered that help me keep my cognitive load manageable.
Traditional databases are great at finding exact matches, but what happens when you need to find things that are similar? Vector databases solve this problem by storing data as high-dimensional vectors and using clever algorithms like HNSW to search through millions of them in milliseconds.
You've set up SSO with SAML. Great. But who creates the user accounts on the other side? And who deletes them when someone leaves? That's the problem SCIM solves: automating the boring, error-prone work of user provisioning across all your apps.
LLMs went from text-only to understanding images, audio, and video in a remarkably short time. Turns out the trick is simpler than you'd think: convert everything into tokens. Here's how images get chopped into patches, how audio becomes a spectrogram, and why some models are better at 'seeing' than others.
HTTP/2 fixed multiplexing, but TCP held it back. HTTP/3 ditches TCP entirely for QUIC over UDP.
We are told story points have nothing to do with time, right before using them to plan our two-week sprint.
If you wouldn't re-introduce yourself every time you saw a coworker at the coffee machine, why are you doing it to your database?
The more we outsource thinking on a regular basis, the less capable we are of it.
Why your unit tests are likely not testing what you think they're testing
An introduction to how Java handles garbage collection.
Are you taking in text input from your frontend? Then congratulations! You may be vulnerable to Cross-Site Scripting.
Git has only three core data structures behind the scenes. Once you understand them, everything else (branches, tags, the staging area) just clicks into place.
Every developer learns that 0.1 + 0.2 doesn't equal 0.3, but why? Dive under the hood of IEEE 754 to understand how floating point numbers are represented, why rounding errors happen, and the critical concept of Unit of Last Precision.
We're all feeling the pressure of higher and higher token costs. So can we use local models to avoid some of those costs?
Are you switching AI models mid-conversation? You might be throwing money out the window. The KV cache is a crucial optimization in Large Language Models that saves the context of your conversation. Discover how it works, why it eats up so much memory, and how it keeps inference fast and affordable.
Mixture of Experts (MoE) has emerged as a leading architecture for training large language models more efficiently. Instead of activating the entire model for every token, MoE uses a gating mechanism to route inputs to specialized sub-networks, or 'experts'. This allows models to scale to trillions of parameters while keeping inference costs manageable.
Prompt injection is one of the most pressing security concerns for Large Language Models, and recent research has shown that it's incredibly difficult to solve.
Dive into the mechanics of IPv4 exhaustion and what it means for the future of the internet.
Dive into the mechanics of SAML authentication, understanding the roles of IdPs, SPs, and the flows that make Single Sign-On (SSO) possible.
An overview of the Model Context Protocol (MCP), why it's needed, and how it safely connects AI agents to external systems.
How Docker image layers work and how to best use Docker layer caching to speed up your builds.
How to best use AI in your day-to-day software engineering tasks.
Prompt engineering was supposed to be the next big thing in AI. What happened?
Diving into the recent supply chain attacks and what we can do to protect ourselves.
Answering how time-based one-time passwords are generated
How to find out what your database is actually doing when you run a query.
An exploration of what tokens are and what it means for your wallet.
A deep dive into why Large Language Models can produce different answers even with the same input.
How cache locality can help speed up (or slow down) your programs.
An exploration of how modern AI agents bridge the gap from text generation to performing real world tasks.