<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator><link href="https://alexgude.com/feed.xml" rel="self" type="application/atom+xml" /><link href="https://alexgude.com/" rel="alternate" type="text/html" /><updated>2026-05-16T17:48:58-07:00</updated><id>https://alexgude.com/feed.xml</id><title type="html">Alex Gude</title><subtitle>Technology, data science, machine learning, and more!</subtitle><author><name>Alexander Gude</name></author><entry><title type="html">My Favorite Books of 2025</title><link href="https://alexgude.com/blog/favorite-books-of-2025/" rel="alternate" type="text/html" title="My Favorite Books of 2025" /><published>2026-01-04T00:00:00-08:00</published><updated>2026-01-04T00:00:00-08:00</updated><id>https://alexgude.com/blog/favorite_books_of_2025</id><content type="html" xml:base="https://alexgude.com/blog/favorite-books-of-2025/"><![CDATA[<p>Last year I reviewed 45 books and 1 computer game. I mostly stuck to science
fiction, and I also re-read a few books, which was especially enjoyable
because I picked up so much more the second time through.</p>

<p>Following the tradition of <a href="/blog/favorite-books-of-2023/">2023</a> and <a href="/blog/favorite-books-of-2024/">2024</a>, here are my
favorite books from 2025:</p>

<h2 id="disco-elysium"><cite class="book-title">Disco Elysium</cite></h2>

<p>“<a href="/books/disco_elysium/"><cite class="book-title">Disco Elysium</cite></a> isn’t a book, Alex!” Ok, sure, but it <strong>is</strong> one of the literary
masterpieces of the 21st century. It does a miraculous job of immersing the
player in its world, exploring the grip the past has on the present, and
creating some of the deepest and most fully developed characters in any
medium. It’s my favorite game of all time, and one of my favorite literary
works, period.</p>

<ul class="card-grid">
  <li class="book-card">
  <div class="card-element card-book-cover">
    <a href="https://alexgude.com/books/disco_elysium/">
      <img src="https://alexgude.com/books/covers/disco_elysium.jpg" alt="Book cover of Disco Elysium." />
    </a>
  </div>
  <div class="card-element card-text">
    <a href="https://alexgude.com/books/disco_elysium/">
      <strong><cite class="book-title">Disco Elysium</cite></strong>
    </a>
    <span class="by-author"> by <a href="/books/authors/robert_kurvitz/"><span class="author-name">Robert Kurvitz</span></a> <abbr class="etal">et al.</abbr></span>
    <div class="book-rating star-rating-5" role="img" aria-label="Rating: 5 out of 5 stars. Masterpiece — I loved it" title="Masterpiece — I loved it"><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span></div>
    <div class="card-element card-text">
      <p><cite class="game-title">Disco Elysium</cite>, written by <span class="author-name">Robert Kurvitz</span> <abbr class="etal">et al.</abbr>, is a role-playing game
produced by ZA/UM. It’s the story of Harrier “Harry” Du Bois, a man who wakes
up with no memories and has to solve a murder while learning who he is.</p>
    </div>
  </div>
</li>
</ul>

<h2 id="the-hyperion-cantos-by-dan-simmons">The <span class="book-series">Hyperion Cantos</span> by <span class="author-name">Dan Simmons</span></h2>

<p>I didn’t love the <a href="/books/series/hyperion_cantos/"><span class="book-series">Hyperion Cantos</span></a> the first time I read them. I found <a href="/books/the_fall_of_hyperion/"><cite class="book-title">The Fall of Hyperion</cite></a>,
the easier and more straightforward of the two, to be great, but I didn’t
really get <a href="/books/hyperion/"><cite class="book-title">Hyperion</cite></a>. This year I re-read them for my book club and focused on
finding and understanding the influences from <span class="author-name">John Keats</span>’s works. That
completely transformed the experience. I <strong>LOVED</strong> <a href="/books/hyperion/"><cite class="book-title">Hyperion</cite></a>, seeing it as far
deeper and more complex than I did the first time through.</p>

<p>This year I’ll be tackling <a href="/books/endymion/"><cite class="book-title">Endymion</cite></a> and <a href="/books/the_rise_of_endymion/"><cite class="book-title">The Rise of Endymion</cite></a>, which I’ve
heard don’t live up to the greatness of the first two, but I’m still hopeful.</p>

<ul class="card-grid">
  <li class="book-card">
  <div class="card-element card-book-cover">
    <a href="https://alexgude.com/books/hyperion/">
      <img src="https://alexgude.com/books/covers/hyperion.jpg" alt="Book cover of Hyperion." />
    </a>
  </div>
  <div class="card-element card-text">
    <a href="https://alexgude.com/books/hyperion/">
      <strong><cite class="book-title">Hyperion</cite></strong>
    </a>
    <span class="by-author"> by <a href="/books/authors/dan_simmons/"><span class="author-name">Dan Simmons</span></a></span>
    <div class="book-rating star-rating-5" role="img" aria-label="Rating: 5 out of 5 stars. Masterpiece — I loved it" title="Masterpiece — I loved it"><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span></div>
    <div class="card-element card-text">
      <p><cite class="book-title">Hyperion</cite> is <span class="author-name">Dan Simmons</span>’s masterpiece. It is the first book in his <span class="book-series">Hyperion Cantos</span>. It follows seven pilgrims as
they travel to the Time Tombs on Hyperion to petition the Shrike. Along the
way, each tells their own story, weaving together history, myth, and prophecy
to tell of the impending downfall of man.</p>
    </div>
  </div>
</li>
  <li class="book-card">
  <div class="card-element card-book-cover">
    <a href="https://alexgude.com/books/the_fall_of_hyperion/">
      <img src="https://alexgude.com/books/covers/the_fall_of_hyperion.jpg" alt="Book cover of The Fall of Hyperion." />
    </a>
  </div>
  <div class="card-element card-text">
    <a href="https://alexgude.com/books/the_fall_of_hyperion/">
      <strong><cite class="book-title">The Fall of Hyperion</cite></strong>
    </a>
    <span class="by-author"> by <a href="/books/authors/dan_simmons/"><span class="author-name">Dan Simmons</span></a></span>
    <div class="book-rating star-rating-5" role="img" aria-label="Rating: 5 out of 5 stars. Masterpiece — I loved it" title="Masterpiece — I loved it"><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span></div>
    <div class="card-element card-text">
      <p><cite class="book-title">The Fall of Hyperion</cite>, by <span class="author-name">Dan Simmons</span>,
is the second book in the <span class="book-series">Hyperion Cantos</span>, but really
it’s the second half of <a href="/books/hyperion/"><cite class="book-title">Hyperion</cite></a>. It brings the seven
pilgrims’ story to an end and depicts the war between the TechnoCore, the
Ousters, and the Hegemony.</p>
    </div>
  </div>
</li>
</ul>

<h2 id="the-hydrogen-sonata-by-iain-m-banks"><cite class="book-title">The Hydrogen Sonata</cite> by <span class="author-name">Iain M. Banks</span></h2>

<p><a href="/books/authors/iain_m_banks/"><span class="author-name">Banks</span>’s</a> <a href="/books/series/culture/"><span class="book-series">Culture</span></a> series was one of my <a href="/blog/favorite-books-of-2024/">favorite reads in
2024</a>. I deliberately delayed finishing it, spacing out the final
few books because I knew that once I was done, it would be over for good. <a href="/books/the_hydrogen_sonata/"><cite class="book-title">The Hydrogen Sonata</cite></a> was a fitting end to the series. It restates many of the themes <a href="/books/authors/iain_m_banks/"><span class="author-name">Banks</span></a> first explored in <a href="/books/consider_phlebas/"><cite class="book-title">Consider Phlebas</cite></a>, but with a more hopeful bent.</p>

<p>It also feels like a fitting final book for <a href="/books/authors/iain_m_banks/"><span class="author-name">Iain M. Banks</span></a> himself, with its
message that life only has the meaning you give it.</p>

<ul class="card-grid">
  <li class="book-card">
  <div class="card-element card-book-cover">
    <a href="https://alexgude.com/books/the_hydrogen_sonata/">
      <img src="https://alexgude.com/books/covers/the_hydrogen_sonata.jpg" alt="Book cover of The Hydrogen Sonata." />
    </a>
  </div>
  <div class="card-element card-text">
    <a href="https://alexgude.com/books/the_hydrogen_sonata/">
      <strong><cite class="book-title">The Hydrogen Sonata</cite></strong>
    </a>
    <span class="by-author"> by <a href="/books/authors/iain_m_banks/"><span class="author-name">Iain M. Banks</span></a></span>
    <div class="book-rating star-rating-5" role="img" aria-label="Rating: 5 out of 5 stars. Masterpiece — I loved it" title="Masterpiece — I loved it"><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span></div>
    <div class="card-element card-text">
      <p><cite class="book-title">The Hydrogen Sonata</cite>, by <span class="author-name">Iain M. Banks</span>,
is the tenth and final book in the <span class="book-series">Culture</span> series. It
explores the last days of the Glitz people as they prepare to Sublime.</p>
    </div>
  </div>
</li>
</ul>

<h2 id="the-teixcalaan-series-by-arkady-martine">The <span class="book-series">Teixcalaan</span> series by <span class="author-name">Arkady Martine</span></h2>

<p>Another pair of books picked by my book club. I really enjoyed <a href="/books/authors/arkady_martine/"><span class="author-name">Martine</span>’s</a>
subtle worldbuilding and the deep integration of themes and motifs across <a href="/books/a_memory_called_empire/"><cite class="book-title">A Memory Called Empire</cite></a> and <a href="/books/a_desolation_called_peace/"><cite class="book-title">A Desolation Called Peace</cite></a>. The writing itself is beautiful, and often reminded
me of <a href="/books/authors/gene_wolfe/"><span class="author-name">Gene Wolfe</span>’s</a> <a href="/books/series/the_book_of_the_new_sun/"><span class="book-series">The Book of the New Sun</span></a>, with its mix of archaic prose and intentional
vagueness.</p>

<ul class="card-grid">
  <li class="book-card">
  <div class="card-element card-book-cover">
    <a href="https://alexgude.com/books/a_memory_called_empire/">
      <img src="https://alexgude.com/books/covers/a_memory_called_empire.jpg" alt="Book cover of A Memory Called Empire." />
    </a>
  </div>
  <div class="card-element card-text">
    <a href="https://alexgude.com/books/a_memory_called_empire/">
      <strong><cite class="book-title">A Memory Called Empire</cite></strong>
    </a>
    <span class="by-author"> by <a href="/books/authors/arkady_martine/"><span class="author-name">Arkady Martine</span></a></span>
    <div class="book-rating star-rating-4" role="img" aria-label="Rating: 4 out of 5 stars. Great — I really liked it" title="Great — I really liked it"><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star empty_star" aria-hidden="true">☆</span></div>
    <div class="card-element card-text">
      <p><cite class="book-title">A Memory Called Empire</cite>, by <span class="author-name">Arkady Martine</span>,
is the first book in the <span class="book-series">Teixcalaan</span> series. It follows
Mahit Dzmare, an ambassador from the space station Lsel, as she tries to save
her home from being annexed by the Teixcalaanli empire.</p>
    </div>
  </div>
</li>
  <li class="book-card">
  <div class="card-element card-book-cover">
    <a href="https://alexgude.com/books/a_desolation_called_peace/">
      <img src="https://alexgude.com/books/covers/a_desolation_called_peace.jpg" alt="Book cover of A Desolation Called Peace." />
    </a>
  </div>
  <div class="card-element card-text">
    <a href="https://alexgude.com/books/a_desolation_called_peace/">
      <strong><cite class="book-title">A Desolation Called Peace</cite></strong>
    </a>
    <span class="by-author"> by <a href="/books/authors/arkady_martine/"><span class="author-name">Arkady Martine</span></a></span>
    <div class="book-rating star-rating-4" role="img" aria-label="Rating: 4 out of 5 stars. Great — I really liked it" title="Great — I really liked it"><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star empty_star" aria-hidden="true">☆</span></div>
    <div class="card-element card-text">
      <p><cite class="book-title">A Desolation Called Peace</cite>, by <span class="author-name">Arkady Martine</span>,
