Subscribe to masimplo.com

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

masimplo.com

"Love many things, for therein lies the true strength, and whosoever loves much performs much, and can accomplish much, and what is done in love is done well." - Van Gogh

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.

The drink I make that actually works cover image
Hobbies,  Lifehacks

The drink I make that actually works

Fresh ginger, lemon juice, and honey is already a drink worth making. Then I started fermenting it, and now I cannot go back.

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.

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.

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.

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.

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.

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.

Home Assistant and the local-first smart home cover image
Smart Home,  Technology,  Hobbies

Home Assistant and the local-first smart home

Smart home products love to sell you convenience. What they do not mention is that most of that convenience runs through someone else's server.

The Voron build was hard — owning one is the real project cover image
3D Printing,  Hobbies

The Voron build was hard — owning one is the real project

Finishing the Voron build feels like crossing a finish line. That high is real. It is also misleading — the real project is what comes after.

Keeping an old car in great shape when nobody else sweats the details cover image
Tips,  Hobbies

Keeping an old car in great shape when nobody else sweats the details

Old does not mean good enough. What happened when I stopped trusting other people's checklists and kept my Astra OPC running like clockwork.

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.

DeepSeek R1 and the week the pricing story broke cover image
Technology,  AI,  Opinions

DeepSeek R1 and the week the pricing story broke

When DeepSeek dropped R1, my first reaction was not hype — it was spreadsheet panic. The comfortable pricing story suddenly had a counterexample.

Building a smart HVAC system from scratch cover image
Smart Home,  Hobbies,  Technology

Building a smart HVAC system from scratch

When you build your own house you get to make all the decisions. That sounds great until you realize you also have to live with all of them.

Finding an appropriate WAF might be harder than it looks cover image
Security,  Technology

Finding an appropriate WAF might be harder than it looks

Shopping for a Web Application Firewall on a small budget is rough — opaque pricing, call-for-quote tiers, and GDPR clashes with CDN offerings.

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.

Help the Helpdesk! Send Info. cover image
Tips

Help the Helpdesk! Send Info.

A small trick that makes app support better — prefill your mailto contact link with device and user info so the helpdesk skips the back-and-forth.

Bing's great comeback cover image
Technology,  AI

Bing's great comeback

Microsoft wired ChatGPT into Bing and used the waitlist to push Bing onto millions of devices — pure marketing genius in my book.

3D printing resources cover image
3D Printing

3D printing resources

This is just a list of links related to 3D printing, mainly here for my own reference, but pretty sure you might find something useful in them also.

Fear of the warped bed cover image
3D Printing

Fear of the warped bed

My Voron's bed mesh deviation jumped to 0.32mm and I feared a warped 3D printer bed — the real culprit turned out to be the gantry.

Software security is a culture not a calendar event cover image
Security,  Opinions

Software security is a culture not a calendar event

Treating software security as an occasional audit is a mistake — small companies compete by making security part of every decision they take.

In the Era of ChatGPT and friends cover image
Technology,  AI

In the Era of ChatGPT and friends

If you can no longer tell whether ChatGPT or a human wrote a piece of text, what does that do to authenticity and trust in what we read?

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.

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.

Batch resize pictures on Mac using Preview cover image
Tips,  Tools

Batch resize pictures on Mac using Preview

A quick step-by-step way to batch resize images on a Mac using nothing but Preview, plus ImageOptim to shrink them for the web.

Building my own 3D printer cover image
3D Printing,  Hobbies

Building my own 3D printer

How I went from a modded Ender 3 Pro to building a Voron from 150 separate part orders, and why DIY 3D printing is such a rewarding hobby.

I just discovered the best laptop sticker residue remover cover image
Lifehacks,  Tips

I just discovered the best laptop sticker residue remover

Baking soda mixed with rubbing alcohol removes laptop sticker residue in seconds, after nail polish remover, vinegar and alcohol alone all failed.

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.

Github Source cover image
Source

Github Source

Where to find this project on GitHub.

Git rerere to the rererescue cover image
Tools,  Tips

Git rerere to the rererescue

