Meddling since 1989 · still going

I build the software nobody asked for. Correctly.

Meddling Idiot Software is a two-person shop running on stubbornness, regulatory footnotes, and a congenital inability to leave a solved problem alone. I write the code. Richelle decides whether it was worth writing.

// some of these I've written from scratch more than once. on purpose. for fun.

Meddling Idiot Software logo
37
years writing software (since 1989)
same engine, rewritten from scratch
5
projects worth showing
1,869
tests passing
The evidence

Stuff I made instead of relaxing.

Five projects, two people, and exactly one meeting — it happens at dinner.

Greenlight app window listing recent CI/CD builds with green and red status squares Greenlight on iPhone: a green stoplight card reading All clear, everything is passing across 55 pipelines, above a list of pipelines with pass and fail squares
For developers · Windows tray + iPhone

Greenlight

A quiet little status lamp for your CI/CD pipeline.

Sits in the tray and tells you whether the build is green, amber, or red with a glance. No dashboard, no noise, no 200 tabs — just a lamp that changes color and, optionally, a custom audio cue for each state so the whole office knows who broke main without anybody checking email.

Avalonia CI/CD status system tray iOS Web Audio
See Greenlight Download Free while in beta · Windows 10 / 11
StoryTeller audiobook shelf listing books with covers, progress bars, and a now-playing bar
Desktop · Audiobook player

StoryTeller

Your audiobook shelf, exactly where you left it.

Point it at a folder of audiobooks and it builds a shelf: covers, authors, per-listener progress, and a resume button that actually resumes. Multiple people can share the same library without stepping on each other's place in the book. No cloud, no telemetry — just your files and a play button. Free while it's in beta.

Avalonia per-listener progress local library
See StoryTeller Windows installer available
For truck drivers · Windows · Web · iOS & Android soon

HOS Planner

Plan the trip and your hours before you start the engine.

Map a point-to-point route, mark your stops, then drag duty-status markers onto a visual timeline and watch violation bands appear the instant you cross the 11-hour, 14-hour, 8-hour, or 60/70-hour limits. Route overlay, fuel-stop search, sleeper-berth split detection — the works. This is the rules engine I've now written three times. It's the best of the three.

Blazor Avalonia hand-coded CFR 395 engine
See HOS Planner Open in browser Windows installer available
HOS Planner showing a route map and duty-status timeline
For photographers · Windows · iOS & Android next

OnLocation

Scout the place, read the light, come back when it's good.

Drop a pin on anywhere worth shooting, tag it, note where the parking is — then let it tell you when golden hour actually lands on that exact spot, on any day you like. Sunrise, sunset, blue hour and the sun's bearing at any minute you scrub to, computed per pin from its own latitude rather than the nearest city. Pins, notes, photos and the maths all stay on your device.

Avalonia Mapsui NOAA sun maths offline-first
See OnLocation Play with the light band v0.1.0 beta · free while it's in beta
1 Aug · 48.152, −123.680 golden 20:06–21:13
0006121824
20:06 — 6° up, bearing 291°
For developers · .NET library

MeddlingIdiot.Icr

The recognition engine, available on its own.

The OCR/OMR toolkit that grades scanned paper forms: template-driven form reading, registration-mark alignment, ICR text and OMR mark detection, batch folder automation. Pull it into your own .NET project and point it at a stack of scanned sheets.

ML.NET / Encog ImageSharp template-driven OMR

// yes, there's a usage guide. nobody asked for that either.

icr.recognize(sheet_0421.png)
1
2
3
ICR field A7B-04
▸ parsed
{
  q1: "B",
  q2: "C",
  q3: "D",
  id: "A7B-04",
  conf: 0.991
}
The community

Somewhere to say it's broken.

There is no ticketing system, no support tier, and no chatbot asking whether you've tried turning it off and on again. There is a forum, and the two of us reading it. Bug reports, feature requests, and arguments about hours-of-service maths, where golden hour actually falls, or how many colours a bracket-nesting palette needs are all equally welcome.

// response time measured in days, not minutes. but it is measured.

Open the forum community.meddlingidiot.com · free, no account needed to read
The idiot in question