is the second book in the <span class="book-series">Teixcalaan</span> series. It tells the
story of Mahit and Three Seagrass trying to stop the war between the
Teixcalaanli Empire and a mysterious alien race.</p>
    </div>
  </div>
</li>
</ul>

<h2 id="roadside-picnic-by-arkady-and-boris-strugatsky"><cite class="book-title">Roadside Picnic</cite> by <span class="author-name">Arkady</span> and <span class="author-name">Boris Strugatsky</span></h2>

<p>I picked up <a href="/books/authors/arkady_strugatsky/"><span class="author-name">Arkady</span></a> and <a href="/books/authors/boris_strugatsky/"><span class="author-name">Boris Strugatsky</span>’s</a> best-known novel, <a href="/books/roadside_picnic/"><cite class="book-title">Roadside Picnic</cite></a>, because I
wanted to broaden what I was reading. I ended up loving it. The characters
feel incredibly real, the dialogue has a simple but earnest quality, and the
atmosphere is completely different from Western sci-fi.</p>

<p>It wasn’t the only book of theirs that I read, but it was easily my favorite.</p>

<ul class="card-grid">
  <li class="book-card">
  <div class="card-element card-book-cover">
    <a href="https://alexgude.com/books/roadside_picnic/">
      <img src="https://alexgude.com/books/covers/roadside_picnic.jpg" alt="Book cover of Roadside Picnic." />
    </a>
  </div>
  <div class="card-element card-text">
    <a href="https://alexgude.com/books/roadside_picnic/">
      <strong><cite class="book-title">Roadside Picnic</cite></strong>
    </a>
    <span class="by-author"> by <a href="/books/authors/arkady_strugatsky/"><span class="author-name">Arkady Strugatsky</span></a> and <a href="/books/authors/boris_strugatsky/"><span class="author-name">Boris Strugatsky</span></a></span>
    <div class="book-rating star-rating-4" role="img" aria-label="Rating: 4 out of 5 stars. Great — I really liked it" title="Great — I really liked it"><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star empty_star" aria-hidden="true">☆</span></div>
    <div class="card-element card-text">
      <p><cite class="book-title">Roadside Picnic</cite>, by brothers <span class="author-name">Arkady</span> and <span class="author-name">Boris Strugatsky</span>, is a Soviet sci-fi novel. It’s essentially four short
stories—each presented as a chapter—about the life of Redrick “Red”
Schuhart, a “stalker” who illegally enters an alien-contaminated Zone to
retrieve items for the black market.</p>
    </div>
  </div>
</li>
</ul>

<h2 id="the-murderbot-diaries-by-martha-wells"><span class="book-series">The Murderbot Diaries</span> by <span class="author-name">Martha Wells</span></h2>

<p>Everyone loves <a href="/books/series/the_murderbot_diaries/"><span class="book-series">The Murderbot Diaries</span></a>, and I’m no exception. <a href="/books/authors/martha_wells/"><span class="author-name">Wells</span></a> hits the
perfect mix of pulpy action, fast pacing, and memorable characters, while
still digging into deep philosophical questions about what it means to be a
person. I’ve got a few more to go this year, and I’m really looking forward to
them. I fully expect to see them on my 2026 list.</p>

<ul class="card-grid">
  <li class="book-card">
  <div class="card-element card-book-cover">
    <a href="https://alexgude.com/books/artificial_condition/">
      <img src="https://alexgude.com/books/covers/artificial_condition.jpg" alt="Book cover of Artificial Condition." />
    </a>
  </div>
  <div class="card-element card-text">
    <a href="https://alexgude.com/books/artificial_condition/">
      <strong><cite class="book-title">Artificial Condition</cite></strong>
    </a>
    <span class="by-author"> by <a href="/books/authors/martha_wells/"><span class="author-name">Martha Wells</span></a></span>
    <div class="book-rating star-rating-4" role="img" aria-label="Rating: 4 out of 5 stars. Great — I really liked it" title="Great — I really liked it"><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star empty_star" aria-hidden="true">☆</span></div>
    <div class="card-element card-text">
      <p><cite class="book-title">Artificial Condition</cite>, by <span class="author-name">Martha Wells</span>,
is the second book in <span class="book-series">The Murderbot Diaries</span>. It follows
Murderbot as it digs into its past and, once again, saves some scientists.</p>
    </div>
  </div>
</li>
  <li class="book-card">
  <div class="card-element card-book-cover">
    <a href="https://alexgude.com/books/rogue_protocol/">
      <img src="https://alexgude.com/books/covers/rogue_protocol.jpg" alt="Book cover of Rogue Protocol." />
    </a>
  </div>
  <div class="card-element card-text">
    <a href="https://alexgude.com/books/rogue_protocol/">
      <strong><cite class="book-title">Rogue Protocol</cite></strong>
    </a>
    <span class="by-author"> by <a href="/books/authors/martha_wells/"><span class="author-name">Martha Wells</span></a></span>
    <div class="book-rating star-rating-3" role="img" aria-label="Rating: 3 out of 5 stars. Good — I liked it" title="Good — I liked it"><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star empty_star" aria-hidden="true">☆</span><span class="book_star empty_star" aria-hidden="true">☆</span></div>
    <div class="card-element card-text">
      <p><cite class="book-title">Rogue Protocol</cite>, by <span class="author-name">Martha Wells</span>,
is the third book in <span class="book-series">The Murderbot Diaries</span>. It follows
Murderbot as it investigates a GrayCris terraforming station and, you guessed
it, ends up saving a group of humans.</p>
    </div>
  </div>
</li>
  <li class="book-card">
  <div class="card-element card-book-cover">
    <a href="https://alexgude.com/books/exit_strategy/">
      <img src="https://alexgude.com/books/covers/exit_strategy.jpg" alt="Book cover of Exit Strategy." />
    </a>
  </div>
  <div class="card-element card-text">
    <a href="https://alexgude.com/books/exit_strategy/">
      <strong><cite class="book-title">Exit Strategy</cite></strong>
    </a>
    <span class="by-author"> by <a href="/books/authors/martha_wells/"><span class="author-name">Martha Wells</span></a></span>
    <div class="book-rating star-rating-4" role="img" aria-label="Rating: 4 out of 5 stars. Great — I really liked it" title="Great — I really liked it"><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star empty_star" aria-hidden="true">☆</span></div>
    <div class="card-element card-text">
      <p><cite class="book-title">Exit Strategy</cite>, by <span class="author-name">Martha Wells</span>,
is the fourth book in <span class="book-series">The Murderbot Diaries</span>. It wraps up
the GrayCris storyline as Murderbot returns to save its friends.</p>
    </div>
  </div>
</li>
  <li class="book-card">
  <div class="card-element card-book-cover">
    <a href="https://alexgude.com/books/network_effect/">
      <img src="https://alexgude.com/books/covers/network_effect.jpg" alt="Book cover of Network Effect." />
    </a>
  </div>
  <div class="card-element card-text">
    <a href="https://alexgude.com/books/network_effect/">
      <strong><cite class="book-title">Network Effect</cite></strong>
    </a>
    <span class="by-author"> by <a href="/books/authors/martha_wells/"><span class="author-name">Martha Wells</span></a></span>
    <div class="book-rating star-rating-4" role="img" aria-label="Rating: 4 out of 5 stars. Great — I really liked it" title="Great — I really liked it"><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star empty_star" aria-hidden="true">☆</span></div>
    <div class="card-element card-text">
      <p><cite class="book-title">Network Effect</cite>, by <span class="author-name">Martha Wells</span>,
is the fifth book in <span class="book-series">The Murderbot Diaries</span>. It’s the first
full-length novel in the series and features Murderbot getting kidnapped by
ART to rescue its crew.</p>
    </div>
  </div>
</li>
</ul>

<h2 id="there-is-no-antimemetics-division-by-qntm"><cite class="book-title">There Is No Antimemetics Division</cite> by <span class="author-name">qntm</span></h2>

<p>I read <a href="/books/authors/qntm/"><span class="author-name">qntm</span>’s</a> <a href="/books/there_is_no_antimemetics_division_original/"><cite class="book-title">original edition</cite></a> edition in 2023 and thought it was packed
full of amazing ideas, but ultimately let down by a poorly written second act.
His rewrite this year fixed every single problem. The result is a tight,
cohesive book that brings its wild concepts to life. Highly recommend.</p>

<ul class="card-grid">
  <li class="book-card">
  <div class="card-element card-book-cover">
    <a href="https://alexgude.com/books/there_is_no_antimemetics_division/">
      <img src="https://alexgude.com/books/covers/there_is_no_antimemetics_division.jpg" alt="Book cover of There Is No Antimemetics Division." />
    </a>
  </div>
  <div class="card-element card-text">
    <a href="https://alexgude.com/books/there_is_no_antimemetics_division/">
      <strong><cite class="book-title">There Is No Antimemetics Division</cite></strong>
    </a>
    <span class="by-author"> by <a href="/books/authors/qntm/"><span class="author-name">qntm</span></a></span>
    <div class="book-rating star-rating-5" role="img" aria-label="Rating: 5 out of 5 stars. Masterpiece — I loved it" title="Masterpiece — I loved it"><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span></div>
    <div class="card-element card-text">
      <p><cite class="book-title">There Is No Antimemetics Division</cite>, by <span class="author-name">qntm</span>,
is a book about researchers trying to control dangerous antimemes—ideas that
can’t be thought—and how you might combat a foe you can’t even remember
exists.</p>
    </div>
  </div>
</li>
</ul>

<h2 id="a-mote-in-shadow-by-a-n-alex"><cite class="book-title">A Mote in Shadow</cite> by <span class="author-name">A. N. Alex</span></h2>

<p>I found this book when my corner of BlueSky started talking about it, and I’m
glad I paid attention. <a href="/books/authors/a_n_alex/"><span class="author-name">Alex</span>’s</a> debut novel is a fantastic mix of hard
sci-fi and techno-thriller, set in a fractured human civilization in the
not-too-distant future. He’s working on the sequel now, and I’m very much
looking forward to it.</p>

<ul class="card-grid">
  <li class="book-card">
  <div class="card-element card-book-cover">
    <a href="https://alexgude.com/books/a_mote_in_shadow/">
      <img src="https://alexgude.com/books/covers/a_mote_in_shadow.jpg" alt="Book cover of A Mote in Shadow." />
    </a>
  </div>
  <div class="card-element card-text">
    <a href="https://alexgude.com/books/a_mote_in_shadow/">
      <strong><cite class="book-title">A Mote in Shadow</cite></strong>
    </a>
    <span class="by-author"> by <a href="/books/authors/a_n_alex/"><span class="author-name">A. N. Alex</span></a></span>
    <div class="book-rating star-rating-5" role="img" aria-label="Rating: 5 out of 5 stars. Masterpiece — I loved it" title="Masterpiece — I loved it"><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span></div>
    <div class="card-element card-text">
      <p><cite class="book-title">A Mote in Shadow</cite> is <span class="author-name">A. N. Alex</span>’s debut novel. It follows two down-on-their-luck outsiders dragged
into a war between shadowy mercenary groups: exobiologist Chaeyoung No, whose
disagreement with the scientific establishment leaves her in no position to
question a too-good-to-be-true offer to fund her research expedition; and
space hauler Frederik Obialo, who is more than willing to take a dangerous job
if it brings him closer to his dream of giving his daughter a permanent home.</p>
    </div>
  </div>
</li>
</ul>

