<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet href="../../styles/feed.xsl" type="text/xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-US">
  <id>https://www.suffix.be/feeds/blog.xml</id>
  <title>Suffix</title>
  <updated>2026-01-16T13:18:11+01:00</updated>
  <author>
    <name>Simon</name>
  </author>
  <link href="https://www.suffix.be/feeds/blog.xml" type="application/atom+xml" rel="self" />
  <link href="https://www.suffix.be/blog" type="text/html" />
  
    <entry>
      <id>https://www.suffix.be/blog/movies-watched-2025/</id>
      <title type="text">2025 Movie List</title>
      <link href="https://www.suffix.be/blog/movies-watched-2025/" />
      <link rel="alternate" type="text/html" href="https://www.suffix.be/blog/movies-watched-2025/" />
      <published>2026-01-08T11:00:00+01:00</published>
      <updated>2026-01-08T11:00:00+01:00</updated>
      
        <summary type="text">Movies I watched in 2025.</summary>
      
      <content type="html" xml:base="https://www.suffix.be/blog/movies-watched-2025/">
        &lt;p&gt;As the new year begins, it’s the time to look back. This year, I was reminded by &lt;a href=&quot;https://lazybea.rs/movies-2025/&quot; title=&quot;Movies of 2025 list by @hyde&quot;&gt;@hyde&lt;/a&gt;’s post that I noted down each of the movies I watched in 2025. Many of the films were rewatches that I enjoyed with the kids. While some were fantastic—&lt;a href=&quot;https://www.themoviedb.org/movie/496243&quot; title=&quot;Parasite @ TMDB&quot;&gt;Parasite&lt;/a&gt; being my favorite—and others simply acceptable, some of the sequels were a waste of time.&lt;/p&gt;

