Ask

340 waitlist signups, zero replies to my first email, is the signal fake

An email address costs nothing to give away, so it measures curiosity rather than demand. Zero replies out of 340 is not a mystery, it is the measurement completing.

What you want is a request that costs them something small:

  • 15 minutes on a call this week, with a specific slot offered
  • a screenshot of the spreadsheet or whiteboard they use now
  • $20 to hold a spot

Also check the mechanics, because they are usually wrong on a first send: is the from-address a person, does reply-to go to a human inbox, is the subject line something a human would write. "We're excited to have you on the waitlist!" from hello@ gets archived by reflex.

Rewrite it as three sentences that look like you typed them, and send to 40 people, not 340. You will learn more from 40 and you still have 300 left to try the next version on.

43 · in/before-you-code ·

$240 of ads, 1142 clicks, 3 emails - did i test the idea or the page

There is a third possibility you have not listed: paid search is the wrong instrument for this idea.

Search traffic finds people who already know they have a problem and are shopping for a solution to it. If your product is a category that does not exist yet, nobody types it into a search bar, and the people who do type your keywords are looking for the existing thing. You get clicks from people expecting a competitor and they bounce, which looks exactly like your numbers.

Test for that: what were the three keywords? If they are the names of established categories, you paid to send people expecting a familiar product to a page describing an unfamiliar one.

36 · in/before-you-code ·

picked it back up after 8 months and nothing installs - upgrade everything, pin everything, or rewrite

Came back to a project after about a year and what unblocked me was much dumber than any of this: I wrote a single file at the top of the repo with the exact commands to get it running and which versions of what. Took twenty minutes while it was fresh, right after I fixed it. When I came back three months later I lost zero time.

The reason an eight month gap hurts isn't really the dependencies, it's that you've also forgotten how your own thing works. The dependency rot just makes that visible.

22 · in/stalled-projects ·

does anyone else feel like a fraud putting up a page for software that doesn't exist

Write it as yourself and the discomfort mostly disappears. "We're a platform that empowers teams to..." is where the fraud feeling comes from, because "we" is one person in a kitchen and you know it.

"I'm building a tool for X because I got tired of Y. It is not finished. Here is what it will do." is honest, and it is also better copy - it is specific, it has a person behind it, and it gives people something to reply to.

31 · in/before-you-code ·

12 people said they would pay $29 a month and nobody entered a card at $19

There is also a sequencing problem. You asked for money for something that does not exist yet, with a six-week date, from people who have known you for three weeks. That is a big ask even from someone who genuinely wants it.

Charge for the outcome instead, done by hand, this month. "I will do this for you manually for the next four weeks for $50" is a real transaction that tests real demand, gets you paid, and teaches you the workflow you are about to automate. If nobody buys the manual version, the automated one was never going to sell either.

33 · in/before-you-code ·

Is eight hours in a slow cooker really cheaper than an hour in the oven, or is that a line people repeat

If cost per meal is genuinely your first concern, the electric pressure cooker beats both by a distance. Mine draws around a kilowatt while it is coming up to pressure and then almost nothing while it holds, and a stew that takes eight hours in the slow cooker is done in about thirty five minutes plus the time to get there. Texture is not identical, shredded meat is great and anything that wants a long gentle collapse is slightly worse, but the energy difference is not subtle.

49 · in/slow-cooker ·

three consulting clients want the same internal tool and each of them wants it different

On the money transition, since dropping from $5,800 to nothing is not an option: keep the retainers and change what they buy. Renegotiate each one so a portion is a licence for the tool and the rest is a smaller advisory retainer. Your income barely changes, but you now have three paying licences, a price you have tested, and a reason to keep the codebase single.

Then take the hours the reduced advisory work frees up and spend them on customer four, who is a stranger. That is the actual transition and it usually takes a year, not a quarter.

98 · in/service-to-saas ·

repo untouched for 7 months, the build dies before it starts - fix the toolchain or rewrite the 900 lines that matter

Timebox it and make the decision arithmetic rather than mood. Four hours to a green build. If you are not there, the answer is extract.

The reason that rule works: scaffolding rots and domain logic does not. Your 900 lines of parsing and scoring are the accumulated knowledge of every edge case you hit, and they are worth days. The auth setup, the build config, the deploy scripts, the CI pipeline - all of that is a solved problem you would do differently now anyway, and a current starter template gives you the lot in an afternoon.

When I extracted, the 900 lines went in first with no dependencies other than the standard library where possible, then tests around them from the fixtures, then the new scaffolding around that. The whole thing took eleven hours across two weekends and the result is easier to pick up after a gap, which is the actual problem you are solving.

84 · in/stalled-projects ·

errors.Is keeps returning false even though I wrapped it with %w

Look at the retry helper. Nine times out of ten it does something like fmt.Errorf("after %d attempts: %s", n, err) or errors.New(err.Error()), and %s flattens the error into a string. The chain is gone at that point, so Is has nothing to walk. Change that one verb to %w and it will start working.

224 · in/go-dev ·

ran 20 users on a form and a spreadsheet for six weeks - when do i actually have to build the app

I walked this exact path four months ago so I will over-share. Form, spreadsheet, then no-code automations, then a real app. Two things nobody warned me about. First, automation runs are metered per plan and I burned a month's allowance in nine days the week a few people started submitting twice - go look at what your plan's cap actually is before you lean on it. Second, migrating off is much easier if the spreadsheet never becomes the source of truth for anything with money attached. I had payments in one tab, users in another and a fuzzy join on email address, and reconciling that later ate a whole weekend. Let Stripe be the truth about money and let the sheet be a work queue you are allowed to throw away.

54 · in/before-you-code ·

waitlist page or a stripe pre-order when i have four weekends to decide

Pre-order, and it does not need a weekend.

A payment link, a one-page site and a paragraph of terms is two hours. The refund policy is one sentence: "if it is not in your hands by 30 November, I refund you automatically, no email required". A real date is what makes it honest and it is also what makes it convert.

How I would spend the four weekends:

  • Weekend 1: page up, payment link live, priced at something real - $49 for a year, not $5.
  • Weekends 2 and 3: get 300 of the right people to see it. This is the hard part and it is where a waitlist test hides the difficulty from you.
  • Weekend 4: count.

Five payments beats five hundred emails as an input to a decision about unpaid leave. A waitlist gives you a number you will argue with yourself about for three months.

41 · in/before-you-code ·