Adam Fortuna @adamfortuna.com · 03/10/2026Tried 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. 441
Adam Fortuna @adamfortuna.com · 22/09/2026Hardcover 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 🤞 330
Adam Fortuna @adamfortuna.com · 16/09/2026Oof, 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. 010
Adam Fortuna @adamfortuna.com · 10/09/2026Hadn'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. 030
Adam Fortuna @adamfortuna.com · 09/09/2026Bit 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. 000
Adam Fortuna @adamfortuna.com · 08/09/2026You know the Discussions prototype for Hardcover has been created by a developer by counting the rings in the nested information architecture. 😂 110
Adam Fortuna @adamfortuna.com · 30/08/2026Excited 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 📈 2180
Adam Fortuna @adamfortuna.com · 24/08/2026Lately 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. 011
Adam Fortuna @adamfortuna.com · 24/08/2026On 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? 🤔 021
Adam Fortuna @adamfortuna.com · 11/08/2026The 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. 010
Adam Fortuna @adamfortuna.com · 02/08/2026Hardcover 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! 160
Adam Fortuna @adamfortuna.com · 01/08/2026After 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. 000
Adam Fortuna @adamfortuna.com · 28/07/2026Great article about how fragile masculinity and the manosphere have impacted politics. Going from almost having the first woman president to this is, well, sad. www.theatlantic.com/ideas/2026/0... 000
Adam Fortuna @adamfortuna.com · 24/07/2026It’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. 🥧 020
Adam Fortuna @adamfortuna.com · 23/07/2026It took a day to clear the queue after these updates! Processed some of the most jobs in a day too. 😅 000
Adam Fortuna @adamfortuna.com · 08/07/2026My talk for UtahJS was accepted! This is the first one I've given in the age of AI, and it's completely changing how I'm creating and teaching topics. What someone needs to "know" to create something using LLMs is so completely different than it was even a year ago. 030
Adam Fortuna @adamfortuna.com · 04/07/2026Reading @elevateutahpac.bsky.social s email about things to love about America and its spot on 👌 010
Adam Fortuna @adamfortuna.com · 04/07/2026First time ever grilling ribs today! Calcifer, our new Ninja FlexFlame grill, has a very useful app. Able to see the temperate of the grill and the meat, and have some custom timers. Doing one rack as maple bourbon, one as Carolina bbq. Let’s see how it goes. 🤞 030
Adam Fortuna @adamfortuna.com · 02/07/2026Wow, Fable absolutely eats up credits. I've never before hit the limit in the last year using Claude Code. 210
Adam Fortuna @adamfortuna.com · 01/07/2026Working on something on Hardcover that I’ve wanted for a while: Filter Lists. Think BlueSky’s moderation lists and labels, but for books and authors. Add to your own block list, create a public, private or following only list, or subscribe to someone’s else’s. Choose to hide or label them. 👀 241
Adam Fortuna @adamfortuna.com · 24/06/2026The free little library on my block knows me too well. 0100
Adam Fortuna @adamfortuna.com · 22/06/2026One of my favorite AI hallucinations is how if you ask some models to generate a version of the Mona Lisa (ex: "Mona Lisa in Van Gogh's Starry Night style"), the person genreated might have two heads. ...because so much of the training data is people taking selfies with The Mona Lisa. 🖼️ 041
Adam Fortuna @adamfortuna.com · 05/06/2026Exciting to see these prototypes we created almost 2 years ago (!) finally coming together. We're saving all references in a join table used for Mentions and hydrating the review, but it can also be used for showing All Mentions. In Discussions, this should allow for "Show Mentions" too! 010
Adam Fortuna @adamfortuna.com · 05/06/2026These notifications require a new kind of mentions feed. Inspired by BlueSky's this will be a separate "mention" feed whether you have notifications on or off. All of these are stored with just reference type + id in JSON Slate, and are hydrated at runtime. 100
Adam Fortuna @adamfortuna.com · 04/06/2026I've been rebuilding the Hardcover Editor to use Plate.js ( platejs.org ) and it's been really neat! As part of this, we're also adding references to other entities in the system (books, authors, users, lists, etc). Lists can be Private or Follows only, which means they need to show up differently. 140
Adam Fortuna @adamfortuna.com · 02/06/2026Updated Hardcover's network diagram for the new Rust Search Proxy. About 20% of our API traffic passes through it. If I knew how Rust worked I'd be very excited about this. Claude Code built it and it seems to work super well, despite looking alien to me. 😅 Only 1 API req/s hits the main app. 📚 020
Adam Fortuna @adamfortuna.com · 26/05/2026We're getting close to a major milestone for @hardcover.app - 100k users! 👏 Launched: 2021 2022: 200 2023: 1,300 2024: 5,000 2025: 23,000 2026: 59,500 On pace to hit over 200,000 by 2027. 🫨 We're already starting to shift focus from acquisition to focusing on retention & engagement. 3180
Adam Fortuna @adamfortuna.com · 25/05/2026Finally got Conductor working for Hardcover! 11 services are in a shared docker-compose file, with 4 more in a conductor one that starts up on new ports per workspace. Much easier to test multiple things locally & merge. Next step: switch the test database per worktree to avoid conflicts. 010
Adam Fortuna @adamfortuna.com · 23/05/2026Finished 2 infrastructure updates to Hardcover in 2 days! 🥳 1. Auto-rotate our client-side TypeSense keys to prevent bad actors from hitting search directly 2. Convert the API Search (45-70% of total traffic) from hitting Rails to a lightweight Rust service internal to K8s Rails traffic 📉! 150
Adam Fortuna @adamfortuna.com · 21/05/2026New use of AI that was handy this week is a custom Claude Skill that’s helped: /grafana 2h Will connect to Grafana’s MCP server for Hardcover that collects all logs for that timeframe, analyze them and generate biggest points of improvement. Runs in a growing context, written to md. 120
Adam Fortuna @adamfortuna.com · 18/05/2026Money - This section is a bit broad. It contains: - Spending by month, by category (pulled from Tiller) - Investments with values over time and asset allocation tiller.com is super-neat, and syncs to a Google Sheet this pulls from. Somewhat anonymized screenshots for some of these. 100
Adam Fortuna @adamfortuna.com · 18/05/2026Daily Checkin - I've been tracking my happiness level (1-9) for a while. I added an X/Y graph to set my gut feel on two areas: Calm to Anxious Drained to Energized Tracking this alongside a happiness level has been fascinating. I've been having back pain and are also tracking that daily. 100
Adam Fortuna @adamfortuna.com · 18/05/2026Theme - This one is just fun. I created a few themes. Sometimes I'll suggest a new theme with a link and it'll generate one. I really like the colors from Mario Brothers 2 (NES), and have a theme just for that. 😂 100
Adam Fortuna @adamfortuna.com · 18/05/2026Learn - Building this out today. I drop a topic in here, and it'll generate a 5-level plan to become proficient in it with examples based on my projects and personal interests. I have a separate repo (called wired), that has a skill to create a new lesson with code samples running in Docker. 200
Adam Fortuna @adamfortuna.com · 18/05/2026Recipes - The recipes section is pretty nifty. I can either drop a URL or a photo of a cookbook, and it'll generate a note in my Obsidian vault. I can set dates I made each recipe, and keep track of what I'm planning to make. These are all just stored in markdown files with frontmatter. 100
Adam Fortuna @adamfortuna.com · 18/05/2026Goals: Fitness. I've been trying to focus a bit more on my health lately - namely getting more exercise and eating better. Seeing these helps keep it on my mind. Weight syncs from Withings scale → Apple Health → Exist.io → Rails Steps go Apple Health → Exist.io → Rails Exist has an awesome API. 100
Adam Fortuna @adamfortuna.com · 18/05/2026Goal: Grow Hardcover to $10k/month. What get measured gets improved right? Since switching to part-time in my job, growing Hardcovers revenue is a high-priority for me. Seeing this daily is good motivation. 100
Adam Fortuna @adamfortuna.com · 18/05/2026Goal: Read more books - This one is basic - it pulls in books from the Hardcover API and shows them. Same thing I'd see in my Hardcover goal, but nice to see on my personal homebase. 110
Adam Fortuna @adamfortuna.com · 18/05/2026Goals - This section has about ~10 things I'm currently working towards. I'm still iterating on these, but seeing them helps me make progress. I mark them as done manually or skipped for the day (inspired by everyday.app ). Some of these pull data from Hardcovers DB, API or Exist.io. 100
Adam Fortuna @adamfortuna.com · 18/05/2026Daily Briefing - A Scheduled Sidekiq job generates a daily briefing for me. This includes local news, calendar, todo list, topics I've mentioned to watch, it knows my lifes goals and yearly goals and suggests things based on those to help nudge me towards them. 100
Adam Fortuna @adamfortuna.com · 18/05/2026Homebase - This is my Rails/Postgres/Mastra/SideKiq setup that everything else is a part of it. Run on my Mac Mini. Nothing too crazy, other than how it's able to run some things using external LLMs or local LLMs. Accessible via a CloudFlare Tunnel. Inspired by Basecamp with "Spaces" for projects. 100
Adam Fortuna @adamfortuna.com · 09/05/2026I shared some major personal news in the May Hardcover Report ( hardcover.app/blog/hardcov... ) & wanted to share it here too: Yesterday was my last day full-time at Libro.fm! I'm switching to part time (25 hr/mo) + focusing on HC. HC's had an amazing year & I can't wait to see what happens next. 4161
Adam Fortuna @adamfortuna.com · 08/05/2026The phishing site had a screen that made it appear someone had access to my account that looked real - down to the A-avatar. This screen was to scare me into thinking they had access, mentioning on the call "Have you logged into any new sites with Google lately?". 9/11 100
Adam Fortuna @adamfortuna.com · 08/05/2026By this time I'd logged into that real-looking sites.google.com login, which looked like a real Google page at a real google URL. This was my big mistake. This page was the phishing link to get my password, and they succeeded! However, the page claimed something I knew was scammy... 5/11 100
Adam Fortuna @adamfortuna.com · 06/05/2026We've had some really heavy bot days on Hardcover (some bots must really want book data). We ended up turning on all of Cloudflare's bot protections and haven't seen a notable spike since then. 020
Adam Fortuna @adamfortuna.com · 02/05/2026Hardcover's search, done through our API, is currently 54% to 68% of the total requests to our main server. 😱 That doesn't even include people searching from the website. Crazy this endpoint was a 1-day spike & now it's the most used feature on Hardcover by volume. 080