&lt;table style=&quot;width:100%&quot;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;Watched&lt;/th&gt;
      &lt;th&gt;Movie&lt;/th&gt;
      &lt;th&gt;Released&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    
      &lt;tr&gt;
        &lt;td&gt;&lt;time datetime=&quot;2025-01-01&quot;&gt;1 Jan&lt;/time&gt;&lt;/td&gt;
        &lt;td&gt;&lt;a href=&quot;https://www.themoviedb.org/movie/1593-night-at-the-museum&quot; title=&quot;Night at the Museum page @ TMDB&quot;&gt;Night at the Museum&lt;/a&gt;&lt;/td&gt;
        &lt;td&gt;&lt;time&gt;2006&lt;/time&gt;&lt;/td&gt;
      &lt;/tr&gt;
    
      &lt;tr&gt;
        &lt;td&gt;&lt;time datetime=&quot;2025-01-07&quot;&gt;7 Jan&lt;/time&gt;&lt;/td&gt;
        &lt;td&gt;&lt;a href=&quot;https://www.themoviedb.org/movie/1995-lara-croft-tomb-raider&quot; title=&quot;Lara Croft: Tomb Raider page @ TMDB&quot;&gt;Lara Croft: Tomb Raider&lt;/a&gt;&lt;/td&gt;
        &lt;td&gt;&lt;time&gt;2001&lt;/time&gt;&lt;/td&gt;
      &lt;/tr&gt;
    
      &lt;tr&gt;
        &lt;td&gt;&lt;time datetime=&quot;2025-01-08&quot;&gt;8 Jan&lt;/time&gt;&lt;/td&gt;
        &lt;td&gt;&lt;a href=&quot;https://www.themoviedb.org/movie/1222248-nr-24&quot; title=&quot;Number 24 page @ TMDB&quot;&gt;Number 24&lt;/a&gt;&lt;/td&gt;
        &lt;td&gt;&lt;time&gt;2024&lt;/time&gt;&lt;/td&gt;
      &lt;/tr&gt;
    
      &lt;tr&gt;
        &lt;td&gt;&lt;time datetime=&quot;2025-01-13&quot;&gt;13 Jan&lt;/time&gt;&lt;/td&gt;
        &lt;td&gt;&lt;a href=&quot;https://www.themoviedb.org/movie/1996-lara-croft-tomb-raider-the-cradle-of-life&quot; title=&quot;Lara Croft: Tomb Raider - The Cradle of Life page @ TMDB&quot;&gt;Lara Croft: Tomb Raider - The Cradle of Life&lt;/a&gt;&lt;/td&gt;
        &lt;td&gt;&lt;time&gt;2003&lt;/time&gt;&lt;/td&gt;
      &lt;/tr&gt;
    
      &lt;tr&gt;
        &lt;td&gt;&lt;time datetime=&quot;2025-01-18&quot;&gt;18 Jan&lt;/time&gt;&lt;/td&gt;
        &lt;td&gt;&lt;a href=&quot;https://www.themoviedb.org/movie/442065-the-last-full-measure&quot; title=&quot;The Last Full Measure page @ TMDB&quot;&gt;The Last Full Measure&lt;/a&gt;&lt;/td&gt;
        &lt;td&gt;&lt;time&gt;2020&lt;/time&gt;&lt;/td&gt;
      &lt;/tr&gt;
    
      &lt;tr&gt;
        &lt;td&gt;&lt;time datetime=&quot;2025-01-22&quot;&gt;22 Jan&lt;/time&gt;&lt;/td&gt;
        &lt;td&gt;&lt;a href=&quot;https://www.themoviedb.org/movie/1281775-flow&quot; title=&quot;Flow page @ TMDB&quot;&gt;Flow&lt;/a&gt;&lt;/td&gt;
        &lt;td&gt;&lt;time&gt;2024&lt;/time&gt;&lt;/td&gt;
      &lt;/tr&gt;
    
      &lt;tr&gt;
        &lt;td&gt;&lt;time datetime=&quot;2025-01-25&quot;&gt;25 Jan&lt;/time&gt;&lt;/td&gt;
        &lt;td&gt;&lt;a href=&quot;https://www.themoviedb.org/movie/813-airplane&quot; title=&quot;Airplane! page @ TMDB&quot;&gt;Airplane!&lt;/a&gt;&lt;/td&gt;
        &lt;td&gt;&lt;time&gt;1980&lt;/time&gt;&lt;/td&gt;
      &lt;/tr&gt;
    
      &lt;tr&gt;
        &lt;td&gt;&lt;time datetime=&quot;2025-01-25&quot;&gt;25 Jan&lt;/time&gt;&lt;/td&gt;
        &lt;td&gt;&lt;a href=&quot;https://www.themoviedb.org/movie/449443-den-of-thieves&quot; title=&quot;Den of Thieves page @ TMDB&quot;&gt;Den of Thieves&lt;/a&gt;&lt;/td&gt;
        &lt;td&gt;&lt;time&gt;2018&lt;/time&gt;&lt;/td&gt;
      &lt;/tr&gt;
    
      &lt;tr&gt;
        &lt;td&gt;&lt;time datetime=&quot;2025-01-28&quot;&gt;28 Jan&lt;/time&gt;&lt;/td&gt;
        &lt;td&gt;&lt;a href=&quot;https://www.themoviedb.org/movie/604685-den-of-thieves-2-pantera&quot; title=&quot;Den of Thieves 2: Pantera page @ TMDB&quot;&gt;Den of Thieves 2: Pantera&lt;/a&gt;&lt;/td&gt;
        &lt;td&gt;&lt;time&gt;2025&lt;/time&gt;&lt;/td&gt;
      &lt;/tr&gt;
    
      &lt;tr&gt;
        &lt;td&gt;&lt;time datetime=&quot;2025-01-28&quot;&gt;28 Jan&lt;/time&gt;&lt;/td&gt;
        &lt;td&gt;&lt;a href=&quot;https://www.themoviedb.org/movie/1241982-moana-2&quot; title=&quot;Moana 2 page @ TMDB&quot;&gt;Moana 2&lt;/a&gt;&lt;/td&gt;
        &lt;td&gt;&lt;time&gt;2024&lt;/time&gt;&lt;/td&gt;
      &lt;/tr&gt;
    
      &lt;tr&gt;
        &lt;td&gt;&lt;time datetime=&quot;2025-02-04&quot;&gt;4 Feb&lt;/time&gt;&lt;/td&gt;
        &lt;td&gt;&lt;a href=&quot;https://www.themoviedb.org/movie/76600-avatar-the-way-of-water&quot; title=&quot;Avatar: The Way of Water page @ TMDB&quot;&gt;Avatar: The Way of Water&lt;/a&gt;&lt;/td&gt;
        &lt;td&gt;&lt;time&gt;2022&lt;/time&gt;&lt;/td&gt;
      &lt;/tr&gt;
    
      &lt;tr&gt;
        &lt;td&gt;&lt;time datetime=&quot;2025-02-14&quot;&gt;14 Feb&lt;/time&gt;&lt;/td&gt;
        &lt;td&gt;&lt;a href=&quot;https://www.themoviedb.org/movie/562-die-hard&quot; title=&quot;Die Hard page @ TMDB&quot;&gt;Die Hard&lt;/a&gt;&lt;/td&gt;
        &lt;td&gt;&lt;time&gt;1988&lt;/time&gt;&lt;/td&gt;
      &lt;/tr&gt;
    
      &lt;tr&gt;
        &lt;td&gt;&lt;time datetime=&quot;2025-03-03&quot;&gt;3 Mar&lt;/time&gt;&lt;/td&gt;
        &lt;td&gt;&lt;a href=&quot;https://www.themoviedb.org/movie/575264-mission-impossible-dead-reckoning-part-one&quot; title=&quot;Mission: Impossible - Dead Reckoning Part One page @ TMDB&quot;&gt;Mission: Impossible - Dead Reckoning Part One&lt;/a&gt;&lt;/td&gt;
        &lt;td&gt;&lt;time&gt;2023&lt;/time&gt;&lt;/td&gt;
      &lt;/tr&gt;
    
      &lt;tr&gt;
        &lt;td&gt;&lt;time datetime=&quot;2025-03-15&quot;&gt;15 Mar&lt;/time&gt;&lt;/td&gt;
        &lt;td&gt;&lt;a href=&quot;https://www.themoviedb.org/movie/693134-dune-part-two&quot; title=&quot;Dune: Part Two page @ TMDB&quot;&gt;Dune: Part Two&lt;/a&gt;&lt;/td&gt;
        &lt;td&gt;&lt;time&gt;2024&lt;/time&gt;&lt;/td&gt;
      &lt;/tr&gt;
    
      &lt;tr&gt;
        &lt;td&gt;&lt;time datetime=&quot;2025-03-27&quot;&gt;27 Mar&lt;/time&gt;&lt;/td&gt;
        &lt;td&gt;&lt;a href=&quot;https://www.themoviedb.org/movie/762-monty-python-and-the-holy-grail&quot; title=&quot;Monty Python and the Holy Grail page @ TMDB&quot;&gt;Monty Python and the Holy Grail&lt;/a&gt;&lt;/td&gt;
        &lt;td&gt;&lt;time&gt;1975&lt;/time&gt;&lt;/td&gt;
      &lt;/tr&gt;
    
      &lt;tr&gt;
        &lt;td&gt;&lt;time datetime=&quot;2025-03-28&quot;&gt;28 Mar&lt;/time&gt;&lt;/td&gt;
        &lt;td&gt;&lt;a href=&quot;https://www.themoviedb.org/movie/20526-tron-legacy&quot; title=&quot;TRON: Legacy page @ TMDB&quot;&gt;TRON: Legacy&lt;/a&gt;&lt;/td&gt;
        &lt;td&gt;&lt;time&gt;2010&lt;/time&gt;&lt;/td&gt;
      &lt;/tr&gt;
    
      &lt;tr&gt;
        &lt;td&gt;&lt;time datetime=&quot;2025-03-28&quot;&gt;28 Mar&lt;/time&gt;&lt;/td&gt;
        &lt;td&gt;&lt;a href=&quot;https://www.themoviedb.org/movie/199-star-trek-first-contact&quot; title=&quot;Star Trek: First Contact page @ TMDB&quot;&gt;Star Trek: First Contact&lt;/a&gt;&lt;/td&gt;
        &lt;td&gt;&lt;time&gt;1996&lt;/time&gt;&lt;/td&gt;
      &lt;/tr&gt;
    
      &lt;tr&gt;
        &lt;td&gt;&lt;time datetime=&quot;2025-03-30&quot;&gt;30 Mar&lt;/time&gt;&lt;/td&gt;
        &lt;td&gt;&lt;a href=&quot;https://www.themoviedb.org/movie/101-leon&quot; title=&quot;Léon: The Professional page @ TMDB&quot;&gt;Léon: The Professional&lt;/a&gt;&lt;/td&gt;
        &lt;td&gt;&lt;time&gt;1994&lt;/time&gt;&lt;/td&gt;
      &lt;/tr&gt;
    
      &lt;tr&gt;
        &lt;td&gt;&lt;time datetime=&quot;2025-04-28&quot;&gt;28 Apr&lt;/time&gt;&lt;/td&gt;
        &lt;td&gt;&lt;a href=&quot;https://www.themoviedb.org/movie/135397-jurassic-world&quot; title=&quot;Jurassic World page @ TMDB&quot;&gt;Jurassic World&lt;/a&gt;&lt;/td&gt;
        &lt;td&gt;&lt;time&gt;2015&lt;/time&gt;&lt;/td&gt;
      &lt;/tr&gt;
    
      &lt;tr&gt;
        &lt;td&gt;&lt;time datetime=&quot;2025-05-07&quot;&gt;7 May&lt;/time&gt;&lt;/td&gt;
        &lt;td&gt;&lt;a href=&quot;https://www.themoviedb.org/movie/9836-happy-feet&quot; title=&quot;Happy Feet page @ TMDB&quot;&gt;Happy Feet&lt;/a&gt;&lt;/td&gt;
        &lt;td&gt;&lt;time&gt;2006&lt;/time&gt;&lt;/td&gt;
      &lt;/tr&gt;
    
      &lt;tr&gt;
        &lt;td&gt;&lt;time datetime=&quot;2025-06-15&quot;&gt;15 Jun&lt;/time&gt;&lt;/td&gt;
        &lt;td&gt;&lt;a href=&quot;https://www.themoviedb.org/movie/65759-happy-feet-two&quot; title=&quot;Happy Feet Two page @ TMDB&quot;&gt;Happy Feet Two&lt;/a&gt;&lt;/td&gt;
        &lt;td&gt;&lt;time&gt;2011&lt;/time&gt;&lt;/td&gt;
      &lt;/tr&gt;
    
      &lt;tr&gt;
        &lt;td&gt;&lt;time datetime=&quot;2025-07-13&quot;&gt;13 Jul&lt;/time&gt;&lt;/td&gt;
        &lt;td&gt;&lt;a href=&quot;https://www.themoviedb.org/movie/158852-tomorrowland&quot; title=&quot;Tomorrowland page @ TMDB&quot;&gt;Tomorrowland&lt;/a&gt;&lt;/td&gt;
        &lt;td&gt;&lt;time&gt;2015&lt;/time&gt;&lt;/td&gt;
      &lt;/tr&gt;
    
      &lt;tr&gt;
        &lt;td&gt;&lt;time datetime=&quot;2025-08-30&quot;&gt;30 Aug&lt;/time&gt;&lt;/td&gt;
        &lt;td&gt;&lt;a href=&quot;https://www.themoviedb.org/movie/22-pirates-of-the-caribbean-the-curse-of-the-black-pearl&quot; title=&quot;Pirates of the Caribbean: The Curse of the Black Pearl page @ TMDB&quot;&gt;Pirates of the Caribbean: The Curse of the Black Pearl&lt;/a&gt;&lt;/td&gt;
        &lt;td&gt;&lt;time&gt;2003&lt;/time&gt;&lt;/td&gt;
      &lt;/tr&gt;
    
      &lt;tr&gt;
        &lt;td&gt;&lt;time datetime=&quot;2025-08-31&quot;&gt;31 Aug&lt;/time&gt;&lt;/td&gt;
        &lt;td&gt;&lt;a href=&quot;https://www.themoviedb.org/movie/58-pirates-of-the-caribbean-dead-man-s-chest&quot; title=&quot;Pirates of the Caribbean: Dead Man’s Chest page @ TMDB&quot;&gt;Pirates of the Caribbean: Dead Man’s Chest&lt;/a&gt;&lt;/td&gt;
        &lt;td&gt;&lt;time&gt;2006&lt;/time&gt;&lt;/td&gt;
      &lt;/tr&gt;
    
      &lt;tr&gt;
        &lt;td&gt;&lt;time datetime=&quot;2025-08-31&quot;&gt;31 Aug&lt;/time&gt;&lt;/td&gt;
        &lt;td&gt;&lt;a href=&quot;https://www.themoviedb.org/movie/744653-the-thursday-murder-club&quot; title=&quot;The Thursday Murder Club page @ TMDB&quot;&gt;The Thursday Murder Club&lt;/a&gt;&lt;/td&gt;
        &lt;td&gt;&lt;time&gt;2025&lt;/time&gt;&lt;/td&gt;
      &lt;/tr&gt;
    
      &lt;tr&gt;
        &lt;td&gt;&lt;time datetime=&quot;2025-09-05&quot;&gt;5 Sep&lt;/time&gt;&lt;/td&gt;
        &lt;td&gt;&lt;a href=&quot;https://www.themoviedb.org/movie/285-pirates-of-the-caribbean-at-world-s-end&quot; title=&quot;Pirates of the Caribbean: At World’s End page @ TMDB&quot;&gt;Pirates of the Caribbean: At World’s End&lt;/a&gt;&lt;/td&gt;
        &lt;td&gt;&lt;time&gt;2007&lt;/time&gt;&lt;/td&gt;
      &lt;/tr&gt;
    
      &lt;tr&gt;
        &lt;td&gt;&lt;time datetime=&quot;2025-09-12&quot;&gt;12 Sep&lt;/time&gt;&lt;/td&gt;
        &lt;td&gt;&lt;a href=&quot;https://www.themoviedb.org/movie/321612-beauty-and-the-beast&quot; title=&quot;Beauty and the Beast page @ TMDB&quot;&gt;Beauty and the Beast&lt;/a&gt;&lt;/td&gt;
        &lt;td&gt;&lt;time&gt;2017&lt;/time&gt;&lt;/td&gt;
      &lt;/tr&gt;
    
      &lt;tr&gt;
        &lt;td&gt;&lt;time datetime=&quot;2025-09-13&quot;&gt;13 Sep&lt;/time&gt;&lt;/td&gt;
        &lt;td&gt;&lt;a href=&quot;https://www.themoviedb.org/movie/950387-a-minecraft-movie&quot; title=&quot;A Minecraft Movie page @ TMDB&quot;&gt;A Minecraft Movie&lt;/a&gt;&lt;/td&gt;
        &lt;td&gt;&lt;time&gt;2025&lt;/time&gt;&lt;/td&gt;
      &lt;/tr&gt;
    
      &lt;tr&gt;
        &lt;td&gt;&lt;time datetime=&quot;2025-10-02&quot;&gt;2 Oct&lt;/time&gt;&lt;/td&gt;
        &lt;td&gt;&lt;a href=&quot;https://www.themoviedb.org/movie/227306-unbroken&quot; title=&quot;Unbroken page @ TMDB&quot;&gt;Unbroken&lt;/a&gt;&lt;/td&gt;
        &lt;td&gt;&lt;time&gt;2014&lt;/time&gt;&lt;/td&gt;
      &lt;/tr&gt;
    
      &lt;tr&gt;
        &lt;td&gt;&lt;time datetime=&quot;2025-10-03&quot;&gt;3 Oct&lt;/time&gt;&lt;/td&gt;
        &lt;td&gt;&lt;a href=&quot;https://www.themoviedb.org/movie/447277-the-little-mermaid&quot; title=&quot;The Little Mermaid page @ TMDB&quot;&gt;The Little Mermaid&lt;/a&gt;&lt;/td&gt;
        &lt;td&gt;&lt;time&gt;2023&lt;/time&gt;&lt;/td&gt;
      &lt;/tr&gt;
    
      &lt;tr&gt;
        &lt;td&gt;&lt;time datetime=&quot;2025-10-04&quot;&gt;4 Oct&lt;/time&gt;&lt;/td&gt;
        &lt;td&gt;&lt;a href=&quot;https://www.themoviedb.org/movie/274870-passengers&quot; title=&quot;Passengers page @ TMDB&quot;&gt;Passengers&lt;/a&gt;&lt;/td&gt;
        &lt;td&gt;&lt;time&gt;2016&lt;/time&gt;&lt;/td&gt;
      &lt;/tr&gt;
    
      &lt;tr&gt;
        &lt;td&gt;&lt;time datetime=&quot;2025-10-10&quot;&gt;10 Oct&lt;/time&gt;&lt;/td&gt;
        &lt;td&gt;&lt;a href=&quot;https://www.themoviedb.org/movie/1865-pirates-of-the-caribbean-on-stranger-tides&quot; title=&quot;Pirates of the Caribbean: On Stranger Tides page @ TMDB&quot;&gt;Pirates of the Caribbean: On Stranger Tides&lt;/a&gt;&lt;/td&gt;
        &lt;td&gt;&lt;time&gt;2011&lt;/time&gt;&lt;/td&gt;
      &lt;/tr&gt;
    
      &lt;tr&gt;
        &lt;td&gt;&lt;time datetime=&quot;2025-10-10&quot;&gt;10 Oct&lt;/time&gt;&lt;/td&gt;
        &lt;td&gt;&lt;a href=&quot;https://www.themoviedb.org/movie/9486-johnny-english&quot; title=&quot;Johnny English page @ TMDB&quot;&gt;Johnny English&lt;/a&gt;&lt;/td&gt;
        &lt;td&gt;&lt;time&gt;2003&lt;/time&gt;&lt;/td&gt;
      &lt;/tr&gt;
    
      &lt;tr&gt;
        &lt;td&gt;&lt;time datetime=&quot;2025-10-25&quot;&gt;25 Oct&lt;/time&gt;&lt;/td&gt;
        &lt;td&gt;&lt;a href=&quot;https://www.themoviedb.org/movie/177677-mission-impossible-rogue-nation&quot; title=&quot;Mission: Impossible - Rogue Nation page @ TMDB&quot;&gt;Mission: Impossible - Rogue Nation&lt;/a&gt;&lt;/td&gt;
        &lt;td&gt;&lt;time&gt;2015&lt;/time&gt;&lt;/td&gt;
      &lt;/tr&gt;
    
      &lt;tr&gt;
        &lt;td&gt;&lt;time datetime=&quot;2025-10-27&quot;&gt;27 Oct&lt;/time&gt;&lt;/td&gt;
        &lt;td&gt;&lt;a href=&quot;https://www.themoviedb.org/movie/166426-pirates-of-the-caribbean-dead-men-tell-no-tales&quot; title=&quot;Pirates of the Caribbean: Dead Men Tell No Tales page @ TMDB&quot;&gt;Pirates of the Caribbean: Dead Men Tell No Tales&lt;/a&gt;&lt;/td&gt;
        &lt;td&gt;&lt;time&gt;2017&lt;/time&gt;&lt;/td&gt;
      &lt;/tr&gt;
    
      &lt;tr&gt;
        &lt;td&gt;&lt;time datetime=&quot;2025-10-29&quot;&gt;29 Oct&lt;/time&gt;&lt;/td&gt;
        &lt;td&gt;&lt;a href=&quot;https://www.themoviedb.org/movie/118340-guardians-of-the-galaxy&quot; title=&quot;Guardians of the Galaxy page @ TMDB&quot;&gt;Guardians of the Galaxy&lt;/a&gt;&lt;/td&gt;
        &lt;td&gt;&lt;time&gt;2014&lt;/time&gt;&lt;/td&gt;
      &lt;/tr&gt;
    
      &lt;tr&gt;
        &lt;td&gt;&lt;time datetime=&quot;2025-11-11&quot;&gt;11 Nov&lt;/time&gt;&lt;/td&gt;
        &lt;td&gt;&lt;a href=&quot;https://www.themoviedb.org/movie/331-jurassic-park-iii&quot; title=&quot;Jurassic Park III page @ TMDB&quot;&gt;Jurassic Park III&lt;/a&gt;&lt;/td&gt;
        &lt;td&gt;&lt;time&gt;2001&lt;/time&gt;&lt;/td&gt;
      &lt;/tr&gt;
    
      &lt;tr&gt;
        &lt;td&gt;&lt;time datetime=&quot;2025-11-25&quot;&gt;25 Nov&lt;/time&gt;&lt;/td&gt;
        &lt;td&gt;&lt;a href=&quot;https://www.themoviedb.org/movie/335984-blade-runner-2049&quot; title=&quot;Blade Runner 2049 page @ TMDB&quot;&gt;Blade Runner 2049&lt;/a&gt;&lt;/td&gt;
        &lt;td&gt;&lt;time&gt;2017&lt;/time&gt;&lt;/td&gt;
      &lt;/tr&gt;
    
      &lt;tr&gt;
        &lt;td&gt;&lt;time datetime=&quot;2025-11-30&quot;&gt;30 Nov&lt;/time&gt;&lt;/td&gt;
        &lt;td&gt;&lt;a href=&quot;https://www.themoviedb.org/movie/359724-ford-v-ferrari&quot; title=&quot;Ford v Ferrari page @ TMDB&quot;&gt;Ford v Ferrari&lt;/a&gt;&lt;/td&gt;
        &lt;td&gt;&lt;time&gt;2019&lt;/time&gt;&lt;/td&gt;
      &lt;/tr&gt;
    
      &lt;tr&gt;
        &lt;td&gt;&lt;time datetime=&quot;2025-12-03&quot;&gt;3 Dec&lt;/time&gt;&lt;/td&gt;
        &lt;td&gt;&lt;a href=&quot;https://www.themoviedb.org/movie/1323475-champagne-problems&quot; title=&quot;Champagne Problems page @ TMDB&quot;&gt;Champagne Problems&lt;/a&gt;&lt;/td&gt;
        &lt;td&gt;&lt;time&gt;2025&lt;/time&gt;&lt;/td&gt;
      &lt;/tr&gt;
    
      &lt;tr&gt;
        &lt;td&gt;&lt;time datetime=&quot;2025-12-06&quot;&gt;6 Dec&lt;/time&gt;&lt;/td&gt;
        &lt;td&gt;&lt;a href=&quot;https://www.themoviedb.org/movie/286217-the-martian&quot; title=&quot;The Martian page @ TMDB&quot;&gt;The Martian&lt;/a&gt;&lt;/td&gt;
        &lt;td&gt;&lt;time&gt;2015&lt;/time&gt;&lt;/td&gt;
      &lt;/tr&gt;
    
      &lt;tr&gt;
        &lt;td&gt;&lt;time datetime=&quot;2025-12-12&quot;&gt;12 Dec&lt;/time&gt;&lt;/td&gt;
        &lt;td&gt;&lt;a href=&quot;https://www.themoviedb.org/movie/1241894-woodwalkers&quot; title=&quot;Woodwalkers page @ TMDB&quot;&gt;Woodwalkers&lt;/a&gt;&lt;/td&gt;
        &lt;td&gt;&lt;time&gt;2024&lt;/time&gt;&lt;/td&gt;
      &lt;/tr&gt;
    
      &lt;tr&gt;
        &lt;td&gt;&lt;time datetime=&quot;2025-12-20&quot;&gt;20 Dec&lt;/time&gt;&lt;/td&gt;
        &lt;td&gt;&lt;a href=&quot;https://www.themoviedb.org/movie/1084242-zootopia-2&quot; title=&quot;Zootopia 2 page @ TMDB&quot;&gt;Zootopia 2&lt;/a&gt;&lt;/td&gt;
        &lt;td&gt;&lt;time&gt;2025&lt;/time&gt;&lt;/td&gt;
      &lt;/tr&gt;
    
      &lt;tr&gt;
        &lt;td&gt;&lt;time datetime=&quot;2025-12-20&quot;&gt;20 Dec&lt;/time&gt;&lt;/td&gt;
        &lt;td&gt;&lt;a href=&quot;https://www.themoviedb.org/movie/496243&quot; title=&quot;Parasite page @ TMDB&quot;&gt;Parasite&lt;/a&gt;&lt;/td&gt;
        &lt;td&gt;&lt;time&gt;2019&lt;/time&gt;&lt;/td&gt;
      &lt;/tr&gt;
    
      &lt;tr&gt;
        &lt;td&gt;&lt;time datetime=&quot;2025-12-22&quot;&gt;22 Dec&lt;/time&gt;&lt;/td&gt;
        &lt;td&gt;&lt;a href=&quot;https://www.themoviedb.org/movie/37136-the-naked-gun-from-the-files-of-police-squad&quot; title=&quot;The Naked Gun: From the Files of Police Squad! page @ TMDB&quot;&gt;The Naked Gun: From the Files of Police Squad!&lt;/a&gt;&lt;/td&gt;
        &lt;td&gt;&lt;time&gt;1988&lt;/time&gt;&lt;/td&gt;
      &lt;/tr&gt;
    
      &lt;tr&gt;
        &lt;td&gt;&lt;time datetime=&quot;2025-12-23&quot;&gt;23 Dec&lt;/time&gt;&lt;/td&gt;
        &lt;td&gt;&lt;a href=&quot;https://www.themoviedb.org/movie/58233-johnny-english-reborn&quot; title=&quot;Johnny English Reborn page @ TMDB&quot;&gt;Johnny English Reborn&lt;/a&gt;&lt;/td&gt;
        &lt;td&gt;&lt;time&gt;2011&lt;/time&gt;&lt;/td&gt;
      &lt;/tr&gt;
    
      &lt;tr&gt;
        &lt;td&gt;&lt;time datetime=&quot;2025-12-30&quot;&gt;30 Dec&lt;/time&gt;&lt;/td&gt;
        &lt;td&gt;&lt;a href=&quot;https://www.themoviedb.org/movie/8467-dumb-and-dumber&quot; title=&quot;Dumb and Dumber page @ TMDB&quot;&gt;Dumb and Dumber&lt;/a&gt;&lt;/td&gt;
        &lt;td&gt;&lt;time&gt;1994&lt;/time&gt;&lt;/td&gt;
      &lt;/tr&gt;
    
  &lt;/tbody&gt;
