Skip to main content
[BurgeonLab]

Tech Enthusiast's Logbook

Writing about Hugo, web dev, open source & IndieWeb experiments

ASCII art of Naty on her vintage Puch road bike

Welcome to my personal website. I’m Naty, a tech dabbler, third-culture kid, serial hobbyist, and lifelong learner.

BurgeonLab is a blog where I document my mostly geeky interests and other enlightenments. This is my passion project and a work in progress; so expect to see changes.

I am keen on data privacy, self-hosting, technical writing, specialty coffee, street photography, fountain pens, Formula 1, and more.

My other pseudonyms are @eclecticpassions and @aperture2iris.

Thank you for checking out my corner of the Internet, hope you find something interesting!

Embracing IndieWeb

Learn how and why I'm part of the small web

Ever since I learnt about content ownership, enshittification, and the IndieWeb in 2025; I’m gradually integrating small web principles and IndieWeb features into my site.

For instance, I can receive webmentions if your site supports sending them; otherwise, feel free to send me a webmention manually! Public webmention display isn’t supported yet, only I’ll be notified if you mention something from my site.

A common feature in small web communities are webrings—a collection of sites linked serially around a common theme. You can find what webrings I’m part of in the expandable list in the footer and explore other sites with the navigational links. I also collect web badges (aka 88x31 buttons) which are down there too. And while you’re at it, feel free to sign my guestbook!

In the last week of 2025, BurgeonLab gained full Micropub support through Indiekit; a self⁠-⁠hosted Node.js server! Explore content tagged with: #indieweb, #indiekit.

If you want to learn more about the IndieWeb community, here are some resources:

Noticeboard

Show notices

It’s June + United = Junited: Blog Sharing Month! Visit the /⁠junited-2026 page for links to blogs posts I enjoyed reading this month.

Currently doing the #100DaysToOffload blogging challenge (2026):

Counter: 61/100 Remaining: 199d
61%
Newest: Jun-24Start: Jan-11

March 1, 2026: I’m in the process of a big overhaul of my Hugo theme’s CSS. There may be some breakage in the meantime, apologies!

I’m collecting feedback to make the blog better in 2026. As a reader, your opinion matters to me. Could you take my 1–2 minute anonymous questionnaire? Thank you!

Notes Stream

View my latest notes. I use microblogs for sharing shorter content; like quick status updates or notes on a topic that probably won’t become a full blog article. Click on the permalink icon to view the full note.

Troubleshooting Technical Errors

Yesterday, my Indiekit docker failed to start on my Pi. I also couldn’t run npm audit fix despite reviewing and accepting npm approve-scripts --all.

As a beginner Node.js user, I am still very inexperienced. I tried removing the package.lock, node_modules/ and npm install from scratch but that didn’t fix it.

Maybe it is due to the Node version being pinned to version 22? Or was it the installation of sharp in the Dockerfile that caused it to break after updating the npm packages? I now have RUN npm …

Homebrew Website Club: Eastern June 17 2026

Last Thursday, David (an IndieWeb regular) couldn’t make it due to an emergency. Luckily James, another regular, caught me before I went to bed the night before to tell me the technical details on how to host the remote Zoom meeting. It was a success; luckily no technical difficulties, and we had a good turnout with a good old chat about all things websites! (Thanks too, to Thomas, for being co-host!)

Some of the topics we went through:

  • Blog data analytics and visualization tools
  • Data capture …

A feature I didn’t know existed in VS Codium saved my day! I was working on a untracked Git file (the zensical.toml configuration file) and accidentally, the whole file was overwritten and ctrl+z didn’t work. I thought my config was lost for good!

Luckily there’s a thing called “Local History”:

  • Open command palette
  • Choose Local History: Find Entry to Restore
  • Choose the file you want to recover
  • Choose the latest entry to recover from
  • Copy contents back to active file

I believe this is also accessible under …

digiKam MySQL Database Upgrade Woes

Ever since I left Adobe Lightroom in mid-2025, I’ve been using digiKam from KDE for digital asset management (DAM). I quite like using it to manage my extensive library of photographs (+100k images). But almost every time there’s a version upgrade, the internal MySQL database breaks.

Database Options

There are three database options for digiKam: SQLite, Internal MySQL, Remote MySQL. I have always chosen internal MySQL as apparently SQLite doesn’t do well for libraries over 100k photos. But I …

Regular expression (Regex) is a skill I wish I have a better grasp on; but I’m slowly learning! For example, I often find myself searching for a particular string pattern to replace it with something else. Today, I learnt how to search for this pattern (Markdown bullet points):

  1. The start of a new line (^)
  2. Dash (-)
  3. Space (\s)
  4. Alphabet following the space ([a-zA-Z])

Which makes the search string:

Txt
1^-\s([a-zA-Z])

The ( ) bracket around [a-zA-Z] is to capture the matching section and using it later as $1 for the first group, $2 …

View more notes »

Latest Weeknotes

Here are my latest weeknotes. They're a type of post that I publish weekly and sometimes covers less technical topics.

View more weeknotes »

Latest Blogs

Besides blog posts, you can explore these other sections: pages, weeknotes, notes (microblogs), likes and photos. Use the Explore dropdown menu at the top or direct links to common pages in the footer to discover the site.

How to Prevent Hugo From Publishing Draft Posts Accidentally

See how I added a pre-build step using a Bash script in my Hugo deployment workflow to check for the draft status of Markdown content. By using stricter linting rules than Hugo’s default draft behaviour, it can catch and prevent drafts from being accidentally published.

Offline LanguageTool: Free Open Source Grammarly Alternative

As a long-time user of LanguageTool’s offline server on macOS, I thought I’d share how I set it up. It’s a great way to get a pretty accurate grammar and spell checking / proofreading software without relying on online services. I’ll go through how to configure this open source tool, get extra optional improvements like n-gram data processing, and script shortcuts.
View more posts »

Top 10

Most popular pages in the last 30 days based on unique visits. (Privacy-focused analytics, no cookies.)

Enjoying BurgeonLab? If my content made a difference, a small contribution would mean a lot. Your support spurs me on to keep creating!
Give a tip » Help with hosting »

Enter keyword (use "quotes" to find exact term):