<h2 id="the-triumphant-by-linda-evans-robert-r-hollingsworth-and-david-weber"><cite class="book-title">The Triumphant</cite> by <span class="author-name">Linda Evans</span>, <span class="author-name">Robert R. Hollingsworth</span>, and <span class="author-name">David Weber</span></h2>

<p>I started reading the <a href="/books/series/bolo/"><span class="book-series">Bolo</span></a> books when I was a teen and absolutely loved
them. They feature giant tanks blowing stuff up, but, like <a href="/books/series/the_murderbot_diaries/"><span class="book-series">The Murderbot Diaries</span></a>,
they also broach deeper questions about the meaning of being alive and whether
honor and duty translate to machines. I recently started re-reading the series
for nostalgia, and while most of the books are serviceable but not great, <a href="/books/the_triumphant/"><cite class="book-title">The Triumphant</cite></a> is the clear exception.</p>

<ul class="card-grid">
  <li class="book-card">
  <div class="card-element card-book-cover">
    <a href="https://alexgude.com/books/the_triumphant/">
      <img src="https://alexgude.com/books/covers/bolos_book_3_the_triumphant_1st_edition.jpg" alt="Book cover of The Triumphant." />
    </a>
  </div>
  <div class="card-element card-text">
    <a href="https://alexgude.com/books/the_triumphant/">
      <strong><cite class="book-title">The Triumphant</cite></strong>
    </a>
    <span class="by-author"> by <a href="/books/authors/linda_evans/"><span class="author-name">Linda Evans</span></a>, <a href="/books/authors/robert_r_hollingsworth/"><span class="author-name">Robert R. Hollingsworth</span></a>, and <a href="/books/authors/david_weber/"><span class="author-name">David Weber</span></a></span>
    <div class="book-rating star-rating-5" role="img" aria-label="Rating: 5 out of 5 stars. Masterpiece — I loved it" title="Masterpiece — I loved it"><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span></div>
    <div class="card-element card-text">
      <p><cite class="book-title">The Triumphant</cite> is the twelfth book in the <span class="book-series">Bolo</span> series. It’s an anthology of Bolo stories written by three different
authors. They explore the emotional bond between a Bolo and the people around
them, and the dangers of caring too much about a machine built for war.</p>
    </div>
  </div>