So who's meddling, exactly?

Two of us now. The org chart still fits on a business card, with room to spare.

Portrait of the Meddling Idiot
The Meddling Idiot, c. 2026.
Oil on overconfidence. Artist unknown (and, one assumes, relieved).

Programming is the day job, the hobby, and — let's be honest — most of the personality. I write code because I genuinely enjoy it: the puzzle, the fight, the moment a hard problem finally gives.

I've been at it since 1989 — long enough to have shipped products that no longer run on hardware you can no longer buy. When the workday ends, I don't really stop; I just switch to the problems I want to be solving.

Nothing here shares an industry, a customer, or a defensible business rationale. Hours-of-service rules for truck drivers. A camera app that performs a card trick — badly, on purpose, that being the trick. A lamp that turns red when the build breaks. Golden hour, worked out per pin. And underneath all of it, scripts to automate the scripts.

That's the whole shtick: I meddle with whatever is making me happy that week, and then keep meddling long after any reasonable person would have stopped — usually around 11pm, for nobody, for free. It is a hobby that occasionally files a tax return. The "Idiot" part is affectionate. Mostly.

— principal engineer & entire engineering department
Richelle, grinning through a gap between two redwood trunks
Richelle, c. 2026.
An actual photograph of an actual person. No oil, no overconfidence.
The wife in question

The Meddling Idiot's Wife

Richelle decides what ships, what it's worth, and whether anyone ever hears about it.

I can build a thing. I am substantially worse at knowing whether it's any good, what to charge for it, or how to mention it to another human without sounding like a changelog.

So she tests everything before it goes out, and she holds the veto: if she can't use it, it doesn't ship. That has cost me weeks, and has not once been the wrong call.

She sets the prices, too. Left to me it would all be free, and I'm reliably informed that isn't a business.

And she's the one who actually tells people — the announcements, the accounts, the entire category of work that involves talking to humans on purpose. I stay in the background, which is where I'm most use.

“He's brilliant and socially awkward. I handle the second part.”

— Richelle
— quality control, pricing & every word we say in public
How I work

A short manifesto, for a company that doesn't strictly need one.

Five rules. There's no one here to enforce them, which is exactly why they're written down.

  1. 01

    You should own your data.

    Your data belongs to you, so I build local-first wherever it's possible. Your information lives on your device, under your control — not in somebody else's cloud because that happened to be the easiest business model. You shouldn't lose access to your own work because you stopped paying a subscription, and you shouldn't have to trust a company to stay alive forever just to keep using software you already bought. Cloud services can be genuinely useful. They should serve you, not own you.

  2. 02

    Software should cost what it's worth.

    Software has value, and good software takes ongoing work to maintain — but the price should make sense relative to what the thing actually does for you. An app that's mostly a convenience should be priced like one. Software that's going to stay compatible with new devices, fix its bugs and keep gaining features people actually use needs enough support to stay alive. The goal isn't to extract the maximum from every user; it's the balance where you get real value and I have a reason to keep making it better.

  3. 03

    Easy isn't always the same as good.

    Design is a balancing act between easy to use and powerful enough to matter. Sometimes the best software is understood immediately. Sometimes a genuinely capable tool has concepts worth learning. I don't believe every feature should be flattened until it can be used without a thought — if a little learning buys you significantly more control, flexibility or power, that's a good trade. Not complexity for its own sake, but software that respects your ability to learn.

  4. 04

    Automate everything.

    If a thing can reasonably be automated, I want it automated — part professional discipline, part hobby, probably part character flaw. Computers are extraordinarily good at doing repetitive things consistently. Humans are extraordinarily good at forgetting to. So the computer does the boring part: the builds, the tests, the backups, the updates, the tedious little processes nobody should have to remember. The human time goes on the interesting problems.

  5. 05

    Build software that works for the person using it.

    Own your data. Pay a fair price. Learn the tool when the extra power is worth learning. Automate everything that doesn't need a human. And build software that exists primarily for the benefit of the person actually using it. That's the kind of software I want to make.

/* always shipping */

The toolbox

Things I reach for, and why.

