# Hugo

Hugo is an open-source static site generator and framework for building websites.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## Integrating Java API Documentation with Hugo Using a Java 25 Doclet

DevFeed: [Integrating Java API Documentation with Hugo Using a Java 25 Doclet](<https://devfeed.tech/articles/javadoc-that-feels-like-your-website-30849.md>)

Original publisher: [Read original article](<https://www.codenameone.com/blog/javadoc-hugo-markdown-doclet/>)

Author: Shai Almog

Published: 2026-09-16T00:00:00Z

Content type: article

Language: en

Sources: [CodeName One](<https://devfeed.tech/sources/codename-one.md>)

Topics: [Hugo](<https://devfeed.tech/topics/hugo.md>), [Java](<https://devfeed.tech/topics/java.md>), [Markdown](<https://devfeed.tech/topics/markdown.md>), [Documentation](<https://devfeed.tech/topics/documentation.md>)

Tags: [documentation](<https://devfeed.tech/tags/documentation.md>), [hugo](<https://devfeed.tech/tags/hugo.md>), [java](<https://devfeed.tech/tags/java.md>), [markdown](<https://devfeed.tech/tags/markdown.md>), [search](<https://devfeed.tech/tags/search.md>)

### AI overview

A Java 25 doclet converts Codename One API models and Markdown documentation comments into Hugo content. This integrates API pages with the site's existing theme and search while preserving member links and an offline Javadoc archive.

### Source excerpt

A Java 25 doclet turns the Codename One API model and Markdown comments into Hugo content. The site gains integrated search and theming while preserving member links and the offline Javadoc archive.

## Tools

DevFeed: [Tools](<https://devfeed.tech/articles/tools-25375.md>)

Original publisher: [Read original article](<https://kau.sh/tools/>)

Author: Kaushik Gopal

Published: 2026-09-15T04:00:36.743345Z

Content type: article

Language: en

Sources: [Kaushik Gopal's Site](<https://devfeed.tech/sources/kaushik-gopal-s-site.md>)

Topics: [Programming](<https://devfeed.tech/topics/programming.md>), [Cloudflare](<https://devfeed.tech/topics/cloudflare.md>), [Terminal](<https://devfeed.tech/topics/terminal.md>), [Vim](<https://devfeed.tech/topics/vim.md>), [Hugo](<https://devfeed.tech/topics/hugo.md>), [Firefox](<https://devfeed.tech/topics/firefox.md>), [macOS](<https://devfeed.tech/topics/macos.md>), [Obsidian](<https://devfeed.tech/topics/obsidian-md.md>), [Font](<https://devfeed.tech/topics/font.md>)

Tags: [cloudflare](<https://devfeed.tech/tags/cloudflare.md>), [firefox](<https://devfeed.tech/tags/firefox.md>), [hugo](<https://devfeed.tech/tags/hugo.md>), [mac](<https://devfeed.tech/tags/mac.md>), [macos](<https://devfeed.tech/tags/macos.md>), [programming](<https://devfeed.tech/tags/programming.md>), [programming-font](<https://devfeed.tech/tags/programming-font.md>), [terminal](<https://devfeed.tech/tags/terminal.md>), [tools](<https://devfeed.tech/tags/tools.md>), [vim](<https://devfeed.tech/tags/vim.md>)

### AI overview

A personal tools page listing services, programming tools, macOS applications, audio equipment, desk items, and physical products. It mentions Buttondown, a customized Hugo site deployed on Cloudflare Pages, Ghostty, tmux, Vim, Zed, Obsidian, Raycast, Firefox, CleanShot, and Logic Pro.

### Source excerpt

Bits ## Services ### Newsletter via Buttondown Statically generate site with Henry (highly customized Hugo theme) Deployed on Cloudflare Pages Programming ### Berkeley Mono is my programming font of choice Ghostty for terminal stuff (along with tmux) Within the terminal I'm almost entirely using Vim. Zed as my regular text editor MacOS ### Obsidian for notes & todos Raycast is my launcher Firefox for browsing CleanShot for screenshots on my mac Logic Pro for editing AI Stuff ### With AI evolving so fast, my tag ai-model-choice is a better place to track what I'm using. Atoms ## Desk ### Nordik Leather Desk Mat LEUCHTTURM1917 Soft cover journal dotted Uniball Deluxe 0.5mm Micro pens Audio ### Earthworks Ethos - 400 microphone USBPre 21 audio interface AirPods Max (yes for podcasting!) Physical ### I drive a Tesla Model Y (and eagerly waiting to move to an R3) These are no longer sold but are built like a tank. I'd probably pick the Motu 2 if my USBPre 2 ever fails ↩︎

## Rewrote my blog with Zine

DevFeed: [Rewrote my blog with Zine](<https://devfeed.tech/articles/rewrote-my-blog-with-zine-20806.md>)

Original publisher: [Read original article](<https://drewdevault.com/blog/Rewrite-with-zine/>)

Author: April

Published: 2026-04-19T00:00:00Z

Content type: article

Language: en

Sources: [Drew DeVault](<https://devfeed.tech/sources/drew-devault.md>)

Topics: [Website](<https://devfeed.tech/topics/website.md>), [Hugo](<https://devfeed.tech/topics/hugo.md>), [Jekyll](<https://devfeed.tech/topics/jekyll.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>)

Tags: [blog](<https://devfeed.tech/tags/blog.md>), [blog-post](<https://devfeed.tech/tags/blog-post.md>), [github-pages](<https://devfeed.tech/tags/github-pages.md>), [hugo](<https://devfeed.tech/tags/hugo.md>), [jekyll](<https://devfeed.tech/tags/jekyll.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [open-source-software](<https://devfeed.tech/tags/open-source-software.md>), [static-site-generator](<https://devfeed.tech/tags/static-site-generator.md>)

### AI overview

The author describes rewriting their blog from Hugo to Zine after frustrations with Hugo's complexity and backwards-incompatible changes. They also discuss porting nearly 400 archived posts and exploring Zine's SuperHTML and SuperMD tools.

### Source excerpt

15 years ago, on December 11th, 2010, at the bold age of 17, I wrote my first blog post on the wonders of the Windows Phone 7 on Blogspot. I started blogging as a kid at the behest of a family friend at Microsoft, who promised she'd make sure I would become the youngest Microsoft MVP if I started blogging. That never came to pass, though, because as I entered adulthood and started to grow independent of my Microsoft-friendly family I quickly began down the path to the free and open source software community. Early blog posts covered intriguing topics such as complaining about my parent's internet filter, a horrible hack to "replace" the battery of a dead gameboy game, announcing my friend's Minecraft guild had a new website (in PHP), and so on. After Blogspot, I moved to Jekyll on GitHub pages, publishing You don't need jQuery in 2013. For a long time this was the oldest post on the site. I'm pretty proud of my writing skills and have a solid grasp on who I am today, but the further back you go the worse my writing, ideas, values, and politics all get. I was growing up in front of the world on this blog, you know? It's pretty embarassing to keep all of this old stuff around. But, I decided a long time ago to keep all of it up, so that people can understand where I've come from, and that everyone has to start somewhere.1 At some point - I'm not sure when - I switched from Jekyll to Hugo, and I've stuck with it since. But lately I've been frustrated with it. I'd like my blog engine to remain relatively stable and simple, but Hugo is quite complex and over the past few years I've been bitten by a number of annoying and backwards-incompatible changes. And, as part of my efforts to remove vibe-coded software from my stack, I was disappointed to learn that Hugo is being vibe coded now, and so rewriting my blog went onto the todo list. Choosing the right static site generator (SSG) was a bit of a frustrating process. Other leading candidates, like Pelican or Zola, are also

## Moving from WordPress to Hugo + Cloudflare Pages

DevFeed: [Moving from WordPress to Hugo + Cloudflare Pages](<https://devfeed.tech/articles/moving-from-wordpress-to-hugo-cloudflare-pages-19379.md>)

Original publisher: [Read original article](<https://www.codenameone.com/blog/moving-from-wordpress-to-hugo-cloudflare-pages/>)

Author: Shai Almog

Published: 2026-02-17T00:00:00Z

Content type: opinion

Language: en

Sources: [CodeName One](<https://devfeed.tech/sources/codename-one.md>)

Topics: [Hugo](<https://devfeed.tech/topics/hugo.md>), [Cloudflare](<https://devfeed.tech/topics/cloudflare.md>), [WordPress](<https://devfeed.tech/topics/wordpress.md>), [Giscus](<https://devfeed.tech/topics/giscus.md>), [Git](<https://devfeed.tech/topics/git.md>), [Markdown](<https://devfeed.tech/topics/markdown.md>), [Pull Request](<https://devfeed.tech/topics/pull-request.md>), [Caching](<https://devfeed.tech/topics/caching.md>), [Dark Mode](<https://devfeed.tech/topics/dark-mode.md>)

Tags: [caching](<https://devfeed.tech/tags/caching.md>), [cloudflare](<https://devfeed.tech/tags/cloudflare.md>), [dark-mode](<https://devfeed.tech/tags/dark-mode.md>), [development](<https://devfeed.tech/tags/development.md>), [git](<https://devfeed.tech/tags/git.md>), [github](<https://devfeed.tech/tags/github.md>), [hugo](<https://devfeed.tech/tags/hugo.md>), [markdown](<https://devfeed.tech/tags/markdown.md>), [pull-request](<https://devfeed.tech/tags/pull-request.md>), [wordpress](<https://devfeed.tech/tags/wordpress.md>)

### AI overview

The article explains why Codename One moved its website from WordPress to Hugo and Cloudflare Pages. It describes a Git-based publishing workflow, simpler deployments, improved performance and caching, better JavaDocs, a light/dark mode toggle, and Giscus-powered discussions.

### Source excerpt

Why we moved the Codename One website from WordPress to Hugo and Cloudflare Pages, what improved, and how to use Giscus for discussions.

## My IndieWeb Journey: A Guide to POSSE on a Hugo Static Site

DevFeed: [My IndieWeb Journey: A Guide to POSSE on a Hugo Static Site](<https://devfeed.tech/articles/my-indieweb-journey-a-guide-to-posse-on-a-hugo-static-site-27742.md>)

Original publisher: [Read original article](<https://gagor.pro/2026/01/my-indieweb-journey-a-guide-to-posse-on-a-hugo-static-site/>)

Author: Tom

Published: 2026-01-27T00:00:00Z

Content type: tutorial

Language: en

Sources: [Tomasz Gągor](<https://devfeed.tech/sources/tomasz-gagor.md>)

Topics: [IndieWeb](<https://devfeed.tech/topics/indieweb.md>), [Hugo](<https://devfeed.tech/topics/hugo.md>), [Microformats](<https://devfeed.tech/topics/microformats.md>), [Giscus](<https://devfeed.tech/topics/giscus.md>), [GitHub](<https://devfeed.tech/topics/github.md>)

Tags: [blog](<https://devfeed.tech/tags/blog.md>), [brid-gy](<https://devfeed.tech/tags/brid-gy.md>), [building](<https://devfeed.tech/tags/building.md>), [github](<https://devfeed.tech/tags/github.md>), [github-action](<https://devfeed.tech/tags/github-action.md>), [guide](<https://devfeed.tech/tags/guide.md>), [hugo](<https://devfeed.tech/tags/hugo.md>), [indieweb](<https://devfeed.tech/tags/indieweb.md>), [journey](<https://devfeed.tech/tags/journey.md>), [microformats](<https://devfeed.tech/tags/microformats.md>), [papermod](<https://devfeed.tech/tags/papermod.md>), [posse](<https://devfeed.tech/tags/posse.md>), [static-site](<https://devfeed.tech/tags/static-site.md>), [syndication](<https://devfeed.tech/tags/syndication.md>), [web-development](<https://devfeed.tech/tags/web-development.md>), [webmentions](<https://devfeed.tech/tags/webmentions.md>)

### AI overview

A personal guide to applying IndieWeb principles to a Hugo blog through POSSE syndication. It describes cross-posting articles to social networks with a custom GitHub Action, discusses the limitations of comment systems such as Giscus, and emphasizes publishing on an owned site before syndicating elsewhere.

### Source excerpt

My journey of integrating IndieWeb principles into my Hugo blog-from microformats to Brid.gy syndication and building a custom Webmention renderer.

## Moved my blog to \[blog.wagemakers.be\](https://blog.wagemakers.be)

DevFeed: [Moved my blog to \[blog.wagemakers.be\](https://blog.wagemakers.be)](<https://devfeed.tech/articles/moved-my-blog-to-blog-wagemakers-be-https-blog-wagemakers-be-39540.md>)

Original publisher: [Read original article](<https://blog.wagemakers.be/blog/2026/01/26/blog-wagemakers-be/>)

Author: Staf Wagemakers

Published: 2026-01-26T17:26:00Z

Content type: tutorial

Language: en

Sources: [stafwag Blog](<https://devfeed.tech/sources/stafwag-blog.md>)

Topics: [migration](<https://devfeed.tech/topics/migration.md>), [hosting](<https://devfeed.tech/topics/hosting.md>), [GitHub](<https://devfeed.tech/topics/github.md>), [Security](<https://devfeed.tech/topics/security.md>), [RSS Feed](<https://devfeed.tech/topics/rss-feed.md>), [Hugo](<https://devfeed.tech/topics/hugo.md>), [Atom](<https://devfeed.tech/topics/atom.md>), [XML](<https://devfeed.tech/topics/xml.md>)

Tags: [atom](<https://devfeed.tech/tags/atom.md>), [blog](<https://devfeed.tech/tags/blog.md>), [disquss](<https://devfeed.tech/tags/disquss.md>), [github](<https://devfeed.tech/tags/github.md>), [hosting](<https://devfeed.tech/tags/hosting.md>), [html](<https://devfeed.tech/tags/html.md>), [https](<https://devfeed.tech/tags/https.md>), [hugo](<https://devfeed.tech/tags/hugo.md>), [jekell](<https://devfeed.tech/tags/jekell.md>), [migration](<https://devfeed.tech/tags/migration.md>), [rss](<https://devfeed.tech/tags/rss.md>), [security](<https://devfeed.tech/tags/security.md>), [security-privacy](<https://devfeed.tech/tags/security-privacy.md>), [xml](<https://devfeed.tech/tags/xml.md>)

### AI overview

The author moved the blog from GitHub to self-hosted hosting and documents the migration issues encountered. The article covers HTML redirects, updating hardcoded links, Disqus comment reindexing, and difficulties redirecting RSS feeds when moving from Octopress to Jekyll.

### Source excerpt

If you follow my blog posts with an RSS reader, update the rss feed to: https://blog.wagemakers.be/atom.xml ...If you want to continue to follow me off-course ;-) I moved my blog from GitHub to my own hosting ( powered by Procolix ). Procolix sponsored my hosting for 20 years, till I decided to start my company Mask27.dev. One reason is that Microsoft seems to like to put "copilot everywhere", including on repositories hosted on github. While I don't dislike AI ( artificial intelligence ), LLM ( Large Language Models ) are a nice piece of technology. The security, privacy, and other issues are overlooked or even just ignored. The migration was a bit more complicated as usual, as nothing "is easy" ;-) You'll find the pitfalls of moving my blog below as they might be useful for somebody else ( including the future me ).

## How to add llms.txt to a Hugo Blog

DevFeed: [How to add llms.txt to a Hugo Blog](<https://devfeed.tech/articles/how-to-add-llms-txt-to-a-hugo-blog-27728.md>)

Original publisher: [Read original article](<https://gagor.pro/2025/10/how-to-add-llms.txt-to-a-hugo-blog/>)

Author: Tom

Published: 2025-10-16T00:00:00Z

Content type: tutorial

Language: en

Sources: [Tomasz Gągor](<https://devfeed.tech/sources/tomasz-gagor.md>)

Topics: [Hugo](<https://devfeed.tech/topics/hugo.md>), [AI Bots](<https://devfeed.tech/topics/ai-bots.md>), [Search engine optimization (SEO)](<https://devfeed.tech/topics/seo.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [ai-content-visibility](<https://devfeed.tech/tags/ai-content-visibility.md>), [ai-crawlers](<https://devfeed.tech/tags/ai-crawlers.md>), [blog](<https://devfeed.tech/tags/blog.md>), [generative-engine-optimization](<https://devfeed.tech/tags/generative-engine-optimization.md>), [geo](<https://devfeed.tech/tags/geo.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [hugo](<https://devfeed.tech/tags/hugo.md>), [hugo-llms-txt](<https://devfeed.tech/tags/hugo-llms-txt.md>), [hugo-seo](<https://devfeed.tech/tags/hugo-seo.md>), [llm-metadata](<https://devfeed.tech/tags/llm-metadata.md>), [markdown](<https://devfeed.tech/tags/markdown.md>), [seo](<https://devfeed.tech/tags/seo.md>)

### AI overview

A tutorial showing how to add an llms.txt Markdown file to a Hugo blog using a custom media type, output format, and template. It presents the file as a way to help AI systems understand and discover site content, while noting that its effect on organic traffic is uncertain.

### Source excerpt

Learn how to add an llms.txt file to your Hugo blog to make it more visible to AI agents and improve Generative Engine Optimization (GEO).

## Changes in ipSpace.net RSS Feeds

DevFeed: [Changes in ipSpace.net RSS Feeds](<https://devfeed.tech/articles/changes-in-ipspace-net-rss-feeds-11255.md>)

Original publisher: [Read original article](<https://blog.ipspace.net/2025/10/changes-rss-feeds/>)

Published: 2025-10-08T04:40:00Z

Content type: article

Language: en

Sources: [ipSpace.net blog](<https://devfeed.tech/sources/ipspace-net-blog.md>)

Topics: [RSS Feed](<https://devfeed.tech/topics/rss-feed.md>), [Atom](<https://devfeed.tech/topics/atom.md>), [Atom Feed](<https://devfeed.tech/topics/atom-feed.md>), [Hugo](<https://devfeed.tech/topics/hugo.md>), [XML](<https://devfeed.tech/topics/xml.md>), [HTML](<https://devfeed.tech/topics/html.md>)

Tags: [hugo](<https://devfeed.tech/tags/hugo.md>), [rss](<https://devfeed.tech/tags/rss.md>), [update](<https://devfeed.tech/tags/update.md>), [web](<https://devfeed.tech/tags/web.md>), [xml](<https://devfeed.tech/tags/xml.md>)

### AI overview

The author describes replacing the ipSpace.net RSS and Atom feed generation system with static Hugo-generated feeds, adding redirects for older URLs, and discontinuing the free-content feed. The changes followed a Feedburner failure that prevented Apple Podcasts from discovering a new episode. The article also discusses feed formatting issues involving iTunes tags, whitespace trimming, HTML escaping, content truncation, and conversion of HTML to plain text.

### Source excerpt

TL&DR: You shouldn't see any immediate impact of this change, but I'll eventually clean up old stuff, so you might want to check the URLs if you use RSS/Atom feeds to get the list of ipSpace.net blog posts or podcast episodes. The (hopefully) final URLs are listed on this page. Executive Summary: I cleaned up the whole ipSpace.net RSS/Atom feeds system. The script that generated the content for various feeds has been replaced with static Hugo-generated RSS/Atom feeds. I added redirects for all the old stuff I could find (including ioshints.blogspot.com), but I could have missed something. The only defunct feed is the free content feed (which hasn't changed in a while, anyway), as it required scanning the documents database. You can use this page to find the (ever-increasing) free content. And now for the real story ;) Read more ...

## Crosspost Your Blog articles to Social Media

DevFeed: [Crosspost Your Blog articles to Social Media](<https://devfeed.tech/articles/crosspost-your-blog-articles-to-social-media-27725.md>)

Original publisher: [Read original article](<https://gagor.pro/2025/09/crosspost-your-blog-articles-to-social-media/>)

Author: Tom

Published: 2025-09-14T00:00:00Z

Content type: tutorial

Language: en

Sources: [Tomasz Gągor](<https://devfeed.tech/sources/tomasz-gagor.md>)

Topics: [GitHub Actions](<https://devfeed.tech/topics/github-actions.md>), [Hugo](<https://devfeed.tech/topics/hugo.md>), [RSS Feed](<https://devfeed.tech/topics/rss-feed.md>), [Mastodon](<https://devfeed.tech/topics/mastodon.md>), [X (Twitter)](<https://devfeed.tech/topics/twitter.md>)

Tags: [articles](<https://devfeed.tech/tags/articles.md>), [boost-blog-traffic](<https://devfeed.tech/tags/boost-blog-traffic.md>), [crosspost-blog-to-social-media](<https://devfeed.tech/tags/crosspost-blog-to-social-media.md>), [dockerignore-usage](<https://devfeed.tech/tags/dockerignore-usage.md>), [github](<https://devfeed.tech/tags/github.md>), [github-actions](<https://devfeed.tech/tags/github-actions.md>), [github-actions-automation](<https://devfeed.tech/tags/github-actions-automation.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [hugo](<https://devfeed.tech/tags/hugo.md>), [hugo-rss-sitemap](<https://devfeed.tech/tags/hugo-rss-sitemap.md>), [mastodon](<https://devfeed.tech/tags/mastodon.md>), [mastodon-blog-integration](<https://devfeed.tech/tags/mastodon-blog-integration.md>), [rss](<https://devfeed.tech/tags/rss.md>), [seo](<https://devfeed.tech/tags/seo.md>), [twitter](<https://devfeed.tech/tags/twitter.md>), [twitter-crossposting](<https://devfeed.tech/tags/twitter-crossposting.md>), [wordpress](<https://devfeed.tech/tags/wordpress.md>)

### AI overview

A tutorial on automating blog post crossposting to social networks with GitHub Actions. It describes a custom action that reads posts from a Sitemap or RSS/Atom feed, filters and sorts them, and publishes them automatically, with RSS preferred to avoid reposting updated articles.

### Source excerpt

Learn how to automatically share your latest blog posts to Mastodon, Twitter/X, and other social networks using GitHub Actions and the crosspost tool. A simple way to regain traffic lost to search engines and AI.

## Introducing "shorts" for Henry (my Hugo blog engine/theme)

DevFeed: [Introducing "shorts" for Henry (my Hugo blog engine/theme)](<https://devfeed.tech/articles/introducing-shorts-for-henry-my-hugo-blog-engine-theme-25328.md>)

Original publisher: [Read original article](<https://kau.sh/blog/shorts/>)

Author: Kaushik Gopal

Published: 2025-07-20T00:00:00Z

Content type: release

Language: en

Sources: [Kaushik Gopal's Site](<https://devfeed.tech/sources/kaushik-gopal-s-site.md>)

Topics: [Hugo](<https://devfeed.tech/topics/hugo.md>)

Tags: [blog-post](<https://devfeed.tech/tags/blog-post.md>), [hugo](<https://devfeed.tech/tags/hugo.md>)

### AI overview

The Henry Hugo blog engine/theme introduces "shorts," a way to publish quick thoughts or notes without creating a full blog post and share them from an owned feed.

### Source excerpt

Introducing "shorts" for Henry (my Hugo blog engine/theme). Often, I find myself wanting to post a quick thought or note without the ceremony of a full-blown "blog post". That's usually when I'd post to Bluesky, X, Threads, or Mastodon. But as I've said before, I prefer investing in a feed I control. With Henry, I can effortlessly post a quick thought, and share it from a feed I own.

## Back to the 2000s: cyrilmottier.com

DevFeed: [Back to the 2000s: cyrilmottier.com](<https://devfeed.tech/articles/back-to-the-2000s-cyrilmottier-com-38364.md>)

Original publisher: [Read original article](<https://cyrilmottier.com/posts/2025/back-to-the-2000s-cyrilmottier-com/>)

Author: Cyril Mottier

Published: 2025-04-16T15:03:55Z

Content type: opinion

Language: en

Sources: [Cyril Mottier Blog](<https://devfeed.tech/sources/cyril-mottier-blog.md>)

Topics: [Website](<https://devfeed.tech/topics/website.md>), [Hugo](<https://devfeed.tech/topics/hugo.md>)

Tags: [hugo](<https://devfeed.tech/tags/hugo.md>), [legacy](<https://devfeed.tech/tags/legacy.md>), [personal-website](<https://devfeed.tech/tags/personal-website.md>)

### AI overview

The author explains that cyrilmottier.com was redesigned with a more modern design, Hugo replaced Octopress, and outdated articles were removed. In response to reader requests, the legacy version of the site has been restored and is available at cyrilmottier.com/legacy.

### Source excerpt

I recently revamped my personal website for several reasons: to achieve a more modern design, switch to a faster website generator (Hugo instead of Octopress), and remove outdated articles, some of which were written in the 2000s! However, many followers on social media have asked to bring back the old version of cyrilmottier.com, expressing both nostalgia and a genuine appreciation for the older content. While working on bringing this content back, I realized they were right in many ways. Thanks to them for pushing me to do this. It's so fun to still be able to read about mobile release management back in 2014, why splash screens were are evil or how Dart is going to shape the future of Android 😂.

## 🖤 Automatic Dark mode for Hugo using Tailwind CSS

DevFeed: [🖤 Automatic Dark mode for Hugo using Tailwind CSS](<https://devfeed.tech/articles/automatic-dark-mode-for-hugo-using-tailwind-css-25241.md>)

Original publisher: [Read original article](<https://kau.sh/blog/dark-mode-hugo-henry-tailwind/>)

Author: Kaushik Gopal

Published: 2025-04-04T23:01:08Z

Content type: tutorial

Language: en

Sources: [Kaushik Gopal's Site](<https://devfeed.tech/sources/kaushik-gopal-s-site.md>)

Topics: [Dark Mode](<https://devfeed.tech/topics/dark-mode.md>), [CSS](<https://devfeed.tech/topics/css.md>), [Tailwind CSS](<https://devfeed.tech/topics/tailwind.md>), [Hugo](<https://devfeed.tech/topics/hugo.md>), [implementation](<https://devfeed.tech/topics/implementation.md>)

Tags: [css](<https://devfeed.tech/tags/css.md>), [dark-mode](<https://devfeed.tech/tags/dark-mode.md>), [html5](<https://devfeed.tech/tags/html5.md>), [hugo](<https://devfeed.tech/tags/hugo.md>), [implementation](<https://devfeed.tech/tags/implementation.md>), [scheme](<https://devfeed.tech/tags/scheme.md>), [tailwind](<https://devfeed.tech/tags/tailwind.md>), [tailwind-css](<https://devfeed.tech/tags/tailwind-css.md>)

### AI overview

This tutorial explains how to add automatic dark-mode support to a Hugo site using Tailwind CSS 4.0 and the CSS prefers-color-scheme media feature. The implementation updates theme color variables and adds a dark class to the root HTML element.

### Source excerpt

On a ✈ back home, I decided to add Dark mode support to Henry. Having recently upgraded to Tailwind CSS 4.0, this was a piece of cake to do. I leverage the widely supported CSS @media prefers-color-scheme feature and Tailwind's native dark-mode support. The implementation only required a few changes: 1. update main theme.css ### In my main theme.css file where I declare the existing colors, I add the CSS @media selector for the "dark" variable indicator. @theme { /* henry background */ --color-hbg: var(--color-slate-50); --color-hbg-dark: var(--color-slate-200); /* ... */ } @media (prefers-color-scheme: dark) { .dark { /* henry background */ --color-hbg: #1c2b33; --color-hbg-dark: #152027; /* ... */ } } 2. update base html body ### In my root html page, I simply add the "dark" variable indicator class <html class="dark"> Now CSS automatically knows to pull in the dark variant of colors when the system indicates light/dark mode. There is no step 3! Your browser doesn't support HTML5 video. Download the video instead. This was so easy to do, in fact, that I even managed to catch up on Gladiator II on the plane ride which I personally give a solid 3.0 just for Denzel.

## Transparent Software

DevFeed: [Transparent Software](<https://devfeed.tech/articles/transparent-software-35476.md>)

Original publisher: [Read original article](<https://darkcoding.net/software/transparent-software/>)

Author: Graham King

Published: 2025-03-29T15:54:00Z

Content type: opinion

Language: en

Sources: [Graham King](<https://devfeed.tech/sources/graham-king.md>)

Topics: [Software](<https://devfeed.tech/topics/software.md>), [Hugo](<https://devfeed.tech/topics/hugo.md>), [passwords](<https://devfeed.tech/topics/passwords.md>), [Neovim](<https://devfeed.tech/topics/neovim.md>), [HTTP](<https://devfeed.tech/topics/http.md>)

Tags: [design](<https://devfeed.tech/tags/design.md>), [http](<https://devfeed.tech/tags/http.md>), [hugo](<https://devfeed.tech/tags/hugo.md>), [markdown](<https://devfeed.tech/tags/markdown.md>), [password](<https://devfeed.tech/tags/password.md>), [passwords](<https://devfeed.tech/tags/passwords.md>), [plugin](<https://devfeed.tech/tags/plugin.md>), [python](<https://devfeed.tech/tags/python.md>), [rust](<https://devfeed.tech/tags/rust.md>), [software](<https://devfeed.tech/tags/software.md>), [trust](<https://devfeed.tech/tags/trust.md>)

### AI overview

The article defines transparent software as software whose behavior and structure users can understand and replace. It contrasts Hugo with WordPress, and describes the author's password manager, kip, as a modular tool built around user-controlled encrypted files and configurable command-line utilities.

### Source excerpt

A software system is transparent when you can look at it and immediately understand what it is doing and how.

## Migrating from Hugo to NextJS

DevFeed: [Migrating from Hugo to NextJS](<https://devfeed.tech/articles/migrating-from-hugo-to-nextjs-39665.md>)

Original publisher: [Read original article](<https://www.gauravsarma.com/random/2025-03-10_migrating-from-hugo-to-nextjs>)

Published: 2025-03-10T00:00:00Z

Content type: opinion

Language: en

Sources: [Gaurav Sarma's Blog](<https://devfeed.tech/sources/gaurav-sarma-s-blog.md>)

Topics: [cursor](<https://devfeed.tech/topics/cursor.md>), [Hugo](<https://devfeed.tech/topics/hugo.md>), [Claude](<https://devfeed.tech/topics/claude.md>), [Development](<https://devfeed.tech/topics/development.md>), [Firebase](<https://devfeed.tech/topics/firebase.md>)

Tags: [blog](<https://devfeed.tech/tags/blog.md>), [claude](<https://devfeed.tech/tags/claude.md>), [coding](<https://devfeed.tech/tags/coding.md>), [cursor](<https://devfeed.tech/tags/cursor.md>), [development](<https://devfeed.tech/tags/development.md>), [firebase](<https://devfeed.tech/tags/firebase.md>), [hugo](<https://devfeed.tech/tags/hugo.md>), [nextjs](<https://devfeed.tech/tags/nextjs.md>)

### AI overview

The author compares AI coding tools while migrating a Markdown-based blog from Hugo to a NextJS application with search and Firebase functionality. Cursor is preferred over Claude Code, Cursor, and Windsurf based on the reported balance of capability and cost, but the author notes concerns about code ownership, reduced understanding of the codebase, disabled type checks, shortcuts, and looping behavior.

### Source excerpt

So it's been a week since I have been trying to use and compare AI code editors and tools extensively to integrate into my coding routine. Claude Code has been the most successful, but it's way too expensive compared to Cursor or Windsurf...

## Worth Reading: The IPv6 Agnostic Blog

DevFeed: [Worth Reading: The IPv6 Agnostic Blog](<https://devfeed.tech/articles/worth-reading-the-ipv6-agnostic-blog-11146.md>)

Original publisher: [Read original article](<https://blog.ipspace.net/2025/02/worth-reading-ipv6-failures/>)

Published: 2025-02-26T07:19:00Z

Content type: opinion

Language: en

Sources: [ipSpace.net blog](<https://devfeed.tech/sources/ipspace-net-blog.md>)

Topics: [networking](<https://devfeed.tech/topics/networking.md>), [Website](<https://devfeed.tech/topics/website.md>), [Self-hosted](<https://devfeed.tech/topics/self-hosted.md>), [Hugo](<https://devfeed.tech/topics/hugo.md>), [Cloudflare](<https://devfeed.tech/topics/cloudflare.md>), [hosting](<https://devfeed.tech/topics/hosting.md>), [Linode](<https://devfeed.tech/topics/linode.md>), [GitHub](<https://devfeed.tech/topics/github.md>)

Tags: [blog](<https://devfeed.tech/tags/blog.md>), [cloudflare](<https://devfeed.tech/tags/cloudflare.md>), [github](<https://devfeed.tech/tags/github.md>), [hosting](<https://devfeed.tech/tags/hosting.md>), [hugo](<https://devfeed.tech/tags/hugo.md>), [ipv6](<https://devfeed.tech/tags/ipv6.md>), [linode](<https://devfeed.tech/tags/linode.md>), [networking](<https://devfeed.tech/tags/networking.md>), [self-hosting](<https://devfeed.tech/tags/self-hosting.md>), [worth-reading](<https://devfeed.tech/tags/worth-reading.md>)

### AI overview

The article recommends Ole Troan's blog and articles about IPv6 design mistakes, missed opportunities, and the question of whether IPv6 transition is inevitable. It also discusses self-hosting the blog with Hugo and outlines hosting options including Linode, Cloudflare Pages, and GitHub Pages.

### Source excerpt

Ole Troan, an excellent networking engineer working on IPv6 for decades, has decided to comment on the color of the IPv6 kettle, starting with: Is the transition to IPv6 inevitable? (hint: Betteridge's law of headlines) The mistakes and missed opportunities in the design of IPv6 - episode 1 (aka Second System Effect1) I'm pretty sure Ole won't stop there, so stay tuned. Read more ...

## Powering your Hugo blog with Bluesky Comments - invest in a feed you control

DevFeed: [Powering your Hugo blog with Bluesky Comments - invest in a feed you control](<https://devfeed.tech/articles/powering-your-hugo-blog-with-bluesky-comments-invest-in-a-feed-you-control-25223.md>)

Original publisher: [Read original article](<https://kau.sh/blog/bluesky-comments-for-hugo/>)

Author: Kaushik Gopal

Published: 2025-01-19T08:00:00Z

Content type: tutorial

Language: en

Sources: [Kaushik Gopal's Site](<https://devfeed.tech/sources/kaushik-gopal-s-site.md>)

Topics: [Bluesky](<https://devfeed.tech/topics/bluesky-social.md>), [Hugo](<https://devfeed.tech/topics/hugo.md>), [AT Protocol](<https://devfeed.tech/topics/atproto.md>), [implementation](<https://devfeed.tech/topics/implementation.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [blog](<https://devfeed.tech/tags/blog.md>), [code](<https://devfeed.tech/tags/code.md>), [html](<https://devfeed.tech/tags/html.md>), [hugo](<https://devfeed.tech/tags/hugo.md>), [implementation](<https://devfeed.tech/tags/implementation.md>), [js](<https://devfeed.tech/tags/js.md>), [protocol](<https://devfeed.tech/tags/protocol.md>), [source](<https://devfeed.tech/tags/source.md>)

### AI overview

This tutorial explains how the author integrated Bluesky comments into a Hugo blog using the decentralized AT Protocol. The implementation uses a comments template and JavaScript to load comments, with features for linking directly to comments and nesting replies.

### Source excerpt

Twitter's change in ownership triggered a cascade of events birthing various social media clones. It's been tricky to decide which network to invest time and energy in. I'm not an influencer, but I'd be kidding myself if I thought having a presence on social media wasn't important. The recent TikTok drama has given me clarity on one extremely important principle that all creators should have learned by now: Invest in channels you control. Invest in channels you control I recently moved Fragmented (my podcast) from WordPress to Hugo in this same spirit; and was looking for a way to engage more closely with the community. With Bluesky gaining traction, it made sense to power my blog comments using a decentralized commenting system that I could control. Bluesky is built on the AT protocol, which aligns perfectly with this idea. Thanks to Hugo's flexibility, I was able to integrate Bluesky as a commenting system quite easily. I used this post as inspiration, but if you'd like to see my final implementation, you can check out the source code here: comments-bsky.html (template for the comments) comments-bsky.js (straightforward JS to load the comments) I particularly like my implementation as it gently allows you to jump to the exact comment, and allows nesting. To see how this looks open the website on your browser and see the Comments sections below!

## Why and how I switched from Medium

DevFeed: [Why and how I switched from Medium](<https://devfeed.tech/articles/why-and-how-i-switched-from-medium-39631.md>)

Original publisher: [Read original article](<https://www.gauravsarma.com/posts/2025-01-06_Why-I-switched-from-Medium>)

Published: 2025-01-06T00:00:00Z

Content type: opinion

Language: en

Sources: [Gaurav Sarma's Blog](<https://devfeed.tech/sources/gaurav-sarma-s-blog.md>)

Topics: [Hugo](<https://devfeed.tech/topics/hugo.md>), [Self-hosted](<https://devfeed.tech/topics/self-hosted.md>), [static-site-generator](<https://devfeed.tech/topics/static-site-generator.md>), [version-control](<https://devfeed.tech/topics/version-control.md>), [Markdown](<https://devfeed.tech/topics/markdown.md>)

Tags: [hugo](<https://devfeed.tech/tags/hugo.md>), [markdown](<https://devfeed.tech/tags/markdown.md>), [self-hosted](<https://devfeed.tech/tags/self-hosted.md>), [static-site-generator](<https://devfeed.tech/tags/static-site-generator.md>), [terminal](<https://devfeed.tech/tags/terminal.md>), [version-control](<https://devfeed.tech/tags/version-control.md>)

### AI overview

The author explains why they moved from Medium to a self-hosted blog, citing terminal-based writing, Markdown support, version control, custom features, and automation. They chose Hugo as a lightweight starting point for the new setup.

### Source excerpt

. [Why I Switched from Medium](why-i-switched-from-medium-cover...

## How This Blog Does IndieWeb

DevFeed: [How This Blog Does IndieWeb](<https://devfeed.tech/articles/how-this-blog-does-indieweb-40488.md>)

Original publisher: [Read original article](<https://www.jeremykun.com/2024/10/30/how-this-blog-does-indieweb/>)

Published: 2024-10-31T05:22:12Z

Content type: tutorial

Language: en

Sources: [Jeremy Kun](<https://devfeed.tech/sources/jeremy-kun.md>)

Topics: [IndieWeb](<https://devfeed.tech/topics/indieweb.md>), [Hugo](<https://devfeed.tech/topics/hugo.md>), [static-site-generator](<https://devfeed.tech/topics/static-site-generator.md>), [GitHub Actions](<https://devfeed.tech/topics/github-actions.md>), [Netlify](<https://devfeed.tech/topics/netlify.md>), [WordPress](<https://devfeed.tech/topics/wordpress.md>)

Tags: [article](<https://devfeed.tech/tags/article.md>), [github-actions](<https://devfeed.tech/tags/github-actions.md>), [hugo](<https://devfeed.tech/tags/hugo.md>), [indieweb](<https://devfeed.tech/tags/indieweb.md>), [netlify](<https://devfeed.tech/tags/netlify.md>), [posse](<https://devfeed.tech/tags/posse.md>)

### AI overview

A technical walkthrough of how the author migrated a blog from WordPress to Hugo and implemented IndieWeb features. It covers static-site deployment with Netlify, GitHub Actions automation, shortform social syndication, and related integrations.

### Source excerpt

This article will explain how the blog is organized at a technical level, and show how I implemented various IndieWeb features. Table of Contents: Motivation Structure and Deployment Static search index Running scripts via GitHub Actions Social media syndication and the "shortform" section Links to syndicated versions at the end of each post Warning for a too-long first paragraph Triggering this workflow automatically after deployment Blogroll (the "What I'm Reading" page) Chrome extension Webmentions and referencing external discussion threads Bridgy Hacker News backlinks Outgoing webmentions DOIs Dead link checker Motivation Earlier this year I migrated this blog off Wordpress to the Hugo static site generator.

## Website refresh

DevFeed: [Website refresh](<https://devfeed.tech/articles/website-refresh-28710.md>)

Original publisher: [Read original article](<https://jeroenmols.com/blog/2024/09/20/website-refresh-24/>)

Author: info@jeroenmols.com (Jeroen Mols)

Published: 2024-09-20T00:00:00Z

Content type: opinion

Language: en

Sources: [Jeroen Mols](<https://devfeed.tech/sources/jeroen-mols.md>)

Topics: [Website](<https://devfeed.tech/topics/website.md>), [Hugo](<https://devfeed.tech/topics/hugo.md>), [Jekyll](<https://devfeed.tech/topics/jekyll.md>), [Web Development](<https://devfeed.tech/topics/web-development.md>), [modern web development](<https://devfeed.tech/topics/modern-web-development.md>), [Netlify](<https://devfeed.tech/topics/netlify.md>), [Vercel](<https://devfeed.tech/topics/vercel.md>)

Tags: [blogging](<https://devfeed.tech/tags/blogging.md>), [blogs](<https://devfeed.tech/tags/blogs.md>), [development](<https://devfeed.tech/tags/development.md>), [hugo](<https://devfeed.tech/tags/hugo.md>), [jekyll](<https://devfeed.tech/tags/jekyll.md>), [migrate](<https://devfeed.tech/tags/migrate.md>), [netlify](<https://devfeed.tech/tags/netlify.md>), [platform](<https://devfeed.tech/tags/platform.md>), [redesign](<https://devfeed.tech/tags/redesign.md>), [static-site-generator](<https://devfeed.tech/tags/static-site-generator.md>), [vercel](<https://devfeed.tech/tags/vercel.md>), [web-development](<https://devfeed.tech/tags/web-development.md>), [website](<https://devfeed.tech/tags/website.md>), [website-refresh](<https://devfeed.tech/tags/website-refresh.md>)

### AI overview

A personal account of migrating a seven-year-old Jekyll website to Hugo. It explains the old site's deployment setup and limitations, the motivations for the redesign, and the author's evaluation of static-site generators and hosting options.

### Source excerpt

After 7 years, it was time to migrate my old Jekyll website to a new more modern platform. Read on to learn why, how, and what the main challenges were in this process.

## blog.ipspace.net Is On Cloudflare Pages

DevFeed: [blog.ipspace.net Is On Cloudflare Pages](<https://devfeed.tech/articles/blog-ipspace-net-is-on-cloudflare-pages-11035.md>)

Original publisher: [Read original article](<https://blog.ipspace.net/2024/07/blog-cloudflare/>)

Published: 2024-07-07T12:51:00Z

Content type: release

Language: en

Sources: [ipSpace.net blog](<https://devfeed.tech/sources/ipspace-net-blog.md>)

Topics: [Cloudflare](<https://devfeed.tech/topics/cloudflare.md>), [Hugo](<https://devfeed.tech/topics/hugo.md>), [GitLab](<https://devfeed.tech/topics/gitlab.md>)

Tags: [blog](<https://devfeed.tech/tags/blog.md>), [cloudflare](<https://devfeed.tech/tags/cloudflare.md>), [gitlab](<https://devfeed.tech/tags/gitlab.md>), [hugo](<https://devfeed.tech/tags/hugo.md>)

### AI overview

The blog moved to Cloudflare Pages after migrating to Hugo. The author changed the Hugo URL scheme, fixed broken links, expects faster page loads, and no longer expects to deal with GitLab issues.

### Source excerpt

Long story short: Years after migrating my blog to Hugo, I found the willpower to deal with the "interesting" way Cloudflare Pages deal with static HTML files, changed the Hugo URL scheme, and spent two days fixing broken links. Apart from having the satisfaction of ticking off a long-outstanding project, the blog pages should load faster, and I won't have to deal with GitLab hiccups anymore. If you notice anything being broken, please let me know. Thank you!

## Adding Tailwind CSS to a Hugo blog

DevFeed: [Adding Tailwind CSS to a Hugo blog](<https://devfeed.tech/articles/adding-tailwind-css-to-a-hugo-blog-25341.md>)

Original publisher: [Read original article](<https://kau.sh/blog/tailwind-hugo/>)

Author: Kaushik Gopal

Published: 2024-07-05T18:36:23Z

Content type: tutorial

Language: en

Sources: [Kaushik Gopal's Site](<https://devfeed.tech/sources/kaushik-gopal-s-site.md>)

Topics: [Tailwind CSS](<https://devfeed.tech/topics/tailwind.md>), [Hugo](<https://devfeed.tech/topics/hugo.md>), [CSS](<https://devfeed.tech/topics/css.md>), [make](<https://devfeed.tech/topics/make.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>)

Tags: [cli](<https://devfeed.tech/tags/cli.md>), [css](<https://devfeed.tech/tags/css.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [hugo](<https://devfeed.tech/tags/hugo.md>), [installation](<https://devfeed.tech/tags/installation.md>), [make](<https://devfeed.tech/tags/make.md>), [npm](<https://devfeed.tech/tags/npm.md>), [tailwind](<https://devfeed.tech/tags/tailwind.md>)

### AI overview

A tutorial showing how to add Tailwind CSS v4 to a Hugo site using Tailwind CLI, including installation, CSS file setup, development commands, and a Makefile workflow for running or building Hugo and Tailwind together.

### Source excerpt

Updated for Tailwind CSS V4 I veer away from CSS frameworks like Bootstrap because they result in sterilized designs. On a recent side project, I gave Tailwind CSS a try and am now a believer. "Rapidly build modern websites without ever leaving your HTML" makes a lot of sense to me. Case in point: I rebuilt my Hugo theme, Henry, with Tailwind in three days.1 I quite like how it's turned out. Let me show you how to add it to a Hugo theme. This has become even simpler with Tailwind CSS v4. Approach ## I like to keep things as simple as possible. So, it was important for me to use both Hugo & Tailwind as you would independently. I don't use Tailwind as a PostCSS plugin as much of the internet recommends. I prefer Tailwind CLI. Installation ## Let's assume you created your new site with hugo: hugo new site my-blog cd my-blog From this root hugo project directory: # create a package.json file (with default options) npm init -y # install Tailwind CSS as a dependency npm install -D tailwindcss @tailwindcss/cli Let's create the necessary css files for Tailwind to latch on to: mkdir -p my-blog/assets/css touch my-blog/assets/css/input.css touch my-blog/assets/css/theme.css I use the input.css file to help Tailwind wire everything together, and output.css is the final css that Tailwind compiles out. /* input.css */ @import "tailwindcss"; @import "./theme.css"; /* custom css you might want to add as overrides */ That's it! You can now fire up Tailwind & Hugo: # start tailwind npx @tailwindcss/cli \ -i ./assets/css/input.css \ -o ./assets/css/output.css \ --watch # start hugo server hugo server Bonus tip ### Starting Tailwind and Hugo separately in two different shells is a bore. I use a Makefile that conveniently allows me to spin up both processes in parallel. All I have to do when I'm ready to spin up my blog locally is: # runs the default comand which is "run" # it runs both taliwind css & the hugo server in parallel make Sometimes I want to just build the site, not run the

## Optimizing Hugo Sitemaps to prioritize posts crawling over taxonomies

DevFeed: [Optimizing Hugo Sitemaps to prioritize posts crawling over taxonomies](<https://devfeed.tech/articles/optimizing-hugo-sitemaps-to-prioritize-posts-crawling-over-taxonomies-27713.md>)

Original publisher: [Read original article](<https://gagor.pro/2024/05/optimizing-hugo-sitemaps-to-prioritize-posts-crawling-over-taxonomies/>)

Author: Tom

Published: 2024-05-17T00:00:00Z

Content type: tutorial

Language: en

Sources: [Tomasz Gągor](<https://devfeed.tech/sources/tomasz-gagor.md>)

Topics: [Hugo](<https://devfeed.tech/topics/hugo.md>), [Search engine optimization (SEO)](<https://devfeed.tech/topics/seo.md>), [Protocol (disambiguation)](<https://devfeed.tech/topics/protocol.md>)

Tags: [google](<https://devfeed.tech/tags/google.md>), [guide](<https://devfeed.tech/tags/guide.md>), [hugo](<https://devfeed.tech/tags/hugo.md>), [hugo-changefreq-settings](<https://devfeed.tech/tags/hugo-changefreq-settings.md>), [hugo-site-seo](<https://devfeed.tech/tags/hugo-site-seo.md>), [hugo-sitemap-optimization](<https://devfeed.tech/tags/hugo-sitemap-optimization.md>), [robots](<https://devfeed.tech/tags/robots.md>), [search](<https://devfeed.tech/tags/search.md>), [search-engine-optimization](<https://devfeed.tech/tags/search-engine-optimization.md>), [search-engines](<https://devfeed.tech/tags/search-engines.md>), [seo](<https://devfeed.tech/tags/seo.md>), [seo-sitemap-tuning](<https://devfeed.tech/tags/seo-sitemap-tuning.md>), [sitemap-priority-settings](<https://devfeed.tech/tags/sitemap-priority-settings.md>), [structure](<https://devfeed.tech/tags/structure.md>), [taxonomy](<https://devfeed.tech/tags/taxonomy.md>)

### AI overview

A practical guide to customizing Hugo sitemaps so posts receive higher crawl priority than taxonomy pages. It explains adjusting change frequency and priority while avoiding sitemap and breadcrumb issues that can appear in Google Search Console.

### Source excerpt

Learn how to optimize your Hugo site's sitemap by adjusting priority and change frequency settings to improve SEO and guide search engine crawlers effectively.

## Experiments with POSSE

DevFeed: [Experiments with POSSE](<https://devfeed.tech/articles/experiments-with-posse-40501.md>)

Original publisher: [Read original article](<https://www.jeremykun.com/shortform/2024-05-12-2028/>)

Published: 2024-05-13T03:28:54Z

Content type: opinion

Language: en

Sources: [Jeremy Kun](<https://devfeed.tech/sources/jeremy-kun.md>)

Topics: [Mastodon](<https://devfeed.tech/topics/mastodon.md>), [Hugo](<https://devfeed.tech/topics/hugo.md>), [GitHub Actions](<https://devfeed.tech/topics/github-actions.md>), [Netlify](<https://devfeed.tech/topics/netlify.md>), [GitHub](<https://devfeed.tech/topics/github.md>), [GitHub API](<https://devfeed.tech/topics/github-api.md>), [static-site-generator](<https://devfeed.tech/topics/static-site-generator.md>), [Python](<https://devfeed.tech/topics/python.md>), [Serverless](<https://devfeed.tech/topics/serverless.md>), [Markdown](<https://devfeed.tech/topics/markdown.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>)

Tags: [cli](<https://devfeed.tech/tags/cli.md>), [github](<https://devfeed.tech/tags/github.md>), [github-action](<https://devfeed.tech/tags/github-action.md>), [github-actions](<https://devfeed.tech/tags/github-actions.md>), [hugo](<https://devfeed.tech/tags/hugo.md>), [indieweb](<https://devfeed.tech/tags/indieweb.md>), [markdown](<https://devfeed.tech/tags/markdown.md>), [mastodon](<https://devfeed.tech/tags/mastodon.md>), [netlify](<https://devfeed.tech/tags/netlify.md>), [posse](<https://devfeed.tech/tags/posse.md>), [python](<https://devfeed.tech/tags/python.md>), [shortform](<https://devfeed.tech/tags/shortform.md>)

### AI overview

The author describes an experiment that automates POSSE syndication by converting Hugo shortform posts into Mastodon threads. Netlify triggers a serverless function, which uses the GitHub API to start a GitHub Actions workflow; a Python script parses Markdown, publishes the thread through Mastodon.py, and records URL mappings in the repository.

### Source excerpt

POSSE stands for Publish (on your) Own Site, Syndicate Elsewhere. I first heard about it from Cory Doctorow. I'm experimenting with automation to convert posts tagged shortform into Mastodon threads (I'm mathstodon.xyz/@j2kun). I'm using Hugo as a static site generator, with the source a (private) GitHub repository, and Netlify for deployments. After a deployment, Netlify calls a serverless function that hits the GitHub API with a POST request to trigger a GitHub action workflow.

## Create a Virtual Bookshelf with Hugo and PaperMod

DevFeed: [Create a Virtual Bookshelf with Hugo and PaperMod](<https://devfeed.tech/articles/create-a-virtual-bookshelf-with-hugo-and-papermod-27708.md>)

Original publisher: [Read original article](<https://gagor.pro/2024/04/create-a-virtual-bookshelf-with-hugo-and-papermod/>)

Author: Tom

Published: 2024-04-26T00:00:00Z

Content type: tutorial

Language: en

Sources: [Tomasz Gągor](<https://devfeed.tech/sources/tomasz-gagor.md>)

Topics: [Hugo](<https://devfeed.tech/topics/hugo.md>), [API](<https://devfeed.tech/topics/api.md>), [Git](<https://devfeed.tech/topics/git.md>), [YAML](<https://devfeed.tech/topics/yaml.md>)

Tags: [book-organization](<https://devfeed.tech/tags/book-organization.md>), [git](<https://devfeed.tech/tags/git.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [hugo](<https://devfeed.tech/tags/hugo.md>), [hugo-bookshelf](<https://devfeed.tech/tags/hugo-bookshelf.md>), [hugo-site-customization](<https://devfeed.tech/tags/hugo-site-customization.md>), [installation](<https://devfeed.tech/tags/installation.md>), [papermod](<https://devfeed.tech/tags/papermod.md>), [papermod-theme](<https://devfeed.tech/tags/papermod-theme.md>), [reading-list-sharing](<https://devfeed.tech/tags/reading-list-sharing.md>), [submodules](<https://devfeed.tech/tags/submodules.md>), [virtual-bookshelf](<https://devfeed.tech/tags/virtual-bookshelf.md>), [yaml](<https://devfeed.tech/tags/yaml.md>)

### AI overview

A tutorial for creating a virtual bookshelf on a Hugo site with the PaperMod theme. It explains the motivation for organizing books as blog posts and provides installation and usage guidance for the bookshelf theme, including Git submodules and book metadata.

### Source excerpt

Learn how to create a virtual bookshelf on your Hugo site using the PaperMod theme, allowing you to organize and share your reading list with ease.

[Next page](<https://devfeed.tech/topics/hugo.md?cursor=WyIyMDI0LTA0LTI2VDAwOjAwOjAwKzAwOjAwIiwgIjlkYzUzMWVkLTMwY2MtNDNlZi1iNTFmLTYxMGVlZDQ1NWQyYiJd>)