=+++=+++++++++++++=====+==================~+**+&@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&
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
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
August 1, 2026: I’m participating in Blaugust 2026. Join me in this annual August blogging event!
January 11, 2026: I’m doing the #100DaysToOffload blogging challenge!
Counter: 83/100 Remaining: 147d
83%
Newest: Aug-16Start: Jan-11
Latest Event
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.
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…
Came across Trevor’s post about link rot last week. The topic of fixing broken links on our websites is pops up occasionally at Homebrew Website Club meetings. I never really investigated how I could check every link efficiently on my Hugo site…
The temperatures are stifling, with an ongoing record-breaking heatwave due to the effect of nearby typhoons with temperatures reaching 38°C in some areas of HK. Indoor temperature when the AC is off reached 39°C in my room despite cross airflow from…
This will be the first time (so many firsts this month!) I’m attending HTML Day, which is in its 4th year. This is worldwide in-person event, where participants hand code HTML (CSS optional) websites/pages. I’ve written raw HTML in high…
Less than 30 minutes before August 1st ends (I better write this note quickly!) I have decided to participate in this rather infamous annual blogging event called Blaugust, created by, sadly the late, @belghast (Mark Temple). I’m aiming to get…
Reading Kali’s post about ownership triggered me to write this post about my memories of owning games and other types of media in my lifetime. The future is bleak. Growing up, I was a video game addict. Browsing the aisles lined with game…
The phrase “one take pass” is probably not proper English. It’s a common phrase you’ll hear in Hong Kong for taking any sort of exam or test; meaning to pass the exam on your first try. If you’ve followed my weeknotes…
I updated almost all the Apache ECharts and Hugo code that generates my favourite page on BurgeonLab: the /stats page. With the new post types I’ve added recently: books, replies (separated out from notes), and RSVPs; I noticed some of the…
Latest Weeknotes
Participating in blogging events, joining new forums, making 88x31 badges, and passing my driving test! Met a handful of cool bloggers too. A good week!
Update on driving, learning Discourse, discovering junk journaling and artist trading cards, and thinking about hosting my own Forgejo. Link Roundup is back!
Going to the annual book fair but got some cheese and juice instead. Bookwyrm data loss, building a book tracking plugin, and being part of a new writing group.
Missed two weeks but I’m back with links to share despite finishing Junited. Usual webdev tinkering, a childhood memory, hosting HWC, and IndieWebCamp thoughts.
Attending my first Trading Card Show and thinking about selling my vintage Pokémon card collection, and the usual link dump.
Latest Blogs
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!
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.
Learn how to batch convert plain URL links from a TXT file into a list of Markdown links using Python, handy for link dumps or link lists.
Discover Feather Wiki, a FOSS lightweight and customizable personal private web notebook, with multi-device sync via Syncthing and Android support using Termux.
How I fixed high latency and laggy SSH after getting a new router. Steps on how to SSH into Raspberry Pi over Ethernet with direct connection on Mac devices.
Top 10
The most popular pages over the past 30 days based on unique visits. (Privacy-focused analytics, no cookies, last updated on 2026-07-31.)
Offline LanguageTool: Free Open Source Grammarly Alternative
Hardening a New Android Phone
Cloudflare Auto Injected Tracking Scripts To My Sites
Weeknote 2026-W28: MIA, IndieWeb Events & Small Web Links
Weeknote 2026-W29: Book Fair, Writing Group & Indiekit Books
How to SSH into KOreader (Kobo eReader) from macOS
Junited 2026: Blog Sharing Month
How I Use Feather Wiki as a Private Brain Dump Tool
url2md: A URL to Markdown Link Converter using Python Script
Stats: Data about BurgeonLab