index.md (3720B)
1 +++ 2 title = "Blind Date A Book" 3 description = "A website to help you find your next read, with a charming twist." 4 date = 2025-01-19T17:20:00-08:00 5 +++ 6 7 [Blind Date A Book] is part ecommerce website and part art project. I 8 first encountered its physical counterpart at a Barnes and Noble some 9 five years ago: I remember thinking to myself even then that it was a 10 perfect candidate for digitization. At long last, using the approach to 11 making I picked up [in DESIGN11], I've hacked together a boutique 12 version of this experience accessible for anyone with an internet 13 connection. 14 15  16 17 At first I was confused by the lack of digital equivalent to the 18 physical stands. Surely ordering books online is a solved problem? I 19 mean, that's what Amazon was founded on—and a custom frontend that just 20 displays things differently seems a trifling project. 21 22 A hyperscaling version might look something like: 23 24 1. Scrape books from [some list]. 25 2. Have a generative model write summaries based on a set of examples. 26 3. Display that on a sexy website. 27 4. Have Amazon deliver the books to users. 28 29 Turns out it's hard to buy things with code. So it actually came out a 30 bit more [personal]: 31 32 1. A list of books chosen by myself, my family, and my best friends. 33 2. Descriptions we wrote. 34 3. The website is still sexy. 35 4. It sends you to Shopify where you buy *Book #X*. 36 5. I see that, go buy the real book, and send it your way. 37 38 More of a sensitive touch, perhaps. 39 40  41 42 The tech stack of the site bears further analysis. I've [long] [puzzled] 43 [over] the best way to go about building web projects, whereas I have 44 strong established preferences for [CLIs] and [iOS/macOS] apps. With 45 this project, I decided to try a new framework that has been making 46 waves in the community: [Web Origami]. I enjoyed a lot of what it has to 47 offer: 48 49 - The top-level declarative approach to routes reminded me of SwiftUI. 50 That's a huge compliment. 51 - You can seamlessly weave between HTML, JS, and the Origami language. 52 This manages to avoid feeling overwhelming, like Rails can when 53 exposing a similar number of possibilities to address problems. 54 - Flexible data processing that transparently handles different formats 55 makes navigating nested structures in templates easy. 56 57 It wasn't all sunshine and rainbows, though. The data processing 58 capabilities are something of a double-edged sword: formats like YAML 59 and JSON are convenient (especially for source control), but something 60 of a hack to avoid interfacing with a real database. I can see that 61 design being limiting for certain use cases. Still: I sent a message in 62 the [Matrix room] about hosting in production and the author replied 63 really quickly and was super helpful. That's worth a lot, in terms of 64 goodwill and my hope for the future of the project. I'll keep my eye on 65 Origami, though I've got some more experimenting to do before I commit 66 to the framework in the longterm. 67 68 Check out [the website][Blind Date A Book] for yourself to find your 69 next read! 70 71 [Blind Date A Book]: https://blinddateabook.com 72 [in DESIGN11]: @/posts/stanford-quarterly-reflection-05/index.md#academics 73 [some list]: https://news.ycombinator.com/item?id=22371436 74 [personal]: https://bsky.app/profile/andy.works/post/3lclb4jvle72u 75 [long]: https://fosstodon.org/@FIGBERT/112812107966936565 76 [puzzled]: https://fosstodon.org/@FIGBERT/113683895559149910 77 [over]: https://fosstodon.org/@FIGBERT/112893509255400989 78 [CLIs]: https://charm.sh 79 [iOS/macOS]: https://developer.apple.com/xcode/swiftui/ 80 [Web Origami]: https://weborigami.org 81 [Matrix room]: https://matrix.to/#/%23weborigami:envs.net