Why tel: and mailto: links set in Hugo front matter render as #ZgotmplZ and how to fix it in theme partials by skipping relURL and piping through safeURL at the call site.
remark42 in Hugo: a cross-domain session without third-party cookies
Wiring the remark42 widget into Hugo: partial, single.html, hugo.toml. Plus two flags in the instance’s .env that move the session from cookies to a JWT header and let comments work cross-domain without changes to the hosting topology.
remark42: GitHub OAuth and email notifications via transactional SMTP
Configuring GitHub OAuth, email notifications, and magic-link login in self-hosted remark42. Three authentication channels and two notification tracks (for the admin and thread subscribers), with product decisions that aren’t visible in the official documentation: which sender address to pick, whether to enable magic-link despite conflicts with password managers, when to keep anonymous comments.
Self-hosting remark42 alongside an existing Caddy on VPS
Setting up remark42 on a VPS that already runs caddy-docker-proxy, without starting a second reverse-proxy. Configuration via Docker labels, 91 MB image, 14 MiB RAM at rest, complete setup in about fifteen minutes.
A focus framework: The Pomodoro technique
The Pomodoro technique is a simple framework for managing your focus. Learn how 25-minute work blocks and regular breaks can help you be more productive as a developer.
OpenCode inside Docker: How to safely run AI in your local terminal?
Is giving AI control over your terminal a good idea? In this post, I show how to use Docker to create an isolated environment for OpenCode.
Cusdis Comments in Hugo: A Lightweight Solution Without Tracking
Cusdis is an open-source, privacy-first comment system designed as a lightweight alternative to Disqus, which you can easily embed in a static blog. In this article, I show the integration using partials and a dispatcher in Hugo, discuss moderation, and check the real overhead on requests and transfer added by the widget.
Styling Cusdis: Taking Control of the Iframe Without Touching the Source
Cusdis is a great, lightweight comment system, but its isolation inside an iframe means the default look rarely fits a polished blog. Instead of modifying the library’s source code, I’ll show you how to use JavaScript and the srcdoc attribute to inject your own styles directly into the widget.
Self-hosting Cusdis Comments with Caddy on a VPS
Complete guide to deploying Cusdis comment system with Docker and Caddy reverse proxy on any VPS. Includes CORS configuration for embedded widgets.
Giscus Comments in Hugo: Lightweight GitHub Discussions Integration
Complete guide to integrating Giscus comments in Hugo - a lightweight alternative to Disqus powered by GitHub Discussions. Includes setup, multilingual support, and real performance data showing 8x better performance than Disqus.
Disqus Comments in Hugo: Setup Guide and Performance Analysis
Complete guide to integrating Disqus comments in Hugo with detailed performance analysis. Learn setup steps, performance impact, and whether Disqus is right for your static site.
Hugo Optimization: Complete Guide
A summary of the Hugo performance optimization series. From images through CSS and JavaScript to server configuration. A collection of proven techniques that reduced my site’s transfer by 98% and raised the Lighthouse score to 98/100.
Hugo JS Optimization: Bundling, Fingerprinting, and Caching in 15 Minutes
Learn how to add bundling and fingerprinting in Hugo. Cut the number of requests by at least 50%, enable safe caching, and stop dealing with users running outdated code.
HTTP Server Optimization for Hugo: GZIP, Cache Headers, and Fingerprinting
Step‑by‑step guide to using GZIP, cache headers, and fingerprinting in Hugo so your static site loads like an SPA – less bandwidth, fewer requests, and long‑term gains from a one‑time server optimization.
CSS Optimization in Hugo: Minification and Bundling for Maximum Performance
Site performance isn’t just about file weight, it is also about how those files are delivered. In this article, I analyze the impact of fragmented CSS files on loading times in Hugo and demonstrate the optimization process: from minification configuration and bundling to a caching strategy (fingerprinting) that eliminates unnecessary network requests.
Hugo Image Processing: How I Reduced Page Size by 98%
Images are often the main performance bottleneck. In this post, I show how to use Hugo Image Processing to reduce page size by 98% (from 15 MB to 350 KB). Learn how to automate WebP conversion, implement Responsive Images, and improve Core Web Vitals without manual editing.
Symfony Quick Start: Docker & Makefile
I often kick off projects with heavy, over-engineered stacks I don’t actually need yet. My philosophy? Start small. By using PHP, SQLite, and a simple Makefile instead of a complex docker-compose setup, I can get straight to coding in seconds. Here is how to build a local environment that grows with your project needs, rather than imposing unnecessary complexity from day one.
Google Tag Manager in the Hugo Ecosystem
Are you tired of adding tracking scripts directly into your code? Let me show you how to use Google Tag Manager with Hugo. I will also explain how to handle Cookie Consent without heavy libraries and keep your marketing tools separate from your app code.
Hugo + GitHub Actions: a simple deployment pipeline
A short, practical guide to building a simple CI/CD pipeline for a Hugo site using GitHub Actions, SSH, and rsync.
Hugo vs Sulu
Performance of a static generator or the convenience of a dynamic editor? I compare Hugo and Sulu in terms of developer workflow, infrastructure costs, and scalability. Learn which tool provides a more stable foundation for your next deployment.