41554 blogs · [ { "id": "01a08751-2ef4-72ca-855a-10dcddcb2ecf", "title": "Wicking garden beds for the dry season", "url": "https://blog.narf.ssji.net/2026/08/31/wicking-garden-beds-for-the-dry-season/", "published_at": "2026-08-31T13:46:08+00:00" }, { "id": "01a08751-2ef4-72ca-855a-10dcddcc212f", "title": "Adding 433MHz RC-switched solar lights to Home Assistant with ESPHome", "url": "https://blog.narf.ssji.net/2026/07/27/adding-433mhz-rc-switched-solar-lights-to-home-assistant-with-esphome/", "published_at": "2026-07-27T11:12:58+00:00" }, { "id": "01a08751-2ef4-72ca-855a-10dcdec3bcdc", "title": "Mikrotik RouterOS backups: /export is good, but not enough", "url": "https://blog.narf.ssji.net/2026/06/12/mikrotik-routeros-backups-export-is-good-but-not-enough/", "published_at": "2026-06-12T00:43:27+00:00" }, { "id": "01a0821a-d8fb-7068-bcc3-8ddbdb1b571a", "title": "Optional Docker services and dependencies", "url": "https://blog.narf.ssji.net/2026/05/31/optional-docker-services-and-dependencies/", "published_at": "2026-05-31T11:58:49+00:00" }, { "id": "01a08751-2ef4-72ca-855a-10dcdf837979", "title": "Clearing Caches", "url": "https://blog.narf.ssji.net/2026/04/30/clearing-caches/", "published_at": "2026-04-30T11:35:28+00:00" }, { "id": "01a0821a-d8fc-739a-8291-9a208b297467", "title": "Git: ignoring temporary changes", "url": "https://blog.narf.ssji.net/2026/03/18/git-ignoring-temporary-changes/", "published_at": "2026-03-18T06:53:45+00:00" }, { "id": "01a08751-2ef4-72ca-855a-10dce0c9eb4c", "title": "Fixing MariaDB socket authentication on Debian", "url": "https://blog.narf.ssji.net/2026/02/20/fixing-mariadb-socket-authentication-on-debian/", "published_at": "2026-02-20T08:10:24+00:00" }, { "id": "01a08751-2ef4-72ca-855a-10dce0e4b661", "title": "Fixing WordPress critical errors without email", "url": "https://blog.narf.ssji.net/2026/01/31/fixing-wordpress-critical-errors-without-email/", "published_at": "2026-01-31T07:00:51+00:00" }, { "id": "01a0821a-d8fc-739a-8291-9a208b787bb3", "title": "Pausing a background process", "url": "https://blog.narf.ssji.net/2026/01/06/pausing-a-background-process/", "published_at": "2026-01-06T00:48:45+00:00" }, { "id": "01a08751-2ef4-72ca-855a-10dce1bfad70", "title": "Replacing the battery of an Eaton 5e UPS", "url": "https://blog.narf.ssji.net/2025/12/30/replacing-the-battery-of-an-eaton-5e-ups/", "published_at": "2025-12-30T09:14:55+00:00" }, { "id": "01a0d5b0-c484-7158-90b5-029294013445", "title": "Installing Collabora Online in Nextcloud", "url": "https://blog.narf.ssji.net/2025/11/30/installing-collabora-online-in-nextcloud/", "published_at": "2025-11-30T11:41:39+00:00" }, { "id": "01a0d5b0-c485-71db-bc6c-cd398bf097b0", "title": "Enabling HTTP/3 and QUIC in nginx", "url": "https://blog.narf.ssji.net/2025/10/10/enabling-http-3-and-quic-in-nginx/", "published_at": "2025-10-10T02:06:07+00:00" }, { "id": "01a0d5b0-c485-71db-bc6c-cd398cba4889", "title": "3-2-1 backups with Restic", "url": "https://blog.narf.ssji.net/2025/09/29/3-2-1-backups-with-restic/", "published_at": "2025-09-29T13:07:30+00:00" }, { "id": "01a0d5b0-c485-71db-bc6c-cd398d1e579e", "title": "Python mocks with side-effects", "url": "https://blog.narf.ssji.net/2025/08/31/python-mocks-with-side-effects/", "published_at": "2025-08-31T08:42:24+00:00" }, { "id": "01a0d5b0-c485-71db-bc6c-cd398d282a7e", "title": "OAuth in VanillaJS: Mind your encodings", "url": "https://blog.narf.ssji.net/2025/07/30/oauth-in-vanillajs-mind-your-encodings/", "published_at": "2025-07-30T03:22:47+00:00" }, { "id": "01a0d5b0-c485-71db-bc6c-cd398de924b0", "title": "Water tank level sensor: 4–20mA current loop, ESPHome, and Home Assistant", "url": "https://blog.narf.ssji.net/2025/06/30/water-tank-level-sensor-4-20ma-current-loop-esphome-and-home-assistant/", "published_at": "2025-06-30T07:34:50+00:00" }, { "id": "01a0d5b0-c485-71db-bc6c-cd398e35f2b3", "title": "In search for a better filter", "url": "https://blog.narf.ssji.net/2025/05/10/in-search-for-a-better-filter/", "published_at": "2025-05-10T09:21:23+00:00" }, { "id": "01a0821a-d8fc-739a-8291-9a208bf4bab7", "title": "Sharing debugging artefacts with cURL and AWS pre-signed URLs", "url": "https://blog.narf.ssji.net/2025/05/07/sharing-debugging-artefacts-with-curl-and-aws-pre-signed-urls/", "published_at": "2025-05-07T04:02:42+00:00" }, { "id": "01a0821a-d8fc-739a-8291-9a208c8cd682", "title": "Empty matches in Python’s `re` module", "url": "https://blog.narf.ssji.net/2025/04/30/empty-matches-in-pythons-re-module/", "published_at": "2025-04-30T04:57:44+00:00" }, { "id": "01a0821a-d8fc-739a-8291-9a208d217323", "title": "The poor person’s `ps`", "url": "https://blog.narf.ssji.net/2025/04/25/the-poor-persons-ps/", "published_at": "2025-04-25T01:29:45+00:00" }, { "id": "01a0d5b1-33c6-700e-b507-1248b9415493", "title": "Pydantic for data validation and hydration", "url": "https://blog.narf.ssji.net/2025/03/30/pydantic-for-data-validation-and-hydration/", "published_at": "2025-03-30T05:19:18+00:00" }, { "id": "01a0d5b1-33c7-7050-bf08-cc4ab5ccb9dc", "title": "Exposing Docker Compose stacks as systemd units", "url": "https://blog.narf.ssji.net/2025/02/28/exposing-docker-compose-stacks-as-systemd-units/", "published_at": "2025-02-28T01:54:13+00:00" }, { "id": "01a0d5b1-33c7-7050-bf08-cc4ab6ca71fd", "title": "Finagling the water sensor parameters", "url": "https://blog.narf.ssji.net/2025/02/22/finagling-the-water-sensor-parameters/", "published_at": "2025-02-22T06:10:50+00:00" }, { "id": "01a0d5b1-33c7-7050-bf08-cc4ab79a71a7", "title": "Putting it all together", "url": "https://blog.narf.ssji.net/2025/02/15/putting-it-all-together/", "published_at": "2025-02-15T10:42:31+00:00" }, { "id": "01a0d5b1-33c7-7050-bf08-cc4ab7a79a7f", "title": "Clamping and back to ESPHome", "url": "https://blog.narf.ssji.net/2025/02/14/clamping-and-back-to-esphome/", "published_at": "2025-02-14T11:43:03+00:00" }, { "id": "01a0d5b1-33c7-7050-bf08-cc4ab88373d8", "title": "Re-working the 4-20mA adapter", "url": "https://blog.narf.ssji.net/2025/02/02/re-working-the-4-20ma-adapter/", "published_at": "2025-02-02T09:35:07+00:00" }, { "id": "01a0d5b1-33c7-7050-bf08-cc4ab9788819", "title": "Staying on top of personal projects with Nextcloud Deck", "url": "https://blog.narf.ssji.net/2025/01/29/staying-on-top-of-personal-projects-with-nextcloud-deck/", "published_at": "2025-01-29T08:06:19+00:00" }, { "id": "01a0d5b1-33c7-7050-bf08-cc4ab9ca4fe4", "title": "Manually sending document contents to Wallabag", "url": "https://blog.narf.ssji.net/2025/01/17/manually-sending-document-contents-to-wallabag/", "published_at": "2025-01-17T01:56:45+00:00" }, { "id": "01a0d5b1-33c7-7050-bf08-cc4abab68575", "title": "Remap thumb buttons on the Evoluent Vertical Mouse under Linux", "url": "https://blog.narf.ssji.net/2024/12/29/remap-thumb-buttons-on-the-evoluent-vertical-mouse-under-linux/", "published_at": "2024-12-29T01:40:15+00:00" }, { "id": "01a0d5b1-33c7-7050-bf08-cc4abb965eff", "title": "I don’t often decorate classes, but when I did, I didn’t have to", "url": "https://blog.narf.ssji.net/2024/11/30/i-dont-often-decorate-classes-but-when-i-did-i-didnt-have-to/", "published_at": "2024-11-30T12:58:06+00:00" } ] posts Claim your blog
Back to Mozilla - Narf
Blog · corpus.blog/blogs/blog.narf.ssji.net/posts

Mozilla - Narf

blog.narf.ssji.net

2026

2025

2024