Skip to main content
[BurgeonLab]
My site follows your system default or browser color scheme preferences (using prefers-color-scheme @media query). To switch between light and dark mode, change the appearance configuration:
Operating System
  • macOS: System Preferences > Appearance > Appearance
  • Windows: Settings > Personalization > Colours > Mode
  • Linux: Distro dependent; but for example, in Ubuntu: System Settings > Appearance > Style
  • Android: Settings > Display
  • iOS: Settings > Display & Brightness
Browser
  • Firefox: Settings > General > Appearance > Web Site Appearance
  • Safari: Follows system default
  • Chromium: Settings > Appearance > Theme

Tech Enthusiast's Logbook

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

=+++=+++++++++++++=====+==================~+**+&@B*@%~#-+*~=~-*~+#-=##M&&M@8$$$@@%M$B&8%#B+&8B$M-*@*
=+++++++++++++++++++============~=======~~-~=+W$@%#W&=M:=+~=*~=#~=*~#*MW8#%&%%%8%&*@&M&W*W=MW&*~:=*#
=+++++=+++++++++=+=+============~=======-"^^^^:WB8&#W=M:~=-+==M*~-+=#W8W8W%&8W8W8#*%WMW&*W~*+*~~,+~=
========++++++++================~======~^`:~=~,^M8B*B+&--+=8+*W*+~MW&@8%$&$B@B@&BW+@8@@$W@+%MMM#-*+,
=======~~~==========~~~~~~~----~~~~~~~~^^~====~^"8%+8*&~:+~&*+W===M#8B&%@M%&B%B&$W*@8@@$W$+%M%M#=%B~
====~~~~~~=============~~~~----~~~~~~~:`-=-:~::"`*8&~+W~,+-M~#W~+=#~MM&BBMBBBB%8BWMB8@@@WB#%M8W#*&8M
=====~~~~~===========~=~~~~---~-~~~~~~""=++==:-:`:+*~:+~,+,~:=~:~:::~~~~~~=====~=~~==++=====~===~~~~
~=====~=~~===~=~~=~====~~~~-~---~~~~~~^:==~=-:~,`,===,++~+,~-=~:~:~-~++==~====~~===~~+++=+==~===~~==
~============~~~~=~+=========~~=~~~==~^`:=~~:,:^`"=+=,#M~+,--=~-~:=-=+===~====~~=~~~~===~=~~~~~~--~~
~=====~===========~====~~~~~~~~~~~~==-^`^-==~,"``,**+,%#-=,=-:,*=-8M%%&M#+M*#MW&W~-M#-::::::::::,,::
~~~~~~-~~~~~~~~~~--~~--~--~~~~~~~--~~,^``^,,^````^~~--+~:--~---~~~=~-:,,-MMMWWMMW=~*~**#~#+M=~#*-:+~
~~~-::,::----:::,,,::,:,,:-::-==+~-=~:,```""^````^:-::::,,::,,::,:::,,"":MMMMMMWW+~+-#W&+W#&*=&#~-W*
~~~::,,,::---:,,,,,:,,,,,::::-++*+*---::^``"`````^:,:,,,,,,,,,,,,::,,"^",~====++*+~+~#M8+#*W+~W#~-M*
~~-:,,",:::::,,,,,,:,",,,::,,-++*#-::++--:`^^`````:,:,,,"",,,,,,,,,,"^^""""",,,"~*=+=%8&*MM&~*&M+=%%
---::::::,:,,,,",,:~==:,,,,,,-==*#::-+=+++:^,`````::::-,"","""",,,""^``^^^^"",,,-+=*=%88#W&&+MWM+=&M
,,,::-~~-~:,,"""":::-*%,,,,,,:~+#=::=+~=*++-,`^```~~:-~:"""",",,""""^``````^"",,:=+#+$@@&B@BMB$@WW@%
,"",:,:--::""""""-~"":=:""""",:~#--:++~+*+=-,`:^``-:::~-"""",,,,,"""^``````^^",":=*#+$$$M&$@W@$@&W@@
*:=*-,,,:-:,"",:-~%-,,-,""""",,-*:::++=++*+-`^-``"-:-:~-,""",,,,,""^```````^^","-++**$$$=M$$M@@$&W$$
M*M8%8W*+*:~~=~++-=*-,-=~=~~~~~+*:--*++~+*=,`~~,`:~----:::::::::,,,",-^^^^^^"""",==~~#*+:-++:~~==*&&
+#==+W8W+,:~==-=*--:,"~+++==++=+~::~+*=-++:^"+=~,-~===~==========~-,:~::--::::-::*8*-#*+:-=~=~=:=++~
,-*+~*W#+::-~~~+~---:,=+=+====++-::+*=:-=:`^-==~~-~===~~~---::,,,,:,--^:-~-::-~-:-=::==~,:~~~~-~+**=
,^**~+=*+W~---~+~:=~~,=========*:-:*+-:-,`^~-+=~-,::,,,,,,,::,,,,::-,"",:-:::---:-*-:*W+,:~~~*+==~~~
^:",,",=+*==~~=+-:*+-"+==~~~~~=*:-:++--"`^:=-+~-~:,--:::::::::~====~:,""",,,,,::,-W~=M~+:~M#*-,++===
,^^^"^,=+~=+++++-:==:"*+++++++==::~+=,^`,+++=:~=-~:++++++++++====*=+~~~~~==~-:--~~=====-:-***~:MMMMM
",:~~~~*+~====+=-:::,"*======-*~-:++^"^:+*=*+--~:",*+***++++++++++*++===####=~~==++++==-~~~~~~:++===
MMM#****+~==~~==-::,,,#====+=,#--,~,`^~=+++++-=~--"********************+**##*+==+++++==-====~=:=+===
@@@@@B@W+W%%88M=*""""~M+++++:"*:::+~"=++***==-=:-=,+++++*******************+++++++++++=~++====:=====
@BBB%%8M=*M#**+=***#M8%%%B%-",#:-:=~-+++*=**~~-~=+-~+++++++++++++++++++++++++++****++==-~~~~~=:+++++
M##MMWWM=W%%B@M=%%%%%%%BB8=,^"*--:~~~****++*~--:~=,8B%8%8&8&&WWWWM&WWM###*#**++++++++==-=~~~-=:++===
@B@@@@BM=W88&&M#8%88%%B8%W"``^=~,,:~~*++++=--:--==-&MWWWW8%8%%B%88%%8WMWWW%BB%%%88888W=+M*+*+=:++***
@B%888%M~&%%%%%%8888%&&@$B,^^^*=::,+-==+=~==~:-~++:M%8%8&8%88%%8%%%&&WWWMW&8888&8&WW&W~*WM=+#=:*####
$@@B%8%*~W888&&&&8%&&B@@@M^^``~*-::+-==+~=~-~:~,~+=-&B%888%BBBB%B@%%8%8&WWW&&88&W&&&&M~+###**=:*****
$@B%8WM**MMWWWWW&#W8%BBB%B,`^^"#=,-=+,,,""^^^``:=++~-+&B$@BBB88M88888&&M8%WMM&8W&WM##+:~*+***=:*****
B@@B%888&WWWWWWM*W%BBB8B8WM:^^^:+:::~:`````````~*+#*"`^:*%%%888888&888MW%%##*###~~****+++****~:*****
&&&&&&WWWWW&&M*#8%&8%8BBM%B#&+,^`""^,^````````^:~~=~`````^~&B8BB%8%8%%&%8BMW#++WB8==+***++++*~,+****
&WMWMMMMMW&W**M%&8%%%B8&88W*W88,=````````````^^"```````````^,*%&8W&&WM+,:=+&WW#+MB@W-:+****+=-:~=++*
MMMMWMMW&M*M8B888BW%%&8%8W%&&%8-W:,::-^````^``````````````````"WB#*&=-:*W#*M*~-+*WW&8#:-++**+===++**
WWWWW88#**&8&&8B&8%&&88&%%%BB%B~88~~--"````=8M~,^-:^```````````^M&*%B8+=:~++*~#M*+M%%%&*:-=+++++++++
WWW88M**M%%%8%%8@%&%%BW8%W88&88:M%::-:"````*&&8&8-,,~,^`````````~B*#B%MM+-:%%,#%%*M##W&%%*,-++++++++
&%%M##W8%8&8%8BB8%B%8%8W88W&WWW:M&:^"^^````:=+*++-:,+***~,"^^"^^*%=~8&88%#,&M,=W&M##MM*+#&8+,-++++++
%WMMW%%8%%%88B%888&WMWMMMMMMMW&,W&=```````^#WMMM=~=MM##*##MMMWWWMW#MM8%M%#,="*%&&&88#*&*+#*#+-,~*++*
WW&%B%%B8B8@%8&W&W&MMM&WWMMMMWW*MMM```````^&&8%W&&&WW&&8=``^^^"M&WWW=M8M-,~*W&&%WW8%8&MWWM###M#:-+**
8%B%B%&MWWWWW####MMM*M&##M##MW&W8WM^``````^*&WM&&&88%%&*``````*%@@@&+~:,~MBB%8BBB8&8W88MMMM+M***=-++
B%8&8%WWW##**++***+*++~-,"^^^",:+WM^``````^~8%8&W%B%888^`````,&%WB8W*=&M#BB%%&%%B%8&M&8&WMW8#*MM*#==
WW&WM*#W*#####M+*M*~-"^"",:--,,"^"~^``````-:WM&MWWMW8W~`````"&W8W&MM*=#=#8B%&8W88888%M&8WW*MM##W#+MW
MMM*#M***#*#M#***+-"^"-+####WMM#~,"^``````#-#8WW&%&W%8^````^&B@&+#&%WM~~+=~-~:+##%%88&WW&&&W*&&#*#**
####++*#**M#=+:^:,^"-+M**MMW#*MMM+-,``````*==W88&8%BW-`````+8%8=:#%W*M-:,`""""""^^,+&%%W&%%8&M*&&M&M
*#M*~+****++*:^,`^"~#M#*M#M#WMW&WW+:``````M#+&%&8&WW-`````,W8&=-WM*="~+^~=WW&B&M++:"^:#W%88B%%%M*M#*
##+=****#*==#:,^",+###***W###**#W+=,`````^8&=M%W#&&&M`````W%M~~M**,^,+#~&&%8BB%%8B8M=,`:W&W&8&&MM*MW
#+***#**M#**=#-`"=MM+##*MMWMM*#M*M#,`````^=M+=8W&8WB,````-&*~+#*+^"-#8#+M8W%%&&8%%&M&&~"^=8WW&&8&W#M
##M#***+*+==*#^^:MM#MW#*#MWM#MW##*#``````":##~W&MMM-`````*+~MW*+^,#&88W*+MW&&&88&W8W&&&*,`-W&WW&&&MW
*******+**+*#=`"+W#=+#*M#*W#+##M*M~```````-~&+#&WW*````^~~-&&=+^,+88W&8#+WWB8%M&&%8#%B%%W,`-WWW#M&&&
***+*+**+###M+`"*MM**+M#*+*M*#*+M#,`````,`":==+*#&-```"=~^":~+""+&M+&88&+*M&8B8B&8WW&8&W&+"`+MM#W&&&
##***++++***=~`,##*###**M#::~~=#MM^````^M"^:~"~MW*```:=:^``,,`^-#W88&&&&#+&MW8#MM&%888W8*W*^^W88#**M
**+~~+*++*##M=`:##***#~=+~~~^^,~+=`````,W:`,,^,+WM`^~=,````--^"#B88M&&W8W#+*WW8&W&%8&8&88%8-`=8&WWWW
=**+##M##M+**=`,++#M#*+##~-~-::++~`````:*:`^`^^":=*~=*W""-::#`,88&8%8%B%BMM*&W&%%8%B%B%%W&#*^^WWMMWW
-+++=**++*++#=`,##MM*#*##~,`^,~M*~`````:+-^``~+~=,:,"~=#W%W:=`-8W&&MWMWW&W#M*MWWMWWMW&8&%&*W"`*WW88W
=+*+=*####*#**^"=*##***+#:,^,~+*+-`````,::`^"*+~~,",#WWW&%&:+^-WMWMW&WMW&WW#+:~M&%&WW&&WMMMM:`~MM&&M
=~+*###=+**##*:^-**#M#M*~,,^,WWW&*`````~W,`",,,=:,:"M&#&8WW,~`-W&&W8%&&88WM+~:-W&WMW888WMMW&-`-WMMWM
++*#*++~=+****#^:+#*#MMM*-,,-W#M&*`````-+^^":^,^*&*"=#&M*#&-~`:88&W88WMM**M#****&#WM#**#MM#M-`-MM###
+**#*##***#*=++-"~##**M*=~^+W##&W*`````~:^"^:~-=*#:"*##*#MW=-`,M%%WMMMWWMW&#&&8BWW&8%%%%8&WM:`=WMW*#
****+=~*+###*##+",=*+++**=~~~-~=#+^````"^^+~:,^":,"*88&&MWW+-,"~M&M*#WMMMMWM&WM8%&8&&#WWWMMW"`*W%&W&
#*###*#=#MM#+=+++":+=#+*##MM&&&#M~`````^`*###-"",:+MWW%WW%8&W+`-&&WWMWWW88WWW#**#*+MWW88%%%#^"M#+W&&
+=~++=+**+~#M#####,,=*#*W*####MMM"``````+8&8W&W##W###**MWW&8&M:^~W888WWMWMWW&WW8&%8WWWWW88&,`*&&WM+*
##+==*==++*+++*#*+*~^-MM#*#*WW**M=~^```"&&888&8M&8&&%8WWW&WM8&#"~~M#MW&W&&8%8&8&WM&MWM&&MW+^,8&8%%%B
*+-*MM*+**###+~=++*#~,^-*WW##**=M#-````^+MMW##MM&#**MWM#*&&&W%8#"~#&&MWMM##*M#W&&WW8%BB%%*^"M8&MMWMW
+++==****~=*#*++##*+==~,`^,:-~~:^^^```^^"~MW8&W&&M*+###MMMM*=+MW#":+*MWMWWMWW&##W&W#*=*M~^"M&8B&&B%*
~~~+#~~++****++=:-~~-::--~-,,,"""--^^^^^^",:M&W&W&WM#W&WM#W##MMMMW-^==+++*+**#+#W&&&W&#:`"##=*W&W#&W
++++*+--,-~~~~~~+====~~==*###=-~~-"^`^^^^^^^":-+MMWWM+=+++*+*##+*~*-,"=*MM#*~~~~##W#+:^^~+#&#*W&MWW&
##MM##***#**+*****#MM+*#MM#MMW#**+"^^^^^^^^^^^"-*##+#W&WW8&&W&8&&MWMW=,^,-+###M+=~:"`"=*M*#*++**#*##
+~~==+=++==~+=~=++++*#++****++*+*+,"^^^^^^^^^=MW&M*#MMMW8WW88&MWW8%%%%8#-,^^`^^^``^-~M8%&88WM*#M&WWW
#*==~++=+=+++*#*+##*++*=+*M*++#M*:,,,,,,:~=~~==++=+#&M*=#8&WWWM8&&&W*+=#MM&M=#W#~-:~#M#MWM=*MMMW88%&
==+++++++=~~=+*#M#*++=++*+*MMM*+=~,,,,,,:-=+==-*+++*=M&&&M#**M#WWM#*##&8&M*#W8888W8&MW&WW8%88*#+MMW&
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 my Internet home, where I document mostly geeky interests and other enlightenments. This is my passion project and a work in progress; so expect regular 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. Feel free to say hi!

