Adam Fortuna

390 Followers
381 Following
977 Posts

Hey hey! I'm a full-stack product developer in Salt Lake City, UT. I love enlivening experiences, visualizing data, and making playful websites.

๐Ÿง‘โ€๐Ÿ’ป Formerly Course Director @ Code School.
๐Ÿ“š Currently founder @ https://hardcover.app

โœ๏ธ I write about personal growth, building websites (#ruby #nextjs #rubyonrails), #minimalism, #mindulness, #FIRE, recovering from an ACL tear, and awkwardly posting on TikTok (๐Ÿ˜‚).

Personal Sitehttps://adamfortuna.com
Minafihttps://minafi.com
Hardcoverhttps://hardcover.app
Line of Thoughthttps://lineofthought.com

For the Hardcover migration from Next.js to Rails, one thing I'm removing is any use of Apollo Fragment caching to determine UI state.

Previously for things like a Like Button, or your Ownership for an Edition, we'd prime the Apollo cache and then load your state from that.

With the new setup, we're just loading that data into Redux (what you've liked, what you own), and then the initial render can use it.

So far it's a lot cleaner - and no GraphQL to worry about.

New updates on the Hardcover Book Page are looking good - and with nice caching for network activity.

One of the neat little charts on Hardcover is this Ratings Distribution that's on each book page (ex: https://hardcover.app/books/tomorrow-and-tomorrow-and-tomorrow ).

I previously tried to generate this using D3.js on the server side using JS DOM - which is what Hardcover uses right now.

In the conversion to Rails, I'm switching this to just use D3.js scales, then generate the SVG directly. It's sooo much smoother, and uses the good parts of D3.

This course used the same technique:
https://www.newline.co/courses/better-data-visualizations-with-svelte

#d3 #d3js #svg

Tomorrow, and Tomorrow, and Tomorrow by Gabrielle Zevin

Tomorrow, and Tomorrow, and Tomorrow by Gabrielle Zevin. 4.12โญ. 1,058 ratings. 169 reviews. 482 pages. In this exhilarating novel by the best-selling author of The Storied Life of A. ...

I'm working on refactoring pages from Next.js to Ruby on Rails with Inertia.js and it's hard to put into words how much less code there is.

There's more that I could clean up here, but these are sample endpoints that would correspond with https://hardcover.app/live and the single ep pages.

Instance variables are passed to the React Component as props via inertia-rails.

I could see moving this into a Presenter that handles caching+service+serializing, but seems overkill, but feedback welcome!

Hardcover

We're a social network for book lovers to find life changing books, track what you read & want to read, and connect with passionate readers.

Hardcover

Looks like the all-out-nothing problem is solved in Inertia v2 announced last month.

Looks like it can be used when something scrolls into view or with a fallback block.

Canโ€™t wait to try it once itโ€™s in inertia-rails.

https://pascalbaljet.dev/taylor-otwell-announces-inertia-v2-at-laracon-us-2024-heres-whats-new

Taylor Otwell announces Inertia v2 at Laracon US 2024 - Hereโ€™s whatโ€™s new! - Pascal Baljet Blog

Taylor Otwell just announced some really cool new features in Inertia v2 at Laracon US 2024. Here's a quick overview of the new features that I wrote down durin...

Pascal Baljet Blog

I can work with this. :)

We also ended up moving everything from `/_next/static` to be served from CloudFlare's CDN, which should further speed things up.

We had local fonts, some images, and all compiled JS served from Google Cloud Run.

Total blocking time (TBT) is the number 1 culprit right now.

Pretty impressed with how far I'm getting with just GitHub Copilot for this ๐Ÿ˜‚

โœ… Build images with Docker
โœ… Push images to Digital Ocean
โœ… Pull images from Registry to Kubernetes
โŒ Automatically push images on push to staging/production branch
โŒ See anything working ๐Ÿ˜…

I'm starting to wrap my head around the process at least - which was more than yesterday.

My favorite kind of pull request.

About a year ago, I switched from posting about Hardcover in bulk on social media to posting one long email monthly with updates.

This wasn't because I think that's the best way to grow an audience, but because I just didn't have time to do that AND build the product. ๐Ÿ˜…

Since May 1st, we've seen our newsletter audience almost double! I think we're doing something right. Each time I send out an email now I get dozens of responses.

Here's this months Hardcover Report:

https://hardcover.app/blog/hardcover-report-for-august-2024

Hardcover Report for August 2024 - Hardcover

Set your edition for every book, reading journals, progress updates and more.

Even after years of sending newsletters, I'm nervous every time.

Yesterday, I sent a message about today's Hardcover Live (in 2 hours at 12 pm PST / 3 pm EST), where we're talking with an indie author. https://hardcover.app/live/51

This email was sent to ~12k emails; 128 people unsubscribed, with a 33% open rate, with 290 clicks.

I used to feel some way when I saw that many people had unsubscribed. Now I think of it as "3 days of signups," and it's less personal.

Hardcover Live #51 โ€“ Best Selling Author Dan Petrosini - Hardcover