Adam Fortuna

Adam Fortuna

@adamfortuna.com

Full-stack product developer (Rails/React) in Salt Lake City, UT. I love enlivening experiences, visualizing data, and making playful websites. πŸ“š Founder @hardcover.app 🎧 Developer @libro.fm ✍️ Blogger @ https://adamfortuna.com

990 followers649 following3.3K posts

Pinned

My interests, for the real-people-algorithm. πŸ‘‹ πŸ”οΈ Hiking πŸ“š Books 🟰 Equality πŸ§™β€β™‚οΈ Fantasy πŸ‘¨β€πŸ’» Web dev ✍️ Blogging 🎲 Board games πŸ‹οΈ Olympic lifting 🧘 Quantified self πŸ‘Ύ Science fiction πŸ§‘β€πŸŽ¨ Interior design 🌱 Personal growth 🦡 ACL tear recovery πŸ‡―πŸ‡΅ Learning Japanese πŸ“Š Data visualizations πŸ’Έ Index fund investing

This is Hard Tech Week in Salt Lake City, with a series of events focused on hardware. Yesterday kicked off the hackathon, which inspiration hit to work on. πŸ’‘ If you’re in Utah, I’d love to get your thoughts! Next step is connecting it to hard tech (sprinkler systems). overwater.ing

overwater.ingoverwater.ing

Realized Claude Code can create Shortcuts (for Mac/iOS) customized to your exact workflow. Create two simple ones to create voice/text quotes in my Obsidian Vault, saving the quote, author, source and tags. Bonus feature: saving last quote metadata to a tmp file so the next quote can reuse it.

Been working on a new Monthly Wrapup generator on Hardcover, which has been a lot of fun! Adding different sizes, themes, and options for style and which books show up. Super excited to share this one soon.

I’ve been playing around writing a book version of the Beli app (rank restaurants to find your favorites). Creating an algorithm for the order it compares that optimizes for fewest decisions, lowest mental energy and overall fun is proving more difficult than I thought. πŸ˜…

Watching My Royal Nemesis and fixing some N+1 queries in a PR stack from Conductor on my phone. All of those things didn’t exist a year ago. Well, except the N+1 queries.

Spent a bunch of this weekend working on Nautilus, Hardcover's internal Hub for code review and agentic development - and it's shaping up! Coding + PR Reviews run through Conductor Cloud, w/fallbacks to other models depending on current subscription use. Looks like OpenCode will be next.

Side note: It's called Nautilus because Hardcover's mascot is called Jules (Jules Verne), and Nautilus was a fun name for what happens beneath the main codebase our users see. Internally the agents are named after characters from the anime Nadia: The Secret of Blue Water, which is a fun retelling.

Trying out Conductor Cloud after being a desktop user for a while, and this is fills the gap we’d been looking for: a single app for building locally and remotely, that hands off work to mobile. A coder and reviewer agent are working together in a PR, w/ability to see cut into any conversation.

Adam Fortuna reposted

Replying to @revdaniel.bsky.social

2/ Americans ask for healthcare, affordable housing, gas and groceries. Trump and Hegseth give them a public execution. American Evangelicals claim to want β€œthe Kingdom of God” but more and more they are re-creating Rome’s Empire. The very empire that put Jesus to death by public execution.

Tried out the hand prototype to product line today, and it went pretty well on the first pass with Opus 5.5. Data wise everything is right, but needs some more polish to _feel_ right.

Hardcover has been hit hard by bots over the last 2 months, including distributed hits from residential IPs around the world. It's been a game of whack-a-mole all week. New CloudFlare rules stop them, then a few hours later they get by them. Upgraded to CF Business yesterday, so we'll see 🀞

Fascinating stat for Hardcover. We recently hit 100k confirmed email users (160k unconfirmed). With 31k active in the last month. Curious to see how that changes w/the new email confirm first (vs 3 days). New CF bot restrictions have raised the unconfirmed email users from 55%β†’98% (!).

Hardcover's TypeSense Search index was down this morning. It's available through the API, and powers a bunch of features on the site with rotating keys and a proxy in front of it for auth. Finally hit the limit on what 3x16GB cluster can handle. Let's see how long 3x32GB will last. 🀞

Oof, bot attack at the same time. A bot from India started crawling every book page on the site, roughly 1k at a time. Fortunately able to split them out and stop that one.

Hadn't checked on my old site minafi.com in a while. Got an email from Google Analytics (it was started in 2017 - it was a different time), and looks like the bots have found it. Unless sure 5,800 people from Singapore are really into minimalism, mindfulness and financial independence.

