My site follows your system default or browser color scheme preferences (using prefers-color-scheme @media query, learn more here). To switch between light and dark mode, change the appearance configuration:Operating System
macOS: System Preferences > Appearance > Appearance
Naty S(she/her).A tech enthusiast who enjoys blogging with SSGs, tinkering on her computer, and promoting IndieWeb principles.
(Elsewhere:
Mastodon)
A note is a common IndieWeb post type, akin to a microblog (which you might know as a “tweet” or “toot”). This page displays a feed of these short, title-less entries, which usually feature brief entries like quick thoughts or replies presented in reverse chronological order (newest first). Notes are managed via Indiekit and are syndicated to Mastodon as indicated on the /firehose page. Likes are on a separate /likes feed.
Each note entry has a permalink accessible via the date link where you can upvote and make comments.
Follow with your feed reader!
Subscribe to the dedicated microblog feed or discover other feeds.
It feels liberating to step up for myself and make a decision that is focused on my well being and mental health. Even though it was a difficult decision to step away from the familiar, the self-inflicted pressures was not worth it. I would like to think I grew a bit wiser and future me will be proud. I believe we should be our own advocates for choosing what’s best for ourselves as no one knows better than how we feel in ourselves; be it mentally, physically, or otherwise. Onwards and upwards!
Hello dear readers. Earlier this week, if you noticed a lot of new (actually duplicate) entries in your feed reader from me—I apologize!
To fix it, mark all as read in your feed reader. If your feed reader didn’t fetch during the time I was messing with all of this, it might not have seen the wrong ID (then you’re fine!)
I should have triple checked before pushing the revised XML templates live, but I failed to pick up on one of the very specific date syntax errors in the Tag URI I used for the ID field (Atom) and GUID field (RSS). The feed ID is a unique string for each entry; with my mistake deployed (before I fixed ~10 min later), feed readers saw the two different IDs for each post and thinks they’re new posts. Hence, the duplication nightmare… 😥
There were a lot of inconsistencies in my Hugo XML templates, which was what triggered me to update all of them (a dangerous move!) I made the following changes:
Added all the required fields according to the documentation for Atom and RSS feeds
Clean up the Hugo logic to generate notices and the footer message
Added an email reply link to the footer of every entry
And the troublemaker: deciding to use Tag URIs for <ID> / <GUID> instead of the permalink
The validation check alerted me that my Tag URI’s date was in the wrong format. I had YYYYMMDD instead of either YYYY-MM-DD or YYYY:
Followed by the date at which this tag scheme was first used. Note that this is the date at which the tag scheme was minted, not the date of the specific entry or item. Format is YYYY-MM-DD with the month and day parts being optional.
My Tag URI is now: <id>tag:burgeonlab.com,2026:/posts/20260913212356</id>, with just the year as YYYY after the first comma.
I’ve learnt my lesson; but at a cost to my readers. I will not deploy any XML changes unless I’m 100% certain the feed is valid in at least two validators (if I ever dare touch it again 😅).
Thanks for bearing with my XML tinkering. Sorry again for my oversight.
—Naty
P.S. I want to thank Chris for his pointers and advice re: XML feeds.
Yesterday I was extremely excited to see the latest big update (Beta 30 & 31) to Indiekit, the Micropub server + client I use in conjunction with Hugo for this site. Lots of QoL updates and bugfixes. I want to thank Paul, Ricardo, and Anthony for making Indiekit better.
Having upgraded a few times, I now know the routine to upgrade my server. When I first started I was very lost indeed… 😅 Here’s a quick rundown of how I did it (mainly for myself in case I forget in the future):
Update package.json to the latest version in dependencies
During this process I checked if there was anything new in the extensions, and noticed a nice upgrade to the editor called SunEditor. It claims to be “A lightweight, flexible WYSIWYG editor with zero dependencies.” which sounds really appealing to me.
The Feather Wiki SunEditor-Replacement plugin was made by @jcoder. I tried installing it but it threw a lot of errors in the console. Luckily it didn’t take too long for me to notice there’s breaking changes from SunEditor v2 > v3, so by pinning the version to the last updated legacy version (v2.47.12) instead of @latest and everything worked!
So if you’re okay with using v2 (legacy SunEditor version), change the source of the CSS and JS.
For example: css.href="https://cdn.jsdelivr.net/npm/suneditor@latest/dist/css/suneditor.min.css"; to https://cdn.jsdelivr.net/npm/suneditor@2.47.12/dist/css/suneditor.min.css.
But I wanted to see if I could get the latest v3.3.3 working as a Feather Wiki plugin. I was about to give up actually, but I got it to work in the end! There’s a handy v2 > v3 migration tool on SunEditor and also a reference table for renamed variables.
v2 uses a direct assignment for the event handler: editor.onChange = function (contents, core) { state.edits.content = contents; }. v3 uses a nested object block:
Js
1events:{2onChange:function(contents){...}3}
Add memory cleanup and deleting removed elements step.
Use contents.data || contents to extract the content correctly so Feather Wiki can save the content typed into the SunEditor textarea.
I added word and character count to the SunEditor status bar, which means I don’t need to have an extra Feather Wiki extension: Word Count.
Instead of CDN/third-party calls, I downloaded the v3.3.3 CSS and JS files to be used offline.
I will make a PR later this week and tell Robbie about pinning the v2 version on @jcoder’s version and a v3 version for those who want the update. (Will link to the plugin code here when it’s up.) ⁂
Hope I am not the only one who gets to benefit from my troubleshooting session! It’s always a nice feeling to get something to work.
Have a great week and see you later this week if you’re into personal websites and the IndieWeb as HWC:AP is on this Wednesday!
Mid Autumn Festival aka Moon Festival (中秋節, zung1 cau1 zit3),is celebrated on August 15 on the lunar calendar (which lands on the Gregorian calendar September 25 this year).
It is considered one of the top Chinese holidays—typically in Hong Kong—families gather, eat and gift each other mooncake 🥮 (a sweet pastry, the traditional one has lotus paste and salted egg yolk), observe the full moon on the night with lanterns, guess “lantern riddles”, visit lantern displays, and/or pay a visit to the Fire Dragon Dance.
I’ve actually never seen the Fire Dragon Dance because I think I’ll have a difficult time breathing with the burning fumes of the 12k incense sticks. I’d love to photograph the event one day!
May your family be together and complete, like the full moon. Happy Mid-Autumn!
I’m still mentally recovering from Blaugust. 😅 During this writing break, instead of writing words, I’m writing HTML, CSS, JS and even some TypeScript/React Components (that’s for Quartz, which is confusing as hell TBH!)
The calendar feature is one of my absolute favorite things on BurgeonLab. ⁂ I actually need to update my guide and share the docs + source code which got abandoned part way. Definitely something I want to accomplish but I have too many things I want to do! 😅
A big task I’m working on in the last few days is to deploy my Quartz digital garden secondary site, as my Hostinger WordPress plan has expired yesterday. I have to admit I left it a bit late; I was ironing out the final kinks.
It is taking longer than expected with my complete lack of experience with TS overrides and custom .TS and .TSX files to automate OG images, for example. I don’t really like how heavy the backend is with Quartz and as Lesley (a fellow Indieweb blogger who also uses Quartz) pointed out, it is not as customizable compared to other static site generators and can lead to repeated headaches from Git merge conflicts every time updates are fetched upstream.
This is indeed wise advice as I find both statements very true—I already had one of those Git merge nightmares having not updated for two months… But alas, I am going to push on because I already changed my mind three times (!?) after deciding to leave WordPress; I was set on ClassicPress (with SemPress theme) at first, then went to Zensical, and now Quartz.
I proceeded to creating a fresh new Obsidian vault for my public digital garden site. Starting from scratch was very refreshing, with no plugins and default settings for everything! It wasn’t long before I reinstalled Templater though as I find the ‘Create note from template’ hotkey indispensable. I made two new templates with Quartz in mind, where I am trying to create a path of least resistance so that publishing to it will be as simple as possible.
What remains is how the site will be deployed. I might rely on SourceHut Builds like how I deploy this site (on git push) or on some sort of crontab so that it is automated. The Obsidian vault (Markdown content) will likely be synced to my Android mobile device via Syncthing so that I can access the notes and write anywhere.
But Deployment and CI/CD is not yet the main issue as I’m facing some hosting/routing issues which I shared in yesterday’s note after migrating the “live” domain to Bunny.net Storage.
Anyhow, I hope I can sort it out soon and get into writing mode, as I really look forward to making notes for my new digital garden!
Thank you, kind stranger, who used my Bunny.net referral code on August 30, 2026! You’re my second successful referral to one of my favourite web services. Appreciate you supporting my web hosting fees.
I actually just migrated my secondary WordPress site from Hostinger to Bunny Storage and working on getting the routing working because Quartz outputs its HTML files a particular way which I am not used to (it is in two different formats):
Flat .html files for everything e.g. public/about.html
Directory index.html for all folder pages e.g. public/blog/index.html
Since I’m not hosting the site on a web server with Nginx or Caddy, this means that I have to rely on Bunny Edge Rules to add some functionality. Edge Rules was always (and still is to be honest) a bit confusing to me, but they’re super useful as they can do things like Override Origin URL (an action) that is triggered by different filters (aka condition).
For example, an Edge rule I have is to add .html suffix to the Origin URL <origin-url>{{path}}.html when it’s any page that doesn’t have a file extension AND NOT the homepage.
This works for everything except folder directory pages. In the case of the link to the blog archive, going to .com/blog with the above Edge Rule, it will apply the override origin URL and it becomes .com/blog.html which leads to a 404 page not found. The page is actually at .com/blog/index.html.
At the moment, I have only two folder directory pages: /notes and /blog, which is easy enough to add as a Edge Rule first (priority matters) before the “Add .html suffix rule”. It does the same Action of “Override Origin URL” but adds /index.html suffix instead of just .html, <origin-url>{{path}}/index.html when the Request URL is either <hostname>/blog or <hostname>/notes.
The problem is that if I eventually develop the digital garden, I will have more than just two directory / folder pages. I wouldn’t want to keep modifying the rule just to make sure the directory pages don’t 404.
I actually sent a support ticket to see what the Bunny team suggests. Perhaps they will say Middleware scripts (which I have zero experience in) or some wildcard directory filter? I certainly hope it can be worked around somehow!
Update
I’ve written a guide on how to fix this issue, with indeed a Middleware Edge script, in the end. Hope it’s helpful for future Quartz users.
One of my favorite open source tools, D2: Declarative Diagramming, is now under Hack Club! This makes D2 a fully open source and non-profit project. Thank you Alex for making this awesome tool available for everyone in the long run.
I’m really thrilled because there was some concern about whether or not this amazing project is still alive over at GitHub discussions (similarly on Discord). Sometime last month(?), I remember seeing Alex respond on Discord that he’s in the final stages of getting D2 into Hack Club… and it’s finally complete! I appreciate Alex’s take on AI in relation to D2 too that he mentions in the announcement (link below). Hope the codebase stays a “healthy dose of human”.
Personally, I was a tad bit concerned about the future of this project that I have become dependent on. I would have hated if I had to change tools because I’ve invested time to learning how D2 works and got my workflow all set up. That’s the underlying risk I guess for relying too heavily on any single tool…
In case you didn’t know, there is a VSCodium / VSCode extension and also an Obsidian plugin that is handy when testing different styles and working on .D2 files as it generates the image in real-time. Coming from Mermaid JS which is perhaps the more popular diagramming language, I was grateful that both apps I use daily (Obsidian and VSCodium) both have official D2 plugins.
All my Open Graph images on this site are created with D2 and I’ve started using it instead of Mermaid for flow chart diagrams in posts that benefit from a visual representation (⁂ will convert existing diagrams when I have time). I think it is a better tool than Mermaid (especially when Mermaid is pushing AI straight in your face). Not to mention the syntax is easier to grasp! Highly recommend playing around with it if you’re looking for a diagramming language.
James, a fellow blogger and friend, kindly offered me a chance to guest post on his blog: with words, wonder, so that I could tick off one more task in the Community Builder award list. This means I achieved the goal! I will try to contribute more to the Blaugust community next year for sure. Thank you, James for the opportunity!
If you want to read my guest post, it’s on James’s site now: Chinese Idioms (Guest post by Naty). Do check out all the great writing on his blog while you’re there!
This note is definitely the last post of Blaugust2026! Good night y’all.
It’s hard to think of a single piece of advice that overrules all the rest, but here are some that I follow:
“This too shall pass.”
Try to zoom out and look at the big picture once in a while.
“You can’t rush life; everyone is running on their own individual timeline.”
Also, try not to compare yourself to others.
“The most trustworthy and reliable friend is yourself.”
If you need to vent about someone or something; try writing it down in a journal and reviewing it once you’ve calmed down. You never know if one day your “best friend” might no longer be a friend and now they know all your “secrets”.
“Don’t be dependent on others.”
Learn to be happy being alone, stay independent, and try to solve your own problems (but ask for guidance when you genuinely need it).
“Great achievements come in tiny steps.”
Break down big tasks into bite-sized ones and make completing tasks a habit to achieve your goals.
I wouldn’t call my advice the “best” by any means, but I’ve given it to more than one person, so I’ll share it here:
“Instead of putting things you want to do in a bucket list, time block them into your calendar.”
Seeing the task in your calendar can help motivate you to complete the task.
“Make everything important a habit.”
Humans are creatures of habit. If you want to accomplish something long term, make it a routine. Use a habit tracker to help you get started with reminders; after about a month, it should become ingrained in your daily routine.
“Listen and think before you speak.”
Personally, I am more of a listener and I believe the act of listening and thinking is more important than the actual expression.
“Step out of your comfort zone often.”
It gives us a chance to grow, toughen up, challenges us to problem-solve, and improve as a person.
“Remember to love yourself.”
Some people (especially carers) forget to look after themselves after giving all their energy loving others.
“Check what free resources are available at your local library.”
In HK, the public library is free for all citizens and I find the e-resources to be super useful. It is perfect for self-improvement and learning, or even just casual reading. Taking all those short moments in the day, where nothing too productive can be done like queuing or commuting, to read is a great use of time in my opinion! Never stop learning. 📚
Both giving and taking advice is an art in itself. A giver of advice needs to be mindful of the situation of the receiver, not being forceful, ensuring the advice isn’t bad which might make matters worse. A receiver of advice needs to know how to adapt it to their own circumstances, understand that not every piece of advice applies to them, and not to follow advice blindly.
Sometimes though, when a friend comes to you for “advice”; they might just need a safe space for you to listen empathetically and can work it out themselves. At the end of the day, advice is a very subjective thing, and the quality can be extremely variable based on the amount of life experiences one has had—which is why I tend to err on the conservative side of giving advice: give it only when explicitly asked.