2026
- Archives
- 2026
Open almost any mature Angular screen and you will find the same shape: 1 2 3 4 5 loading = false; error: string | null = null; data: Account[] | null = null; retrying = false; submitted = false; The template then becomes a negotiation: 1 2 3 4 5 6 7 8 9 @if (loading) { <app-spinner /> } @else if (error) { <app-error [message]="error" /> } @else if (!data?.length) { <app-empty-state /> } @else { <account-table [rows]="data!" /> } This looks fine. It ships. It passes review. And then production teaches you that the screen was never modeled as one thing. It was modeled as five independent switches that sometimes agree and sometimes do not. ...
One thing I have always found frustrating in technical writing is the gap between a nice explanation and code you can actually explore. A post can explain an idea clearly, but if the code is only a few isolated snippets, the reader still has to imagine the project around it. Where does this file live? What package versions were used? How do the pieces connect? Can I run it, or is it only illustrative? ...
Cursor is distributed for Linux as an AppImage, which works well on Manjaro because you do not need to wait for a package in the official repositories or the AUR. Before writing this post, I tried installing Cursor from the AUR, but it was not stable enough for me. I also did not love the extra Electron dependency, although that was not the main reason I moved away from that method. At the time of writing, there is no official Snap release, no official Manjaro or Arch package for Cursor either. ...
Angular has always had a complicated relationship with tooling. People call it “heavy” when they want something lighter, but that same weight is often what helps large teams keep moving without reinventing the architecture every sprint. That is why Angular’s MCP server work in the Angular 21 cycle is more interesting than another code-generation headline. This is not just “AI can write Angular now.” AI could already write Angular, often badly. The real question is whether Angular can give AI tools enough project-aware context to stop generating outdated, half-remembered patterns. ...
Every framework eventually discovers the same truth: developers love nice syntax until nice syntax becomes a hiding place. Angular’s recent template improvements are genuinely useful. Multiple consecutive @case blocks make some @switch statements cleaner. Spread and rest support in templates removes awkward helper code in small cases. Angular 21.2’s template additions, such as arrow functions and exhaustive @switch checks with @default never, continue the same direction: templates are becoming more expressive and more type-aware. ...
Most forms discussions start in the wrong place. They compare syntax. Reactive Forms gives us FormGroup, FormControl, validators, status flags, and a lot of well-known muscle memory. Signal Forms gives us fields, signal-shaped state, form-level submission, custom controls, and migration tools. It is tempting to treat this as a cleaner API for the same old job. But that misses the bigger shift. Signal Forms are not only about filling inputs and showing validation messages. They push forms into the same mental model as the rest of modern Angular state: explicit signals, derived values, and state transitions that can be composed instead of chased through subscriptions. ...
It happened to me this morning. After 15 years in the trenches—building frontend architectures, dipping into the backend, leading teams, and surviving countless framework wars—I hit a wall. Not a technical wall, but a conceptual one. I realized I didn’t know what Corepack was. I’ve never actually used Yarn. I’ve heard of modern test runners like Playwright and code‑generation tools like Orval, but I’ve never managed to actually run one in a production pipeline. ...
We often assume that if a doctor prescribes a medication, the only thing we need to worry about is the primary condition it treats. For over two decades, I lived by this assumption. Diagnostic: High Blood Pressure. Prescription: Atenolol 100 and Triamterene-H. Later, Levothyroxine for my thyroid, and eventually Allopurinol and Atorvastatin. I was “managed.” But management isn’t always the same as health. About ten years into my journey with hypertension, I faced a new challenge: high blood glucose. It was a shock. The doctor prescribed Metformin and Gliclazide. For a while, things were under control, especially after I managed to lose a few kilograms and cut sugary foods from my diet. But then, despite my efforts, my numbers spiked again; my A1C hit a staggering 14.2. ...
You have a startup idea, and you have the skills to build it. As a senior developer, you’ve likely spent years mastering the art of turning requirements into robust, scalable systems. But when you decide to build your own company, you realize that the code is the easy part. The hard part is everything around the code: validation, prioritization, distribution, operations, and leadership. This post is a deep dive into the “Execution Gap.” It’s designed for the developer who can build anything but doesn’t know how to make it a reality in the market. We’re going to move past the clichés and look at the gritty details of startup execution, including the legal and management hurdles that often trip up technical founders. ...
In the software world, the “Ship of Theseus” paradox is a daily reality. We replace parts of a system until, eventually, none of the original code remains. But usually, the industry moves toward the “shiny new thing.” At work, we did something that might sound like heresy to some: we migrated our core legacy React applications to Angular. This wasn’t a decision made out of fanboyism. It was a strategic move driven by the need for governance, stability, and long-term maintainability in a high-stakes FinTech environment. I’ll explain the architectural “why” and the pragmatic “how” of moving against the grain. ...
As developers, we often treat our bodies like hardware that just needs caffeine to keep running. We pull late-night sessions, work in dimly lit rooms, and stare at blue-light-emitting screens for 12 hours a day. We optimize our CI/CD pipelines, our database queries, and our bundle sizes, but we often ignore the most critical piece of infrastructure in our stack: our own biology. Our brains aren’t just processors; they are biological organs governed by a 24-hour internal clock known as the circadian rhythm. This rhythm dictates everything from our core body temperature to our hormone production and, most importantly for us, our cognitive performance. ...
There is nothing more frustrating than a device that works perfectly until you try to show someone else. In the world of vintage electronics, these “intermittent faults” are the ultimate test of an engineer’s patience and methodology. Unlike a blown fuse or a charred resistor, an intermittent fault is a ghost. It might be a cold solder joint that only fails when the chassis expands from heat, or a silver-mica capacitor that only leaks under specific humidity levels. These are the problems that don’t show up on a static multimeter test. They require a dynamic, almost adversarial approach to troubleshooting. ...