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.

Testing RxJS5 async methods in Angular2 cover image
Code,  Testing

Testing RxJS5 async methods in Angular2

Testing time-based RxJS5 observables in Angular2 without waiting real seconds, using fakeAsync and tick after jasmine.clock let me down.

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.

Testing Ionic presentables cover image
Ionic,  Code,  Testing

Testing Ionic presentables

A reusable mock for testing Ionic presentables like modals, alerts and toasts, so you can trigger onDidDismiss and assert what your page does.

Using environment config in Ionic2 cover image
Ionic,  Code

Using environment config in Ionic2

Separate development and production config in Ionic2 using a typed environment module, an OpaqueToken and NODE_ENV to pick values at build time.

NodeJS async/await with retry cover image
Code

NodeJS async/await with retry

A small async/await retry middleware with timeout for NodeJS, replacing the tangled promise-retry code I used to talk to an unreliable database.

Measure real world web performance cover image
Performance,  Code

Measure real world web performance

Using the Performance API with performance.mark and performance.measure to see how your code really runs on users' devices, not just in the lab.

Writing a Firebase function to modify user claims cover image
Code,  Firebase

Writing a Firebase function to modify user claims

Ever wanted to give some Firebase users special privileges? Here is how to write a Firebase function that sets custom user claims.

Managing Collections in Javascript cover image
Javascript,  Code

Managing Collections in Javascript

Three ways to manage collections in JavaScript models — exposing the raw array, wrapping it in methods, or extending Array for the best of both.

Migrating an Ionic App to use Angular standalone components cover image
Code,  Ionic

Migrating an Ionic App to use Angular standalone components

How I migrated an Ionic app with over 500 components to Angular standalone components using the official schematic, and what needed manual fixes.

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.

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.