</li>
</ul>]]></content><author><name>Alexander Gude</name></author><category term="book-reviews" /><category term="opinions" /><summary type="html"><![CDATA[I read 45 books in 2025, diving deep into sci-fi classics and modern hits. From the Hyperion Cantos and the final Culture novel to the philosophical action of Murderbot, plus one literary masterpiece that is actually a video game, here are my absolute favorites of the year.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://alexgude.com/files/book-reviews/books_from_the_marburg_image_archive.jpg" /><media:content medium="image" url="https://alexgude.com/files/book-reviews/books_from_the_marburg_image_archive.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">A Letter to my Alma Mater</title><link href="https://alexgude.com/blog/a-letter-to-my-alma-mater/" rel="alternate" type="text/html" title="A Letter to my Alma Mater" /><published>2025-09-12T00:00:00-07:00</published><updated>2025-09-12T00:00:00-07:00</updated><id>https://alexgude.com/blog/a_letter_to_my_alma_mater</id><content type="html" xml:base="https://alexgude.com/blog/a-letter-to-my-alma-mater/"><![CDATA[<p>It was with dismay this morning that I read the Daily Cal article: <a href="https://www.dailycal.org/news/campus/uc-berkeley-turns-over-personal-information-of-more-than-150-students-and-staff-to-federal/article_a4aad3e1-bbba-42cc-92d7-a7964d9641c5.html"><cite class="newspaper">UC Berkeley turns over personal information of more than 150
students and staff to federal government</cite></a>. That you, the
inheritors of this university’s mantle, would willingly comply with a
political witch hunt reveals a profound and stunning ignorance of the
historical moment we are in.</p>

<p>Your failure of courage raises some fundamental questions. What is the point
of studying history if we learn nothing from it? What is the point of our own
history if we simply repeat the same mistakes we made in the past?</p>

<p>We tell ourselves myths about Mario Savio and the Free Speech Movement, about
the little circle of freedom in front of Sproul Hall, about how that history
determined who we are now. But it is clear now that you have chosen to betray
that legacy, siding not with Savio, but with the machine he warned us about.
You aren’t willing to put your careers, never mind your bodies, upon the
wheels and levers to make it stop.</p>

<p>You believe you’re saving the University. But you are destroying its soul.</p>

<p><strong>Alexander Gude</strong> (‘08)</p>]]></content><author><name>Alexander Gude</name></author><category term="opinions" /><summary type="html"><![CDATA[In a stunning failure of courage, UC Berkeley has turned over the personal information of students and staff to the federal government. This decision is a profound betrayal of the university's legacy, particularly the Free Speech Movement. This is my letter to the administration.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://alexgude.com/files/berkeley/berkeley_wheeler.jpg" /><media:content medium="image" url="https://alexgude.com/files/berkeley/berkeley_wheeler.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">LLMs Make Python Scripts Free</title><link href="https://alexgude.com/blog/llms-make-python-free/" rel="alternate" type="text/html" title="LLMs Make Python Scripts Free" /><published>2025-08-30T00:00:00-07:00</published><updated>2025-08-30T00:00:00-07:00</updated><id>https://alexgude.com/blog/llms_make_python_free</id><content type="html" xml:base="https://alexgude.com/blog/llms-make-python-free/"><![CDATA[<p>I first learned Python in 2005. My mentor at the time, Nao Sazuki, was
training me to do cosmology research and decided it would be a better use of
my time to learn Python instead of IDL. He also told me something that changed
how I thought about computers:</p>

<blockquote>
  <p>A computer’s job is to do work for you.</p>
</blockquote>

<p>I hadn’t realized that before. Until I learned to program, computers could
only do a small set of things for me—mainly the things other people had
already decided they should do. But when I learned to code, I suddenly had the
ability to make them do what I wanted.</p>

<p>Within a year I’d learned Python, picked up Vim, and switched my computers to
Ubuntu. I started writing little scripts to make my life easier, like backing
up my email, syncing files between my laptop and desktop, or converting
Wikipedia pages into an archival format.</p>

<p>Back then, each script took me hours to write. I had to find the right
libraries, learn their APIs, or sometimes write code from scratch. Because
they took so much work I saved every one, sometimes even sharing them with the
opensource community, just in case I ever needed them again. But all of that
changed in the last two years when I <a href="/blog/how-i-write-code-with-llms/">learned to use an LLM for
coding</a>.</p>

<p>Now a Python script takes 30 seconds. Maybe a minute if I want to read it over
and give some feedback. Gemini 2.5 Pro <em>almost always</em> writes a 100-line
script correctly on the first try, just from a short description of what I
want. It’s so fast and easy that I’ve stopped saving them—if I need another
one, I can just prompt for it again in half a minute.</p>

<p><strong>Python scripts are now free!</strong><sup id="fnref:also"><a href="#fn:also" class="footnote" rel="footnote" role="doc-noteref">1</a></sup> But I don’t think everyone has
realized this yet. Once again, <span class="author-name">William Gibson</span> was right:</p>

<blockquote>
  <p>The future is already here – it’s just not very evenly distributed.</p>
</blockquote>

<div class="footnotes" role="doc-endnotes">
  <ol>
    <li id="fn:also">

      <p>And not just Python, but any 300-line piece of code! I used Gemini to
completely re-write the backend of this blog in pure Ruby, cutting build
times from minutes to seconds, adding hundreds of tests to define and
enforce behavior, and I don’t even know Ruby! <a href="#fnref:also" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
  </ol>
</div>]]></content><author><name>Alexander Gude</name></author><category term="generative-ai" /><category term="large-language-models" /><category term="machine-learning" /><category term="python" /><summary type="html"><![CDATA[I used to spend hours writing and saving little Python scripts. Now, with LLMs, I can get the same code in under a minute. Python scripts, and small programs in general, are effectively free.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://alexgude.com/files/llm-free-python/a_robot_sells_pythons_of_many_colors.png" /><media:content medium="image" url="https://alexgude.com/files/llm-free-python/a_robot_sells_pythons_of_many_colors.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">How I Code With LLMs</title><link href="https://alexgude.com/blog/how-i-write-code-with-llms/" rel="alternate" type="text/html" title="How I Code With LLMs" /><published>2025-05-31T00:00:00-07:00</published><updated>2025-05-31T00:00:00-07:00</updated><id>https://alexgude.com/blog/how_i_write_code_with_llms</id><content type="html" xml:base="https://alexgude.com/blog/how-i-write-code-with-llms/"><![CDATA[<p>I’ve been writing code professionally for 20 years. I started with Java, moved
on to Python, then C++, Scala, and back to Python, with a smattering of shell
scripting, PHP, and Rust in between. I’ve written code with a pen and paper,
Vim, and a full IDE. Now, I’m exploring writing code with <a href="https://en.wikipedia.org/wiki/Large_language_model">large language
models (LLMs)</a>, similar to <a href="/blog/how-i-write-with-llms-revised/">how I use them for writing</a>.</p>

<p>At work, I use <a href="https://block.github.io/goose/">Codename Goose</a>, which can directly interact with my
local machine and files, switch between multiple LLM APIs, and connect to our
infrastructure with <a href="https://en.wikipedia.org/wiki/Model_Context_Protocol">Model Context Protocol (MCP)</a> servers. At home, I’m
more limited, but use GPT-4o and Gemini 2.5 Pro to generate code (that I have
to copy back and forth between my browser and terminal).</p>

<p>After intentionally trying to shoehorn LLMs into my workflow to see where and
how they work, this is what I’ve learned.</p>

<h2 id="system-prompt">System Prompt</h2>

<p>The system prompt, which the model “reads” before it gets started, is how you
customize the way the model “thinks” and responds to you. I find a few things
are useful to include:</p>

<ol>
  <li><strong>A general overview of the task:</strong> This gives the LLM context about where
you’re headed, even as it works line by line and file by file. “We’re
refactoring a Jekyll website…”, “We’re building a set of machine learning
signals in Java 17…”, etc.</li>
  <li><strong>A layout of the project:</strong> Locations of key files, what goes where, etc.
Things like “a.py is where the main code lives, b.py provides helper
functions…”</li>
  <li><strong>A style guide:</strong> Telling the LLM how you prefer to use the programming
language. “Never use ternary operators”, “Always use <code class="language-plaintext highlighter-rouge">{}</code> with if
statements”, “Prefer functional solutions”, etc.</li>
</ol>

<p>A trick I use is, at the end of a session, I give the LLM the current system
prompt and ask it to update it—adding anything new it learned and fixing
anything that’s now out of date. Then I use that modified prompt when I spin
up a new LLM to work on the project.</p>

<h2 id="unit-tests">Unit Tests</h2>

<p>English isn’t a very precise way to define what you want code to do, but
that’s usually where I start, maybe with a few example code snippets. After
that, I ask the model to write <a href="https://en.wikipedia.org/wiki/Unit_testing">unit tests</a> for the code we just wrote.
This is where I make sure we’re on the same page.</p>

<p>I read through the unit tests and look for anything that doesn’t match what I
was expecting. Sometimes it’s easy to just change the test to match the
behavior I want. Other times, I try to understand why the LLM made the choice
it did, then discuss the decision with it to come to an agreement. I often
catch disagreements over when to throw errors, how to handle invalid inputs,
or other rare edge cases in this process.</p>

<p>Once the behavior is codified in the tests, I ask the model to fix the
original code so the tests pass. This iterative process of generation and
verification is <a href="/blog/good-uses-for-large-language-models/">where LLMs truly shine</a>. In this way, it’s
sort of an inverse of <a href="https://en.wikipedia.org/wiki/Test-driven_development">test-driven development</a>—I have the computer
write the code and then the tests. I find that having some code to start with
helps the LLM write broader, more useful tests, a practice whose importance
I’ve <a href="/blog/software-testing-for-data-science/">previously discussed in the context of data science</a>.</p>

<p>In some cases, I’ll even throw away the code, restart the LLM, and give it
just the tests as the spec for what it should write. This is particularly
useful when the model gets stuck and either won’t make a large enough change
to the code, or loops back and forth between essentially the same few
versions.</p>

<h2 id="iterate-and-advise">Iterate And Advise</h2>

<p>When I’m working with an LLM, I see my job more as a manager or mentor than an
engineer. My role is to define what we’re doing, then critique the result to
get it into shape. It’s a lot like working with a junior engineer or
intern—except one that can make a revision in 10 seconds instead of 4 hours.
This lets me iterate a lot to get the code working exactly how I want.</p>

<p>The things I focus on are mostly high-level, like data structures and
algorithms. The LLM often doesn’t need a lot of direction—just saying
“Couldn’t we replace the double for loop with a single loop and a hash table?”
is usually enough to get it on the right path. Only at the end, once the
structure is solid, do I focus on nitpicky issues or edit the text directly.</p>

<h2 id="the-future">The Future</h2>

<p>I’m still learning how to use LLMs for coding. The technology and tooling is
evolving so fast that I’m sure what I’m doing today will look antiquated in
six months. Still, I hope it gives others some ideas about how they can
use this technology to speed up their development.</p>]]></content><author><name>Alexander Gude</name></author><category term="generative-ai" /><category term="large-language-models" /><category term="machine-learning" /><summary type="html"><![CDATA[Over the past few years, I've experimented with coding alongside large language models. This post shares how I integrate them into my workflow.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://alexgude.com/files/coding-llm/water_color_of_a_robot_writing_code.png" /><media:content medium="image" url="https://alexgude.com/files/coding-llm/water_color_of_a_robot_writing_code.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">How I Write with Large Language Models</title><link href="https://alexgude.com/blog/how-i-write-with-llms-revised/" rel="alternate" type="text/html" title="How I Write with Large Language Models" /><published>2025-02-02T00:00:00-08:00</published><updated>2025-02-02T00:00:00-08:00</updated><id>https://alexgude.com/blog/how_i_write_with_llms_revised</id><content type="html" xml:base="https://alexgude.com/blog/how-i-write-with-llms-revised/"><![CDATA[<p><em>This is the final version of the post, refined through the editing process I
describe below. You can see my starting point by <a href="/blog/how-i-write-with-llms-revised/first-draft/">reading my first
draft</a> and comparing it with the <a href="/blog/how-i-write-with-llms-revised/llm-draft/">LLM-edited draft</a>.</em></p>

<p>ChatGPT 3.5 came out just over two years ago and sparked an explosion in Large
Language Model (LLM) development. Dozens of companies released their own
models, and the state of the art advanced by the hour.</p>

<p>At the time, <a href="/blog/how-i-write-with-chatgpt/">I wrote about how I used ChatGPT to write</a>. My
method was primitive. With years of experience and improvements in the models,
I have refined how I use LLMs to edit text. Here is my new method.</p>

<h2 id="drafting">Drafting</h2>

<p>I write the first draft entirely by hand. This helps me preserve my voice and
prevents the writing from being overly influenced by the LLM. It also supports
my main goal of writing: to clarify my thinking.</p>

<p>I used to write, edit, write, edit, and so on until I was nearly 100% happy
with my work, but now I stop earlier and let the LLM handle an editing pass.
Using the LLM early saves me multiple rounds of edits because they’ve become
so good at fixing spelling and grammatical errors and slightly tweaking my
writing without overpowering it.</p>

<h2 id="the-prompt">The Prompt</h2>

<p>The prompt you use with the LLM is important, because it strongly shapes how
the model edits your writing. The prompt keeps the machine from filling my
writing with phrases like <a href="https://arstechnica.com/ai/2024/07/the-telltale-words-that-could-identify-generative-ai-text/">“delve”, “showcasing”, and “underscores”</a>. I
currently use a slight variation of this prompt:</p>

<blockquote>
  <p>Help me edit this blog post I’m writing. Fix errors, make it clearer. Reword
to make the arguments and sentences more coherent. Use the same sort of
words I’m using, don’t substitute fancy synonyms. Maintain my voice. My work
is below. Keep the formatting and wrap your output in ```.</p>
</blockquote>

<h2 id="editing">Editing</h2>

<p>Once I have the LLM’s version, I put it side-by-side with my draft to compare.
Sometimes the edited version is perfect, and I’ll take an entire paragraph as
is. Other times, I’ll borrow ideas about how to structure a paragraph or a
transition, but I rewrite it in my own words. The model sometimes tries to fix
sections that are fine, and I simply ignore it.</p>

<p>After that, I go through another human editing pass to ensure my voice comes
through in every sentence. Sometimes, I will have the LLM focus on specific
sentences or paragraphs that still need work and iterate. Once I’m happy, I
commit my changes and publish.</p>]]></content><author><name>Alexander Gude</name></author><category term="generative-ai" /><category term="large-language-models" /><category term="machine-learning" /><summary type="html"><![CDATA[OpenAI's ChatGPT 3.5 transformed my writing process when it came out. After years of experience using it, I've further refined my method of using LLMs. This post explains how.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://alexgude.com/files/chatgpt/202502001-robot.jpg" /><media:content medium="image" url="https://alexgude.com/files/chatgpt/202502001-robot.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">My Favorite Books of 2024</title><link href="https://alexgude.com/blog/favorite-books-of-2024/" rel="alternate" type="text/html" title="My Favorite Books of 2024" /><published>2025-01-01T00:00:00-08:00</published><updated>2025-01-01T00:00:00-08:00</updated><id>https://alexgude.com/blog/favorite_books_of_2024</id><content type="html" xml:base="https://alexgude.com/blog/favorite-books-of-2024/"><![CDATA[<p>In 2024, I finished 46 books and joined a sci-fi book club. The club has been
a fantastic way to explore books outside my usual reading habits and has
encouraged me to think more critically about writing, thematic connections,
and the author’s intent—so I have plenty to share during discussions.
Following the tradition of <a href="/blog/favorite-books-of-2023/#blindsight-by-peter-watts">last year’s post</a>, here are my favorite
reads from 2024:</p>

<h2 id="echopraxia-by-peter-watts"><cite class="book-title">Echopraxia</cite> by <span class="author-name">Peter Watts</span></h2>

<p><a href="/books/echopraxia/"><cite class="book-title">Echopraxia</cite></a> is the sequel to <a href="/books/blindsight/"><cite class="book-title">Blindsight</cite></a>, one of my <a href="/blog/favorite-books-of-2023/#blindsight-by-peter-watts">favorite books from last
year</a>. Although it wasn’t as well received by readers as <a href="/books/blindsight/"><cite class="book-title">Blindsight</cite></a>,
it was my favorite read of the year. In fact, I liked it <em>more</em> than <a href="/books/blindsight/"><cite class="book-title">Blindsight</cite></a>
because of its complex storyline, intriguing characters, and the broader
perspective it offers on the world.</p>

<ul class="card-grid">
  <li class="book-card">
  <div class="card-element card-book-cover">
    <a href="https://alexgude.com/books/echopraxia/">
      <img src="https://alexgude.com/books/covers/echopraxia.jpg" alt="Book cover of Echopraxia." />
    </a>
  </div>
  <div class="card-element card-text">
    <a href="https://alexgude.com/books/echopraxia/">
      <strong><cite class="book-title">Echopraxia</cite></strong>
    </a>
    <span class="by-author"> by <a href="/books/authors/peter_watts/"><span class="author-name">Peter Watts</span></a></span>
    <div class="book-rating star-rating-5" role="img" aria-label="Rating: 5 out of 5 stars. Masterpiece — I loved it" title="Masterpiece — I loved it"><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span></div>
    <div class="card-element card-text">
      <p><cite class="book-title">Echopraxia</cite>, by <span class="author-name">Peter Watts</span>,
is the second book in the <span class="book-series">Firefall</span> series, unfolding at
roughly the same time as <a href="/books/blindsight/"><cite class="book-title">Blindsight</cite></a>. It follows
parasitologist Daniel Brüks, who gets unwillingly dragged into a conflict
between multiple transhuman factions, travels to the <em>Icarus</em> station orbiting
the sun, and eventually back to Earth.</p>
    </div>
  </div>
</li>
</ul>

<h2 id="the-culture-series-by-iain-m-banks">The <span class="book-series">Culture</span> Series by <span class="author-name">Iain M. Banks</span></h2>

<p>I <strong>hated</strong> <a href="/books/consider_phlebas/"><cite class="book-title">Consider Phlebas</cite></a> when I read it in 2023, but I gave the <a href="/books/series/culture/"><span class="book-series">Culture</span></a>
series another chance because I had spent the better part of two decades
waiting to get my hands on the books. I’m glad I did, because I read <a href="/books/the_player_of_games/"><cite class="book-title">The Player of Games</cite></a>
with my book club and loved it! My favorite from the series was <a href="/books/surface_detail/"><cite class="book-title">Surface Detail</cite></a>,
closely followed by <a href="/books/use_of_weapons/"><cite class="book-title">Use of Weapons</cite></a>. I even enjoyed <a href="/books/inversions/"><cite class="book-title">Inversions</cite></a>, one of the least
well-reviewed of <a href="/books/authors/iain_m_banks/"><span class="author-name">Banks</span>’s</a> books. It will be bittersweet to finish the
series with <a href="/books/the_hydrogen_sonata/"><cite class="book-title">The Hydrogen Sonata</cite></a> in 2025.</p>

<ul class="card-grid">
  <li class="book-card">
  <div class="card-element card-book-cover">
    <a href="https://alexgude.com/books/the_player_of_games/">
      <img src="https://alexgude.com/books/covers/the_player_of_games.jpg" alt="Book cover of The Player of Games." />
    </a>
  </div>
  <div class="card-element card-text">
    <a href="https://alexgude.com/books/the_player_of_games/">
      <strong><cite class="book-title">The Player of Games</cite></strong>
    </a>
    <span class="by-author"> by <a href="/books/authors/iain_m_banks/"><span class="author-name">Iain M. Banks</span></a></span>
    <div class="book-rating star-rating-5" role="img" aria-label="Rating: 5 out of 5 stars. Masterpiece — I loved it" title="Masterpiece — I loved it"><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span></div>
    <div class="card-element card-text">
      <p><cite class="book-title">The Player of Games</cite>, by <span class="author-name">Iain M. Banks</span>’s, is the second novel in the <span class="book-series">Culture</span> series. It tells the story of Jernau Morat Gurgeh, a master game player who is
recruited to play Azad, an incredibly complex game that serves as the basis
for the Empire of Azad’s entire government.</p>
    </div>
  </div>
</li>
  <li class="book-card">
  <div class="card-element card-book-cover">
    <a href="https://alexgude.com/books/inversions/">
      <img src="https://alexgude.com/books/covers/inversions.jpg" alt="Book cover of Inversions." />
    </a>
  </div>
  <div class="card-element card-text">
    <a href="https://alexgude.com/books/inversions/">
      <strong><cite class="book-title">Inversions</cite></strong>
    </a>
    <span class="by-author"> by <a href="/books/authors/iain_m_banks/"><span class="author-name">Iain M. Banks</span></a></span>
    <div class="book-rating star-rating-5" role="img" aria-label="Rating: 5 out of 5 stars. Masterpiece — I loved it" title="Masterpiece — I loved it"><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span></div>
    <div class="card-element card-text">
      <p><cite class="book-title">Inversions</cite>, by <span class="author-name">Iain M. Banks</span>,
is the sixth book in the <span class="book-series">Culture</span> series, but it is very
different from typical Culture novels: there are no spaceships and almost no
advanced technology. Instead, it follows Culture citizens DeWar and Vosill as
they manipulate a medieval society.</p>
    </div>
  </div>
</li>
  <li class="book-card">
  <div class="card-element card-book-cover">
    <a href="https://alexgude.com/books/look_to_windward/">
      <img src="https://alexgude.com/books/covers/look_to_windward.jpg" alt="Book cover of Look to Windward." />
    </a>
  </div>
  <div class="card-element card-text">
    <a href="https://alexgude.com/books/look_to_windward/">
      <strong><cite class="book-title">Look to Windward</cite></strong>
    </a>
    <span class="by-author"> by <a href="/books/authors/iain_m_banks/"><span class="author-name">Iain M. Banks</span></a></span>
    <div class="book-rating star-rating-5" role="img" aria-label="Rating: 5 out of 5 stars. Masterpiece — I loved it" title="Masterpiece — I loved it"><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span></div>
    <div class="card-element card-text">
      <p><cite class="book-title">Look to Windward</cite>, by <span class="author-name">Iain M. Banks</span>,
is the seventh book in the <span class="book-series">Culture</span> series. It explores
the aftermath of the Idiran–Culture War and Chelgrian civil war.</p>
    </div>
  </div>
</li>
  <li class="book-card">
  <div class="card-element card-book-cover">
    <a href="https://alexgude.com/books/surface_detail/">
      <img src="https://alexgude.com/books/covers/surface_detail.jpg" alt="Book cover of Surface Detail." />
    </a>
  </div>
  <div class="card-element card-text">
    <a href="https://alexgude.com/books/surface_detail/">
      <strong><cite class="book-title">Surface Detail</cite></strong>
    </a>
    <span class="by-author"> by <a href="/books/authors/iain_m_banks/"><span class="author-name">Iain M. Banks</span></a></span>
    <div class="book-rating star-rating-5" role="img" aria-label="Rating: 5 out of 5 stars. Masterpiece — I loved it" title="Masterpiece — I loved it"><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span></div>
    <div class="card-element card-text">
      <p><cite class="book-title">Surface Detail</cite>, by <span class="author-name">Iain M. Banks</span>,
is the ninth book in the <span class="book-series">Culture</span> series. It follows
Lededje Y’breq as she seeks revenge for her own murder, set against the
backdrop of a galactic conflict over virtual hells.</p>
    </div>
  </div>
</li>
</ul>

<h2 id="a-fire-upon-the-deep-by-vernor-vinge"><cite class="book-title">A Fire Upon The Deep</cite> by <span class="author-name">Vernor Vinge</span></h2>

<p><a href="/books/a_fire_upon_the_deep/"><cite class="book-title">A Fire Upon The Deep</cite></a> is a nostalgic
favorite that I first read about 20 years ago and reread this year for my book
club. It does a fantastic job of telling a story that feels small and personal
while having galaxy-spanning implications. The Zones of Thought concept is
also a unique way to structure the galaxy and explore how it shapes
civilizations.</p>

<ul class="card-grid">
  <li class="book-card">
  <div class="card-element card-book-cover">
    <a href="https://alexgude.com/books/a_fire_upon_the_deep/">
      <img src="https://alexgude.com/books/covers/a_fire_upon_the_deep.jpg" alt="Book cover of A Fire Upon The Deep." />
    </a>
  </div>
  <div class="card-element card-text">
    <a href="https://alexgude.com/books/a_fire_upon_the_deep/">
      <strong><cite class="book-title">A Fire Upon The Deep</cite></strong>
    </a>
    <span class="by-author"> by <a href="/books/authors/vernor_vinge/"><span class="author-name">Vernor Vinge</span></a></span>
    <div class="book-rating star-rating-5" role="img" aria-label="Rating: 5 out of 5 stars. Masterpiece — I loved it" title="Masterpiece — I loved it"><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span></div>
    <div class="card-element card-text">
      <p><cite class="book-title">A Fire Upon The Deep</cite> is a sci-fi novel by <span class="author-name">Vernor Vinge</span>. It tells the story of the Blight—a
galactic-scale, transcendent evil—and the humans racing to stop it.</p>
    </div>
  </div>
</li>
</ul>

<h2 id="the-cheela-series-by-robert-l-forward">The <span class="book-series">Cheela</span> Series by <span class="author-name">Robert L. Forward</span></h2>

<p>The <a href="/books/series/cheela/"><span class="book-series">Cheela</span></a> series consists of two hard sci-fi novels by <a href="/books/authors/robert_l_forward/"><span class="author-name">Forward</span></a>:
<a href="/books/dragons_egg/"><cite class="book-title">Dragon’s Egg</cite></a> and <a href="/books/starquake/"><cite class="book-title">Starquake</cite></a>. Even though the Cheela are <em>extremely</em> alien—living
on the surface of a neutron star and experiencing time a million times faster
than humans—their characters still pulled me in. It was exciting to watch
them build their civilization from hunter-gatherers to a spacefaring society.</p>

<ul class="card-grid">
  <li class="book-card">
  <div class="card-element card-book-cover">
    <a href="https://alexgude.com/books/dragons_egg/">
      <img src="https://alexgude.com/books/covers/dragons_egg.jpg" alt="Book cover of Dragon&#39;s Egg." />
    </a>
  </div>
  <div class="card-element card-text">
    <a href="https://alexgude.com/books/dragons_egg/">
      <strong><cite class="book-title">Dragon’s Egg</cite></strong>
    </a>
    <span class="by-author"> by <a href="/books/authors/robert_l_forward/"><span class="author-name">Robert L. Forward</span></a></span>
    <div class="book-rating star-rating-4" role="img" aria-label="Rating: 4 out of 5 stars. Great — I really liked it" title="Great — I really liked it"><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star empty_star" aria-hidden="true">☆</span></div>
    <div class="card-element card-text">
      <p><cite class="book-title">Dragon’s Egg</cite> is a hard sci-fi novel by <span class="author-name">Robert L. Forward</span>. It is the story of first
contact between humans and the Cheela: beings who live on a neutron star.</p>
    </div>
  </div>
</li>
  <li class="book-card">
  <div class="card-element card-book-cover">
    <a href="https://alexgude.com/books/starquake/">
      <img src="https://alexgude.com/books/covers/starquake.jpg" alt="Book cover of Starquake." />
    </a>
  </div>
  <div class="card-element card-text">
    <a href="https://alexgude.com/books/starquake/">
      <strong><cite class="book-title">Starquake</cite></strong>
    </a>
    <span class="by-author"> by <a href="/books/authors/robert_l_forward/"><span class="author-name">Robert L. Forward</span></a></span>
    <div class="book-rating star-rating-3" role="img" aria-label="Rating: 3 out of 5 stars. Good — I liked it" title="Good — I liked it"><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star empty_star" aria-hidden="true">☆</span><span class="book_star empty_star" aria-hidden="true">☆</span></div>
    <div class="card-element card-text">
      <p><cite class="book-title">Starquake</cite> is the second book in the <span class="book-series">Cheela</span> series by <span class="author-name">Robert L. Forward</span>. It follows
the Cheela as they rescue the humans and rebuild after a devastating
starquake.</p>
    </div>
  </div>
</li>
</ul>

<h2 id="childhoods-end-by-arthur-c-clarke"><cite class="book-title">Childhood’s End</cite> by <span class="author-name">Arthur C. Clarke</span></h2>

<p>Another nostalgic read, <a href="/books/authors/arthur_c_clarke/"><span class="author-name">Clarke</span>’s</a> <a href="/books/childhoods_end/"><cite class="book-title">Childhood’s End</cite></a> was one of the first sci-fi
books I ever read. Revisiting it years later was a treat, and I’m happy to say
it holds up. The focus on humans’ psychic abilities feels a little dated, but
<a href="/books/authors/arthur_c_clarke/"><span class="author-name">Clarke</span>’s</a> crisp writing kept me engaged.</p>

<ul class="card-grid">
  <li class="book-card">
  <div class="card-element card-book-cover">
    <a href="https://alexgude.com/books/childhoods_end/">
      <img src="https://alexgude.com/books/covers/childhoods_end.jpg" alt="Book cover of Childhood&#39;s End." />
    </a>
  </div>
  <div class="card-element card-text">
    <a href="https://alexgude.com/books/childhoods_end/">
      <strong><cite class="book-title">Childhood’s End</cite></strong>
    </a>
    <span class="by-author"> by <a href="/books/authors/arthur_c_clarke/"><span class="author-name">Arthur C. Clarke</span></a></span>
    <div class="book-rating star-rating-4" role="img" aria-label="Rating: 4 out of 5 stars. Great — I really liked it" title="Great — I really liked it"><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star empty_star" aria-hidden="true">☆</span></div>
    <div class="card-element card-text">
      <p><cite class="book-title">Childhood’s End</cite> is a classic sci-fi novel by <span class="author-name">Arthur C. Clarke</span>. It is about first contact
between humans and the mysterious Overlords, and the end of the human race.</p>
    </div>
  </div>
</li>
</ul>]]></content><author><name>Alexander Gude</name></author><category term="book-reviews" /><category term="opinions" /><summary type="html"><![CDATA[In 2024, I read 46 books and joined a sci-fi book club. From sequels to classics, here are my favorite reads of the year.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://alexgude.com/files/book-reviews/vertical_books_from_the_marburg_image_archive.jpg" /><media:content medium="image" url="https://alexgude.com/files/book-reviews/vertical_books_from_the_marburg_image_archive.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Steelcase Gesture Review: A Disappointing Upgrade</title><link href="https://alexgude.com/blog/steelcase-gesture-review/" rel="alternate" type="text/html" title="Steelcase Gesture Review: A Disappointing Upgrade" /><published>2024-09-02T00:00:00-07:00</published><updated>2024-09-02T00:00:00-07:00</updated><id>https://alexgude.com/blog/steelcase_gesture_review</id><content type="html" xml:base="https://alexgude.com/blog/steelcase-gesture-review/"><![CDATA[<p>Although I have a <a href="/blog/nookdesk-review/">standing desk</a>, I still spend more than half
of my day sitting. For four years, I used the secondhand office chair my
brother-in-law gave me during the pandemic, but it was falling apart even
before I got it. So I decided it was time to upgrade.</p>

<p>I tried multiple different chairs in person, and although my heart wanted an
Aeron, my sit-test (for 10 minutes) told me I should get a <a href="https://store.steelcase.com/gesture">Steelcase
Gesture</a>. Giving me confidence was the fact that The Wirecutter
had rated it their <a href="https://www.nytimes.com/wirecutter/reviews/best-office-chair/">best chair</a>, saying “This is one of the most
adjustable chairs available—anyone can make it comfortable, regardless of
their height or size.” After eight months, I’ve decided they were wrong.</p>

<p>Overall, I am disappointed with the chair, which has an uncomfortable back,
poor recline, and arms that just don’t get out of the way enough to get close
to my desk. I have replaced it with an Aeron Remastered Size C.</p>

<h2 id="my-chair">My Chair</h2>

<p>I bought a Steelcase Gesture with:</p>

<ul>
  <li>
    <p>Headrest</p>
  </li>
  <li>
    <p>Upholstered Wrap Back</p>
  </li>
  <li>
    <p>Cogent Lizard Upholstery (5S94)</p>
  </li>
  <li>
    <p>Platinum Metallic Frame</p>
  </li>
  <li>
    <p>Matching Base</p>
  </li>
  <li>
    <p><span class="nowrap unit">360<abbr class="unit-abbr" title="Degrees">°</abbr></span> Arms</p>
  </li>
  <li>
    <p>Lumbar Support</p>
  </li>
  <li>
    <p>Wheels for Carpet</p>
  </li>
</ul>

<p>The retail price for this chair is $1679, but I got it through my work’s
office supplier for $1079.</p>

<h2 id="headrest">Headrest</h2>

<p>I debated whether or not I wanted a headrest and finally decided to get one.
You can mostly fold it out of the way if you don’t like it, so I figured I’d
rather give it a shot. It’s fine. I use it when lounging but not when sitting
normally. I would not get it again because it is superfluous.</p>

<h2 id="arms">Arms</h2>

<p>One of the selling points of the Gesture is how flexible the arms are. They
are very easy to move, easier than the Aeron’s, but I didn’t find this to be a
great selling point. Generally, I set the arms once and leave them forever. I
don’t adjust them for each new position or task as Steelcase assumes.</p>

<p>Additionally, the arms aren’t as nice as the Aeron’s. The Gesture’s arms don’t
go as low, about 6 1/2 inches off the seat compared to 5 1/2 for the Aeron.
This is extremely important to me because I have very long arms compared to my
torso; the Gesture’s arms force my shoulders up. The Gesture’s arms also stick
out further when pushed all the way back (10 inches from the back of the
chair, compared to 8 for the Aeron). This makes it harder to pull the chair
under a desk to get close to the keyboard. The pads are a little thinner on
the Gesture, making it slightly less comfortable.</p>

<h2 id="the-back">The Back</h2>

<p>The Gesture has a very upright back. It forces me into a very straight
position, even though I normally prefer a little bit of recline. The back
moves in two ways: it tilts top to bottom to try to adjust to the curve of
your spine, and it reclines.</p>

<p>The back is also very tall, extending about 24 inches above the seat (not
including the headrest). Because it is very straight, it makes contact with my
shoulder blades in a way I found uncomfortable. For the first week of use, I
got upper back pain which I assumed was just my body adjusting to “sitting
correctly”. Eight months later and I’m not so sure; the upper-back pain
persists (although far less severe) and my doctor thinks my posture is most of
the problem. I had no problem before using the Gesture.</p>

<h3 id="recline">Recline</h3>

<p>The Gesture’s back can be locked into 4 different positions, and the spring
tension can be adjusted from “you can’t push this back if you tried” to
“absolutely no resistance”. Unfortunately, the recline just doesn’t feel very
good on my chair. It is either too stiff or too loose. There is no middle
ground that feels supportive. I think my spring is broken because the Gestures
we have at my company’s office have better tension control and a more
comfortable recline.</p>

<p>The back moves separate from the seat, which feels OK. On the Aeron, the seat
slides a bit when you recline which feels more natural. Overall, the recline
on the Aeron feels much better.</p>

<h3 id="lumbar">Lumbar</h3>

<p>The lumbar support is <strong>TERRIBLE</strong>. It pokes me in the back and feels like
it’s trying to push me out of the chair. The curve of the backrest is already
aggressive, and the lumbar support makes it more so. There is an <a href="https://www.reddit.com/r/OfficeChairs/comments/rixars/psa_remove_lumbar_support_from_your_steelcase/">entire
thread on Reddit</a><sup id="fnref:reddit"><a href="#fn:reddit" class="footnote" rel="footnote" role="doc-noteref">1</a></sup> about how the lumbar support ruins the
chair. I followed <a href="/files/steelcase//steelcase_gesture_back_replacement_guide-939544221revA.pdf">Steelcase’s guide to removing the backrest pad</a> to
take out the lumbar support and it helped a lot (but I still didn’t find it
comfortable). I would not buy the lumbar support again.</p>

<h2 id="the-seat">The Seat</h2>

<p>The seat depth is adjustable. Because I’m tall (6 foot 1 inch), I have the
seat all the way forward. This leaves a small gap between the back of the seat
and the backrest. The height is also adjustable, and I can make it high enough
to fit me.</p>

<p>Some people complain that the woven and padded seat retains heat and isn’t
comfortable on hot days. I used the chair during the summer and didn’t notice
heat problems, even when it was <span class="nowrap unit">110 <abbr class="unit-abbr" title="Degrees Fahrenheit">°F</abbr></span> outside and a
little over <span class="nowrap unit">80 <abbr class="unit-abbr" title="Degrees Fahrenheit">°F</abbr></span> in my office.</p>

<h2 id="final-thoughts">Final Thoughts</h2>

<p>I don’t like my Steelcase Gesture. For eight months, walking into my home
office each morning came with a sinking feeling, knowing I’d have to sit in
this chair. I replaced it with an Aeron, and the difference is night and
day—I couldn’t be happier with the switch.</p>
<div class="footnotes" role="doc-endnotes">
  <ol>
    <li id="fn:reddit">

      <p><figure class="cited-quote"><blockquote cite="https://www.reddit.com/r/OfficeChairs/comments/rixars/psa_remove_lumbar_support_from_your_steelcase/"> <p>So I got a new Steelcase Gesture and for about a week couldn’t understand why does this cost $1k+ and how someone can possibly prefer it to Aeron. I even started to get the back pain in the middle of the spine - something that has never happened to me in my seating life ever.</p>  <p>Then I read here about Lumbar support being in the way of their flexible back. I could not really find the right position for the lubmar so I figured ok I will just remove it, if it doesn’t help I will sell the damn thing at loss asap.</p>  <p>So without the Lumbar Support Gesture is <strong>amazing</strong>. The back flexes instead of cutting into your spine, you can lean on the chair and if you touch it behind the backrest you would notice that the design has the ribs that are supposed to have some give.</p>  <p>The lumbar support itself is fairly rigid piece of plastic that, frankly, feels alien inside the chair. Once I took it out, I felt a bit like I did some life-savingv surgery on the poor thing.</p>  <p>I have no idea who would prefer to have the lumbar support in it, especially compared to how good it is without it. I’d say with lumbar support it’s a 6.5 chair (and, considering the price for the new one, more like 5.5). Without it’s a solid 8.5-9. My only gripe now is that it’s on the hot side, I wish it had a mesh seat, but I think I can survive, the adjustable arms and the overall smoothness of the experience without the lumbar plate is worth it.</p>  <p>I had a headrest version, and the removal procedure isn’t exactly trivial and takes some force, but took me about 30 minutes. If you have the wrapped back be prepared to take some risks, inserting the lever underneath it to pop it off.</p>  <p>After that you screw off 4 screws (torx) and slide up the front seating pad. Then you’d need to carefully slide out the lumbar plate (I did not have to disconnect anything there, just the textile in a couple of places).</p>  <p>That’s it.</p>  </blockquote><figcaption>—<span class="citation">myreptilianbrain. <a href="https://www.reddit.com/r/OfficeChairs/comments/rixars/psa_remove_lumbar_support_from_your_steelcase/">"PSA: Remove lumbar support from your Steelcase Gesture"</a> <cite>Reddit, r/OfficeChairs</cite>. 2021-12-18.</span></figcaption></figure> <a href="#fnref:reddit" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
  </ol>
</div>]]></content><author><name>Alexander Gude</name></author><category term="opinions" /><summary type="html"><![CDATA[I spent eight months with the highly-rated Steelcase Gesture, only to be disappointed. In this review, I break down why this expensive ergonomic chair didn't work for me.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://alexgude.com/files/steelcase/steelcase_gesture_with_headrest_360_arms_in_lizard.jpg" /><media:content medium="image" url="https://alexgude.com/files/steelcase/steelcase_gesture_with_headrest_360_arms_in_lizard.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">My Favorite Books of 2023</title><link href="https://alexgude.com/blog/favorite-books-of-2023/" rel="alternate" type="text/html" title="My Favorite Books of 2023" /><published>2024-01-01T00:00:00-08:00</published><updated>2024-01-01T00:00:00-08:00</updated><id>https://alexgude.com/blog/favorite_books_of_2023</id><content type="html" xml:base="https://alexgude.com/blog/favorite-books-of-2023/"><![CDATA[<p>Social media died for me in 2023. Twitter and Reddit both shut down their third-party
APIs, making accessing them a pain, and the quality of Twitter decreased
significantly with its sale to Elon Musk. I realized how much time I had
wasted on social media and decided to spend it more wisely by reading books. I
bought a Kindle in October and finished 20 books between then and the end of
the year.</p>

<p>I <a href="/books/">review all the books I read</a>, here is a selection of my
favorites that I read in 2023:</p>

<h2 id="blindsight-by-peter-watts"><cite class="book-title">Blindsight</cite> by <span class="author-name">Peter Watts</span></h2>

<p><cite class="book-title">Blindsight</cite> does a great job of exploring the
nature of consciousness and intelligence. Watts keeps the tension high and the
plot moving quickly in this thought-provoking sci-fi novel. My favorite book
of the year!</p>

<ul class="card-grid">
  <li class="book-card">
  <div class="card-element card-book-cover">
    <a href="https://alexgude.com/books/blindsight/">
      <img src="https://alexgude.com/books/covers/blindsight.jpg" alt="Book cover of Blindsight." />
    </a>
  </div>
  <div class="card-element card-text">
    <a href="https://alexgude.com/books/blindsight/">
      <strong><cite class="book-title">Blindsight</cite></strong>
    </a>
    <span class="by-author"> by <a href="/books/authors/peter_watts/"><span class="author-name">Peter Watts</span></a></span>
    <div class="book-rating star-rating-5" role="img" aria-label="Rating: 5 out of 5 stars. Masterpiece — I loved it" title="Masterpiece — I loved it"><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span></div>
    <div class="card-element card-text">
      <p><cite class="book-title">Blindsight</cite> is a hard sci-fi novel about first contact with
aliens in the near future. A crew of four transhumans and a vampire are sent
on a spaceship to investigate an anomaly in the solar system after a swarm of
alien probes scan Earth.</p>
    </div>
  </div>
</li>
</ul>

<h2 id="the-chronicle-of-the-fallers-by-peter-f-hamilton"><span class="book-series">The Chronicle of the Fallers</span> by <span class="author-name">Peter F. Hamilton</span></h2>

<p>Hamilton is known for his space opera, but <cite class="book-title">The Abyss
Beyond Dreams</cite> is more urban fantasy set during the Russian Revolution
(in space) and <cite class="book-title">Night Without Stars</cite> is a
thriller set during the Cold War (again, in space). Both feature Commonwealth
citizens with special knowledge as <em>“Outside Context Problems”</em>, pulling the
stories into science fiction territory.</p>

<ul class="card-grid">
  <li class="book-card">
  <div class="card-element card-book-cover">
    <a href="https://alexgude.com/books/the_abyss_beyond_dreams/">
      <img src="https://alexgude.com/books/covers/the_abyss_beyond_dreams.jpg" alt="Book cover of The Abyss Beyond Dreams." />
    </a>
  </div>
  <div class="card-element card-text">
    <a href="https://alexgude.com/books/the_abyss_beyond_dreams/">
      <strong><cite class="book-title">The Abyss Beyond Dreams</cite></strong>
    </a>
    <span class="by-author"> by <a href="/books/authors/peter_f_hamilton/"><span class="author-name">Peter F. Hamilton</span></a></span>
    <div class="book-rating star-rating-3" role="img" aria-label="Rating: 3 out of 5 stars. Good — I liked it" title="Good — I liked it"><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star empty_star" aria-hidden="true">☆</span><span class="book_star empty_star" aria-hidden="true">☆</span></div>
    <div class="card-element card-text">
      <p><cite class="book-title">The Abyss Beyond Dreams</cite> starts off <span class="book-series">The Chronicle of the Fallers</span>, another series in <span class="author-name">Peter F. Hamilton</span>’s Commonwealth universe. Though billed as space opera, it often reads more as
urban fantasy since most of the story occurs on the planet Bienvenido inside
the Void where steam engines are their most advanced technology.</p>
    </div>
  </div>
</li>
  <li class="book-card">
  <div class="card-element card-book-cover">
    <a href="https://alexgude.com/books/night_without_stars/">
      <img src="https://alexgude.com/books/covers/night_without_stars.jpg" alt="Book cover of Night Without Stars." />
    </a>
  </div>
  <div class="card-element card-text">
    <a href="https://alexgude.com/books/night_without_stars/">
      <strong><cite class="book-title">Night Without Stars</cite></strong>
    </a>
    <span class="by-author"> by <a href="/books/authors/peter_f_hamilton/"><span class="author-name">Peter F. Hamilton</span></a></span>
    <div class="book-rating star-rating-3" role="img" aria-label="Rating: 3 out of 5 stars. Good — I liked it" title="Good — I liked it"><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star empty_star" aria-hidden="true">☆</span><span class="book_star empty_star" aria-hidden="true">☆</span></div>
    <div class="card-element card-text">
      <p><cite class="book-title">Night Without Stars</cite> is the second book in <span class="book-series">The Chronicle of the Fallers</span>. It is action packed, with great pacing, and complex characters.
It is my new favorite <span class="author-name">Peter F. Hamilton</span> book.</p>
    </div>
  </div>
</li>
</ul>

<h2 id="the-fall-of-hyperion-by-dan-simmons"><cite class="book-title">The Fall of Hyperion</cite> by <span class="author-name">Dan Simmons</span></h2>

<p>I enjoyed the sequel to <a href="/books/hyperion/"><cite class="book-title">Hyperion</cite></a> the most of the two books
because it tied the personal story of the pilgrims to a much broader galactic
conflict. Interestingly, you can see a lot of ideas in the Hyperion Cantos
that Hamilton later adopted in his Commonwealth Saga including wormholes, a
breakaway-but-helpful AI, and different factions of scheming AI who either
want to eradicate the humans or uplift them.</p>

<ul class="card-grid">
  <li class="book-card">
  <div class="card-element card-book-cover">
    <a href="https://alexgude.com/books/the_fall_of_hyperion/review-2023-10-27/">
      <img src="https://alexgude.com/books/covers/the_fall_of_hyperion.jpg" alt="Book cover of The Fall of Hyperion." />
    </a>
  </div>
  <div class="card-element card-text">
    <a href="https://alexgude.com/books/the_fall_of_hyperion/review-2023-10-27/">
      <strong><cite class="book-title">The Fall of Hyperion</cite></strong>
    </a>
    <span class="by-author"> by <a href="/books/authors/dan_simmons/"><span class="author-name">Dan Simmons</span></a></span>
    <div class="book-rating star-rating-5" role="img" aria-label="Rating: 5 out of 5 stars. Masterpiece — I loved it" title="Masterpiece — I loved it"><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span></div>
    <div class="card-element card-text">
      <p><cite class="book-title">The Fall of Hyperion</cite> is a sequel that outshines its predecessor. It is
everything I was expecting from <a href="/books/hyperion/"><cite class="book-title">Hyperion</cite></a> and more! A true
masterpiece.</p>
    </div>
  </div>
</li>
</ul>

<h2 id="the-commonwealth-saga-by-peter-f-hamilton"><span class="book-series">The Commonwealth Saga</span> by <span class="author-name">Peter F. Hamilton</span></h2>

<p>Epic space opera with a massive cast of characters and incredible pacing.</p>

<ul class="card-grid">
  <li class="book-card">
  <div class="card-element card-book-cover">
    <a href="https://alexgude.com/books/pandoras_star/">
      <img src="https://alexgude.com/books/covers/pandoras_star.jpg" alt="Book cover of Pandora&#39;s Star." />
    </a>
  </div>
  <div class="card-element card-text">
    <a href="https://alexgude.com/books/pandoras_star/">
      <strong><cite class="book-title">Pandora’s Star</cite></strong>
    </a>
    <span class="by-author"> by <a href="/books/authors/peter_f_hamilton/"><span class="author-name">Peter F. Hamilton</span></a></span>
    <div class="book-rating star-rating-4" role="img" aria-label="Rating: 4 out of 5 stars. Great — I really liked it" title="Great — I really liked it"><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star empty_star" aria-hidden="true">☆</span></div>
    <div class="card-element card-text">
      <p>I couldn’t put <cite class="book-title">Pandora’s Star</cite> down! It is a sci-fi book that reads
more like a thriller. There were always new mysteries that just a few more
pages promised the answers to.</p>
    </div>
  </div>
</li>
  <li class="book-card">
  <div class="card-element card-book-cover">
    <a href="https://alexgude.com/books/judas_unchained/">
      <img src="https://alexgude.com/books/covers/judas_unchained.jpg" alt="Book cover of Judas Unchained." />
    </a>
  </div>
  <div class="card-element card-text">
    <a href="https://alexgude.com/books/judas_unchained/">
      <strong><cite class="book-title">Judas Unchained</cite></strong>
    </a>
    <span class="by-author"> by <a href="/books/authors/peter_f_hamilton/"><span class="author-name">Peter F. Hamilton</span></a></span>
    <div class="book-rating star-rating-4" role="img" aria-label="Rating: 4 out of 5 stars. Great — I really liked it" title="Great — I really liked it"><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star empty_star" aria-hidden="true">☆</span></div>
    <div class="card-element card-text">
      <p>The sequel to <a href="/books/pandoras_star/"><cite class="book-title">Pandora’s Star</cite></a>, <cite class="book-title">Judas Unchained</cite> continues right where the last one left off, but with the
action ramped up to 11. The various storylines and loose threads come together
one by one until it’s the good guys racing against the bad guys for the fate
of the universe.</p>
    </div>
  </div>
</li>
</ul>

<h2 id="serpent-valley-by-scott-warren"><cite class="book-title">Serpent Valley</cite> by <span class="author-name">Scott Warren</span></h2>

<p>1980s mech sci-fi re-imagined for the 21st century. Warren’s self-published
series takes a few books to really find its feet, but once it does, it’s a
quick, fun, nostalgic read. The third book, <cite class="book-title">Serpent
Valley</cite>, exemplifies the series.</p>

<ul class="card-grid">
  <li class="book-card">
  <div class="card-element card-book-cover">
    <a href="https://alexgude.com/books/serpent_valley/">
      <img src="https://alexgude.com/books/covers/serpent_valley.jpg" alt="Book cover of Serpent Valley." />
    </a>
  </div>
  <div class="card-element card-text">
    <a href="https://alexgude.com/books/serpent_valley/">
      <strong><cite class="book-title">Serpent Valley</cite></strong>
    </a>
    <span class="by-author"> by <a href="/books/authors/scott_warren/"><span class="author-name">Scott Warren</span></a></span>
    <div class="book-rating star-rating-4" role="img" aria-label="Rating: 4 out of 5 stars. Great — I really liked it" title="Great — I really liked it"><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star full_star" aria-hidden="true">★</span><span class="book_star empty_star" aria-hidden="true">☆</span></div>
    <div class="card-element card-text">
      <p><cite class="book-title">Serpent Valley</cite>, the third book in the <span class="book-series">War Horses</span> series, is another quick, action-packed read—but without the flaws
holding back its predecessors. Easily my favorite of the series so far!</p>
    </div>
  </div>
</li>
</ul>]]></content><author><name>Alexander Gude</name></author><category term="book-reviews" /><category term="opinions" /><summary type="html"><![CDATA[After abandoning social media in 2023, I read books instead. Read on for my favorites.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://alexgude.com/files/book-reviews/corner_books_from_the_marburg_image_archive.jpg" /><media:content medium="image" url="https://alexgude.com/files/book-reviews/corner_books_from_the_marburg_image_archive.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Using Large Language Models To Clean Data</title><link href="https://alexgude.com/blog/large-language-models-for-data-cleaning/" rel="alternate" type="text/html" title="Using Large Language Models To Clean Data" /><published>2023-10-15T00:00:00-07:00</published><updated>2023-10-15T00:00:00-07:00</updated><id>https://alexgude.com/blog/large_language_models_for_data_cleaning</id><content type="html" xml:base="https://alexgude.com/blog/large-language-models-for-data-cleaning/"><![CDATA[<p>I maintain the <a href="/blog/switrs-to-sqlite/">SWITRS-to-sqlite</a> Python library that parses and cleans
up California Highway Patrol’s traffic collision database. One of the fields
the responding officer has to fill out at the scene of the crash is the
make<sup id="fnref:make"><a href="#fn:make" class="footnote" rel="footnote" role="doc-noteref">1</a></sup> of the vehicle. This field is a free text field, but there is a
relatively small number of common brands, so it should be mapped to a
categorical column.</p>

<p>This is straightforward when the officer writes <code class="language-plaintext highlighter-rouge">FORD</code> or <code class="language-plaintext highlighter-rouge">HONDA</code>, which they
mostly do. But since the officer can write anything, they occasionally make it
a little harder on us by abbreviating or mistyping, for example <code class="language-plaintext highlighter-rouge">VOLX</code> and
<code class="language-plaintext highlighter-rouge">DODDGE</code>. And sometimes they make it impossible by writing <code class="language-plaintext highlighter-rouge">--</code> or <code class="language-plaintext highlighter-rouge">______</code>.</p>

<p>The solution is to go through, one by one, and create a <a href="/blog/python-patterns-enum/">mapping</a>
like:</p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1"># Enumeration of common vehicle makes
</span><span class="nd">@unique</span>
<span class="k">class</span> <span class="nc">Make</span><span class="p">(</span><span class="n">Enum</span><span class="p">):</span>
  <span class="n">CHEVROLET</span>  <span class="o">=</span> <span class="sh">"</span><span class="s">chevrolet</span><span class="sh">"</span>
  <span class="n">GMC</span>        <span class="o">=</span> <span class="sh">"</span><span class="s">gmc</span><span class="sh">"</span>
  <span class="n">HINO</span>       <span class="o">=</span> <span class="sh">"</span><span class="s">hino</span><span class="sh">"</span>
  <span class="n">INFINITI</span>   <span class="o">=</span> <span class="sh">"</span><span class="s">infiniti</span><span class="sh">"</span>
  <span class="n">MITSUBISHI</span> <span class="o">=</span> <span class="sh">"</span><span class="s">mitsubishi</span><span class="sh">"</span>
  <span class="c1"># Special Token for unknown make
</span>  <span class="n">NONE</span>       <span class="o">=</span> <span class="bp">None</span>

<span class="c1"># Dictionary mapping raw values to Make enum
</span><span class="n">make_map</span> <span class="o">=</span> <span class="p">{</span>
  <span class="sh">"</span><span class="s">CHEVRLT</span><span class="sh">"</span><span class="p">:</span>  <span class="n">Make</span><span class="p">.</span><span class="n">CHEVROLET</span><span class="p">,</span>
  <span class="sh">"</span><span class="s">HINO/</span><span class="sh">"</span><span class="p">:</span>    <span class="n">Make</span><span class="p">.</span><span class="n">HINO</span><span class="p">,</span>
  <span class="sh">"</span><span class="s">INFINITY</span><span class="sh">"</span><span class="p">:</span> <span class="n">Make</span><span class="p">.</span><span class="n">INFINITI</span><span class="p">,</span>
  <span class="sh">"</span><span class="s">MITSUB</span><span class="sh">"</span><span class="p">:</span>   <span class="n">Make</span><span class="p">.</span><span class="n">MITSUBISHI</span><span class="p">,</span>
  <span class="sh">"</span><span class="s">TAHOE</span><span class="sh">"</span><span class="p">:</span>    <span class="n">Make</span><span class="p">.</span><span class="n">GMC</span><span class="p">,</span>
  <span class="sh">"</span><span class="s">UKNOWN</span><span class="sh">"</span><span class="p">:</span>   <span class="n">Make</span><span class="p">.</span><span class="n">NONE</span><span class="p">,</span>
<span class="p">}</span>
</code></pre></div></div>

<p>As someone who did this mapping by hand for <a href="https://github.com/agude/SWITRS-to-SQLite/blob/85ac7e7850680bd47f3fef5a44ab180d8ee9dd8b/switrs_to_sqlite/make_map.py">over 900 entries</a>, it is
quite tedious. Fortunately, making sense of mangled text is something <a href="/blog/good-uses-for-large-language-models/">Large
Language Models (LLMs) are pretty good at</a>!</p>

<h2 id="automating">Automating</h2>

<p>The goal is to perform few-shot, multi-label classification of vehicle makes.
Few-shot because we are going to give the model just a handful of examples of
what output we expect, and multi-label because there are many possible vehicle
makes it will have to map to.</p>

<h3 id="prompting">Prompting</h3>

<p>The first step is to write a prompt explaining the task to the model, the
expected return value, and a few examples of input and correct outputs. Here
is a shortened version, the full one is <a href="/blog/llm-data/prompt/">here</a>, starting with the
instructions:</p>

<div class="chatgpt-edit-block"> 
<div class="chatgpt-prompt-only">
    <blockquote>
      <p>I am working with a dataset of traffic collisions from California. One of
the fields is the “make” of the vehicle, for example, “Honda”, “Ford”,
“Peterbilt”, etc.</p>

      <p>But this field a free-text field filled out by the CHP officer on the scene
of the collision. As such there are misspellings, abbreviations, and other
mistakes that have to be fixed.</p>

      <p>I have created a set of makes as follows (including <code class="language-plaintext highlighter-rouge">NONE</code> as a placeholder
for unknown values). Here is the list in a Python <code class="language-plaintext highlighter-rouge">Enum</code>:</p>

      <div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nd">@unique</span>
<span class="k">class</span> <span class="nc">Make</span><span class="p">(</span><span class="n">Enum</span><span class="p">):</span>
    <span class="n">ACADIAN</span>                 <span class="o">=</span> <span class="sh">"</span><span class="s">acadian</span><span class="sh">"</span>
    <span class="n">ACURA</span>                   <span class="o">=</span> <span class="sh">"</span><span class="s">acura</span><span class="sh">"</span>
    <span class="n">ALFA_ROMERO</span>             <span class="o">=</span> <span class="sh">"</span><span class="s">alfa romera</span><span class="sh">"</span>
    <span class="n">AMC</span>                     <span class="o">=</span> <span class="sh">"</span><span class="s">american motors</span><span class="sh">"</span>
    <span class="bp">...</span>
</code></pre></div>      </div>

      <p>Take note that anything unknown should be tagged with <code class="language-plaintext highlighter-rouge">Make.None</code>. And do
not make up new Enum values.</p>
    </blockquote>
  </div>
</div>

<p>Then the output format, with instructions to include an explanation of its
logic first, which can <a href="https://arxiv.org/abs/2201.11903">help model accuracy</a>:</p>

<div class="chatgpt-edit-block"> 
<div class="chatgpt-prompt-only">
    <blockquote>
      <p>I will provide you with a string. You are to return a Python dictionary with
the following keys, in this same order:</p>

      <div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">{</span>
  <span class="n">explanation</span><span class="p">:</span> <span class="sh">"</span><span class="s">An explanation of why you think the enum value is a good match, or why there is no match possible.</span><span class="sh">"</span><span class="p">,</span>
  <span class="n">input_string</span><span class="p">:</span> <span class="sh">"</span><span class="s">The input string</span><span class="sh">"</span><span class="p">,</span>
  <span class="n">enum</span><span class="p">:</span> <span class="sh">"</span><span class="s">The correct enum from above</span><span class="sh">"</span><span class="p">,</span>
  <span class="n">no_match</span><span class="p">:</span> <span class="sh">"</span><span class="s">`True` or `False`. True if there is no matching enum or no way to make a match, otherwise False.</span><span class="sh">"</span><span class="p">,</span> 
<span class="p">}</span>
</code></pre></div>      </div>
    </blockquote>
  </div>
</div>

<p>And finally some examples of inputs and correct outputs:</p>

<div class="chatgpt-edit-block"> 
<div class="chatgpt-prompt-only">
    <blockquote>
      <p>For example, for the input <code class="language-plaintext highlighter-rouge">VOLX</code>:</p>

      <div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">{</span>
  <span class="n">explanation</span><span class="p">:</span> <span class="sh">"""</span><span class="s">VOLX is pronouced similarly to </span><span class="sh">'</span><span class="s">Volks</span><span class="sh">'</span><span class="s"> and therefore this is
    probably an abbreviation of </span><span class="sh">'</span><span class="s">Volkswagen</span><span class="sh">'</span><span class="s">. There is an enum value for
    Volkswagon, `Make.VOLKSWAGEN`, already so we use that.</span><span class="sh">"""</span><span class="p">,</span>
  <span class="n">input_string</span><span class="p">:</span> <span class="sh">"</span><span class="s">VOLX</span><span class="sh">"</span><span class="p">,</span>
  <span class="n">enum</span><span class="p">:</span> <span class="n">make</span><span class="p">.</span><span class="n">VOLKSWAGEN</span><span class="p">,</span>
  <span class="n">no_match</span><span class="p">:</span> <span class="bp">False</span><span class="p">,</span>
<span class="p">}</span>
</code></pre></div>      </div>
    </blockquote>
  </div>
</div>

<h3 id="answers">Answers</h3>

<p>Since I was manually copying the prompt into the model’s web interface, I used
batches of 100–200 string sorted alphabetically. With API access, I could
have used <a href="https://en.wikipedia.org/w/index.php?title=Prompt_engineering&amp;oldid=1179231833#Retrieval-augmented_generation">retrieval-augmented generation</a> to create custom examples for
each string while sending them one at a time.</p>

<p>Splitting the data into batches helped the model figure out very short
entries. For example, the model failed when given <code class="language-plaintext highlighter-rouge">WNBG</code> (Winnebago) by
itself, but succeeded when I gave it the list:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>WINN
WINNE
WINNEBAG
WINNEBAGO
WINNI
WNBG
WNBGO
</code></pre></div></div>

<p>I believe seeing multiple short versions next to each other helped the model
infer the right mapping.</p>

<h3 id="performance">Performance</h3>

<p>I obtained the following performance on my 902 hand-mapped entries:</p>

<ul>
  <li>
    <p>The model correctly fixed 2 entries that I had gotten wrong.</p>
  </li>
  <li>
    <p>It matched 682 (75.6%) of my hand-labeled mappings.</p>
  </li>
  <li>
    <p>It missed 218 (24.1%) of the mappings, frequently using made-up enum values.</p>
  </li>
</ul>

<p>This is reasonably good performance, as finding wrong entries is pretty quick
(and many could be fixed with find and replace).</p>
<div class="footnotes" role="doc-endnotes">
  <ol>
    <li id="fn:make">

      <p>The “make” of a vehicle is the brand of the manufacturer, like ‘Honda’,
‘Ford’, ‘Tesla’, etc. <a href="#fnref:make" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
  </ol>
</div>]]></content><author><name>Alexander Gude</name></author><category term="generative-ai" /><category term="large-language-models" /><category term="machine-learning" /><category term="california-traffic-data" /><summary type="html"><![CDATA[Manually fixing messy data is tedious and slow. But thankfully, LLMs are pretty good at piecing together mangled text. Read on to find out how!]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://alexgude.com/files/llm-data/00045-1994538970-a_simple_color_pencil_drawing_a_robot,_inspecting_a_car,_holding_a_clipboard,_white_background.png" /><media:content medium="image" url="https://alexgude.com/files/llm-data/00045-1994538970-a_simple_color_pencil_drawing_a_robot,_inspecting_a_car,_holding_a_clipboard,_white_background.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">A 1850-mile Review of the RadWagon 3</title><link href="https://alexgude.com/blog/radwagon-long-term-review/" rel="alternate" type="text/html" title="A 1850-mile Review of the RadWagon 3" /><published>2023-07-24T00:00:00-07:00</published><updated>2023-07-24T00:00:00-07:00</updated><id>https://alexgude.com/blog/radwagon_long_term_review</id><content type="html" xml:base="https://alexgude.com/blog/radwagon-long-term-review/"><![CDATA[<p>My wife and I bought a RadWagon 3, an inexpensive electric cargo bike made by
<a href="https://www.radpowerbikes.com">Rad Power Bikes</a>, right before the pandemic hit in early 2020. We wanted
a cargo bike that we could use to haul kids around, and we decided on a cheap
one since we weren’t sure it would fit our lifestyle.</p>

<p>We’ve now put 1850 miles on the bike, mostly taking the kids to local parks.
After all the time spent with it, would we recommend it to another family?</p>

<p>In short: we <strong>love the utility an electric cargo bike offers</strong>, and I think
we will always have one in the garage to supplement our minivan, <strong>but the
RadWagon has some significant drawbacks</strong> that make recommending it
difficult. Read on for the full review.</p>

<h2 id="the-bike">The Bike</h2>

<p>We ordered the Rad Wagon from the Rad’s website for $1500. With a “caboose”
enclosure and pads for the kids adding $250, plus tax, our total was
$1901—not cheap, but almost a third of comparable cargo bikes which are in
the $4000–6000 range.</p>

<h3 id="assembly-and-adjustment">Assembly and Adjustment</h3>

<p>The bike comes in a box and you must assemble it yourself. The assembly was
not too hard, but I also have a lot of experience with bikes and bike
maintenance which helped.</p>

<p>The seat post and headset are highly adjustable, allowing people of varying
heights to ride the RadWagon. Both my wife (5’4”) and I (6’1”) can ride it
comfortably, but we’re both near the limits. I have the seat all the way up
and she has it all the way down.</p>

<h3 id="motor">Motor</h3>

<p>The 750W rear hub motor easily brings the bike to its 20 miles per hour
computer-limited top speed. The bike has a throttle, which I love for getting
started from a stop, and enough power to carry me, two kids, and some balance
bikes up a steep hill. The downside though is the hub motor puts a lot of
stress on the rear wheel.</p>

<h3 id="flaws">Flaws</h3>

<p>A flaw in the design is the rear brake. The RadWagon uses cheap, mechanical
disc brakes, which are enough to stop the bike when they’re well aligned, but
which need constant attention to keep them that way. The motor blocks the
typical through-spoke access for adjusting the rear brake. Instead, Rad makes
a special flat Allen wrench that fits between the brake and motor but
adjusting remains hard.</p>

<p>A major flaw is the rear spokes. They are stressed by both the motor—which
puts all its power through the rear wheel—and the cargo. The spokes were not
tight enough from the factory and I broke several in the first 200 miles. I
have broken fewer since replacing and retightening, but I still break one
periodically, which is annoying for me and likely a dealbreaker for less
experienced riders.</p>

<h2 id="support">Support</h2>

<p>I’ve contacted Rad’s support several times—to order spokes and the brake
tool, and to replace a faulty accessory. They were generally quick and helpful
but I’ve never needed support for other bikes. And the last interaction was
terrible: Rad’s front basket was defective, and after I sent them photographic
proof, they accused me of being unable to use a screw driver and stopped
responding. It was the worst support experience I’ve ever had.</p>

<h2 id="final-thoughts">Final Thoughts</h2>

<p>The RadWagon was a savior during the pandemic, letting us escape the house and
ride when we’d otherwise be trapped inside. It also beats driving kids in a
car—hauling them on the back makes getting to the park part of the fun.</p>

<p>But the bike needs constant maintenance that is difficult even for an
experienced mechanic, and Rad’s support is not great. I wish I had purchased a
higher-quality bike that wouldn’t fail so frequently.</p>]]></content><author><name>Alexander Gude</name></author><category term="opinions" /><summary type="html"><![CDATA[The RadWagon electric cargo bike was a savior during lockdown family rides, but frustrating maintenance and support issues disappoint. Read on for my in-depth review.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://alexgude.com/files/radwagon/loaded_radwagon_3.jpg" /><media:content medium="image" url="https://alexgude.com/files/radwagon/loaded_radwagon_3.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry></feed>