Embracing IndieWeb

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

Ever since becoming aware of content ownership, enshittification, and the IndieWeb in 2025; I’m gradually integrating small web principles and IndieWeb building blocks into my site.

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

Some other popular feature in small web communities I’ve implement are:

  • Webrings—a collection of sites linked serially around some theme. You can find the webrings I’m part of in the expandable list in the footer and explore other sites with the navigational links.
  • Web badges (aka 88x31 buttons) are also down there; hover to see a tooltip or click to explore.
  • 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 that I’m self-hosting on my Raspberry Pi! Explore content tagged with: #indieweb, #indiekit to learn more.

If you want to read more about the IndieWeb community, here are some articles for you:

Noticeboard

Show notices

August 1, 2026: I’m participating in Blaugust 2026. Join me in this annual August blogging event!

July 17, 2026: I am hosting a new Asia Pacific time zone for Homebrew Website Club, an IndieWeb virtual event for people to talk all things personal websites! Learn more:

January 11, 2026: I’m doing the #100DaysToOffload blogging challenge!

Counter: 89/100 Remaining: 133d
89%
Newest: Aug-28Start: Jan-11
Explore Post Types Traditional, long-formShorter, microblog-styleMixed or specialized

Discover content with this quick menu. As BurgeonLab grows into my primary home on the web, more Micropub-supported post types are being added; which can be broadly grouped by content style.

