Subscribe to masimplo.com

Stay up to date! Get all the latest & greatest posts delivered straight to your inbox

Code

Languages, patterns, and implementation details.

Waiting for progress cover image
Code

Waiting for progress

A simple static event class that lets any deeply nested code update the main form's progressbar without passing references around.

Test RxJS interval and debounceTime without waiting real seconds cover image
Testing,  Code

Test RxJS interval and debounceTime without waiting real seconds

Angular fakeAsync and tick beat setTimeout waits and jasmine.clock for time-based RxJS5 observables in unit tests.

Adding type safety to Immutable.js with Typescript string literals and keyof cover image
Code

Adding type safety to Immutable.js with Typescript string literals and keyof

How 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.

Mock Ionic ModalController to test onDidDismiss cover image
Ionic,  Testing,  Code

Mock Ionic ModalController to test onDidDismiss

A reusable PresentableControllerMock so unit tests can dismiss modals, alerts, and toasts and assert the page callback.

Ionic environment config with NODE_ENV and Angular DI cover image
Ionic,  Code,  Tips

Ionic environment config with NODE_ENV and Angular DI

Typed dev/prod config via OpaqueToken and a NODE_ENV factory so Ionic2 builds pick the right API keys at compile time.

Async/await retry with timeout in Node.js cover image
Code,  Tips

Async/await retry with timeout in Node.js

A small Express middleware that wraps async handlers with timeout and retry for flaky database calls — cleaner than chaining promise-retry.

Measure real-user web performance with the Performance API cover image
Performance,  Code

Measure real-user web performance with the Performance API

Use performance.mark, performance.measure, and PerformanceObserver to see how slow code actually is on users' devices — not just in the lab.

Set Firebase custom user claims with a Cloud Function cover image
Firebase,  Code

Set Firebase custom user claims with a Cloud Function

Callable Cloud Function that calls setCustomUserClaims, plus Firestore rules and client checks for a moderator claim.

Manage model collections in JavaScript without leaking Array cover image
Javascript,  Code

Manage model collections in JavaScript without leaking Array

Expose a raw array, wrap mutations in methods, or extend Array — three patterns for typed collections that block duplicates and invalid data.

Ionic Angular standalone components — migrating 500+ components cover image
Ionic,  Code

Ionic Angular standalone components — migrating 500+ components

How 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.

The week coding assistants stopped pretending to be autocomplete cover image
Technology,  AI,  Code

The week coding assistants stopped pretending to be autocomplete

Claude 3.7 Sonnet was the first time I caught myself delegating context, not lines. AI coding assistants stopped pretending to be autocomplete.

AI code review is the bottleneck — writing got cheap cover image
AI,  Opinions,  Code

AI code review is the bottleneck — writing got cheap

Agents fill the merge queue faster than humans can read. The constraint moved from typing to verification — and most teams still review like nothing changed.

Vibe Coding: An Honest Take After Three Years of AI-Assisted Development cover image
Technology,  AI,  Code,  Opinions

Vibe Coding: An Honest Take After Three Years of AI-Assisted Development

Three years of AI-assisted development later, vibe coding is real. The thinking is yours, the judgment is yours — the typing was never the point.

Training juniors in the AI era — judgment, struggle, and why the field still needs new data cover image
Opinions,  Code,  Technology

Training juniors in the AI era — judgment, struggle, and why the field still needs new data

AI makes junior developers look productive on week two. If we train them for speed alone, we hollow out the next decade of engineering judgment.

Using Claude Code's parallel agents to collaborate on a feature cover image
AI,  Code,  Tools

Using Claude Code's parallel agents to collaborate on a feature

The 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.

Three similar Ionic apps, one Nx monorepo, and a lot of AI-assisted glue work cover image
Ionic,  Technology,  AI,  Code,  Personal

Three similar Ionic apps, one Nx monorepo, and a lot of AI-assisted glue work

How 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.

Portfolio Ticker — a tiny monitor for investments scattered across brokers cover image
Technology,  Code,  Firebase,  Tools,  Personal

Portfolio Ticker — a tiny monitor for investments scattered across brokers

I 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.

Guardrails beat guidelines — how to keep AI-generated code honest cover image
AI,  Code,  Testing,  Opinions

Guardrails beat guidelines — how to keep AI-generated code honest

You cannot prompt AI-generated code into being reliable. What works is what always worked with new hires — guardrails that say no.

Let the big model write the manual — using Fable 5 to make smaller models better cover image
AI,  Code,  Tools

Let the big model write the manual — using Fable 5 to make smaller models better

I stopped pointing the frontier model at my backlog and started using it to write the Skills and guidelines my cheaper models read.

CI was red for six weeks — and the site never noticed cover image
Testing,  Tools,  Code

CI was red for six weeks — and the site never noticed

My 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.

Portfolio Ticker four months on — ROI/yr, year returns, and a real order log cover image
Tools,  Technology,  Code,  Firebase,  Personal

Portfolio Ticker four months on — ROI/yr, year returns, and a real order log

Living with Portfolio Ticker exposed the gaps — annualized ROI, calendar-year returns, and what happens when you sell. Here is what I added.