From Jekyll to a POSIXish static site generator

Vitor Sousa Pereira has replaced his Jekyll-powered personal blog with a custom static site generator built using POSIX-compliant shell scripting, AWK, and AI assistance. The motivation stemmed from a desire to eliminate his reliance on Ruby, which he no longer uses for his primary development work, thus simplifying maintenance. Pereira opted against a Go-based Jekyll alternative like gojekyll due to Jekyll's limitation of single post collections, instead seeking a more flexible and integrated solution. He leveraged AI models, with a high-tier model generating a plan and a medium-tier model executing it, to create a system that handles markdown-to-HTML conversion, syntax highlighting, templating, RSS feed generation, sitemaps, and minification, all within a self-contained repository. While a netcat-based development server encountered issues with Chrome's connection handling, a fork-based Perl server was integrated, maintaining broad portability. This transition resulted in a dramatic reduction in Netlify build times from over three minutes to just twelve seconds, significantly enhancing the deployment process. The project prioritizes keeping existing URLs stable and includes extensive testing using the Brat test runner to ensure functional parity with the previous Jekyll setup.

AI Signal Decode

The core technical shift involves migrating from Jekyll, a Ruby-based static site generator, to a custom solution built entirely from POSIX-compliant tools such as `sh`, `awk`, and `sed`. This move addresses the developer's disassociation from the Ruby ecosystem, reducing maintenance overhead. A key functional improvement is the ability to support multiple, independent "collections" of posts (e.g., main blog posts and TILs), a limitation Pereira found in Jekyll. The AI-assisted development process, using a hierarchical approach with Fable 5.1 for planning and Opus 5 for implementation, generated scripts for markdown processing, templating (a subset of Liquid), RSS/sitemap generation, and asset minification, all within a single repository.

Market implications are primarily seen in the performance gains and reduced operational friction for personal and potentially smaller project websites. The drastic reduction in build times on platforms like Netlify, from over 3 minutes to 12 seconds, highlights the efficiency of a lean, custom-built generator over a more complex framework like Jekyll, especially when the underlying language (Ruby) is no longer a primary development tool. This demonstrates a trend towards hyper-optimized, specialized tooling for static site generation, favoring speed and simplicity over feature bloat, particularly in CI/CD pipelines.

The technical significance lies in the successful implementation of a complex web application stack using only minimal, ubiquitous POSIX utilities, showcasing the enduring power and flexibility of these tools. The use of AWK for markdown rendering and templating, combined with shell scripting for orchestration, is a testament to their capabilities for text processing and system automation. The iterative AI-driven development process, where a larger model outlines the architecture and a smaller one implements, offers a novel approach to software creation. The integration of Brat for testing ensures robustness, mirroring the output of the original Jekyll build and providing a safety net for the transition.

Future developments to watch would include whether this 'POSIXish' generator inspires similar custom solutions for other developers seeking to escape heavyweight frameworks or specific language dependencies. The choice of a Perl-based development server, while a slight departure from pure POSIX, still maintains broad compatibility, and its performance in the CI environment (where it's not used) is a crucial point. Monitoring the adoption of AI in planning and implementation for such specialized tooling, and the continued robustness of the system as new content and features are added, will be key indicators of its long-term success.