CodeWaiting for progressA simple static event class that lets any deeply nested code update the main form's progressbar without passing references around.
Code, TestingTesting RxJS5 async methods in Angular2Testing time-based RxJS5 observables in Angular2 without waiting real seconds, using fakeAsync and tick after jasmine.clock let me down.
CodeAdding type safety to Immutable.js with Typescript string literals and keyofHow I use TypeScript string literals and keyof to make Immutable.js get calls type safe, so property renames break at compile time instead of runtime.
Ionic, Code, TestingTesting Ionic presentablesA reusable mock for testing Ionic presentables like modals, alerts and toasts, so you can trigger onDidDismiss and assert what your page does.
Ionic, CodeUsing environment config in Ionic2Separate development and production config in Ionic2 using a typed environment module, an OpaqueToken and NODE_ENV to pick values at build time.
CodeNodeJS async/await with retryA small async/await retry middleware with timeout for NodeJS, replacing the tangled promise-retry code I used to talk to an unreliable database.
Performance, CodeMeasure real world web performanceUsing the Performance API with performance.mark and performance.measure to see how your code really runs on users' devices, not just in the lab.
Code, FirebaseWriting a Firebase function to modify user claimsEver wanted to give some Firebase users special privileges? Here is how to write a Firebase function that sets custom user claims.
Javascript, CodeManaging Collections in JavascriptThree ways to manage collections in JavaScript models — exposing the raw array, wrapping it in methods, or extending Array for the best of both.
Code, IonicMigrating an Ionic App to use Angular standalone componentsHow I migrated an Ionic app with over 500 components to Angular standalone components using the official schematic, and what needed manual fixes.
Technology, AI, CodeThe week coding assistants stopped pretending to be autocompleteClaude 3.7 Sonnet was the first time I caught myself delegating context, not lines. AI coding assistants stopped pretending to be autocomplete.
Technology, AI, Code, OpinionsVibe Coding: An Honest Take After Three Years of AI-Assisted DevelopmentThree years of AI-assisted development later, vibe coding is real. The thinking is yours, the judgment is yours — the typing was never the point.
Opinions, Code, TechnologyTraining juniors in the AI era — judgment, struggle, and why the field still needs new dataAI makes junior developers look productive on week two. If we train them for speed alone, we hollow out the next decade of engineering judgment.
AI, Code, ToolsUsing Claude Code's parallel agents to collaborate on a featureThe single-agent model has a ceiling. Claude Code's parallel agents let you split a feature into independent pieces and work like a focused team.
Ionic, Technology, AI, Code, PersonalThree similar Ionic apps, one Nx monorepo, and a lot of AI-assisted glue workHow we merged three Ionic/Angular/Capacitor codebases into a single Nx workspace so a small team could stop maintaining the same code in three places.
Technology, Code, Firebase, Tools, PersonalPortfolio Ticker — a tiny monitor for investments scattered across brokersI had stocks and ETFs across three platforms and no single place to see them. So I built one, and left it open for anyone else to use.
AI, Code, Testing, OpinionsGuardrails beat guidelines — how to keep AI-generated code honestYou cannot prompt AI-generated code into being reliable. What works is what always worked with new hires — guardrails that say no.
AI, Code, ToolsLet the big model write the manual — using Fable 5 to make smaller models betterI stopped pointing the frontier model at my backlog and started using it to write the Skills and guidelines my cheaper models read.