RSSAmplifier

Blog

Donn Felker

Articles on software engineering, freelancing, and building a self-directed life.

donnfelker.comRSS feed ↗514 posts

Latest posts

Reducing OpenClaw Token Costs with claw-llm-router

Right model, right time. Save tokens.

The Passive AI Learning Stack That Changed the Way I Learn

Learn more with less effort.

Learn Agentic Coding in 2 Days (and unlock a decade of productivity)

Evolving into an Agentic Coding Architect

The Single Most Important Thing You Need as a One-Person Business to Guarantee You Get Paid

Get paid or go broke.

Vibe Coding with AI and the Future of Software

Software’s Industrial Revolution Moment

Productive LLM Coding with an llm-context.md File

Avoid repeat prompts with context.

Invisible Mentors

Mentorship without direct connection.

The Life Changing Magic of Doing Things For Free

Plant Seeds of Opportunity.

Done is Better Than Perfect

Perfection delays real progress.

Master the Basics

Skill beats high-end tools.

How to Backup A Digital Ocean Managed Database

Digital Ocean backup with pg_dump.

Migrating from Sidekiq to Solid Queue

Goodbye Sidekiq, Hello Solid Queue.

Rails ImportMap Pin with Version

Pin specific versions in ImportMap.

Ruby Script for Telegram Notifications

Skip paid alerting services. A small Ruby script and Telegram bot let you send yourself server notifications for free using MarkdownV2 messages.

The Decline Of Mobile Development

Constant forced OS updates, mandate deadlines, and over-engineered patterns are driving mobile developers to abandon native apps for the web.

Obtaining More Freedom (and Money) with Freelancing

I once worked straight through a client's company holiday by accident. It's a reminder of why freelancing trades meetings for freedom and money.

I Removed JetPack Compose from My App

Why I ripped a Compose AppBar back out of Jumpstart Android in favor of a plain XML Toolbar to make Turbo Android and Strada integration simpler.

Why Grandparents Spoil Grandchildren

A theory on why grandparents spoil their grandchildren: it's a second chance to do right what regret and exhaustion got in the way of as parents.

Make Every Second Count: Strategies to Unleash Creativity and Success at Any Time

We all get the same 86,400 seconds a day. How I cut phone time from 6-9 hours to reclaim mine and used small 10-minute blocks to ship more.

Bootstrapping to 7k MRR with WordPress and No Code

How I built Caster.IO into a $7,500 MRR membership business on WordPress, RestrictContentPro, and Wistia without writing a single line of code.

Why Kotlin Multiplatform Won’t Succeed

Kotlin Multiplatform is impressive tech, but human nature, ego investment in tool choice, and a scarcity of polyglot devs will keep it niche.

Listomo – A New Cheaper and Easier Way To Build Your Email Lists

I was paying $400/month across multiple email list providers, so I built Listomo: one account, unlimited contacts, bring your own SMTP.

Native Where You Need It (Hybrid Mobile Apps)

Why hybrid Native Where You Need It apps -- native only where it matters, web everywhere else via Turbo and Hotwire -- beat building native twice.

The Power of the Clarity Doc: Your Tool for Clearer Thoughts

An 8-step writing exercise for breaking analysis paralysis: dump your thoughts, weigh pros and cons, war-game the worst case, then decide and act.

Bootstrapped vs. Self-Funded

Bootstrapped and self-funded get used interchangeably, but they're not the same thing. Here's the real difference and why it matters.

Deploying Middleman Sites on Hatchbox

How to deploy a Middleman static site on Hatchbox with a custom build script, plus auto-deploying on every git push - after ditching Heroku.

Disable Attachments in the Trix Editor

A drop-in Stimulus controller that strips the attachment button, blocks pasted images, and disables file uploads in Rails' Trix editor.

Opportunity Cost and Letting Go: How to Profit from Your Stalled Projects

You want your time back so you can focus on other things. How do you do it though? Learn how in this article

The 15-Minute Meeting: Change Your Workday, Change Your Life

Most meetings do not need an hour. Set your default to 15 minutes, give every meeting a goal and a leader, and block them into one part of the day.

How to Migrate to Rails Encrypted Attributes

How to migrate an existing unencrypted Rails column to Rails 7's built-in encrypted attributes without breaking data already in the database.

Status Updates Should Be 60-90 Seconds

Standup status updates should take 60-90 seconds per person, no more. Longer updates waste everyone's time - save the deep dives for after the meeting.

Building a Stronger Mind and Body: Reflections on 1000 Days of Working Out

I worked out for 1000 days straight, this is what I learned about myself mentally, physically and more …

HowTo: Setup Tailwind CSS 3 with Middleman

A step-by-step guide to wiring Tailwind CSS 3 into a Middleman static site with an external_pipeline, plus the gotchas I hit and a ready-to-fork template.

MultiTenant PgSearch: A How To

How to scope Rails PgSearch multisearch results to a tenant: add an account_id column, wire up additional_attributes, and rebuild the index right.

PgSearch multisearch with ActionText::RichText

How to make a Rails model's ActionText::RichText field searchable with PgSearch by hooking multisearchable into its on_load initializer.

How to Fix – NameError: uninitialized constant Vips on Heroku

Fixing NameError: uninitialized constant Vips on Heroku for a Rails 7 app: the ruby-vips gem, an Aptfile, and two buildpacks in the right order.

Master the Essentials of Git in Under 2 Hours

A free 2-hour YouTube course covering the 20% of Git commands, branch, merge, stash, cherry-pick and more, that cover 80% of daily use.

How Often You Should Visit Your Clients

A freelancer's framework for deciding which clients are worth an in-person visit, how far is too far to travel, and how often to show up.

How to Ship Side Projects 🚀

Seven blunt lessons from 20 years of shipping side projects: expect to fail, ship before it's ready, skip the emotional attachment, have an exit plan.

How to increase your productivity with outsourcing and SOPs

How to outsource tasks without losing your mind: write a standard operating procedure for every task so contractors can run it without you.

How to Start Freelancing If You Have Existing Responsibilities

A four-step stair-step plan for building a freelance career on nights and weekends while still working full-time and raising a family.

5 Freelance Estimating Tips That Will Land You More Clients

Five practical rules for estimating freelance projects: never quote on the spot, scope with a discovery call, and always give a range, not a number.

Freelancing vs Consulting

In this post you'll learn what the differences between freelancing vs consulting are in regards to you being a software developer and mobile app developer.

Get Known or Get None

No online presence means no freelance clients. Build a track record with a blog, GitHub, and social so prospects trust you before they call.

Why you need to step out of your comfort zone

Learning Solidity and building on Ethereum taught me more than comfort-zone tech ever could. Real growth happens when you're in over your head.

Why you should never quit too early …

I shut down my CrossFit gym billing SaaS when competitors showed up, only to watch customers later abandon them and come back to simplicity.

lvh.me Not Working (with Verzion Fios/My ISP/etc)

lvh.me suddenly stopped resolving on Verizon FiOS. Switching to Google's DNS (8.8.8.8) on my router or Mac fixed it. Here's how I diagnosed it.

What Gets Measured, Gets Managed

Why tracking sleep, spending, workouts, and even words-per-hour while writing turns vague goals into things you can actually manage.

You Are Not Your Creations

A story from my Groupon days: A/B testing killed a feature I'd poured two months into, and it taught me to stop being emotionally attached to my code.

Why Mobile is Not the Future …

Why I think the web browser, not native mobile apps, is the real future platform, and why even the Gmail app is mostly just a WebView.