How I locally fine-tuned Whisper using my own voice data and some effort
Off-the-shelf Whisper models are impressive but struggle with personal vocabulary, accents, and jargon not present in their training data. This post covers why standard open datasets fall short for personal fine-tuning and how I built Listenr to continuously capture and transcribe my own conversational audio as a training set.
-
Making Firefox's AI Chatbot local-only with Lemonade
Firefox has a built-in AI chatbot sidebar that supports local inference providers, and connecting it to a locally running Lemonade server takes just two small configuration changes. This post walks through the exact setup so your prompts never leave your machine.
-
LLM generated 3D modeling is the way to go
After hitting walls with FreeCAD, TinkerCAD, and Fusion 360, I discovered that scripting 3D models in OpenSCAD with an LLM produces precise, reusable parts faster than any GUI-based workflow I tried. Two prompts into ChatGPT, I had a working pipe reducer printed and in hand.
-
Automate Everything: LLMs and Bash Scripts Mean Saved Time
Using LLMs to generate deterministic scripts rather than running real-time AI agents is a more reliable, testable, and repeatable approach to automation. This post explains the strategy, shares real examples from managing this blog, and covers how to keep the output production-ready.
-
Why do Canadian News Sites Track Me so Much?
After noticing CBC blocking 11 tracker domains in uBlock Origin, I built an automated tool to scan Canadian and international news sites and measure exactly how many trackers each one loads. The results reveal a pattern of aggressive, ad-network-driven data collection that goes well beyond basic analytics.
-
Rethinking Library Dependencies in the GenAI age
Large language models are changing the calculus on when to reach for a third-party library versus generating a lightweight, purpose-built implementation. This post examines the tradeoffs and where a hybrid approach of GenAI-generated code refined by a developer makes the most practical sense.
-
Using hCaptcha instead of Google's ReCaptcha with Vue and Express
hCaptcha is a privacy-respecting, drop-in alternative to Google ReCaptcha that actually pays you for serving its challenges on your site. This post shows how to integrate it into a Vue frontend and verify tokens server-side in Node with minimal code.
-
Using Google's Captcha V3 with Express and Node
Google ReCaptcha V3 offers invisible bot detection that scores users without requiring puzzle challenges, and wiring it into an Express backend is straightforward once you understand the token verification flow. This post walks through the full frontend and backend integration with working code examples.
-
Considerations when supporting a legacy software stack
Maintaining a legacy web application is a challenge most developers eventually face, where migrations are too costly, rebuilds are impractical, and doing nothing means a growing list of security risks. This post covers practical considerations for keeping aging stacks alive while keeping technical debt in check.
-
Build a URL Shortener with Node + Mongo
Building a URL shortener is a great project for exploring real-world concerns like unique ID generation, database modeling, and abuse prevention. This post covers the core mechanics using Node and MongoDB, focusing on the counter-based schema design that keeps short IDs truly short.
-
Building a Flask Application: Where to Start
Flask is a lightweight Python web framework that gets out of your way, but choosing the right supporting tools for your database, frontend, and dev environment is where the real decisions are made. This post walks through the key choices when building a full Flask application from scratch.
-
Refreshing an old stack's front end
When an application's core technology grows stale, mixing a modern frontend framework like Vue into an aging backend can be a practical step forward without a full rebuild. This post explores why decoupling your frontend from server-side rendering engines makes sense and how to do it incrementally.
-
The Good and Bad After 12 Months with a System76 Lemur Pro 9
After 12 months with a System76 Lemur Pro 9, a Linux-focused laptop with a metal chassis and user-replaceable internals, the experience has been a mix of genuine strengths and persistent hardware and software quirks. This post goes through each in detail.
-
Building a Startup on $10 a Month
Running a SaaS startup serving thousands of users for just $10 a month is achievable by choosing a VPS over managed services, leaning on free tiers, and writing code instead of buying tools. This post breaks down the specific stack and frugal mindset behind keeping costs minimal without limiting what you can build.