diff --git a/content/programming/new-tab.tree b/content/programming/new-tab.tree
new file mode 100644
index 0000000..01b9e1f
--- /dev/null
+++ b/content/programming/new-tab.tree
@@ -0,0 +1,194 @@
+%% title = "on changing the Firefox New Tab, and software freedom"
+
+% id = "01JX0G5CN5H8S7S3M4619R112A"
+- the date is 4th of June, 2025.
+
+% id = "01JX0G5CN5NYWPNCRTDF05NA26"
+- a young riki moe comes up with a _\~brilliant\~_ idea:
+
+> I will customise my browser's New Tab page! it'll be so cool, i'll put some cool artwork there and it'll be way more fun to look at than my current `about:blank`
+
+% id = "01JX0G5CN5J7N58SKKH6KN09YF"
+- so he innocently opens a blank .html file, and starts typing away.
+
+ % id = "01JX0G5CN50MBYT24D1MRK982H"
+ - armed with his text editor and knowledge of web technologies, he conjures up a minimal, yet aesthetic New Tab.
+
+ % id = "01JX0G5CN5DM7E3WH3YZP1701D"
+ - pleased with the result, he goes to his Firefox's settings, sets the page as his homepage, and goes to also set it as the New Tab page...
+
+ % id = "01JX0G5CN5K0PR3QHFHC3C3T87"
+ - only to find that there is no such option.
+
+% id = "01JX0G5CN511DJ29F4J7YF7F6R"
+- bemused by the asymmetry in the browser's Settings page, he turns to [Kagi](https://kagi.com) in search of answers, and finds [this page](https://support.mozilla.org/en-US/questions/1085762#answer-786861), where a community member says:
+
+> Firefox 41 no longer uses the browser.newtab.url setting in about:config because it was constantly attacked by malware. Starting in Firefox 41, you need an add-on to change the new tab page.
+
+% id = "01JX0G5CN514HQC0HJHV0DPXZW"
+- Sigh.
+
+% id = "01JX0G5CN5MGPAJNPNRJJWYFCP"
+- so he turns to an extension proposed by the community member, only to find its UX subpar.
+
+ % id = "01JX0G5CN5EMKHBQ4XT7V57S6K"
+ - he opens a new tab, and the address bar is focused, but the URL is not selected... so to type over it he has to hit `Ctrl A`{=html}, and only _then_ he can type in his search query.
+
+ % id = "01JX0G5CN57RJH0Y4PCNWY6BFC"
+ - (we'll glance over the fact that this whole affair required him to set up an entire web server on his PC, because extensions can't navigate to `file://`.)
+
+% id = "01JX0G5CN5WRF5WXAPZZZD4TA5"
+- he decides to declare a bitter victory, and goes to sleep for the night.
+
+% id = "01JX0G5CN58DPB7S5E9RGHE821"
+- ...
+
+% id = "01JX0G5CN5MP38ZHWT4KQPD8QH"
+- the next day. 5th of June, 2025.
+
+% id = "01JX0G5CN533256QHE8KK80JSG"
+- unsatisfied with the subpar UX, he decides that he must create a browser extension himself.
+
+ % id = "01JX0G5CN5SZGQ3CTT9DP8QJVF"
+ - so he turns to [Mozilla's official documentation](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Your_first_WebExtension), and conjures up his first ever `manifest.json`...
+
+ ```json
+ {
+ "manifest_version": 2,
+ "name": "riki's new tab",
+ "version": "1.0",
+ "description": "riki.moe's new tab page!",
+ "icons": {
+ "48": "icon-48.png",
+ "96": "icon-96.png"
+ },
+
+ "chrome_url_overrides": {
+ "newtab": "index.html"
+ },
+ "chrome_settings_overrides": {
+ "homepage": "index.html"
+ }
+ }
+ ```
+
+ % id = "01JX0G5CN5SSANM732FB8M6ZSV"
+ - and with `about:debugging`'s help, installing the extension temporarily, everything seems to work!
+
+% id = "01JX0G5CN57TB4QYCGQQ14B6HV"
+- so, as suggested by [another guide](https://extensionworkshop.com/documentation/publish/package-your-extension/), he zips up the extension's files and goes to Firefox's Extensions to install it permanently.
+
+% id = "01JX0G5CN591B70QCPGJJFE191"
+- but what's this!?
+
+> This addon could not be installed because it appears to be corrupt.
+
+ % id = "01JX0G5CN5VJJ02N2JVMHHGQ49"
+ - okay now folks. This [browser]{style="color: var(--syntax-function)"} is [Pissing]{style="color: var(--syntax-function)"} me off. I'm the original [ ]{style="white-space: pre;"} [Starwalker]{style="color: var(--syntax-function)"}
+
+% id = "01JX0G5CN547317B3MJ248MZQZ"
+- so! he looks for any issues with his packaging.
+maybe there's an unneeded subdirectory?
+maybe there's a missing extension ID?
+
+ % id = "01JX0G5CN5JNV1BTNJZFSR0GEP"
+ - or maybe Firefox is stopping him from loading the extension... just because?
+
+% id = "01JX0G5CN5XF90PKNZY888MM60"
+- so he takes a wild guess: _a cryptographic signature, it must be!_
+and looks for a way to bypass that.
+
+ % id = "01JX0G5CN5Y817KP7TYAB5ERK0"
+ - because, fuck that.
+ why would you need a signature on an extension you're not even gonna share with anyone.
+
+% id = "01JX0G5CN5J2ND0NNKQ1SD87TF"
+- and a promise appears! _Firefox Developer Edition_ ~(Electric Boogaloo)~
+
+ % id = "01JX0G5CN5KH4PF43CRKW06N1J"
+ - apparently, there's a special version of Firefox that can load unsigned addons!
+ so he tries to load his .zip file in that, and...
+
+ % id = "01JX0G5CN52V5WWHJ6H0KHA83C"
+ - it doesn't work!!! :oh:
+
+% id = "01JX0G5CN5YPQYSD7TSNJ5JKPW"
+- dismayed, he decides it is time to sign the Deal with the Devil.
+he will cryptographically sign his addon.
+
+ % id = "01JX0G5CN507D4J286EBQ81DRJ"
+ - but... that requires a Firefox account.
+ and an API token from that account.
+ that you pass in via a command line parameter, because fuck security, I guess.
+
+ % id = "01JX0G5CN58HQ49AN421DM0CKE"
+ - (imagine going through all that security charade, only to find out the official toolkit for web extensions requires passing sensitive credentials in an insecure way... ain't that fun! good thing `fish --private` exists, but huge kudos to all the other processes on my system that may have read `web-ext`'s command line arguments while it was mincing away at Doing the Signature.)
+
+% id = "01JX0G5CN5QQ5W6Y1S9PRTYBSE"
+- and a 10 minutes later-break later, he has an .xpi, ready to be chewed on by Firefox.
+
+ % id = "01JX0G5CN5SD0MJ5QY9KJCTZQ5"
+ - and all that.
+ to change his New Tab page.
+
+ % id = "01JX0G5CN5V3RVY3CTAHY5RA6G"
+ - God bless America.
+
+ % id = "01JX0GYAZY3D902X36X7Y1BG6Z"
+ - freedom of voice, freedom of choice...!
+
+% id = "01JX0G5CN5HHEZ8G2YGBPC562S"
+- okay now, story time's over.
+as already established, we've teleported ourselves to the US of A, so Now, it's Interrogation Time.
+
+ % id = "01JX0G5CN5EF3CE30MQ2YYZSFW"
+ - why the fuck is this not just a setting.
+
+ % id = "01JX0G5CN5BF7PD99J064M3HDZ"
+ - "because malware." excuse me, but why the fuck is malware allowed to touch my Firefox settings.
+
+ % id = "01JX0G5CN5BXAPZ43AYEKGDRV5"
+ - and why the fuck does loading an extension into Firefox require sending its details to Mozilla and adding it to your online developer profile.
+
+ % id = "01JX0G5CN5R6VS27M5GN8WZBP2"
+ - what if I don't have an internet connection at the moment.
+
+ % id = "01JX0G5CN50FY3Q2FYM44366TS"
+ - what if my addon contains sensitive data that I _really_ don't wanna send to foreign servers.
+
+ % id = "01JX0G5CN5MAAGAWRS944E8TSH"
+ - or what if I just want to change my fucking New Tab page to something I like but don't necessarily want to share with others.
+
+ % id = "01JX0G5CN59TGB6HVKCC1PZEEB"
+ - EVEN IF it's unlisted and nobody can see the addon, this *ABSOLUTELY SHOULD NOT BE NECESSARY.*
+
+% id = "01JX0G5CN5FC4RQH8K0RFPESSQ"
+- but hey! at least I have cute furry art on my New Tab page now.
+
+ % id = "01JX0G5CN5DQ6EZZQ2H1052X00"
+ - was it worth it?
+
+ % id = "01JX0G5CN5T9DPBGQY21ZSHTYY"
+ - ...eh, maybe?
+ I'll let you judge that.
+
+ % id = "01JX0G5CN56GC7QS0A40D3V4HN"
+ - I'm just sorely disappointed at where we've come, where even changing your browser's New Tab page to something custom is considered a security vulnerability.
+
+ % id = "01JX0G5CN5SCQFHJ1Q8P74AYYK"
+ - and this post is not meant to throw flak at Mozilla or, god forbid, any specific individual (or individual_s_).
+ I understand where a lot of this additional security barrage comes from, and out of sheer care for regular users, I agree with it.
+
+ % id = "01JX0G5CN5YFV15HV6YWJ14G8K"
+ - what I don't agree with is how in the name of security, we're taking away our collective freedoms as human beings.
+
+ % id = "01JX0G5CN54C2GM4BGYVRT9FR2"
+ - I feel insulted that I cannot change the way my browser looks to make it feel more at home, and express my belonging to a subculture.
+
+% id = "01JX0G5CN5XVJXCFMQ99XJENAA"
+- and that's all I wanted to say.
+
+ % id = "01JX0GYAZYJA8R8W5P7RS55TK3"
+ - this was supposed to be a fun post like, "hey, did you know you can put cool shit on your New Tab page?"
+
+ I'm so disappointed it came to this.
diff --git a/content/treehouse/new.tree b/content/treehouse/new.tree
index fc06fec..371207f 100644
--- a/content/treehouse/new.tree
+++ b/content/treehouse/new.tree
@@ -26,6 +26,13 @@ if you've been wondering what I've been up to, you've come to the right place.
if you want to read any of the posts, follow the links.
it's like that by design.
+% tags = ["programming"]
+ id = "01JX0GYB1D4W3A6FRPBG738N4F"
+- ### [on changing the Firefox New Tab, and software freedom][page:programming/new-tab]
+
+ % id = "01JX0GYB1DSPZEKZK9JWZC12FY"
+ - a rant on how we keep locking down our software and taking away our freedom of expression in the name of security.
+
% tags = ["music"]
id = "01JQYKYRF2RRY2DEV2Z8MSYJ4F"
- ### [Kettel - Dubio][page:music/dubio]