One language does most of the work. Everything else earns its place.

C# / .NET
The whole shop runs on it. One language, every platform, no apologies.
JetBrains Rider
Where the code actually gets written. Refactors I trust, and it never nags me to log in.
Avalonia
Cross-platform desktop XAML. Greenlight, StoryTeller and HOS Planner live here.
Obsidian
Where the thinking happens before the code does. Plain Markdown, on my disk, mine forever.
GitHub
Version control and, until recently, the closest thing here to a coworker.
ML.NET
The brains behind the OCR/OMR recognition, without leaving C#.
.NET MAUI
How the mobile builds happen. (Yes, the "coming soon" ones.)
Listary
Hit a key, type three letters, open the thing. My hands rarely have to find the mouse.
OneCommander
A dual-pane file manager that treats power users like adults. Windows Explorer could never.

// notably absent: a cloud bill, a "platform team," and seventeen JavaScript frameworks.

Honest answers

Questions you might reasonably have.

Answered with the candor of a company whose entire marketing department is married to the founder.

Is "Meddling Idiot" the actual company name? +

It is. Meddling Idiot Software, LLC — registered, taxed, the whole bit. The name is a promise: I will meddle with a problem long past the point of good sense, and feel slightly foolish about it the entire time.

Do you take freelance or contract work? +

Sometimes, for the right problem. If you've got something gnarly — a rules engine, a recognition pipeline, a desktop app that has to be correct rather than merely shippable — get in touch. If you want another generic CRUD app, we both deserve better.

Why build things that already exist? +

Because the existing versions got the edge cases wrong, stopped being maintained, or annoyed me personally. "It already exists" and "it exists and is good" are very different claims.

What else have you built? +

More than is on this page. A web browser that hides behind a fully working calculator, a seaside face-in-hole board that runs on a phone camera, a card trick whose flash goes off at deliberately the wrong moment, a Sokoban game with unlimited undo, a Rider plugin that colours brackets by nesting depth, a tray launcher, an assessment studio that grades scanned paper for teachers, and a quantity of build automation nobody asked for. Richelle has seen all of them, and three never got past her: the Sokoban game, on the grounds that the world already has enough of those; the calculator with the encrypted safe hidden behind it; and the seaside board, which I maintain had real promise and which is the one that still stings. You are looking at the survivors.

Where does my data go? +

Your data — books, trips, logs, settings — stays on your device. No server, no analytics, no cloud sync. The one exception is this website: downloading an installer needs a free account, so we hold your email address, whether you asked for product updates, and a line saying which installer you took and when. That's the entire list, it is never shared with anyone, and deleting your account deletes it. I don't want your data — I have enough of my own problems.

Are the rules and recognition actually correct? +

The HOS engine has been written by the same person three times and has, on occasion, out-argued a DOT officer about that officer's own regulation. The recognition engine finds a field on a scanned page by registration mark rather than by hope, and OnLocation works out sunrise from each pin's own latitude instead of the nearest city's. All three are the sort of thing that is either right or embarrassing, so they get tested harder than the parts you can see. That said: I'm a developer, not your compliance attorney — verify anything that actually matters against the current regulation or a qualified professional. But the engines themselves? They're probably fine.

Who works here? +

Two of us. I write the code; my wife Richelle decides whether it was worth writing, what it costs, and whether anyone hears about it. That is the entire org chart. Hello.

Do you have a marketing department? +

We do now. She's nicer than me, which is the whole strategy. Previously this FAQ boasted about not having one, which was easier to say when nobody was doing the job.

Get in touch

Found a problem worth meddling with?

A bug report, a freelance inquiry, or a strong opinion about how an audiobook ought to remember where you stopped — post it on the forum. Both of us read it, so you have a 50/50 shot at the nice one. For the other 50, I apologise in advance.

// no contact forms. no newsletter. no "book a demo." just a forum and a person reading it.

An unhandled error has occurred. Reload 🗙

Rejoining the server...

Rejoin failed... trying again in seconds.

Failed to rejoin.
Please retry or reload the page.

The session has been paused by the server.

Failed to resume the session.
Please retry or reload the page.