&lt;/table&gt;

      </content>
      <author>
        <name>Simon</name>
      </author>
    </entry>
  
    <entry>
      <id>https://www.suffix.be/blog/2025-in-review/</id>
      <title type="text">2025 in Review</title>
      <link href="https://www.suffix.be/blog/2025-in-review/" />
      <link rel="alternate" type="text/html" href="https://www.suffix.be/blog/2025-in-review/" />
      <published>2025-12-30T15:00:00+01:00</published>
      <updated>2025-12-30T15:00:00+01:00</updated>
      
        <summary type="text">Reflecting on the past and looking ahead to the next.</summary>
      
      <content type="html" xml:base="https://www.suffix.be/blog/2025-in-review/">
        &lt;h2&gt;Life Changes&lt;/h2&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;p&gt;Alcohol&lt;/p&gt;
    &lt;p&gt;For reasons I can’t quite explain, I began tracking my alcohol consumption in 2025. While I don’t drink excessively—my wife and I stopped drinking alcohol at home when she was pregnant—I still enjoy a drink occasionally during social gatherings. This year, I logged 40 alcoholic consumptions using the iOS Health app, and surprisingly, it led to me drinking less. The simple act of keeping track seemed to unconsciously curb my consumption.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Running&lt;/p&gt;
    &lt;p&gt;Throughout most of 2025, I met up with a friend once a week to run just over 5 kilometers. Nothing to write home about. However, come autumn, I decided to gradually increase my runs to three times a week, aiming to hit 10 kilometers by the end of the year. So far, so good—now I just need to keep it up to achieve some real distances in 2026.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;Reading &amp; Writing&lt;/h2&gt;

&lt;ol start=&quot;3&quot;&gt;
  &lt;li&gt;
    &lt;p&gt;Reading&lt;/p&gt;
    &lt;p&gt;&lt;em&gt;The Life of Puppets&lt;/em&gt; by T.J. Klune was my favorite book discovery of the year. I shared my thoughts on the other books I read in my &lt;a href=&quot;../2025-reading-list/&quot; title=&quot;All the books I read in 2025&quot;&gt;2025 Reading List&lt;/a&gt;. Unfortunately, reading has remained mostly a holiday activity. I wish I could immerse myself in more books throughout the year, but life always seems to get in the way.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Writing&lt;/p&gt;
    &lt;p&gt;In 2025, I wrote 12 blog posts, including this one. While it’s not huge, I feel content as long as I keep writing a few times each year. It’s a fun way to look back on different phases of my life.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;Purchases&lt;/h2&gt;

&lt;ol start=&quot;5&quot;&gt;
  &lt;li&gt;
    &lt;p&gt;3D Printer&lt;/p&gt;
    &lt;p&gt;I’ve contemplated getting a 3D printer for years, unsure whether it would be a useful tool or just an expensive toy once the novelty wore off. This year, I discovered that &lt;a href=&quot;https://www.prusa3d.com/product/prusa-core-one-kit/&quot; title=&quot;Prusa CORE ONE kit product page&quot;&gt;Prusa&lt;/a&gt; offers kits that you can assemble yourself. With my kids at the perfect age for this kind of project, it sounded like a fantastic opportunity—essentially, a grown-up LEGO kit. We &lt;a href=&quot;../prusa-3d-printer/&quot; title=&quot;My post about assembling the printer&quot;&gt;built our first printer&lt;/a&gt; together, and we had an absolute blast!&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Slim Wallet&lt;/p&gt;
    &lt;p&gt;A few months ago, I bought myself a &lt;a href=&quot;https://bellroy.com/products/card-pocket?color=caramel&quot; title=&quot;Bellroy Card Pocket product page&quot;&gt;Bellroy Card Pocket&lt;/a&gt; on a whim. It’s a slim wallet designed to hold around five credit cards and some pocket change. I even replaced my old booklet-style driver’s license with a new credit card-sized version for it to fit. This has probably been one of my best purchases this year. If only it had &lt;abbr title=&quot;Radio-Frequency IDentification&quot;&gt;RFID&lt;/abbr&gt; blocking.&lt;/p&gt;
    &lt;figure&gt;
      &lt;picture&gt;
        &lt;img src=&quot;../../assets/bellroy-wallet.webp&quot; width=&quot;300&quot; height=&quot;191&quot; alt=&quot;Dithered photo of my Bellroy Card Pocket wallet&quot;&gt;
      &lt;/picture&gt;
    &lt;/figure&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;Goals&lt;/h2&gt;

&lt;p&gt;What I would like to achieve in 2026.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;Carless&lt;/p&gt;
    &lt;p&gt;In late autumn the car mechanic told us a routine maintenance would no longer cut it; more expensive repairs would be needed. We took this as an excuse to take a last trip to Switzerland with our car and sell it. We’ll try to get by without a car in 2026. We already do most by bike and public transport, but having a car is a convenience, of course. I am really looking forward to a carless life again; my family not so. We’ll see how this goes.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Marathon&lt;/p&gt;
    &lt;p&gt;I hope to run a marathon with my dad next year; we’re aiming for the &lt;a href=&quot;https://athorabrugesmarathon.com&quot; title=&quot;Official Bruges Marathon website&quot;&gt;Bruges Marathon&lt;/a&gt; in October because the course is flat and close to home. Finishing a marathon with my father would be a personal highlight!&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Travel&lt;/p&gt;
    &lt;p&gt;Plan a trip with the kids somewhere outside of Europe; they’ve been asking to visit some more exotic destinations.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;


      </content>
      <author>
        <name>Simon</name>
      </author>
    </entry>
  
    <entry>
      <id>https://www.suffix.be/blog/dirtying-documents/</id>
      <title type="text">Sharing Sensitive Documents</title>
      <link href="https://www.suffix.be/blog/dirtying-documents/" />
      <link rel="alternate" type="text/html" href="https://www.suffix.be/blog/dirtying-documents/" />
      <published>2025-12-19T11:00:00+01:00</published>
      <updated>2025-12-19T11:00:00+01:00</updated>
      
        <summary type="text">Dirtying the documents I share online.</summary>
      
      <content type="html" xml:base="https://www.suffix.be/blog/dirtying-documents/">
        &lt;figure&gt;
  &lt;picture&gt;
    &lt;img src=&quot;../../assets/steganography.svg&quot; width=&quot;200&quot; height=&quot;144&quot; alt=&quot;Doodle of a loupe inspecting a photo&quot;&gt;
  &lt;/picture&gt;
&lt;/figure&gt;

&lt;p&gt;Sharing sensitive personal information online—whether it’s a national ID, driver’s license, or passport—always makes me uneasy. With data breaches being a matter of “when, not if,” it’s important to minimize our digital footprint.&lt;/p&gt;

&lt;p&gt;While the best defense is simply not sharing the data at all, modern life often makes that impossible. Whether you’re renting a holiday cottage, opening a bank account, or complying with some website’s verification process, you eventually have to share sensitive documents.&lt;/p&gt;

&lt;p&gt;I like “dirtying” my documents to make them less valuable to hackers and easier to track if a leak occurs.&lt;/p&gt;

&lt;h2&gt;Lower Quality&lt;/h2&gt;

&lt;p&gt;Before I upload anything, I strip the EXIF data (metadata like location and device info), resize the image, and convert it to grayscale.&lt;/p&gt;

&lt;p&gt;If my data is stolen, it’s easier to prove the source if the scan is low-resolution and looks “off.” It hopefully also makes the document less useful for identity theft if the quality is lacking.&lt;/p&gt;

&lt;p&gt;No one needs a 4000×3000 pixel, high-fidelity photo of my ID. High resolution only helps bad actors. I downsize the image with squoosh.app and convert it to a JPEG with around 70% quality. This intentional quality loss is a bonus; it remains legible for verification but loses the pristine look in case of forgery.&lt;/p&gt;

&lt;h2&gt;Visual Watermark&lt;/h2&gt;

&lt;p&gt;Next, I add an almost transparent watermark. This helps identify who lost my data in the case of a data breach. I include the name of the service I am sharing it with.&lt;/p&gt;

&lt;p&gt;ImageMagick can do this, of course. It places the text in the center with low opacity—enough to be legible, but not so much that it jumps out too much.&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;magick input.jpg &lt;span class=&quot;nt&quot;&gt;-pointsize&lt;/span&gt; 72 &lt;span class=&quot;nt&quot;&gt;-gravity&lt;/span&gt; center &lt;span class=&quot;nt&quot;&gt;-fill&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;rgba(255,255,255,0.3)&quot;&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-annotate&lt;/span&gt; 0 &lt;span class=&quot;s2&quot;&gt;&quot;EXAMPLE.COM&quot;&lt;/span&gt; to_share.jpg&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;I often play with the &lt;abbr title=&quot;Red Green Blue Alpha&quot;&gt;RGBA&lt;/abbr&gt; settings to fine-tune the opacity depending on the document’s background.&lt;/p&gt;

&lt;h2&gt;Steganography&lt;/h2&gt;

&lt;p&gt;This week, I added an extra layer of invisible tracking using steganography to my workflow. This embeds a hidden text note directly into the image data.&lt;/p&gt;

&lt;p&gt;You must do this after watermarking and resizing, as those processes will destroy the hidden metadata.&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;steghide embed &lt;span class=&quot;nt&quot;&gt;-cf&lt;/span&gt; to_share.jpg &lt;span class=&quot;nt&quot;&gt;-ef&lt;/span&gt; &amp;lt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;Shared with example.com in 2025&quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Alternatively, you can use the hyphen method shown below. However, note that passing a password directly within the command is less secure, as it may be recorded in your shell history.&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span class=&quot;nb&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;Shared with example.com in 2025&quot;&lt;/span&gt; | steghide embed &lt;span class=&quot;nt&quot;&gt;-cf&lt;/span&gt; to_share.jpg &lt;span class=&quot;nt&quot;&gt;-p&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&quot;&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-ef&lt;/span&gt; -&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Now, the file itself contains a hidden “receipt” of when and where it was uploaded. The embedded data can be extracted via:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;steghide extract &lt;span class=&quot;nt&quot;&gt;-sf&lt;/span&gt; to_share.jpg &lt;span class=&quot;nt&quot;&gt;-xf&lt;/span&gt; extract.txt&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;h2&gt;Reality Check&lt;/h2&gt;

