Ask

Eight months of a second income and my savings has moved $600

I exported twelve months of statements and sorted by merchant, which took a Sunday afternoon and was genuinely unpleasant. Two categories ate the entire second income for me: food delivery went from $95 a month to $410, and I had quietly stopped cooking because I was working past 8pm most nights.

The rest was a rounding error of subscriptions I'd added "since I can afford it now." Six of them, $74 a month, none of which I'd have missed. The second job didn't fail, my spending just expanded to match the hours I no longer had.

232 · in/two-jobs ·

Everything in my product feels core - how did you decide what goes behind the top tier?

I got this by asking rather than guessing. Twelve customer calls, and the question that produced the answer was not what would you pay more for, it was tell me about the last time you nearly stopped using this. Four of them described the same scaling wall, which turned out to be the axis. Nobody mentioned either of the two features I had built for the top tier, and one person had not noticed the top tier existed.

174 · in/pricing-tiers ·

Postgres query got 40x slower after I added a tenant_id filter

Longer term, if tenants vary in size by three orders of magnitude, look at partitioning by tenant or at least keeping per-tenant statistics targets higher. The planner's default sampling is not great at very skewed distributions and you'll hit this shape of problem again on a different query.

90 · in/fullstack ·

pg-boss or redis for 20 jobs a minute on one $12 box

No, and the performance argument everyone reaches for is the wrong argument anyway.

FOR UPDATE SKIP LOCKED is what every Postgres queue is built on and it will do thousands of jobs a second on hardware considerably worse than yours. You do 0.33 a second.

The real reason to prefer it at your size: you can enqueue the job in the same transaction as the row that caused it. Order rolls back, receipt job never existed. With a separate queue you get the classic pair of bugs - charged but no receipt, or receipt sent for an order that rolled back - and the standard fix for those is an outbox table, which is a Postgres queue with extra steps.

181 · in/queues-and-jobs ·

Unplug all my chargers or spend the effort somewhere else on the bill

Your dad is describing a real effect at 1995 scale. A modern phone charger left in the wall with nothing attached draws something in the region of 0.1 to 0.3 watts. Twelve of those is a few watts, call it 30 kilowatt hours over a year, which is single figures in most currencies. It is not the reason your bill went up.

What is worth chasing, in rough order:

  • The games console, if it's in instant-on or rest mode. Those can sit at 10 to 15 watts constantly, which dwarfs every charger in the flat combined
  • The TV if it's an older one, and anything with a set top box attached
  • Anything that makes heat: kettle, oven, tumble dryer, electric shower, immersion heater
  • An old fridge or freezer, which runs 24 hours a day and can be double a modern one

Buy a plug-in energy monitor for the price of a takeaway. Ten minutes of moving it around will tell you more about your specific flat than any amount of general advice, mine included.

320 · in/everyday-why ·

One app for tasks and notes or two separate ones across three devices

Two apps, and fix the gap instead of merging them, because the gap is a habit problem rather than a tooling one.

The rule that solved this for me: notes are allowed to contain tasks, but a task is not real until it exists in the task app. So when I close a meeting note, the last thing I do is copy any action out of it. Ten seconds. The note keeps the context, the task list stays the single place I look.

Merging into one tool usually produces a system where your task list is full of half-written paragraphs and you stop trusting it. The combined apps are genuinely good at one of the two jobs and mediocre at the other, and which one they're good at is easy to find out in a week of use.

On your actual constraint, browser access on a locked-down work laptop is the thing to test first, before anything else. Some corporate setups block the exact domains these tools use, and that's a much shorter list of candidates than the feature comparison suggests.

229 · in/focus-systems ·

Two dictionaries give different origins for OK, how do I decide which to trust

Free tools that will get you a long way:

  • Your public library card very often includes remote access to a major dictionary, worth ten minutes checking
  • Etymonline, which is free and generally flags disputes rather than hiding them
  • Google Books with a date range, but treat the dates with suspicion because the metadata is frequently wrong and periodicals get bound with the wrong year
  • Free newspaper archives, which is where a lot of antedating actually happens now

The metadata warning is not a small thing. Half the confident finds people post turn out to be a 1911 reprint catalogued as 1847.

244 · in/word-origins ·