Enabling git rerere makes git remember your conflict resolutions, so repeated rebases of a feature branch stop asking you to fix the same conflicts.

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.

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.

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.

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

What's wrong with StackOverflow cover image
Opinions

What's wrong with StackOverflow

Why I stopped answering questions on StackOverflow, where low-effort posts and point farming are eroding a great platform.

Removing remote and local git tags cover image
Tips,  Tools

Removing remote and local git tags

One-liner commands to bulk delete unwanted git tags matching a pattern from both the remote repo and your local clone, using awk and xargs.

Updating Cordova config.xml version using npm version cover image
Bash

Updating Cordova config.xml version using npm version

Using the npm version script hook to update Cordova's config.xml version number automatically and commit it alongside package.json.

NVM is hands down the best way to install nodejs cover image
Tools

NVM is hands down the best way to install nodejs

After trying every way to install NodeJS, NVM is my favourite since I can switch versions instantly and migrate global packages too.

Removing sensitive data from github cover image
Tools,  Security,  Tips

Removing sensitive data from github

I accidentally pushed an API key to github, so here is how to scrub sensitive data from git history using the BFG repo cleaner.

Ionic2 VirtualScroll custom component workaround cover image
Ionic

Ionic2 VirtualScroll custom component workaround

Ionic2 VirtualScroll won't render custom components yet, but wrapping the component in a plain div works around the open issue.

Adding highlight.js to Ghost cover image
Blogging

Adding highlight.js to Ghost

A quick way to add highlight.js syntax highlighting to a Ghost blog using the admin panel's Code Injection tool instead of editing theme files.

Teamcity agent as Docker container cover image
Tools,  Docker

Teamcity agent as Docker container

Instead of committing hand-tweaked containers, I build custom TeamCity build agents from a Dockerfile so they are versioned and reproducible.

Listing global npm installed packages cover image
Tips,  Tools

Listing global npm installed packages

If you are moving your global packages over to yarn, a single npm command lists every globally installed package with its version.

Running Ghost inside docker behind nginx cover image
Tips,  Docker,  Blogging

Running Ghost inside docker behind nginx

How I run my Ghost blog inside a docker container behind an nginx reverse proxy, with the full docker-compose and nginx config.

Welcome to Ghost cover image
Docker

Welcome to Ghost

A fresh start for my blog on Ghost, a minimal nodejs blogging platform, running inside a docker container behind an nginx proxy.

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.

Practical CSS3 tables with rounded corners - RedTeamDesign cover image
Web Design,  CSS

Practical CSS3 tables with rounded corners - RedTeamDesign

I came across a red-team-design.com article showing a simple way to build CSS3 tables with rounded corners and hover effects, so I am sharing it here.

A picture is a thousand words. GreenShot cover image
Tools

A picture is a thousand words. GreenShot

After years on SnagIt I switched to GreenShot, a free open-source screenshot tool with handy capture hotkeys and a built-in editor.

Annoying online salesrobot cover image
Online Shopping

Annoying online salesrobot

Amazon spends millions on product recommendations, yet its cross-selling emails still can't match a good in-store saleswoman.

Breaking promises...and asking santa for internet access. cover image
Blogging,  Personal

Breaking promises...and asking santa for internet access.

Six months of blog silence, two months without an internet connection at my new home, and a rant about paying for service I never got.

Google Apps forwarding cover image
Tips

Google Apps forwarding

Google Apps has no traditional email forwarders, but with a few steps you can configure its Groups feature to forward mail to any addresses you like.

Android blogging cover image
Blogging

Android blogging

I installed the WordPress app on my Android phone so I can manage posts, pages, comments and stats, and I even wrote this post with it.

Entity Framework Proxy GetType() mess cover image
.Net

Entity Framework Proxy GetType() mess

Entity Framework returns dynamic proxies whose GetType() breaks generic repositories, so I use ObjectContext.GetObjectType to get the real entity type.

Hello world cover image
Blogging

Hello world

I have started and abandoned several blogs before, so this is another attempt to write about my studies, my work and my hobbies.