&lt;p&gt;It is important to note that these methods are not waterproof:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Steganography is fragile; if the receiving website automatically resizes my upload, the hidden note is gone.&lt;/li&gt;
  &lt;li&gt;Watermarks can, of course, be manually edited out.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;However, these steps provide me some peace of mind. By adding layers of friction, my data is that little harder to use for automated identity theft.&lt;/p&gt;

      </content>
      <author>
        <name>Simon</name>
      </author>
    </entry>
  
    <entry>
      <id>https://www.suffix.be/blog/2025-reading-list/</id>
      <title type="text">2025 Reading List</title>
      <link href="https://www.suffix.be/blog/2025-reading-list/" />
      <link rel="alternate" type="text/html" href="https://www.suffix.be/blog/2025-reading-list/" />
      <published>2025-12-14T15:00:00+01:00</published>
      <updated>2025-12-14T15:00:00+01:00</updated>
      
        <summary type="text">Books I read in 2025.</summary>
      
      <content type="html" xml:base="https://www.suffix.be/blog/2025-reading-list/">
        &lt;figure&gt;
  &lt;img src=&quot;../../assets/ereader.jpg&quot; alt=&quot;eReader&quot;&gt;
&lt;/figure&gt;

&lt;p&gt;Following the habit of my &lt;a href=&quot;../2014-reading-list&quot; title=&quot;Books I read in 2014&quot;&gt;2014&lt;/a&gt; and &lt;a href=&quot;../2024-reading-list&quot; title=&quot;Books I read in 2024&quot;&gt;2024&lt;/a&gt; reading lists, I keep track of the books I read during the year. I matched last year’s reading volume. At 9 books per year, that is not something to brag about. I still find myself falling into the trap of watching an unmemorable YouTube video instead of reading a few pages before bed. Perhaps &lt;time datetime=&quot;2026&quot;&gt;2026&lt;/time&gt; can bring a change?&lt;/p&gt;

&lt;div typeof=&quot;Book&quot; resource=&quot;#murderbot&quot;&gt;
  &lt;div property=&quot;review&quot; typeof=&quot;Review&quot;&gt;
    &lt;h2 property=&quot;name&quot; about=&quot;#murderbot&quot;&gt;The Murderbot Diaries&lt;/h2&gt;
    &lt;p&gt;
      &lt;time property=&quot;datePublished&quot; about=&quot;#murderbot&quot;&gt;2017 &amp; 2018&lt;/time&gt;,
      &lt;span property=&quot;author&quot; resource=&quot;#wells&quot; about=&quot;#murderbot&quot;&gt;&lt;span property=&quot;name&quot; typeof=&quot;Person&quot; about=&quot;#wells&quot; translate=&quot;no&quot;&gt;Martha Wells&lt;/span&gt;&lt;/span&gt;,
      &lt;span property=&quot;reviewRating&quot; typeof=&quot;Rating&quot;&gt;&lt;meta property=&quot;bestRating&quot; content=&quot;5&quot;&gt;&lt;meta property=&quot;ratingValue&quot; content=&quot;4&quot;&gt;★★★★☆&lt;/span&gt;
    &lt;/p&gt;
    &lt;link property=&quot;bookFormat&quot; href=&quot;https://schema.org/EBook&quot;&gt;

    &lt;div property=&quot;reviewBody&quot;&gt;
      &lt;p&gt;I dove into Martha Wells’ “The Murderbot Diaries” series, and I absolutely loved the first two installments.&lt;/p&gt;

      &lt;p&gt;The story is narrated by a self-aware, part-human, part-robot Security Unit  who calls itself “Murderbot.” It has secretly hacked its governor module, gaining independence, but mostly just wants to be left alone to watch endless hours of media. Murderbot is assigned to protect a team of scientists surveying a planet. When the mission is unexpectedly compromised, Murderbot must reluctantly stop binging its soap operas and protect the humans.&lt;/p&gt;

      &lt;p&gt;While the stories aren’t deeply complex or filled with unexpected plot twists, I thoroughly enjoyed the easy, fast-paced read and Murderbot’s character development. The first book was immediately engaging, though I found the second one slightly less compelling.&lt;/p&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;div typeof=&quot;Book&quot; resource=&quot;#snow&quot;&gt;
  &lt;div property=&quot;review&quot; typeof=&quot;Review&quot;&gt;
    &lt;h2 property=&quot;name&quot; about=&quot;#snow&quot;&gt;Snow Crash&lt;/h2&gt;
    &lt;p&gt;
      &lt;time property=&quot;datePublished&quot; about=&quot;#snow&quot;&gt;1992&lt;/time&gt;,
      &lt;span property=&quot;author&quot; resource=&quot;#stephenson&quot; about=&quot;#snow&quot;&gt;&lt;span property=&quot;name&quot; typeof=&quot;Person&quot; about=&quot;#stephenson&quot; translate=&quot;no&quot;&gt;Neal Stephenson&lt;/span&gt;&lt;/span&gt;,
      &lt;span property=&quot;reviewRating&quot; typeof=&quot;Rating&quot;&gt;&lt;meta property=&quot;bestRating&quot; content=&quot;5&quot;&gt;&lt;meta property=&quot;ratingValue&quot; content=&quot;4&quot;&gt;★★★★☆&lt;/span&gt;
    &lt;/p&gt;
    &lt;link property=&quot;bookFormat&quot; href=&quot;https://schema.org/EBook&quot;&gt;

    &lt;div property=&quot;reviewBody&quot;&gt;
      &lt;p&gt;Keeping with the sci-fi theme, I finally made time for Snow Crash—a true classic of the cyberpunk genre.&lt;/p&gt;

      &lt;p&gt;Snow Crash is a cyberpunk novel set in a dystopian future America where the government has been replaced by privatized, corporate-run gated communities. Hiro Protagonist—a hacker, samurai swordsman, and Mafia pizza delivery driver—uncovers the secret of “Snow Crash,” a powerful neuro-linguistic virus. This virus operates as both a digital drug in the Metaverse (a term the book coined) and a real-world biological agent, threatening to infect and control everyone.&lt;/p&gt;

      &lt;p&gt;I particularly enjoyed its distinct early-90s vibe. Despite being set in the future, the hacking culture and nascent internet brought me back to my own teenage years.&lt;/p&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;div typeof=&quot;Book&quot; resource=&quot;#puppets&quot;&gt;
  &lt;div property=&quot;review&quot; typeof=&quot;Review&quot;&gt;
    &lt;h2 property=&quot;name&quot; about=&quot;#puppets&quot;&gt;In the Lives of Puppets&lt;/h2&gt;
    &lt;p&gt;
      &lt;time property=&quot;datePublished&quot; about=&quot;#puppets&quot;&gt;2023&lt;/time&gt;,
      &lt;span property=&quot;author&quot; resource=&quot;#klune&quot; about=&quot;#puppets&quot;&gt;&lt;span property=&quot;name&quot; typeof=&quot;Person&quot; about=&quot;#klune&quot; translate=&quot;no&quot;&gt;T.J. Klune&lt;/span&gt;&lt;/span&gt;,
      &lt;span property=&quot;reviewRating&quot; typeof=&quot;Rating&quot;&gt;&lt;meta property=&quot;bestRating&quot; content=&quot;5&quot;&gt;&lt;meta property=&quot;ratingValue&quot; content=&quot;4&quot;&gt;&lt;meta property=&quot;bestRating&quot; content=&quot;5&quot;&gt;&lt;meta property=&quot;ratingValue&quot; content=&quot;4&quot;&gt;★★★★☆&lt;/span&gt;
    &lt;/p&gt;
    &lt;link property=&quot;bookFormat&quot; href=&quot;https://schema.org/EBook&quot;&gt;

    &lt;div property=&quot;reviewBody&quot;&gt;
      &lt;p&gt;This book had been languishing on my shelf for quite some time. I finally picked it up, somewhat reluctantly, during the holidays when I had run out of other books. What a delightful surprise—it turned out to be my best read of the year.&lt;/p&gt;

      &lt;p&gt;In the Lives of Puppets is a post-apocalyptic sci-fi story loosely inspired by the story of Pinocchio. Victor is raised in a forest home by his father, alongside two eccentric robot companions: the abrasive nurse machine Nurse Ratched and the anxious vacuum Rambo. Their peaceful, found-family existence is shattered when Victor salvages and repairs a mysterious, amnesiac android.&lt;/p&gt;

      &lt;p&gt;I went into this story blind, and it rewarded me with plot twists and turns I genuinely didn’t expect. While the relationship between Victor and his father is the heart of the story, my favorite character was undoubtedly his sidekick, Nurse Ratched, with her hilarious dark humor.&lt;/p&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;div typeof=&quot;Book&quot; resource=&quot;#1q84&quot;&gt;
  &lt;div property=&quot;review&quot; typeof=&quot;Review&quot;&gt;
    &lt;h2 property=&quot;name&quot; about=&quot;#1q84&quot;&gt;1Q84&lt;/h2&gt;
    &lt;p&gt;
      &lt;time property=&quot;datePublished&quot; about=&quot;#1q84&quot;&gt;1012&lt;/time&gt;,
      &lt;span property=&quot;author&quot; resource=&quot;#murakami&quot; about=&quot;#1q84&quot;&gt;&lt;span property=&quot;name&quot; typeof=&quot;Person&quot; about=&quot;#murakami&quot; translate=&quot;no&quot;&gt;村上春樹&lt;/span&gt;&lt;/span&gt;,
      &lt;span property=&quot;reviewRating&quot; typeof=&quot;Rating&quot;&gt;&lt;meta property=&quot;bestRating&quot; content=&quot;5&quot;&gt;&lt;meta property=&quot;ratingValue&quot; content=&quot;4&quot;&gt;&lt;meta property=&quot;bestRating&quot; content=&quot;5&quot;&gt;&lt;meta property=&quot;ratingValue&quot; content=&quot;3&quot;&gt;★★★☆☆&lt;/span&gt;
    &lt;/p&gt;
    &lt;link property=&quot;bookFormat&quot; href=&quot;https://schema.org/EBook&quot;&gt;

    &lt;div property=&quot;reviewBody&quot;&gt;
      &lt;p&gt;1Q84 is a parallel-narrative love story set in an altered version of 1984 Tokyo, which one protagonist dubs “1Q84.” The story alternates between two lonely individuals: Aomame, a fitness instructor with a secret life as an assassin, and Tengo, a math teacher and aspiring writer. Their lives become intertwined as both characters encounter a religious cult.&lt;/p&gt;

      &lt;p&gt;While I connected with the story and appreciated the deep character development, it is undeniably a long book—perhaps too long. Having a colleague reading the book gave me the motivation to keep plowing through. The parallel dual-protagonist approach is well executed. The alternate perspectives of the two main characters explain their insights into their evolving realities. It certainly took a while for the separate threads of the story to click into place. It’s a novel that demands patience, but it’s a memorable read.&lt;/p&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;div typeof=&quot;Book&quot; resource=&quot;#identified&quot;&gt;
  &lt;div property=&quot;review&quot; typeof=&quot;Review&quot;&gt;
    &lt;h2 property=&quot;name&quot; about=&quot;#identified&quot;&gt;Identified&lt;/h2&gt;
    &lt;p&gt;
      &lt;time property=&quot;datePublished&quot; about=&quot;#identified&quot;&gt;2022&lt;/time&gt;,
      &lt;span property=&quot;author&quot; resource=&quot;#wilander&quot; about=&quot;#identified&quot;&gt;&lt;span property=&quot;name&quot; typeof=&quot;Person&quot; about=&quot;#murakami&quot; translate=&quot;no&quot;&gt;John Wilander&lt;/span&gt;&lt;/span&gt;,
      &lt;span property=&quot;reviewRating&quot; typeof=&quot;Rating&quot;&gt;&lt;meta property=&quot;bestRating&quot; content=&quot;5&quot;&gt;&lt;meta property=&quot;ratingValue&quot; content=&quot;4&quot;&gt;&lt;meta property=&quot;bestRating&quot; content=&quot;5&quot;&gt;&lt;meta property=&quot;ratingValue&quot; content=&quot;3&quot;&gt;★★★☆☆&lt;/span&gt;
    &lt;/p&gt;
    &lt;link property=&quot;bookFormat&quot; href=&quot;https://schema.org/EBook&quot;&gt;

    &lt;p property=&quot;reviewBody&quot;&gt;Unfortunately, “memorable” is not a word I can use for Wilander’s Identified. I finished the novel a few months ago and gave it a decent 3 out of 5 rating at the time. Yet, now, while writing this post, I realize I cannot recall any of the plot details. It seems I enjoyed the immediate experience of reading the book, perhaps the pace or the action, but the overall story ultimately failed to stick with me long-term.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;div typeof=&quot;Book&quot; resource=&quot;#narnia&quot;&gt;
  &lt;div property=&quot;review&quot; typeof=&quot;Review&quot;&gt;
    &lt;h2 property=&quot;name&quot; about=&quot;#narnia&quot;&gt;The Lion, the Witch and the Wardrobe&lt;/h2&gt;
    &lt;p&gt;
      &lt;time property=&quot;datePublished&quot; about=&quot;#narnia&quot;&gt;1970&lt;/time&gt;,
      &lt;span property=&quot;author&quot; resource=&quot;#lewis&quot; about=&quot;#narnia&quot;&gt;&lt;span property=&quot;name&quot; typeof=&quot;Person&quot; about=&quot;#lewis&quot; translate=&quot;no&quot;&gt;C.S. Lewis&lt;/span&gt;&lt;/span&gt;,
      &lt;span property=&quot;reviewRating&quot; typeof=&quot;Rating&quot;&gt;&lt;meta property=&quot;bestRating&quot; content=&quot;5&quot;&gt;&lt;meta property=&quot;ratingValue&quot; content=&quot;4&quot;&gt;&lt;meta property=&quot;bestRating&quot; content=&quot;5&quot;&gt;&lt;meta property=&quot;ratingValue&quot; content=&quot;3&quot;&gt;★★★☆☆&lt;/span&gt;
    &lt;/p&gt;
    &lt;link property=&quot;bookFormat&quot; href=&quot;https://schema.org/EBook&quot;&gt;

    &lt;div property=&quot;reviewBody&quot;&gt;
      &lt;p&gt;The second book in the Narnia series is, of course, the one where the children discover the famous entrance to the magical land through the old wardrobe. The children soon enter Narnia, which is trapped in an eternal winter under the tyrannical rule of the White Witch.&lt;/p&gt;

      &lt;p&gt;I made a point of reading this classic because my kids were reading the series, and I wanted to be up to speed to join in on their discussions. We even visited &lt;a href=&quot;https://en.wikipedia.org/wiki/Velika_Planina&quot; title=&quot;Velika Planina @ Wikipedia&quot;&gt;Velika Planina&lt;/a&gt; last year, a place said to have serious Narnia vibes. While I can now check it off my list, the fantastical style isn’t my kind of story.&lt;/p&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;div typeof=&quot;Book&quot; resource=&quot;#ouroboros&quot;&gt;
  &lt;div property=&quot;review&quot; typeof=&quot;Review&quot;&gt;
    &lt;h2 property=&quot;name&quot; about=&quot;#ouroboros&quot;&gt;The Worm Ouroboros&lt;/h2&gt;
    &lt;p&gt;
      &lt;time property=&quot;datePublished&quot; about=&quot;#ouroboros&quot;&gt;1922&lt;/time&gt;,
      &lt;span property=&quot;author&quot; resource=&quot;#eddison&quot; about=&quot;#ouroboros&quot;&gt;&lt;span property=&quot;name&quot; typeof=&quot;Person&quot; about=&quot;#eddison&quot; translate=&quot;no&quot;&gt;Erik Rücker Eddison&lt;/span&gt;&lt;/span&gt;,
      &lt;span property=&quot;reviewRating&quot; typeof=&quot;Rating&quot;&gt;&lt;meta property=&quot;bestRating&quot; content=&quot;5&quot;&gt;&lt;meta property=&quot;ratingValue&quot; content=&quot;4&quot;&gt;&lt;meta property=&quot;bestRating&quot; content=&quot;5&quot;&gt;&lt;meta property=&quot;ratingValue&quot; content=&quot;2&quot;&gt;★★☆☆☆&lt;/span&gt;
    &lt;/p&gt;
    &lt;link property=&quot;bookFormat&quot; href=&quot;https://schema.org/EBook&quot;&gt;

    &lt;div property=&quot;reviewBody&quot;&gt;
      &lt;p&gt;A high fantasy novel set on the fictional planet of Mercury about a long and epic war between the valiant Demonland and the tyrannical Witchland. The Demon Lords, including the brothers Juss, Goldry, Spitfire, and King Corund, engage in chivalric battles, political maneuvers, and perilous quests to defeat Witchland and rescue the captured Goldry, all within a grand, archaic, and consciously heroic style.&lt;/p&gt;
      &lt;p&gt;I had high hopes for this one, especially knowing that Tolkien held it in high regard, but the archaic language and heavy style made it a difficult read. Its age is certainly beginning to show, making it a challenging read for me.&lt;/p&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;div typeof=&quot;Book&quot; resource=&quot;#agreements&quot;&gt;
  &lt;div property=&quot;review&quot; typeof=&quot;Review&quot;&gt;
    &lt;h2 property=&quot;name&quot; about=&quot;#agreements&quot;&gt;The Four Agreements&lt;/h2&gt;
    &lt;p&gt;
      &lt;time property=&quot;datePublished&quot; about=&quot;#agreements&quot;&gt;1997&lt;/time&gt;,
      &lt;span property=&quot;author&quot; resource=&quot;#ruiz&quot; about=&quot;#agreements&quot;&gt;&lt;span property=&quot;name&quot; typeof=&quot;Person&quot; about=&quot;#ruiz&quot; translate=&quot;no&quot;&gt;Don Miguel Ruiz&lt;/span&gt;&lt;/span&gt;,
      &lt;span property=&quot;reviewRating&quot; typeof=&quot;Rating&quot;&gt;&lt;meta property=&quot;bestRating&quot; content=&quot;5&quot;&gt;&lt;meta property=&quot;ratingValue&quot; content=&quot;4&quot;&gt;&lt;meta property=&quot;bestRating&quot; content=&quot;5&quot;&gt;&lt;meta property=&quot;ratingValue&quot; content=&quot;1&quot;&gt;★☆☆☆☆&lt;/span&gt;
    &lt;/p&gt;
    &lt;link property=&quot;bookFormat&quot; href=&quot;https://schema.org/EBook&quot;&gt;

    &lt;div property=&quot;reviewBody&quot;&gt;
      &lt;p&gt;A self-help book based on ancient Toltec wisdom that provides a simple code of conduct for achieving personal freedom and happiness. The premise is that humans are “domesticated” by society to live by self-limiting beliefs and rules that cause needless suffering. Ruiz proposes replacing these agreements with four new ones: Be Impeccable With Your Word, Don’t Take Anything Personally, Don’t Make Assumptions, and Always Do Your Best.&lt;/p&gt;

      &lt;p&gt;I’m still not entirely sure why I picked this one up, as I typically steer clear of self-help literature. Unfortunately, this one didn&apos;t change my mind. While the advice offered is largely self-explanatory and rooted in common sense, the tone of the writing felt overly preachy. The author seems to claim, “Just do these four simple things and you will be happy”—which, yeah, sure…&lt;/p&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

      </content>
      <author>
        <name>Simon</name>
      </author>
    </entry>
  
    <entry>
      <id>https://www.suffix.be/blog/prusa-3d-printer/</id>
      <title type="text">Assembling a 3D Printer</title>
      <link href="https://www.suffix.be/blog/prusa-3d-printer/" />
      <link rel="alternate" type="text/html" href="https://www.suffix.be/blog/prusa-3d-printer/" />
      <published>2025-11-11T11:00:00+01:00</published>
      <updated>2025-11-11T11:00:00+01:00</updated>
      
        <summary type="text">Building an advanced LEGO kit with the kids.</summary>
      
      <content type="html" xml:base="https://www.suffix.be/blog/prusa-3d-printer/">
        &lt;figure&gt;
  &lt;picture&gt;
    &lt;img src=&quot;../../assets/prusa-assembled.webp&quot; width=&quot;300&quot; height=&quot;400&quot; alt=&quot;Our fully assembled Prusa CORE One printer with the door open&quot;&gt;
  &lt;/picture&gt;
  &lt;figcaption&gt;Interior of the assembled Prusa CORE One.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;Ever since the &lt;a href=&quot;https://en.wikipedia.org/wiki/RepRap&quot; title=&quot;RepRap @ Wikipedia&quot;&gt;RepRap&lt;/a&gt; arrived on the scene way back in 2005, I’ve been debating whether I should buy a 3D printer.&lt;/p&gt;

