Welcome to The Forge Log — a slow, honest record of what we build, what we break, and what we learn while turning Blacksmith.Works into a place where junior developers become working ones.
Editor's note, September 2026: this issue was written in May, when we were preparing to open applications. Plenty has shipped since, including card payments and the redesign this page sits inside. The changelog has the dated list. The rest of this issue is left as it was written.
We're opening applications. Before that goes live in earnest, here's what's been quietly happening on the workbench.
The emails got a soul.
Every transactional message — your verification link, your slot approval, the heads-up to admins when a new company applies — used to look like every other SaaS app's transactional mail. Bland, safe, forgettable.
We rebuilt them in a system we're calling Field Notes. Each email opens with a dark standing-head banner naming the message kind in tracked-out caps with an italic Georgia strapline — like the masthead of a small publication. THE SPARK for a verify link. THE ANVIL for an approval. THE COMPACT for a sealed company agreement. THE QUENCH for the dignified no.
The footer carries an “Issue N · Month YYYY” stamp, because we wanted it to feel like an instalment of a publication rather than a system notification.
The approval flow stopped being scary.
A code review caught three things on the mentor-approval path that had been waiting to bite us:
- The temporary password generator was weak. A fixed
Temp!prefix and1suffix around eight random hex characters. We swapped it for a CSPRNG-backed generator guaranteed to satisfy the platform password policy at full ~98 bits of entropy. - Approval wasn't atomic. Creating the user, assigning the Mentor role, and writing the profile happened across three separate write paths with no transaction. A mid-flight failure left orphan rows we couldn't see. Now every multi-write flow runs under
BeginTransactionAsyncand rolls back cleanly. - Email and audit failures were silent. If Resend went down mid-approval, our metrics looked fine and the applicant got nothing. Each side effect now lives in its own
try/catchwith a structured log line carrying the applicant id, so an outage shows up as an ERROR infly logsinstead of as a happy 200.
The site is no longer empty.
Until this month, a stranger landing on Blacksmith.Works hit a marketing page and had no way to see real mentors or get a sense of who'd be on the other side of an application. That's been the single biggest gap between the brand promise and the on-page experience.
So: /mentors is now a public, indexable directory of every approved mentor. Each mentor has their own canonical URL — a page they can paste into LinkedIn or their personal site — with their bio, services, skills, and the rating + completed-review count. Server-rendered, fast LCP, and tied into our sitemap so Google can crawl the whole guild.
What's next.
The next few weeks: bulk actions on the admin queues, a payouts flow for mentors, and a public showcase of completed apprentice work — the same proof for the company side that /mentors is for the developer side.
If you want a slot at the forge — as an apprentice, a mentor, or a company with a brief — create an account or reach out. We are open.
— Igor, founder