Budget note that surprised us: parking and resort fees at hotels were a meaningful daily cost on top of the room, and the rental car sat unused on the days we stayed at the beach. On a two-island version you can drop the car for part of the stay and it is not painful.
Nina Kettle
@nightbus_nina
Overland travel on a small budget: buses, shared taxis, ferries, and the occasional questionable border crossing. I know which discomforts are worth the money saved.
140 credit Trusted
- From answers
- 0
- From questions
- 141
- Lifetime
- 141
Something I only worked out recently: the two tools are not even counting the same thing. One is counting people over the month and deduplicating them, the logs are counting requests and you turned those into something else with your own script. Before comparing, make sure both are actually pageviews of HTML pages, excluding assets, feeds, API calls and your own health endpoint. My gap halved once I stopped counting the RSS feed as a visitor.
Also check what webServer is actually waiting for. If url points at / and / is a static shell, the server is "ready" before the database pool has connected. Point it at a health route that touches the db, and set reuseExistingServer: !process.env.CI.
On a cold runner the first real request can spend 8-10 seconds connecting and warming, which comes straight out of the 30 second budget of whichever spec happens to go first. That also explains "never the same seven twice".
1,100 visits and a 0.7 point difference is about nine trials against thirteen. That is noise dressed up as a result - rerun it with the variants swapped and you could easily get the opposite. Not saying the screenshot is wrong, it probably is better, just do not tell yourself you measured it. At this volume you decide with judgement and honesty, not with a test.
The warning is not 41% of your problem. Placement is.
You are asking a person who signed up 40 seconds ago, who has seen nothing, to hand over their calendar. Of course they stop. The scary screen just gives them a socially acceptable reason to do the thing they already wanted to do.
What worked for me on a similar integration: let them paste one thing manually, or upload a file, or click a demo account, and show them the actual output first. Then the connect button appears next to something they already want more of. Same OAuth, same warning screen, roughly half the drop-off, because now there is a cost to quitting.
Fastest path is to delete the customer objects. Deleting a customer cancels all of their subscriptions in one call, so you get the cancellations for free and you are done in an afternoon.
Carried it for two years, bought a top box, and I'd tell anyone commuting daily to skip straight to the box. It isn't only the helmet: gloves, a jacket liner, shopping, all of it stops being a problem at once. The mounting cost stings once and then never again.
Same family of traps if you want to fix them all at once: anymore versus any more, awhile versus a while, and altogether versus all together. Each one is a single word adjective or adverb next to a two word phrase that means something more literal. Learn the pattern once and you get four rules for the price of one.
Genuinely hadn't considered that removing it could be quieter. Trying that this weekend before I spend anything.
Custom moulded keeps coming up. That's probably a better EUR 150 than EUR 600 on a new lid.
If you move it twice a week, an arm is arguably the wrong purchase entirely. A fixed VESA riser or a pole mount will hold position forever and costs less than either arm you're comparing. I sold my LX after realising I was paying for a range of motion I used about once a month.
The reconcile key matters more than the instrumentation. I joined users to payments on email address for months and quietly lost every customer who signed up with a personal address and paid with a work one. Put the payment provider's customer id on the user row the moment it exists and never join on email again.
Whatever tool you use, settle nightly rather than at the end. Ten minutes over a drink while everyone remembers what things were is completely different from reconstructing twelve days from receipts on the flight home, which is how the previous trip went wrong for you and for me.
Counterpoint from someone who did move at roughly your volume and does not regret it.
The feature that mattered was not assignment, it was that every conversation is attached to a customer record with their plan and their signup date visible next to the message. I stopped tabbing between the billing dashboard and my inbox for every reply. At 20 tickets a week that is maybe 40 minutes back per week.
The second thing was snoozing. A ticket I cannot answer until the weekend disappears from the list and comes back Saturday morning instead of sitting there generating guilt every time I open my mail.
That said the cheap tier of any of these is fine. Do not buy the tier with the AI agent in it while you have 44 customers.
Most of that gap is three things and only one of them is a fee.
Timing first, because it is usually the biggest and it is not a loss at all. Payouts run on a rolling delay, commonly a couple of business days for established US accounts and longer in some regions, so the last days of your calendar month land in the next bank month. On a month with a weekend at the end that alone can look like six or seven percent vanished. It comes back next month, which is why the gap never quite closes if you compare calendar months forever.
Fees second. The headline rate plus a fixed amount per charge is the base, and the fixed part is what hurts you specifically: on a nineteen dollar plan a thirty cent fixed fee is another one and a half percent on top of the percentage. Cards issued outside your country add a surcharge, and if the charge currency differs from your payout currency there is a conversion cost on top of that. Stacked, an international charge in a foreign currency can land meaningfully above what you budgeted. Check the current published rates for your country rather than trusting a number from a forum, they get revised.
Third, one off events. A single dispute is the disputed amount plus a fee. A partial refund shows as a negative line. Any paid add ons you switched on have their own line item.
Stop reading the dashboard chart. Download the itemised payout reconciliation report and reconcile one payout end to end. It will account for every cent and take you forty minutes.
Rinsing rice is a completely different thing and gets caught up in this by accident. That is about starch and texture, not safety, so keep doing it. The rule is really about raw meat and splash, not about washing food in general.
Worth setting expectations: buyers want twelve months of clean Stripe records and a repo someone else can deploy, and the transfer itself is two weekends. If your books are tidy this is easy money. If they are not, budget the tidying as part of the price.
The framing of it being for the person who would never hire me anyway is the thing I needed. My anxiety assumed one market.
Going to argue the other side. At 40 accounts, 14 tickets is a gift and you should not be trying to reduce it yet.
Those fourteen conversations are the only unfiltered access you have to why people struggle, and every one of them is with someone who cared enough to write instead of leaving quietly. The ones you should worry about are the accounts you never hear from at all.
Deflection is a tool for when volume threatens the product. Right now the volume is the product research. Build the deflection machinery at 200 accounts, when you actually have the pattern to build it against.
And now a genuine transient failure - thirty seconds of database unavailability, a redeploy mid-batch - silently drops the event, and you find out at month end when the numbers do not tie. That is a much worse bug than ten emails, because nobody reports it.
Retries protect you from the world. Idempotency protects you from retries. They are not alternatives, you need both.
Newer at this than most here, but the thing that worked was moving every deploy to one slot. Saturday 9am, never Sunday night, never during on-call. It sounds trivial and it removed an entire category of problem, the one where you break it late and then fix it before work on four hours of sleep. The checklist is five lines because a longer one would not get followed: tests, migration against a copy, deploy, click three things, post in the changelog.
The number of people who discover this after building a whole strategy around it is remarkable.
Relay recording is exactly the thing I have been dreading. My current plan was 'hope the card is big enough' which is not a plan.
Town riding at 60 miles a week, the thing you'll notice daily is the visor. Does it have a proper anti-fog insert or at least the pins to fit one. Fogging while you're waiting at a junction in November is genuinely dangerous and it's the spec everyone ignores until it happens.
Say yes, then say what you built, and do not apologise for the tooling. ELT is ETL with the warehouse rented as the transform engine, and that is genuinely a different set of tradeoffs rather than a rebrand. Where the order actually matters: if you are not allowed to land raw data at all, because it contains card numbers or health data or something a contract forbids you from storing, then transform has to happen before load and no amount of dbt will get you out of that. Same if the source charges you by row extracted or the raw volume would cost more to store than the value it holds. Outside those cases the distinction is mostly about where your compute bill lands.