&lt;p&gt;They look undeniably cool, but do I really need more plastic clutter in my life? Probably not. So, I held off. I’d occasionally peek into 3D model libraries like &lt;a href=&quot;https://www.printables.com&quot;&gt;Printables&lt;/a&gt; and &lt;a href=&quot;https://www.thingiverse.com/&quot;&gt;Thingiverse&lt;/a&gt; to see what people were making. And, honestly, most of the uploads seemed to be figurines, fidget toys, or attachments for the printer itself. If those prints bring you joy, more power to you, but I had a different idea.&lt;/p&gt;

&lt;p&gt;I imagined a world where manufacturers would release 3D models to replace broken parts—the way you can download a firmware upgrade today. That world didn’t quite materialize; instead, we got our “throw it out and buy a new one—don’t even dare repairing it” economy.&lt;/p&gt;

&lt;h2&gt;Why Now?&lt;/h2&gt;

&lt;p&gt;Spoiler alert, as the title gives away, I finally bought a printer! What changed my mind?&lt;/p&gt;

&lt;p&gt;First, there was the rise of the Bambu Lab printers a few years ago. The reviews were raving about how much easier 3D printing had become. But then came the &lt;a href=&quot;https://www.3dnatives.com/en/bambu-lab-at-the-heart-of-a-controversy-an-update-that-divides-the-user-community-220120255/&quot; title=&quot;Bambu Lab at the Heart of Controversy: An Update that Divides the User Community&quot;&gt;backlash&lt;/a&gt; over locking down their machines.&lt;/p&gt;

&lt;p&gt;That’s what brought me back to &lt;a href=&quot;https://www.prusa3d.com/&quot; title=&quot;Office Prusa website&quot;&gt;Prusa&lt;/a&gt;. They are a long-time player in the market; they have a solid track record, and they are openly friendly to the open-source community—plus, they’re European. I noticed they sell their printers either assembled or as a kit, and that was what finally pulled me over. Assembling it with my kids sounded like a fun time, an advanced LEGO build, so to say.&lt;/p&gt;

&lt;figure&gt;
  &lt;picture&gt;
    &lt;img src=&quot;../../assets/prusa-boxes.webp&quot; width=&quot;300&quot; height=&quot;400&quot; alt=&quot;Someone pointing at a floor full of Prusa boxes&quot;&gt;
  &lt;/picture&gt;
  &lt;figcaption&gt;A floor full of Prusa part boxes.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h2&gt;The Family Build&lt;/h2&gt;

&lt;p&gt;The printer, a &lt;a href=&quot;https://www.prusa3d.com/en/core-one/&quot; title=&quot;Prusa CORE One product page&quot;&gt;Prusa CORE One&lt;/a&gt;, arrived last week, and we had an absolute blast! The assembly took a little over two full weekend days of focused work. My son was completely hooked, constantly nagging me to continue after dinner and peppering me with 3D-printing questions.&lt;/p&gt;

&lt;p&gt;They use a 3D printer at his school, mainly for small projects like keychains, but the teacher always handles the actual printing. While we were building ours, he kept remarking on how much better he now understood the mechanics. The assembly is time-consuming but definitely not hard—my 10-year-old could probably build the next one solo.&lt;/p&gt;

&lt;p&gt;Once assembled, the printer runs a self-test. Ours identified a screw that was too tightly fixed, which took us maybe 10 minutes to locate and adjust. Then, it was time for the first print: the example keychain that comes with the machine. Watching an object materialize out of thin air, tiny layer by tiny layer, was truly magical. A big sense of achievement after building for hours. High fives all around.&lt;/p&gt;

&lt;h2&gt;The Printing Process&lt;/h2&gt;

&lt;p&gt;A 3D printer is a touch more complex than your standard paper printer. You have to create or download a 3D model, and then prepare it for printing using a specialized application called a “slicer.”&lt;/p&gt;

&lt;p&gt;Think of the “slicer” as the print preview for a paper document, but on steroids. When printing a document, you select paper size, color, and orientation. With 3D printing, the slicer literally carves your 3D model into hundreds of flat layers. You have to specify settings like layer thickness, which filament (the “ink”) you are using, how to fill the object’s interior (infill), and more. It’s more involved than a paper printer, but easy enough to learn.&lt;/p&gt;

&lt;p&gt;The Prusa CORE One impressed me right out of the gate. Given my lack of 3D printing experience, I was expecting thick, rough, and highly visible layers. But today’s printers are way beyond that. You can still tell it’s a printed object, of course, but the level of detail these machines achieve is stellar. How does it even print a layer at one-tenth of a millimeter?!&lt;/p&gt;

&lt;h2&gt;Moving Beyond Toys&lt;/h2&gt;

&lt;p&gt;After the keychain, we tried some downloaded models: a &lt;a href=&quot;https://www.printables.com/model/534678-evil-queen-crown&quot; title=&quot;Evil Queen Crown @ Printables&quot;&gt;crown&lt;/a&gt; my daughter used for a book presentation, and a handy &lt;a href=&quot;https://www.printables.com/model/1208382-stackable-bottle-drying-rack-5-variations&quot; title=&quot;Stackable Bottle Drying Rack @ Printables&quot;&gt;bottle drying rack&lt;/a&gt;, which was a great exercise in learning about overhangs and infill strength.&lt;/p&gt;

&lt;p&gt;These are all still “toy” objects, though, and I believe the printer will only truly prove its worth when I can use it to fix broken items around the house. So, our next project is a &lt;a href=&quot;https://www.thingiverse.com/thing:4979984&quot; title=&quot;Support de Télécommande @ Thingverse&quot;&gt;bracket&lt;/a&gt; to mount a Velux window remote to the wall. Amazingly, even obscure objects like the bracket can be found online.&lt;/p&gt;

&lt;p&gt;We only have &lt;abbr title=&quot;Polylactic Acid&quot;&gt;PLA&lt;/abbr&gt; filament right now. It’s the easiest to print with, but it’s not as strong as &lt;abbr title=&quot;Polyethylene Terephthalate Glycol&quot;&gt;PETG&lt;/abbr&gt;, which is generally recommended for items that need to snap together or handle stress. I’ll order a spool of PETG to see how it differs from PLA. Once that bracket is successfully mounted, I can try my hand at designing and printing my own objects from scratch.&lt;/p&gt;

&lt;p&gt;Safe to say, these past few days have been a ton of fun. We’ve learned a lot about machine assembly, slicing, and the 3D community in general—and we’ve barely scratched the surface!&lt;/p&gt;

&lt;p&gt;Was it worth it? Only time will tell. We’ll have to wait until the excitement fades to see if I actually use the printer for practical fixes.&lt;/p&gt;

      </content>
      <author>
        <name>Simon</name>
      </author>
    </entry>
  
    <entry>
      <id>https://www.suffix.be/blog/supernote-manta/</id>
      <title type="text">Paperless note-taking</title>
      <link href="https://www.suffix.be/blog/supernote-manta/" />
      <link rel="alternate" type="text/html" href="https://www.suffix.be/blog/supernote-manta/" />
      <published>2025-09-27T12:00:00+02:00</published>
      <updated>2025-09-27T12:00:00+02:00</updated>
      
        <summary type="text">From an iPad mini to the Supernote Nomad.</summary>
      
      <content type="html" xml:base="https://www.suffix.be/blog/supernote-manta/">
        &lt;figure&gt;
  &lt;picture&gt;
    &lt;img src=&quot;../../assets/supernote-manta-post.webp&quot; width=&quot;300&quot; height=&quot;300&quot; alt=&quot;My Supernote Manta e-notebook with pen showing a draft of this blog post&quot;&gt;
  &lt;/picture&gt;