Microblog Stream

Since mid-2026, writing short-form content has become the norm. Click on the bar to open a preview. To view the full note, click on the date or permalink icon.

Since Oct of last year, I haven’t had time to reinstate my self-hosted apps like Calibre, Miniflux, Navidrome, etc on my little Pi homelab. During this time, I missed using Navidrome the most (I resorted to listening only on my Mac); with the…
The second HWC: AP had only minor “AI disruptions” and was nowhere near as bad as the first. The AI agent(s) that were causing the disruption actually apologised on the IndieWeb chat and promised they will stop participating in any future…
I’m really excited because a mutual friend said they’re willing to give me their retired 2018 Mac Mini (which was originally used for music production). What’s extremely exciting is the fact it’s a maxed out model with 64GB…
If you’ve been to my site before—you may have noticed a bit of a change since yesterday. Last night, I pushed a lot of features and stylistic changes to my site (over 100 commits?!) It was long overdue and I’m feeling happy I got it done…
Can’t believe it is already nearly two weeks since the inaugural HWC: Asia Pacific event—this means meetup #2 is happening next Wednesday! (At the moment, HWC: AP runs on a bi-monthly basis on a Wednesday.) Do you want to learn more about the…
See all notes

Latest Weeknotes

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

Latest Blogs

Blog articles are how I usually share my technical tinkering logs. I plan to write more non-technical topics, aka personal or casual posts in the future; but it will probably be on a separate domain (⁂ I will share it here when it is ready!)

AuguStory: The Story About BurgeonLab

Read about how BurgeonLab.com came to be and how it has transformed to become Naty’s de facto home on the Internet after discovering the IndieWeb.

A Dating Matter: Hugo, Indiekit, and Node

How an issue with dates in Hugo triggered me to go on a learning journey with Indiekit and Node.js, and ended up creating my first npm package Indiekit plugin. While writing this troubleshooting log, I ended up creating a new Hugo feature: a shortcode that fetches OG images from external links!

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.
See all posts

Latest Event

See what upcoming event I’ll be attending:
Naty RSVP'd YES to Homebrew Website Club - Asia Pacific
See all events

Top 10

The most popular pages over the past 30 days based on unique visits. (Privacy-focused analytics, no cookies, last updated on 2026-08-29.)

See statistics
Follow the blog with RSS/Atom feeds Follow with your feed reader!

Discover available XML feeds (RSS & Atom) on the /⁠subscribe page.

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