You know the Discussions prototype for Hardcover has been created by a developer by counting the rings in the nested information architecture. πŸ˜‚

Bit of a fun one in Alpha: Vibes for Book Clubs. These are book recommendations based on all the members of a book club. Related note: Most Wanted shows number of book club members who have that book on their Want to Read list.

General question for anyone who uses any LLMs to program: How often (if at all) do you run out of tokens? If so, how often and with what service + plan? If you don’t, do you know why you don’t?

I see constant posts on Reddit about running out of tokens. I’ve been using a Claude Max plan for the last year and I’ve only hit my limits a few times. I wonder if it’s because parsing through an organized Rails/React codebase is predictable, but more likely a difference between Pro vs Max (?).

Been moving more "cleanup" Hardcover tasks to a local Mac Mini: - Implement GH issue - Fix/create bugs for BugSnag errs - PR Review - Audit PR Review (iterates on PR review weekly so it improves) - Verify all PR's have a Project status (assign if not) - Summarize most common help/support requests

Ohhh yeah and: - Cleanup feature-gated features released >30 days ago. This will go through the codebase and remove the feature flag for safely-released features, and remove all feature flag checks, create a PR, wait for CI, have a review agent review it, and land it in "Ready to deploy".

Adam Fortuna reposted

if there are people at 1password making the racists afraid to be openly racist at work, a genuine thank you. no one is paid enough to do that work but it’s not to be taken for granted, also sorry you work with scumbags and your ceo is a colossal baby with no swag

andyβ„’@andylevy.net

ah yes once again the racists are the real victims

Excited to hit 1,000 paid supporters on Hardcover today! πŸ₯³ Building anything in the book space requires a _lot_ of patience. It's taken just over 5 years to get to this point – and we're still far from able to pay full salaries for us working on it (~1.5-2 full-time). Very exciting milestone πŸ“ˆ

Adam Fortuna reposted

Adam Fortuna (Hardcover founder) is making D3.js click: core mental models plus AI prompt templates to go from "I get it" to a working dashboard. #UtahJS, Sept 18 @ 11:05 AM. ti.to/utahjs/2026

Lately I've been jumping around between a bunch of Conductor PRs. I'm curious how others have handled this. What's helped me is creating Chrome Tab Groups that match the name of name of the Conductor workspace, with colors depending if I'm waiting on an agent to build, CI to run, or agent review.

Hardcover has had a "quick registration, confirm their email address later" approach since we started. Now with 600+ new people everyday, our most common support request (by a lot) is incorrect email addresses. 😭 I think it might be time to require email confirmation to join.

Currently someone can join, and they'll have 3 days to confirm their email address. After that, they get locked out until they confirm it. This would simplify that process. However, if emails can't be delivered for some reason (ours or theirs), then they _never_ get in.

On Friday we switched from a 3-day window to confirm email addresses to immediate confirmation. That closes a gap where users could be using the site without a valid email. So far our stats have been roughly the same for email confirmations, and much lower for support requests. Captcha next? πŸ€”

The deploy had a few bumps πŸ˜… - Wrong follower database ENV variable - Misconfigured caching - Deploy timeout too short to restart all servers - Too many connections to the API DB due to a high number of queued requests - Upgraded the Postgres DB + added PG Bouncer to prevent connection issues

The Hardcover team has been using a super-basic GitHub + Claude integration with the ability to work on issues, create PRs and conduct code reviews. (coding & PR review are Claude skills in the repo). Working on V2 of this system now with a timeline, multiple agents, and cost estimates.

The idea of a shared book database in the atmosphere is really exciting and could outlive any single project working in the book space. Worth getting involved in if you're creating anything in the book space.

This post is unavailable.

Hardcover hit 7k weekly active users this week - a new high! Some API improvements we made last month sped up the site a bunch, along with a number of server tweaks and site optimizations. The site has been faster with less downtime as a result. Only 1 slow response time incident in 3 weeks!

Looking at this graph, now I suspect that the reason for all these downtimes was because we let multiple top-level GraphQL API requests count as a single request towards rate limit. That worked until people started sending 1,000+ calls in a single request. πŸ˜…

After meeting with a bunch of arborist, I finally felt safe (for the trees) to cut some roots in our basement. Each one I talked said "I've never seen something like this before". That's ~9 times people we work with have said that. The joys of owning an old house. πŸ˜… Bucky for scale.

It’s Pioneer Day today, Utah’s campy holiday that’s a combination of Independence Day and Columbus Day. For non-LDS folks like myself, it’s also called Pie and Beer Day. Picked up 4 mini pies to celebrate. πŸ₯§