&lt;/figure&gt;

&lt;p&gt;I’ve been on the hunt for a paperless note-taking solution for a while now. I needed something to capture random ideas, jot down meeting minutes, or take quick reminders during phone calls. Of course, I could just use paper—and I have been. It’s cheap, abundant, and it always works. I can come up with many excuses as to why my note-taking needs to be digital (easy to search, history always available, etc.), but these are just rationalizations. The reality is that digital gadgets are simply more fun.&lt;/p&gt;

&lt;h2&gt;Version 1: The iPad mini&lt;/h2&gt;

&lt;p&gt;I had been eyeing the reMarkable tablet since it first launched back in 2017, but I never pulled the trigger. Two years later, in 2019, I bought an iPad mini (€459) with an Apple Pencil (€59) instead. I was a bit reluctant since I’m a sucker for all things e-paper, but I figured the iPad was a better deal as it’s a more capable device.&lt;/p&gt;

&lt;p&gt;Looking back now, it was the right call, but not for the reason I expected. The 6-year old iPad still sees daily use. I use it for video calls, watching the occasional movie, browsing the web, and my son even plays games on it. The one thing I don’t use it for? Note-taking, the very reason I bought it! The feeling of the pencil on the glass screen just doesn’t feel right, and the pencil’s battery is predictably dead every time I actually want to use it.&lt;/p&gt;

&lt;p&gt;To summarize: yes, the iPad gets lots of use, but not for its original purpose in my life.&lt;/p&gt;

&lt;h2&gt;Version 2: Supernote Nomad&lt;/h2&gt;

&lt;p&gt;Fast forward to last week. My interest was piqued once more when reMarkable released a &lt;a href=&quot;https://remarkable.com/products/remarkable-paper/pro-move&quot; title=&quot;reMarkable Paper Pro Move product page&quot;&gt;new, smaller version&lt;/a&gt; of their tablet. This led me down a rabbit hole where I found the &lt;a href=&quot;https://supernote.com/pages/supernote-nomad&quot; title=&quot;The Supernote Nomad product page&quot;&gt;Supernote Nomad&lt;/a&gt;, a competitor. Its main selling point over the reMarkable? The lack of a monthly subscription. I am allergic to subscriptions, and this was always the deal-breaker with the reMarkable.&lt;/p&gt;

&lt;p&gt;My Supernote Nomad (€280), Heart of Metal 2 Pen (€75), and folio (€49) arrived last week. I’ve been using it to take notes during meetings, doodle, and write the draft of this blog post. It’s the complete opposite of the iPad; its features are limited, and that’s intentional. It’s a device designed for one thing: writing.&lt;/p&gt;

&lt;figure&gt;
  &lt;picture&gt;
    &lt;img src=&quot;../../assets/supernote-manta-screenshot.webp&quot; width=&quot;300&quot; height=&quot;400&quot; alt=&quot;Screenshot from the Manta with some doodles&quot;&gt;
  &lt;/picture&gt;
&lt;/figure&gt;

&lt;p&gt;Here are my initial thoughts:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;The Writing Experience&lt;/strong&gt;: The display is gorgeous and designed to mimic paper. While writing on it feels much better than the iPad, I personally wouldn’t compare it to real paper. It’s very responsive—traditionally a weakness for E Ink—but the surface feels a little too smooth to be a true paper replacement.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;The Pen&lt;/strong&gt;: The pen does not have a battery. This is a big deal, as it means it will always be ready to use. Unlike the reMarkable, the tips are designed not to need replacing. This is more convenient, though I can’t compare the writing feel to the reMarkable pen. The Supernote pens also don’t come with an eraser, which would have been handy.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Openness and Connectivity&lt;/strong&gt;: The Supernote works fully offline. There’s no account required, no tracking or ads, and no vendor lock-in. You can create a Supernote account for optional syncing and free cloud storage, but you don’t have to. It also supports Dropbox, Google Drive, and OneDrive. WebDAV, my personal choice, is on their roadmap. For local transfers, you can connect over Wi-Fi, use a &lt;abbr title=&quot;Universal Serial Bus&quot;&gt;USB&lt;/abbr&gt; cable, or just pop out the &lt;abbr title=&quot;Secure Digital&quot;&gt;SD&lt;/abbr&gt; card.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;No Color&lt;/strong&gt;: The Supernote doesn’t have a color display like the small reMarkable, but while that feature would be nice, I don&apos;t expect to miss it. The Supernote is also about €100 cheaper with similar accessories.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Company Ethos&lt;/strong&gt;: reMarkable is a Norwegian company, while Supernote is based in Singapore and Japan. I try to buy “European” when possible, so reMarkable would have had the advantage here if it weren’t for their subscription model. However, the company behind Supernote, Ratta, seems great. They publish their development &lt;a href=&quot;https://trello.com/b/l0COP24j/supernote-a5x-a6x-software-roadmap-2022-2023&quot; title=&quot;Supernote A5X &amp; A6X Trello software roadmap&quot;&gt;roadmap&lt;/a&gt; and support the &lt;a href=&quot;https://supernote.com/blogs/supernote-blog/why-is-the-supernote-nomad-the-best-long-term-value-e-ink-tablet-for-you&quot; title=&quot;Why is the Supernote Nomad the best long-term value E Ink tablet for you?&quot;&gt;right-to-repair&lt;/a&gt; movement by selling replacement parts. You can even assemble your &lt;a href=&quot;https://supernote.com/pages/diy-zone&quot; title=&quot;Supernote DIY zone&quot;&gt;own pen&lt;/a&gt;. They also claim not to run promotions or sales to prevent impulse buying.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It’s only been a week, but so far I’m impressed by the openness of the platform and the ethos of the company. E-notebooks are pricey, especially when compared to good old paper. Is it worth the cost? It’s too soon to tell, but it’s off to a strong start.&lt;/p&gt;

      </content>
      <author>
        <name>Simon</name>
      </author>
    </entry>
  
    <entry>
      <id>https://www.suffix.be/blog/backups/</id>
      <title type="text">How I take backups</title>
      <link href="https://www.suffix.be/blog/backups/" />
      <link rel="alternate" type="text/html" href="https://www.suffix.be/blog/backups/" />
      <published>2025-06-20T11:00:00+02:00</published>
      <updated>2025-09-27T19:00:00+02:00</updated>
      
        <summary type="text">Two is one and one is none.</summary>
      
      <content type="html" xml:base="https://www.suffix.be/blog/backups/">
        &lt;figure&gt;
  &lt;picture&gt;
    &lt;img src=&quot;../../assets/backup.svg&quot; width=&quot;150&quot; height=&quot;200&quot; alt=&quot;Doodle of a folder with some files and and arrow pointing to a server&quot;&gt;
  &lt;/picture&gt;
&lt;/figure&gt;

&lt;p&gt;This post documents my current backup system, mostly as a reminder for my future self. My laptop is my primary machine; while it usually sits on my desk, it also accompanies me to work a few times a week. Here’s the two-tiered strategy I use to make sure my data is safe.&lt;/p&gt;

&lt;h2&gt;Tier 1: Clonezilla for Bare-Metal Recovery&lt;/h2&gt;

&lt;p&gt;My primary, full-system backup solution is &lt;a href=&quot;https://clonezilla.org/&quot; title=&quot;The Free and Open Source Software for Disk Imaging and Cloning&quot;&gt;Clonezilla&lt;/a&gt;. I run it from a bootable &lt;abbr title=&quot;Universal Serial Bus&quot;&gt;USB&lt;/abbr&gt; stick to create a complete, bit-for-bit disk image on an external drive. This ensures that I don’t miss a single configuration file or dependency I might need later. If the laptop’s internal drive ever fails, I can simply swap in a new one, restore the latest Clonezilla image, and be back up and running in a matter of hours.&lt;/p&gt;

&lt;p&gt;I don’t encrypt the Clonezilla backups. The external drive is kept physically locked away and is only connected during the backup process. This simplifies things and means there’s no master password for me to forget.&lt;/p&gt;

&lt;p&gt;However, Clonezilla isn’t perfect for daily use. It comes with a few drawbacks:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Its &lt;a href=&quot;https://en.wikipedia.org/wiki/Ncurses&quot; title=&quot;ncurses article @ Wikipedia&quot;&gt;ncurses&lt;/a&gt;-based interface can be confusing, and I always worry about accidentally overwriting my source drive instead of the destination.&lt;/li&gt;
  &lt;li&gt;Because it creates an identical clone, the image may not work correctly on different hardware. A drive replacement is fine, but restoring to an entirely new laptop could cause compatibility issues. (I can still mount the image and restore &lt;a href=&quot;../clonezilla-restore-file&quot; title=&quot;Restore a single Clonezilla file or folder&quot;&gt;individual files&lt;/a&gt;, so it’s not a complete deal-breaker).&lt;/li&gt;
  &lt;li&gt;Clonezilla backups are not deduplicated. Since I’m imaging the entire drive, I can only store one or two versions on the external disk before running out of space.&lt;/li&gt;
  &lt;li&gt;The backup process is time-consuming, and I can’t use my laptop while it’s running. While this guarantees a consistent state (no files are changing), it also means I don’t perform these backups as often as I should. My last one was four months ago, which is far from ideal.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These limitations led me to my secondary backup solution, which is faster, automated, and encrypted.&lt;/p&gt;

&lt;h2&gt;Tier 2: Restic for Automated, Incremental Backups&lt;/h2&gt;

&lt;p&gt;&lt;a href=&quot;https://restic.net/&quot; title=&quot;Restic is a modern backup program that can back up your files&quot;&gt;Restic&lt;/a&gt; is a modern, command-line backup tool. It creates versioned snapshots of specified directories and stores them in a “repository,” which can be a local folder or a remote system. The real magic is that it compresses, deduplicates, and encrypts all data by default. The initial backup can be slow, but subsequent snapshots are incredibly fast because they only copy the changed data blocks.&lt;/p&gt;

&lt;p&gt;My restic repository lives on my Synology &lt;abbr title=&quot;Network Attached Storage&quot;&gt;NAS&lt;/abbr&gt;, and the backups are sent securely over &lt;abbr title=&quot;Secure File Transfer Protocol&quot;&gt;SFTP&lt;/abbr&gt;.&lt;/p&gt;

&lt;h3&gt;Setup and Configuration&lt;/h3&gt;

&lt;h4&gt;1. Enable SFTP on the Synology NAS&lt;/h4&gt;

&lt;p&gt;In the Synology Control Panel, go to File Services → FTP. On that screen, find and enable the SFTP service (do not use the standard FTPS service). I kept the default port 22. Next, you need to grant your user permission to connect. Go to Control Panel → User &amp; Group, edit your user, and in the Applications tab, check the “Allow” box for SFTP.&lt;/p&gt;

&lt;h4&gt;2. Configure the &lt;abbr title=&quot;Secure Shell&quot;&gt;SSH&lt;/abbr&gt; Client&lt;/h4&gt;

&lt;p&gt;You should now be able to connect to the NAS. If you have many SSH keys, you might get a “Too many authentication failures” error. You can fix this by telling SSH to only use the specific identity file for this connection. To make this permanent and simplify the command, I added the following to my &lt;kbd&gt;~/.ssh/config&lt;/kbd&gt; file:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;Host nas
  HostName nas.example.com
  User me
  IdentitiesOnly &lt;span class=&quot;nb&quot;&gt;yes&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;h4&gt;3. Initialize the Restic Repository&lt;/h4&gt;

&lt;p&gt;With SFTP access configured, you can now initialize a new restic repository on the NAS. This command is run from the laptop; restic connects over SFTP and creates the necessary directory structure.&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;restic init &lt;span class=&quot;nt&quot;&gt;--repo&lt;/span&gt; sftp:nas:/drop/restic-repo&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;h3&gt;Common Restic Commands&lt;/h3&gt;

&lt;p&gt;Here is a list of commands I use most frequently.&lt;/p&gt;

&lt;h4&gt;Create a Backup&lt;/h4&gt;

&lt;p&gt;This command backs up my documents directory. Restic can store snapshots from multiple directories (and even multiple machines) in the same repository.&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;restic backup &lt;span class=&quot;nt&quot;&gt;--repo&lt;/span&gt; sftp:nas:/drop/restic-repo ~/Documents/&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;h4&gt;List Snapshots&lt;/h4&gt;

&lt;p&gt;After a backup, you can confirm it worked by listing the snapshots in the repository.&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;restic snapshots &lt;span class=&quot;nt&quot;&gt;--repo&lt;/span&gt; sftp:nas:/drop/restic-repo&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;h4&gt;Compare Snapshots&lt;/h4&gt;

&lt;p&gt;You can see the exact changes between any two snapshots using their IDs.&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;restic diff &lt;span class=&quot;nt&quot;&gt;--repo&lt;/span&gt; sftp:nas:/drop/restic-repo d56ed9d5 1c100c47&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;h4&gt;Restore Files&lt;/h4&gt;

&lt;p&gt;Restic can restore a backup in place, but this will overwrite newer files and remove any files not present in the snapshot. That’s a bit too &lt;em&gt;&lt;abbr title=&quot;You Only Live Once&quot;&gt;YOLO&lt;/abbr&gt;&lt;/em&gt; for my taste, so I always restore to a temporary directory to be safe.&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;restic restore &lt;span class=&quot;nt&quot;&gt;--repo&lt;/span&gt; sftp:nas:/drop/restic-repo &lt;span class=&quot;nt&quot;&gt;--target&lt;/span&gt; /tmp latest&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;h4&gt;Maintain the Repository&lt;/h4&gt;

