<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Bridgetown on Melabit</title>
    <link>https://static.233.196.69.159.clients.your-server.de/en/tags/bridgetown/</link>
    <description>Recent content in Bridgetown on Melabit</description>
    <generator>Hugo</generator>
    <language>en</language>
    <lastBuildDate>Sat, 24 May 2025 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://static.233.196.69.159.clients.your-server.de/en/tags/bridgetown/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Jeeeeeekyll? No, Hugo!</title>
      <link>https://static.233.196.69.159.clients.your-server.de/en/2025/05/24/jeeeeeekyll-no-hugo/</link>
      <pubDate>Sat, 24 May 2025 00:00:00 +0000</pubDate>
      <guid>https://static.233.196.69.159.clients.your-server.de/en/2025/05/24/jeeeeeekyll-no-hugo/</guid>
      <description>&lt;p&gt;As &lt;a href=&#34;https://melabit.com/en/2025/01/21/from-melabit-to-melabit-why-jekyll/&#34;&gt;I was writing about my transition from WordPress to Jekyll&lt;/a&gt;, I knew I had to prepare for another change.&lt;/p&gt;&#xA;&lt;p&gt;From a technical point of view, &lt;a href=&#34;https://jekyllrb.com/&#34;&gt;Jekyll&lt;/a&gt; is a fantastic platform: it is easy to program, has impeccable documentation, and works perfectly during the development phase, with a limited number of pages and test posts. But, as I experienced firsthand, when Jekyll is asked to handle a real site with hundreds of posts, performance drops dramatically and response times become unbearably slow (and quite embarrassing, too).&lt;/p&gt;&#xA;&lt;p&gt;In the late &amp;rsquo;90s, it was normal to wait several seconds for a webpage to load.&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt; But today, we&amp;rsquo;re used to pages that load instantly, so having to wait three or four seconds is  unacceptable.&lt;/p&gt;&#xA;&lt;h4 id=&#34;a-high-price-to-pay&#34;&gt;A high price to pay&lt;/h4&gt;&#xA;&lt;p&gt;Before I started working on the new site, I was well aware that Jekyll was slow. However, this slowness was always attributed to the &lt;strong&gt;site generation phase&lt;/strong&gt;, which is performed sporadically and can be automated. And that was exactly what happened: during development, with a few dozen posts, I could regenerate the site in 10–20 seconds, quite annoying, but not dramatic; now it takes 15 minutes to regenerate the entire &lt;a href=&#34;https://melabit.com/&#34;&gt;melabit.com&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;What I didn’t know was that the &lt;strong&gt;generated site&lt;/strong&gt; would also suffer from the same problem, which became evident as soon as I finished the development phase and started working with all the posts.&lt;/p&gt;&#xA;&lt;p&gt;At that point, I was still convinced that optimizing the code and images and applying an aggressive &lt;em&gt;caching&lt;/em&gt; would mitigate the issue. And in any case, I had gone too far to turn back. However, I soon realized that this strategy wasn’t enough, and that a radical rethink was necessary. So I started looking around.&lt;/p&gt;&#xA;&lt;h4 id=&#34;alternatives&#34;&gt;Alternatives&lt;/h4&gt;&#xA;&lt;p&gt;Static site generators are like Linux distributions: there are too many of them, and in most cases it’s hard to understand why they even exist. At the moment, &lt;a href=&#34;https://jamstack.org/generators/&#34;&gt;Jamstack lists&lt;/a&gt; 366 of them, while &lt;a href=&#34;https://staticsitegenerators.net/&#34;&gt;Static Site Generators&lt;/a&gt; counts nearly 500. Most have been abandoned, maybe because nobody was using them, or because the developer lost interest in continuing development. Let’s say the interesting ones are a dozen or so, maybe a few more.&lt;/p&gt;&#xA;&lt;p&gt;Among these, I considered &lt;a href=&#34;https://www.bridgetownrb.com/&#34;&gt;Bridgetown&lt;/a&gt; (very briefly, I admit), which &lt;a href=&#34;https://www.bridgetownrb.com/news/time-to-visit-bridgetown/&#34;&gt;is derived from Jekyll&lt;/a&gt; and therefore, at first glance, seemed like a natural evolution. However, I realised that few people use it, there are few plugins and even fewer themes. If Bridgetown is derived from Jekyll, how could I be sure that it didn’t suffer from the same slowness issue? Better to stay away and stick with the original.&lt;/p&gt;&#xA;&lt;p&gt;Another candidate was &lt;a href=&#34;https://middlemanapp.com/&#34;&gt;Middleman&lt;/a&gt;, which is developed in Ruby like Jekyll. But Middleman is designed to generate plain websites, and you need a specific extension to make it support typical blog features, such as lists, taxonomies, feeds and comments. Also, the &lt;em&gt;templating&lt;/em&gt; language is &lt;a href=&#34;https://github.com/ruby/erb&#34;&gt;ERB&lt;/a&gt; (Embedded Ruby), which is a sensible choice since it’s integrated within Ruby. However, it meant having to relearn everything from scratch.&lt;/p&gt;&#xA;&lt;p&gt;Long story short: in the end, the only serious candidate was&amp;hellip; the good old &lt;a href=&#34;https://gohugo.io/&#34;&gt;Hugo&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;h4 id=&#34;looking-for-speed&#34;&gt;Looking for speed&lt;/h4&gt;&#xA;&lt;p&gt;Many years ago, &lt;a href=&#34;https://melabit.com/it/2014/12/28/hugo-la-prova/&#34;&gt;I wrote a post about Hugo&lt;/a&gt;, finding it interesting, but crippled by documentation that calling &lt;em&gt;poor&lt;/em&gt; was being generous.&lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&#xA;&lt;p&gt;However, its quality is not in question. Unsurprisingly, Hugo consistently ranks at the top of all the charts evaluating the quality of static site generators, just like Jekyll.&lt;/p&gt;&#xA;&lt;p&gt;And Hugo has a real ace up its sleeve: it’s fast. In fact, it’s &lt;em&gt;blazingly fast&lt;/em&gt;!&lt;/p&gt;&#xA;&lt;p&gt;I can&amp;rsquo;t say whether Hugo is truly &lt;em&gt;the world’s fastest framework for building websites&lt;/em&gt;, as claimed in the &lt;a href=&#34;https://gohugo.io/&#34;&gt;slogan at the top of its homepage&lt;/a&gt;. However, I have verified firsthand that Hugo can generate this entire site in under a minute, 15 times faster than Jekyll. Most importantly, the generated site is fast and responsive, exactly as you would expect from a modern website. That puts everything else in the background.&lt;/p&gt;&#xA;&lt;h4 id=&#34;hugo&#34;&gt;Hugo&lt;/h4&gt;&#xA;&lt;p&gt;So starting today, &lt;a href=&#34;https://melabit.com/&#34;&gt;melabit.com&lt;/a&gt; is moving to Hugo, with a new design&lt;sup id=&#34;fnref:3&#34;&gt;&lt;a href=&#34;#fn:3&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;3&lt;/a&gt;&lt;/sup&gt; and trying to keep all the features of the Jekyll-based version. The first of these is the [Comma-based commenting system]https://melabit.com/en/2025/03/05/from-melabit-to-melabit-managing-comments-with-jekyll/), which after the transplant worked practically on the first try.&lt;/p&gt;&#xA;&lt;p&gt;The &lt;a href=&#34;https://en.wikipedia.org/wiki/Permalink&#34;&gt;permalinks&lt;/a&gt; have changed and now explicitly indicate the language of the post, which is a more rational approach. The feed has changed too. For now it&amp;rsquo;s the old RSS, but at some point I’ll check whether it’s possible to add ATOM.&lt;/p&gt;&#xA;&lt;p&gt;Right now, the search function is based on Google, and will not work until the site is indexed again. Pagination needs to be revised, as does the logic that shows the featured post in the list of all posts. But these details can be sorted out later.&lt;/p&gt;&#xA;&lt;p&gt;Because of how my mind works, I’d love to go into the details of how I modified Hugo and the chosen theme, but I’m afraid it would be boring, in particular after all the very detailed (but now almost useless) posts I wrote about Jekyll. I’ll think it over. In the meantime, if anyone is interested in knowing more, feel free to say so in the comments.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://static.233.196.69.159.clients.your-server.de/img/2025-05-24-jeeeeeekyll-no-hugo/jekyll-vs-hugo.jpg&#34; alt=&#34;&#34;&gt;&#xA;&amp;ndash; &lt;em&gt;Image generated by &lt;a href=&#34;https://gemini.google.com&#34;&gt;Google Gemini&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;&#xA;&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;&#xA;&lt;hr&gt;&#xA;&lt;ol&gt;&#xA;&lt;li id=&#34;fn:1&#34;&gt;&#xA;&lt;p&gt;But you could at least distract yourself by watching the images appear one line at a time on the screen&amp;hellip; 😂&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li id=&#34;fn:2&#34;&gt;&#xA;&lt;p&gt;Not much has changed since then. One of the (few) posts I can recommend without reservation is this one on managing &lt;a href=&#34;https://www.smashingmagazine.com/2021/02/context-variables-hugo-static-site-generator/&#34;&gt;context and variables in Hugo&lt;/a&gt;. It&amp;rsquo;s a very technical read, but essential for learning the basics needed to modify and extend Hugo.&amp;#160;&lt;a href=&#34;#fnref:2&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li id=&#34;fn:3&#34;&gt;&#xA;&lt;p&gt;I&amp;rsquo;m not thrilled with the design, but it&amp;rsquo;s the best I&amp;rsquo;ve been able to come up with so far.&amp;#160;&lt;a href=&#34;#fnref:3&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/div&gt;&#xA;</description>
    </item>
    <item>
      <title>From melabit to melabit: why Jekyll?</title>
      <link>https://static.233.196.69.159.clients.your-server.de/en/2025/01/21/from-melabit-to-melabit-why-jekyll/</link>
      <pubDate>Tue, 21 Jan 2025 18:00:00 +0000</pubDate>
      <guid>https://static.233.196.69.159.clients.your-server.de/en/2025/01/21/from-melabit-to-melabit-why-jekyll/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://static.233.196.69.159.clients.your-server.de/img/2025-01-21-da-melabit-a-melabit-perche-jekyll/jametlene-reskp-fmyZcoCaSac-unsplash.jpg&#34; alt=&#34;&#34;&gt;&#xA;&amp;ndash; &lt;em&gt;Source: &lt;a href=&#34;https://unsplash.com/@reskp&#34;&gt;Jametlene Reskp&lt;/a&gt; on &lt;a href=&#34;https://unsplash.com&#34;&gt;Unsplash&lt;/a&gt;&lt;/em&gt;.&lt;/p&gt;&#xA;&lt;p&gt;As I mentioned in my &lt;a href=&#34;https://melabit.com/en/2025/01/02/from-melabit-to-melabit-goodbye-wordpress-hello-jekyll/&#34;&gt;last post&lt;/a&gt;, leaving the WordPress &lt;em&gt;comfort zone&lt;/em&gt; wasn’t easy at all.&lt;/p&gt;&#xA;&lt;p&gt;Going from focusing solely on writing something interesting &amp;ndash; while a team of system administrators and web programming experts handled everything else &amp;ndash; to having to do it all by myself was a massive leap.&lt;/p&gt;&#xA;&lt;p&gt;It took quite some time to set up the new system, add missing features, and resolve the (many) unexpected technical issues. And let’s not forget that, in the meantime, I was still managing my regular work and trying to write a post now and then.&lt;/p&gt;&#xA;&lt;hr style = &#34;border: none; &#xA;            border-top: 3px double #333; &#xA;            color: #333; &#xA;            overflow: visible; &#xA;            height: 5px; &#xA;            width: 50%; &#xA;            margin-left: auto; &#xA;            margin-right: auto;&#34;&#xA;&gt;&#xA;&#xA;&lt;p&gt;Thus, the primary need was to base this new blog on a stable and reliable platform, a platform that wouldn’t change every week or, worse, suddenly vanish because its developer got tired of tinkering with the project.&lt;/p&gt;&#xA;&lt;p&gt;Having abundant, well-written documentation was also essential: clear guides for configuring the system and finding quick solutions to problems (which are inevitable) are a tremendous help, saving countless hours of frustration.&lt;/p&gt;&#xA;&lt;p&gt;With these criteria, the choice was inevitable, and it was the same as &lt;a href=&#34;https://melabit.wordpress.com/2014/12/31/and-the-winner-is/&#34;&gt;many years ago&lt;/a&gt;: Jekyll.&lt;/p&gt;&#xA;&lt;p&gt;Because &lt;a href=&#34;http://jekyllrb.com/&#34;&gt;Jekyll&lt;/a&gt; may have its flaws, such as the slow site generation and the bulkiness of the generated code, but it’s been around for 16 years. It continues to be regularly developed without dramatic overhauls (the &lt;a href=&#34;https://github.com/jekyll/jekyll&#34;&gt;latest release&lt;/a&gt; was in September 2024), and you can find guides online for virtually anything you might encounter when building a site with this platform.&lt;/p&gt;&#xA;&lt;p&gt;After all, it’s no coincidence that &lt;a href=&#34;https://docs.github.com/en/pages/setting-up-a-github-pages-site-with-jekyll/about-github-pages-and-jekyll&#34;&gt;GitHub chose Jekyll&lt;/a&gt; as the platform for generating sites directly from its repositories.&lt;/p&gt;&#xA;&lt;hr style = &#34;border: none; &#xA;            border-top: 3px double #333; &#xA;            color: #333; &#xA;            overflow: visible; &#xA;            height: 5px; &#xA;            width: 50%; &#xA;            margin-left: auto; &#xA;            margin-right: auto;&#34;&#xA;&gt;&#xA;&#xA;&lt;p&gt;Back then, I was so convinced about Jekyll that I wrote all 482 posts of the blog on &lt;a href=&#34;https://melabit.wordpress.com/&#34;&gt;wordpress.com&lt;/a&gt; in Markdown, with a &lt;a href=&#34;https://jekyllrb.com/docs/front-matter/&#34;&gt;YAML front matter&lt;/a&gt; like the one used by Jekyll and saved images in folders named after the posts.&lt;/p&gt;&#xA;&lt;p&gt;On WordPress, this wasn’t necessary because all I had to (and could) do was copy the text into a new post, add the images, and click publish (well, it’s a bit more complicated, but you get the idea).&lt;/p&gt;&#xA;&lt;p&gt;However, having everything neatly prepared in the &lt;em&gt;right&lt;/em&gt;_ format significantly simplified the transition from WordPress to a static site based on Jekyll. I just had to set up the basic structure, add the posts and images, and generate the site to have everything ready to go (again, it’s &lt;em&gt;slightly&lt;/em&gt; more complex than that, but you get the idea).&lt;/p&gt;&#xA;&lt;p&gt;If I hadn’t kept the original texts, I could have used a &lt;a href=&#34;https://github.com/benbalter/wordpress-to-jekyll-exporter&#34;&gt;WordPress plugin&lt;/a&gt; to &lt;a href=&#34;https://heidloff.net/article/migrating-from-wordpress-to-jekyll/&#34;&gt;export the posts from WordPress to Jekyll&lt;/a&gt;. (It’s true, there’s a WordPress plugin for almost everything!) But the plugin doesn’t support comments, images are dumped into a non-standard directory and need to be moved, and all links have to be fixed&amp;hellip; Ultimately, in my case, it would have taken more time to clean everything up than to start from scratch.&lt;/p&gt;&#xA;&lt;hr style = &#34;border: none; &#xA;            border-top: 3px double #333; &#xA;            color: #333; &#xA;            overflow: visible; &#xA;            height: 5px; &#xA;            width: 50%; &#xA;            margin-left: auto; &#xA;            margin-right: auto;&#34;&#xA;&gt;&#xA;&#xA;&lt;p&gt;Now the foundational work is done, and all the main functions of the new site are more or less working. At this point, it’s easier to explore alternative—and hopefully more performant—solutions to Jekyll.&lt;/p&gt;&#xA;&lt;p&gt;At the top of my list are Bridgetown, a Jekyll &lt;em&gt;fork&lt;/em&gt;_ worth diving into, and Middleman, which intrigues me even if I’m not entirely sure why!&lt;/p&gt;&#xA;&lt;p&gt;It will be fun.&lt;/p&gt;&#xA;</description>
    </item>
  </channel>
</rss>
