CodeWaiting for progressA simple static event class that lets any deeply nested code update the main form's progressbar without passing references around.
Testing, CodeTest RxJS interval and debounceTime without waiting real secondsAngular fakeAsync and tick beat setTimeout waits and jasmine.clock for time-based RxJS5 observables in unit tests.
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, Testing, CodeMock Ionic ModalController to test onDidDismissA reusable PresentableControllerMock so unit tests can dismiss modals, alerts, and toasts and assert the page callback.
Ionic, Code, TipsIonic environment config with NODE_ENV and Angular DITyped dev/prod config via OpaqueToken and a NODE_ENV factory so Ionic2 builds pick the right API keys at compile time.
Code, TipsAsync/await retry with timeout in Node.jsA small Express middleware that wraps async handlers with timeout and retry for flaky database calls — cleaner than chaining promise-retry.
Performance, CodeMeasure real-user web performance with the Performance APIUse performance.mark, performance.measure, and PerformanceObserver to see how slow code actually is on users' devices — not just in the lab.
Firebase, CodeSet Firebase custom user claims with a Cloud FunctionCallable Cloud Function that calls setCustomUserClaims, plus Firestore rules and client checks for a moderator claim.
Javascript, CodeManage model collections in JavaScript without leaking ArrayExpose a raw array, wrap mutations in methods, or extend Array — three patterns for typed collections that block duplicates and invalid data.
Ionic, CodeIonic Angular standalone components — migrating 500+ componentsHow I migrated an Ionic Angular app with 500+ components to standalone using the official schematic, plus the routing and provider fixes that still needed a human.
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.
AI, Opinions, CodeAI code review is the bottleneck — writing got cheapAgents fill the merge queue faster than humans can read. The constraint moved from typing to verification — and most teams still review like nothing changed.
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.
Testing, Tools, CodeCI was red for six weeks — and the site never noticedMy blog's CI has failed on every single push since June 20th. The site kept deploying fine the whole time, which is exactly the problem.
Tools, Technology, Code, Firebase, PersonalPortfolio Ticker four months on — ROI/yr, year returns, and a real order logLiving with Portfolio Ticker exposed the gaps — annualized ROI, calendar-year returns, and what happens when you sell. Here is what I added.
AI, Tools, Code, OpinionsValidation skills — the part of harness engineering that let me stop babysitting agentsHarness engineering gets agents doing the work. Validation skills are what let me trust that work enough to stop watching every run.
AI, Tools, Code, TechnologyMy Canon G5040 had no Mac app, so Claude Code reverse-engineered oneCanon ships no Mac utility for the Canon G5040. In one session, Claude Code reverse-engineered its maintenance protocol and built me one.
Opinions, AI, Code, TechnologySoftware is dead, long live the software — notes from 30 personal appsEveryone says software is dead now that anyone can build their own apps. I've built over 30 of them, and that's why I don't believe it.