&lt;p&gt;Over time, the repository will grow. I periodically run a check to verify its integrity.&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;restic check &lt;span class=&quot;nt&quot;&gt;--repo&lt;/span&gt; sftp:nas:/drop/restic-repo&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;To clean up old snapshots, I use the forget command with a retention policy. The &lt;kbd&gt;--prune&lt;/kbd&gt; flag is necessary to actually delete the orphaned data and free up disk space.&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span class=&quot;c&quot;&gt;# This policy keeps 3 daily, 5 weekly, 7 monthly, and 9 yearly snapshots&lt;/span&gt;
restic forget &lt;span class=&quot;nt&quot;&gt;--repo&lt;/span&gt; sftp:nas:/drop/restic-repo &lt;span class=&quot;se&quot;&gt;\&lt;/span&gt;
    &lt;span class=&quot;nt&quot;&gt;--keep-daily&lt;/span&gt; 3 &lt;span class=&quot;nt&quot;&gt;--keep-weekly&lt;/span&gt; 5 &lt;span class=&quot;nt&quot;&gt;--keep-monthly&lt;/span&gt; 7 &lt;span class=&quot;nt&quot;&gt;--keep-yearly&lt;/span&gt; 9&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;I automate the backup and forget commands using a systemd timer, which runs daily.&lt;/p&gt;

&lt;h2&gt;Why Use Both?&lt;/h2&gt;

&lt;p&gt;This two-tiered system gives me the best of both worlds.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Clonezilla is my disaster recovery plan. I am certain it backs up my whole drive, so no configuration is ever missed. The USB drive is stored offline, making it invulnerable to accidental deletion or malware.&lt;/li&gt;
  &lt;li&gt;restic is my daily, automated safety net. It’s always connected and running, making it easy to perform frequent backups and restore individual files quickly. However, being online makes it more vulnerable to user error or a security breach.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By using two different backup solutions, I’m not putting all my eggs in one basket. If a critical bug were ever discovered in Clonezilla or restic that could corrupt backups, I’d still have an alternative to fall back on.&lt;/p&gt;

      </content>
      <author>
        <name>Simon</name>
      </author>
    </entry>
  
    <entry>
      <id>https://www.suffix.be/blog/passwordless-authentication-synology/</id>
      <title type="text">Synology Password-less SSH</title>
      <link href="https://www.suffix.be/blog/passwordless-authentication-synology/" />
      <link rel="alternate" type="text/html" href="https://www.suffix.be/blog/passwordless-authentication-synology/" />
      <published>2025-06-16T11:00:00+02:00</published>
      <updated>2025-06-16T11:00:00+02:00</updated>
      
        <summary type="text">Secure Synology NAS SSH connections for automated tasks with key pairs.</summary>
      
      <content type="html" xml:base="https://www.suffix.be/blog/passwordless-authentication-synology/">
        &lt;p&gt;My goal is to set up automated &lt;a href=&quot;https://restic.net/&quot; title=&quot;A modern backup program that can back up your files&quot;&gt;restic&lt;/a&gt; backups to a &lt;a href=&quot;https://www.synology.com/products&quot; title=&quot;Synology product page&quot;&gt;Synology&lt;/a&gt; &lt;abbr title=&quot;Network Attached Storage&quot;&gt;NAS&lt;/abbr&gt; from my laptop. Manually entering a password for each backup defeats the purpose of the automation. Just as we use public/private key pairs in UN*X to bypass password prompts, we can apply the same idea for automated access our Synology. It’s built on Linux after all.&lt;/p&gt;

&lt;p&gt;This guide is based on a Synology system running &lt;abbr title=&quot;Disk Station Manager&quot;&gt;DSM&lt;/abbr&gt; 7.1.1. Keep in mind that future DSM versions might introduce changes, so some steps could vary.&lt;/p&gt;

&lt;p&gt;We’ll assume we have already generated a public and private key pair. If not, there are numerous resources available online, such as &lt;a href=&quot;https://www.ssh.com/academy/ssh/keygen&quot; title=&quot;How to Use ssh-keygen to Generate a New SSH Key? @ ssh.com&quot;&gt;this one&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;Enable &lt;abbr title=&quot;Secure Shell&quot;&gt;SSH&lt;/abbr&gt;&lt;/h2&gt;

&lt;figure&gt;
  &lt;picture&gt;
    &lt;img src=&quot;../../assets/synology-ssh-enable.webp&quot; width=&quot;672&quot; height=&quot;292&quot; alt=&quot;Screenshot from the Synology Control Panel: Terminal &amp; SNMP section&quot;&gt;
  &lt;/picture&gt;
&lt;/figure&gt;

&lt;p&gt;First, we need to enable SSH on the Synology NAS. Navigate to “Control Panel → Terminal &amp; SNMP” and check the &quot;Enable SSH service” option. At this point, we can connect from our laptop using &lt;kbd&gt;ssh user@synology&lt;/kbd&gt; (replace the username and Synology address), but we’ll still be prompted for a password.&lt;/p&gt;

&lt;h2&gt;User Home Folders&lt;/h2&gt;

&lt;figure&gt;
  &lt;picture&gt;
    &lt;img src=&quot;../../assets/synology-ssh-home.webp&quot; width=&quot;672&quot; height=&quot;292&quot; alt=&quot;Screenshot from the Synology Control Panel: User &amp; Group section&quot;&gt;
  &lt;/picture&gt;
&lt;/figure&gt;

&lt;p&gt;To enable automated authentication, we need to upload a public key to the Synology. This requires enabling user home folders. Go to “Control Panel → User &amp; Groups”, select the “Advanced” tab, and in the “User Home” section, check “Enable user home service”. We should now see a new ‘home’ directory in the Synology File Station.&lt;/p&gt;

&lt;h2&gt;Adding a Public Key&lt;/h2&gt;

&lt;figure&gt;
  &lt;picture&gt;
    &lt;img src=&quot;../../assets/synology-ssh-file-station.webp&quot; width=&quot;672&quot; height=&quot;145&quot; alt=&quot;Screenshot from the Synology File Station&quot;&gt;
  &lt;/picture&gt;
&lt;/figure&gt;

&lt;p&gt;Now, let’s add a public key to our user’s home folder on the NAS. Using File Station, locate the &lt;kbd&gt;/home&lt;/kbd&gt; directory for the user used for the automation. Inside this directory, create a new subdirectory named &lt;kbd&gt;.ssh&lt;/kbd&gt;. Within this directory, create a file named &lt;kbd&gt;authorized_keys&lt;/kbd&gt; (with no extension). Finally, paste the entire contents of the public key into this ‘authorized_keys’ file. The public key of course, the private one should never leave the laptop.&lt;/p&gt;

&lt;p&gt;For SSH to function correctly, we need to change the permissions for the &lt;kbd&gt;.ssh&lt;/kbd&gt; folder and its contents. Start by logging in via SSH with the password. Once connected, change the permissions of the &lt;kbd&gt;.ssh&lt;/kbd&gt; folder to ‘drwxr-xr-x’. Similarly, for the &lt;kbd&gt;authorized_keys&lt;/kbd&gt; file within that folder, set its permissions to ‘-rw-r--r--’.

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;chmod &lt;/span&gt;0755 .ssh/
&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;chmod &lt;/span&gt;0644 .ssh/authorized_keys&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;With these steps completed, we now have password-less SSH access to the Synology NAS via &lt;kbd&gt;ssh user@synology&lt;/kbd&gt;. We won’t be promted for a password any longer.&lt;/p&gt;

      </content>
      <author>
        <name>Simon</name>
      </author>
    </entry>
  
    <entry>
      <id>https://www.suffix.be/blog/rails-connection-pool/</id>
      <title type="text">Rails’ Connection Pool</title>
      <link href="https://www.suffix.be/blog/rails-connection-pool/" />
      <link rel="alternate" type="text/html" href="https://www.suffix.be/blog/rails-connection-pool/" />
      <published>2025-06-04T11:00:00+02:00</published>
      <updated>2025-06-04T11:00:00+02:00</updated>
      
        <summary type="text">In which I learn to read YAML syntax.</summary>
      
      <content type="html" xml:base="https://www.suffix.be/blog/rails-connection-pool/">
        &lt;p&gt;Encountering a production issue that works perfectly on your local machine is a classic developer’s dilemma. Today I faced this while debugging “ActiveRecord::ConnectionTimeoutError” issues in a Ruby on Rails application.&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;could not obtain a connection from the pool within 5.000 seconds &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;waited 5.000 seconds&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt; all pooled connections were &lt;span class=&quot;k&quot;&gt;in &lt;/span&gt;use&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;The error indicated that the Rails application was running out of database connections. By default, Rails opens 5 concurrent connections to the PostgreSQL database. The fix is usually straightforward: increase the “pool” size in the “database.yml” configuration.&lt;/p&gt;

Here’s what the initial configuration looked like:

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-yml&quot; data-lang=&quot;yml&quot;&gt;&lt;span class=&quot;na&quot;&gt;default&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nl&quot;&gt;&amp;amp;default&lt;/span&gt;
  &lt;span class=&quot;na&quot;&gt;adapter&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;postgresql&lt;/span&gt;
  &lt;span class=&quot;na&quot;&gt;pool&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;10&lt;/span&gt;

&lt;span class=&quot;na&quot;&gt;development&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
  &lt;span class=&quot;na&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;*default&lt;/span&gt;
  &lt;span class=&quot;na&quot;&gt;database&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;my-dev-database&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;I tested this on my local development machine, and everything seemed fine. It works on my machine, right? Running &lt;kbd&gt;ActiveRecord::Base.connection_pool.size&lt;/kbd&gt; in my local Rails console confirmed the pool size was indeed increased to 10. Feeling confident, I deployed to production.&lt;/p&gt;

&lt;p&gt;However, the errors persisted. Checking the connection pool size on the production server via the Rails console still showed 5, not the expected 10. Can you spot the mistake?&lt;/p&gt;

&lt;p&gt;My first thoughts was to the production environment itself. Was &lt;a href=&quot;https://scalingo.com/&quot; title=&quot;Managed hosting for webapplications&quot;&gt;Scalingo&lt;/a&gt;, the managed hosting platform this application runs on, overriding the configuration? Was there a smaller default pool size for the one-off containers in which I was testing?&lt;/p&gt;

&lt;p&gt;Turns out, the problem was much simpler and lay in my understanding of YAML syntax. I had assumed that since “production”, “testing”, and “staging” weren’t explicitly defined in the “database.yml” file, they would automatically inherit from the “default” block. The “development” key is mentioned since it needs a different database name. This application had been running for years, so this couldn’t be wrong, right?&lt;/p&gt;

&lt;p&gt;Wrong.&lt;/p&gt;

&lt;p&gt;Rails does not automatically pick up the “default” configuration unless the environments are explicitly defined. Even if an environment doesn’t have any specific overrides, you still need to include its key in the database configuration to ensure Rails uses the configuration parameters from the “default” block. I am unsure if this is according to the YAML spec or a Rails specific rule.&lt;/p&gt;

&lt;p&gt;The solution was to explicitly define the “production” environment key, even if it just inherits from the “defaults” block:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-yml&quot; data-lang=&quot;yml&quot;&gt;&lt;span class=&quot;na&quot;&gt;default&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nl&quot;&gt;&amp;amp;default&lt;/span&gt;
  &lt;span class=&quot;na&quot;&gt;adapter&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;postgresql&lt;/span&gt;
  &lt;span class=&quot;na&quot;&gt;pool&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;10&lt;/span&gt;

&lt;span class=&quot;na&quot;&gt;production&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
  &lt;span class=&quot;na&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;*default&lt;/span&gt;

&lt;span class=&quot;na&quot;&gt;development&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
  &lt;span class=&quot;na&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;*default&lt;/span&gt;
  &lt;span class=&quot;na&quot;&gt;database&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;my-dev-database&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;After deploying the corrected configuration file and restarting the production server, &lt;kbd&gt;ActiveRecord::Base.connection_pool.size&lt;/kbd&gt; now shows a connection pool of 10 and the “ActiveRecord::ConnectionTimeoutError” issues were resolved.&lt;/p&gt;

&lt;p&gt;Today was a good reminder that even subtle misconfigurations in seemingly straightforward YAML files can lead to unexpected behavior in production.&lt;/p&gt;

      </content>
      <author>
        <name>Simon</name>
      </author>
    </entry>
  
    <entry>
      <id>https://www.suffix.be/blog/meshtastic-getting-started/</id>
      <title type="text">Getting Started with Meshtastic</title>
      <link href="https://www.suffix.be/blog/meshtastic-getting-started/" />
      <link rel="alternate" type="text/html" href="https://www.suffix.be/blog/meshtastic-getting-started/" />
      <published>2025-03-23T10:00:00+01:00</published>
      <updated>2025-03-23T10:00:00+01:00</updated>
      
        <summary type="text">A simple off-grid two-node setup from the command line.</summary>
      
      <content type="html" xml:base="https://www.suffix.be/blog/meshtastic-getting-started/">
        &lt;figure&gt;
  &lt;picture&gt;
    &lt;source type=&quot;image/webp&quot; srcset=&quot;../../assets/meshtastic-heltecv3.webp&quot;&gt;
    &lt;img src=&quot;../../assets/meshtastic-heltecv3.jpg&quot; width=&quot;300&quot; height=&quot;350&quot; alt=&quot;A Heltec v3 board with antenna showing the Meshtastic node info on its display&quot;&gt;
  &lt;/picture&gt;
&lt;/figure&gt;

