<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xml:base="https://iambilotta.com/" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Francesco Bilotta</title>
    <link>https://iambilotta.com/</link>
    <atom:link href="https://iambilotta.com/feed.xml" rel="self" type="application/rss+xml" />
    <description>Notes on legacy systems, the JVM, and rebuilding things to be boring and correct.</description>
    <language>en</language>
    <item>
      <title>JTE, the JVM, and the static-site gap</title>
      <link>https://iambilotta.com/blog/jte-and-the-jvm-ssg-gap/</link>
      <description>&lt;p&gt;Our studio stack is Java + Spring Boot + JTE (&lt;code&gt;gg.jte&lt;/code&gt;) + htmx + Lit. JTE is a great
template engine: compiled, type-safe, context-aware HTML escaping. The natural instinct
is to keep it for the static site too.&lt;/p&gt;
&lt;p&gt;The problem: no mature static-site generator renders JTE.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;JBake&lt;/strong&gt; uses Freemarker, Groovy, Thymeleaf, Jade, or Pebble. Not JTE.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Roq&lt;/strong&gt; (the Quarkus SSG) uses Qute. Not JTE.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So a JTE-native SSG does not exist. If you want JTE, you build the static-generation
layer yourself: routing, content collections, a Markdown pipeline, RSS, sitemap, image
optimization, asset bundling. Each of those is a solved problem in the JS ecosystem and
a from-scratch job on the JVM.&lt;/p&gt;
&lt;p&gt;That is the real decision: not &amp;quot;JTE or not&amp;quot;, but &amp;quot;do I want to maintain a bespoke SSG
so I can keep JTE on a site that renders the same HTML every build?&amp;quot;&lt;/p&gt;
&lt;p&gt;For a personal site, the honest answer is usually no.&lt;/p&gt;
</description>
      <pubDate>Fri, 19 Jun 2026 00:00:00 GMT</pubDate>
      <dc:creator>Francesco Bilotta</dc:creator>
      <guid>https://iambilotta.com/blog/jte-and-the-jvm-ssg-gap/</guid>
    </item>
    <item>
      <title>Rebuilding this site as a static site</title>
      <link>https://iambilotta.com/blog/rebuilding-this-site-static/</link>
      <description>&lt;p&gt;The previous version of this site was a small Spring Boot application: a home page
and an in-memory blog. It worked, but it was a server running just to hand back HTML
that never changes between deploys. For a personal site that is pure overhead: a JVM,
a process, a host, a thing that can fall over at 3am.&lt;/p&gt;
&lt;p&gt;A static site removes all of that. The pages are generated once at build time and
served as plain files from a CDN. No server, no database, no runtime to patch.&lt;/p&gt;
&lt;h2&gt;What I want from the tooling&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;File-based routing, so a new page is just a new file.&lt;/li&gt;
&lt;li&gt;Content collections with a schema, so a typo in a post&#39;s frontmatter fails the build
instead of shipping broken.&lt;/li&gt;
&lt;li&gt;Markdown with real syntax highlighting out of the box.&lt;/li&gt;
&lt;li&gt;RSS and a sitemap generated for me, not hand-maintained.&lt;/li&gt;
&lt;li&gt;Image optimization without wiring a pipeline by hand.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The question I&#39;m working through is whether to get those from an off-the-shelf
generator, or to keep the JVM stack and build a bridge to fill the gaps.&lt;/p&gt;
</description>
      <pubDate>Thu, 18 Jun 2026 00:00:00 GMT</pubDate>
      <dc:creator>Francesco Bilotta</dc:creator>
      <guid>https://iambilotta.com/blog/rebuilding-this-site-static/</guid>
    </item>
  </channel>
</rss>