2026-03-17
(Mod: 2026-03-18)
| 4 minutes
I recently spent a pile of time trying to decide how plim should track debts: both the money you owe to others and the money they owe you. That covers everything from your mortgage to the $30 you loaned Dave at karaoke last Tuesday.
But a solution that covers all of them caught me by surprise — and made plim simpler in the process.
◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇
The Questions Piled Up
It started with a simple feature request.
Suppose you pay a $150 parking fee for a work trip. Your employer will reimburse you for it, but not until next month. So how should plim track that? The money is gone, but not forever. It is coming back, so it feels wrong to just wave goodbye to it. I needed to figure out how plim could handle that - some way to mark it as “temporarily unavailable.”
But thinking about lending money out quickly raised the opposite consideration: You borrowed $200 to cover a bill when you were short. Mom just went to the bank and paid it for you, but you still owe it back to her. How do we tell plim about that obligation?
And how should it display it for you so you don’t lose track of the debt? Mom might forgive you if you forget, but what if your “mom” is a dock-worker named Slick Tony? If there’s one thing we know about the Slick Tony’s of the world, it’s that they’re famously impatient about missed payments.
And then there’s your mortgage. You’ve got $187,000 left on it and you pay $1400 every month. Where should plim show the running balance? Shouldn’t it know your interest rate too? And your penalty rules and overpayment options?
Each of these pieces of a financial profile felt like a gap in plim. A leak in the feature set that needed to be plugged. So I started designing solutions — special bucket types, two-bucket tracking systems, keeper accounts for loan statements. The machinery was getting interesting.
And complicated.
One Idea To Answer Them All
Altogether, I spent three days coming at this from every conceivable angle, but no matter what solution I tried, I kept finding edge cases, counter examples, and special exceptions. Up until now, plim has been rather elegant with its simple “just buckets and leaks” architecture, but these questions looked like they were each going to drop depth charges into the code base.
Until I asked one final question: What does any of this have to do with my actual budget?
A fisherman plans his life based on the fish he has in his bucket. Not the ones he saw jumping this morning, not the ones he heard are massing just around the next headland. He can only eat or sell the ones he has inside the bucket, right now. That’s all he can work with.
So, remember that $150 your company owes you? You can’t spend it on groceries tonight, can you? It’s an asset you own, but it’s not available to work with until it shows up as real money coming back into your account again next month - and plim already knows how to handle that.
The $200 you borrowed frogm mom? It’s already gone, so you certainly can’t use it to buy anything else today. Budgets are your plans for how to spend your money, so any money you can’t spend has no bearing on it.
And when you do come up with $200 to pay her back, plim already knows how to track that. In a bucket called Mom. (Or Slick Tony.)
Your mortgage balance is no different - it’s not money in the bank or in your hand. The only part of your mortgage that matters in your budget today is how much you owe this month, and where that’s coming from. When you figure that out, you’ll move it to a bucket called “Mortgage,” which, again, is something plim can already do.
All of these complicated scenarios fell apart under the light of a single, simplifying observation: Budgeting is about your liquid cashflow plan, not your balance sheet.
Or, to quote the new core principle this exercise has unlocked:
Plim is for budgeting the money you actually have. Everything else is wishful thinking.