&lt;p&gt;&lt;a href=&quot;https://meshtastic.org/&quot; title=&quot;An open source, off-grid, decentralized, mesh network built to run on affordable, low-power devices&quot;&gt;Meshtastic&lt;/a&gt; offers a glimpse into off-grid communication, and the &lt;a href=&quot;https://heltec.org/project/wifi-lora-32-v3/&quot; title=&quot;Heltec LoRa 32 board product page&quot;&gt;Heltec V3&lt;/a&gt; boards are a popular entry point. While there are fancier devices like the &lt;a href=&quot;https://lilygo.cc/products/t-deck&quot; title=&quot;A standalone Meshtastic node with screen and keyboard&quot;&gt;LilyGO T-Deck&lt;/a&gt; or &lt;a href=&quot;https://muzi.works/&quot; title=&quot;A nice collection of Meshtatic nodes&quot;&gt;Muzi.works&lt;/a&gt;, we’ll start with the basics. I picked up two Heltec V3 boards for €22 each (check &lt;a href=&quot;https://www.tinytronics.nl&quot;&gt;TinyTronics&lt;/a&gt;, &lt;a href=&quot;https://hamparts.shop/&quot;&gt;hamparts.shop&lt;/a&gt; or &lt;a href=&quot;https://nettigo.eu&quot;&gt;Nettigo&lt;/a&gt; for some European stores).&lt;/p&gt;

&lt;p&gt;First, I attached the included stubby antennas. Always connect antennas first with devices that transmit, or you might damage them. Then, using the Meshtastic &lt;a href=&quot;https://flasher.meshtastic.org/&quot; title=&quot;Flash the Mestastic firmware via a browser&quot;&gt;web flasher&lt;/a&gt;, I flashed the first board with the latest firmware. The flasher worked flawlessly with Chromium on Linux (Firefox does &lt;a href=&quot;https://caniuse.com/webusb&quot; title=&quot;Can I Use page for WebUSB&quot;&gt;not support&lt;/a&gt; WebUSB).&lt;/p&gt;

&lt;h2&gt;The Phone Node&lt;/h2&gt;

&lt;p&gt;Meshtastic offers &lt;a href=&quot;https://meshtastic.org/docs/software/&quot; title=&quot;Links to the different mobile apps, web client, etc.&quot;&gt;multiple configuration options&lt;/a&gt;: a mobile app, a web &lt;abbr title=&quot;User Interface&quot;&gt;UI&lt;/abbr&gt;, and a Python &lt;abbr title=&quot;Command Line Interface&quot;&gt;CLI&lt;/abbr&gt; (more on that later). For this first device, we’ll use the mobile app over Bluetooth, which is likely the most common approach. We’ll refer to this first board as the &lt;em&gt;phone node&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Powered by a &lt;abbr title=&quot;Lithium Polymer&quot;&gt;LiPo&lt;/abbr&gt; battery (a &lt;abbr title=&quot;Universal Serial Bus&quot;&gt;USB&lt;/abbr&gt; power bank or adaptor would also work), the &lt;em&gt;phone node&lt;/em&gt; was ready for configuration. Connecting via Bluetooth using the Meshtastic app is straightforward. The device’s name is displayed on its screen and shows a pairing code when connecting through the Meshtastic mobile app. After pairing, I set the device’s region and saved the configuration, triggering a reboot. We’ll leave other settings at their defaults.&lt;/o&gt;

&lt;h2&gt;The Computer Node&lt;/h2&gt;

&lt;p&gt;Next, we’ll flash the second board, designated the &lt;em&gt;computer node&lt;/em&gt;, using the same web flasher. However, we’ll configure this node via the Meshtastic CLI. Since the device is already connected via USB for flashing, it’s convenient to configure it immediately.&lt;/p&gt;

&lt;p&gt;First, let’s verify connectivity (the &lt;kbd&gt;--port&lt;/kbd&gt; parameter might be optional). This will print the node’s configuration.&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;meshtastic &lt;span class=&quot;nt&quot;&gt;--port&lt;/span&gt; /dev/ttyUSB0 &lt;span class=&quot;nt&quot;&gt;--info&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;If successful, we’ll proceed with configuration. Note that the following settings are specific to my location in Belgium (EU_868 and &lt;abbr title=&quot;Central European Standard Time&quot;&gt;CEST&lt;/abbr&gt;). Adjust them as needed for your region.&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;meshtastic &lt;span class=&quot;se&quot;&gt;\&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;--set&lt;/span&gt; lora.region EU_868 &lt;span class=&quot;se&quot;&gt;\&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;--set&lt;/span&gt; device.tzdef CET-1CEST,M3.5.0,M10.5.0/3 &lt;span class=&quot;se&quot;&gt;\&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;--set-time&lt;/span&gt; &lt;span class=&quot;si&quot;&gt;$(&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;date&lt;/span&gt; +%s&lt;span class=&quot;si&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;se&quot;&gt;\ &lt;/span&gt;&lt;span class=&quot;c&quot;&gt;# Current UNIX timestamp, will be forgotten on reset&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;--set&lt;/span&gt; device.led_heartbeat_disabled &lt;span class=&quot;nb&quot;&gt;true&lt;/span&gt; &lt;span class=&quot;c&quot;&gt;# The blinking light annoyed me&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;figcaption&gt;↑ While these commands should theoretically run in a single execution, I needed to run them individually.&lt;/figcaption&gt;

&lt;p&gt;Both nodes now operates entirely offline, without Wi-Fi connectivity.&lt;/p&gt;

&lt;h2&gt;Sending Messages&lt;/h2&gt;

&lt;p&gt;Upon reboot, the &lt;em&gt;computer node&lt;/em&gt; might be detected by the &lt;em&gt;phone node&lt;/em&gt;, triggering a notification on your phone. The nodes can see each other!&lt;/p&gt;

&lt;p&gt;To test message relay, we’ll use the &lt;kbd&gt;--reply&lt;/kbd&gt; command on the &lt;em&gt;computer node&lt;/em&gt;. This will listen to incoming messages and reply automatically.&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;meshtastic &lt;span class=&quot;nt&quot;&gt;--reply&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;On your phone, ensure you’re subscribed to the &lt;em&gt;phone node&lt;/em&gt; via &lt;abbr title=&quot;Bluetooth Low Energy&quot;&gt;BLE&lt;/abbr&gt; and open the &quot;Primary channel&quot; in the messages section. I went all out and texted an extremely creative &quot;hi.&quot; After a brief &quot;waiting for acknowledgment&quot; period, the &lt;em&gt;computer node&lt;/em&gt; should receive and reply to the message, which will then appear on your phone.&lt;/p&gt;

&lt;p&gt;Now, don’t be rude and answer your phone from the &lt;em&gt;computer node&lt;/em&gt; with the command line client:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;meshtastic &lt;span class=&quot;nt&quot;&gt;--no-nodes&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;--no-time&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;--sendtext&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;Hi me, got your message! Cheers, other me.&quot;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Bravo, you are now living the off-grid life and can send messages, without the need for any intermediary, completely self-reliant to… yourself.&lt;/p&gt;

&lt;h2&gt;Private Channels&lt;/h2&gt;

&lt;p&gt;While I didn’t detect other Meshtastic nodes in range, the &quot;Primary channel&quot; means that any nearby node would receive the message as well, it’s public.&lt;/p&gt;

&lt;p&gt;For private communication, we can create a new channel on any of the nodes and share its encryption key. On the &lt;em&gt;computer node&lt;/em&gt;:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;meshtastic &lt;span class=&quot;nt&quot;&gt;--ch-add&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;MyPrivateChannel&quot;&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;--ch-set&lt;/span&gt; psk random
meshtastic &lt;span class=&quot;nt&quot;&gt;--info&lt;/span&gt; &lt;span class=&quot;c&quot;&gt;# Verify the new channel&lt;/span&gt;
mesttattic &lt;span class=&quot;nt&quot;&gt;--qr-all&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Scanning the generated &lt;abbr title=&quot;Quick Response&quot;&gt;QR&lt;/abbr&gt; code with your phone adds the private channel with the correct password, ensuring encrypted communication.&lt;/p&gt;

&lt;h2&gt;Direct Messaging&lt;/h2&gt;

&lt;p&gt;Direct messaging is also possible:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;meshtastic &lt;span class=&quot;nt&quot;&gt;--sendtext&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;Hi there&quot;&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;--dest&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos;!a01bc234&apos;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;figcaption&gt;↑ The !a01bc234 is an example destination, use the ID of your phone node.&lt;/figcaption&gt;

&lt;p&gt;While the message was received by my phone (indicated by a push notification and a red counter on the speech bubble icon), it didn’t appear in the message list. This highlights the beta nature of Meshtastic, with its occasional quirks.&lt;/p&gt;

&lt;h2&gt;Internet Bridging&lt;/h2&gt;

&lt;p&gt;Meshtastic&apos;s true potential as a mesh network is realized when multiple nodes are within range, allowing messages to hop from one node to the next and extending the network&apos;s reach. However, we can further expand this connectivity by connecting to the internet through &lt;abbr title=&quot;MQ Telemetry Transport&quot;&gt;MQTT&lt;/abbr&gt;, enabling communication between nodes across the continent.&lt;/p&gt;

&lt;p&gt;By enabling internet connectivity, we can bridge the gap between local Meshtastic networks. While this clearly deviates from the fully off-grid concept, it provides a fallback when nearby nodes are scarce. Let&apos;s configure the &lt;em&gt;computer node&lt;/em&gt; for internet connectivity and MQTT:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;meshtastic &lt;span class=&quot;se&quot;&gt;\&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;--set&lt;/span&gt; network.wifi_enabled &lt;span class=&quot;nb&quot;&gt;true&lt;/span&gt; &lt;span class=&quot;se&quot;&gt;\&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;--set&lt;/span&gt; network.wifi_ssid MyWiFiNetwork &lt;span class=&quot;se&quot;&gt;\&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;--set&lt;/span&gt; network.wifi_psk MyWifiPa&lt;span class=&quot;nv&quot;&gt;$$&lt;/span&gt;w0rd&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;After executing this command, the device’s display will show a new screen indicating its WiFi connection status. This alone is not enough to send and receive messages via the internet, we also have to enable MQTT:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;meshtastic &lt;span class=&quot;se&quot;&gt;\&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;--set&lt;/span&gt; mqtt.enabled &lt;span class=&quot;nb&quot;&gt;true&lt;/span&gt; &lt;span class=&quot;se&quot;&gt;\&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;--set&lt;/span&gt; lora.ignore_mqtt &lt;span class=&quot;nb&quot;&gt;false&lt;/span&gt; &lt;span class=&quot;se&quot;&gt;\&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;--set&lt;/span&gt; lora.config_ok_to_mqtt &lt;span class=&quot;nb&quot;&gt;true&lt;/span&gt; &lt;span class=&quot;se&quot;&gt;\&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;--ch-index&lt;/span&gt; 0 &lt;span class=&quot;se&quot;&gt;\&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;--ch-set&lt;/span&gt; uplink_enabled &lt;span class=&quot;nb&quot;&gt;true&lt;/span&gt; &lt;span class=&quot;se&quot;&gt;\&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;--ch-set&lt;/span&gt; downlink_enabled &lt;span class=&quot;nb&quot;&gt;true&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;This setup allows the &lt;em&gt;phone node&lt;/em&gt;, still without an internet connection, remember, to communicate with distant nodes. Messages are relayed through the &lt;em&gt;computer node&lt;/em&gt; to the MQTT server, which then forwards them to internet-connected nodes. The &lt;em&gt;phone node&lt;/em&gt; needs “Ok to MQTT” (under the LoRa config) enabled for this to work.&lt;/p&gt;

&lt;h2&gt;Nodes on a Map&lt;/h2&gt;

&lt;p&gt;To make your node visible on a &lt;a href=&quot;https://meshtastic.liamcottle.net&quot; title=&quot;A map showing online Meshtastic nodes&quot;&gt;map&lt;/a&gt;, ensure WiFi is enabled as described above. Although the Heltec lacks GPS functionality, we can assign a fixed position for it to show up on the map. By default, the node sends MQTT updates every 15 minutes, but this interval can be adjusted.&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;meshtastic
&lt;span class=&quot;nt&quot;&gt;--set&lt;/span&gt; mqtt.enabled &lt;span class=&quot;nb&quot;&gt;true&lt;/span&gt; &lt;span class=&quot;se&quot;&gt;\&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;--set&lt;/span&gt; mqtt.map_reporting_enabled &lt;span class=&quot;nb&quot;&gt;true&lt;/span&gt; &lt;span class=&quot;se&quot;&gt;\&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;--set&lt;/span&gt; position.fixed_position &lt;span class=&quot;nb&quot;&gt;true&lt;/span&gt; &lt;span class=&quot;se&quot;&gt;\&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;--setlat&lt;/span&gt; 50.8449861 &lt;span class=&quot;se&quot;&gt;\&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;--setlon&lt;/span&gt; 4.3499932&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;h2&gt;Range Test&lt;/h2&gt;

&lt;p&gt;I was intrigued by the range of these little Heltec devices. I placed one node in the attic and took the other with me on a short walk, sending occasional messages along the way. The solid green lines indicate messages that were successfully received by my attic node, while the red dashed lines represent those that failed to go through. It’s worth noting that this informal test was in a dense urban area with some elevation changes; take it for what it’s worth.&lt;/p&gt;

&lt;figure&gt;
  &lt;picture&gt;
    &lt;img src=&quot;../../assets/meshtastic-range-test.svg&quot; width=&quot;553&quot; height=&quot;240&quot; alt=&quot;A graph featuring red and green lines labeled with distance measurements from a central node, with a maximum successful distance of 500 meters indicated.&quot;&gt;
  &lt;/picture&gt;
&lt;/figure&gt;

      </content>
      <author>
        <name>Simon</name>
      </author>
    </entry>
  
</feed>
