41554 blogs · [ { "id": "01a0d927-9e60-7315-bacd-7a3d356d9019", "title": "Parsing Expression Grammar in Lisp: Converting Org to HTML with (ice-9 peg) in Guile", "url": "https://jointhefreeworld.org/blog/articles/lisps/parsing-expression-grammar-lisp-org-convert-to-html/index.html", "published_at": "2026-09-24T23:00:00+00:00" }, { "id": "01a0878f-c04d-73f7-9389-3dd6a0e5efaf", "title": "Quest for the eternal Dock - lambdock", "url": "https://jointhefreeworld.org/blog/articles/gnu-linux/quest-for-eternal-dock/index.html", "published_at": "2026-08-28T23:00:00+00:00" }, { "id": "01a0878f-c04d-73f7-9389-3dd6a1924c08", "title": "Emacs Eglot for Scala and Kotlin (JVM)", "url": "https://jointhefreeworld.org/blog/articles/emacs/emacs-eglot-scala-kotlin/index.html", "published_at": "2026-07-20T23:00:00+00:00" }, { "id": "01a0878f-c04d-73f7-9389-3dd6a28a59e3", "title": "Maak: The power of Lisp that powers your trusty command runner and the enlightments", "url": "https://jointhefreeworld.org/blog/articles/lisps/maak/index.html", "published_at": "2026-07-14T23:00:00+00:00" }, { "id": "01a0878f-c04d-73f7-9389-3dd6a35f6876", "title": "Hacking Freedom: Compiling GNU Emacs from Source", "url": "https://jointhefreeworld.org/blog/articles/emacs/build-emacs-from-source/index.html", "published_at": "2026-06-30T23:00:00+00:00" }, { "id": "01a0878f-c04d-73f7-9389-3dd6a456fa0a", "title": "jointhefreeworld - A Style Guide for Documentation", "url": "https://jointhefreeworld.org/blog/articles/personal/jointhefreeworld-documentation-style-guide/index.html", "published_at": "2026-06-20T23:00:00+00:00" }, { "id": "01a0878f-c04d-73f7-9389-3dd6a52c0f4a", "title": "Scriba v0.3.3 - Structured Logging in Lisp", "url": "https://jointhefreeworld.org/blog/articles/lisps/scriba-structured-logging-library-in-lisp/index.html", "published_at": "2026-06-03T23:00:00+00:00" }, { "id": "01a0878f-c04d-73f7-9389-3dd6a56081c3", "title": "Manifesto for Agile Software Development", "url": "https://jointhefreeworld.org/blog/articles/development/agile-manifesto/index.html", "published_at": "2026-06-01T23:00:00+00:00" }, { "id": "01a0878f-c04d-73f7-9389-3dd6a5f6aec4", "title": "jointhefreeworld - AI Policy", "url": "https://jointhefreeworld.org/blog/articles/personal/jointhefreeworld-ai-policy/index.html", "published_at": "2026-05-30T23:00:00+00:00" }, { "id": "01a0878f-c04d-73f7-9389-3dd6a6b633ea", "title": "Why I Still Reach for Scheme and Lisp Instead of Haskell", "url": "https://jointhefreeworld.org/blog/articles/lisps/why-i-still-reach-for-scheme-instead-of-haskell/index.html", "published_at": "2026-04-28T23:00:00+00:00" }, { "id": "01a0878f-c04d-73f7-9389-3dd6a75db20f", "title": "Functional repository pattern in Scheme? Decoupling and abstracting the data layer in Lisp", "url": "https://jointhefreeworld.org/blog/articles/lisps/functional-repository-pattern-in-scheme-with-macros/index.html", "published_at": "2026-04-10T23:00:00+00:00" }, { "id": "01a0878f-c04d-73f7-9389-3dd6a7bd391f", "title": "Don’t Reward the Best Firefighter", "url": "https://jointhefreeworld.org/blog/articles/development/dont-reward-the-best-firefighter/index.html", "published_at": "2026-02-03T23:00:00+00:00" }, { "id": "01a0878f-c04d-73f7-9389-3dd6a8660420", "title": "Most Technical Problems are People Problems", "url": "https://jointhefreeworld.org/blog/articles/development/most-technical-problems-are-people-problems/index.html", "published_at": "2025-12-05T23:00:00+00:00" }, { "id": "01a0878f-c04d-73f7-9389-3dd6a8a8bd91", "title": "Simple Rust Guix Emacs development environment", "url": "https://jointhefreeworld.org/blog/articles/rust/simple-guix-emacs-rust-development-environment/index.html", "published_at": "2025-11-14T23:00:00+00:00" }, { "id": "01a0878f-c04d-73f7-9389-3dd6a93a9f71", "title": "Git Riddance", "url": "https://jointhefreeworld.org/blog/articles/development/getting-rid-of-git-history/index.html", "published_at": "2025-10-27T23:00:00+00:00" }, { "id": "01a0878f-c04d-73f7-9389-3dd6aa2342ee", "title": "Hexagon of Doom - The Cost of Over-Abstraction and Indirection", "url": "https://jointhefreeworld.org/blog/articles/development/hexagon-of-doom/index.html", "published_at": "2025-10-27T23:00:00+00:00" }, { "id": "01a0878f-c04e-7058-a4f8-1fb73526204f", "title": "The FREE stack - My Tech Radar", "url": "https://jointhefreeworld.org/blog/articles/development/tech-radar/index.html", "published_at": "2025-10-27T23:00:00+00:00" }, { "id": "01a0878f-c04e-7058-a4f8-1fb7358ab3e9", "title": "Increase the file descriptor count in GNU/Linux", "url": "https://jointhefreeworld.org/blog/articles/gnu-linux/increase-the-file-descriptor-limit-on-gnu-linux/index.html", "published_at": "2025-10-27T23:00:00+00:00" }, { "id": "01a0878f-c04e-7058-a4f8-1fb735ff134c", "title": "Embracing the eternal Sexp wisdom with the GNU", "url": "https://jointhefreeworld.org/blog/articles/lisps/embracing-the-eternal-sexp-wisdom-of-the-gnu/index.html", "published_at": "2025-10-27T23:00:00+00:00" }, { "id": "01a0878f-c04e-7058-a4f8-1fb736c6f85e", "title": "Taming Complexity with Scheme: The Byggsteg Story", "url": "https://jointhefreeworld.org/blog/articles/lisps/taming-complexity-with-scheme-the-byggsteg-story/index.html", "published_at": "2025-10-27T23:00:00+00:00" }, { "id": "01a0878f-c04e-7058-a4f8-1fb737246482", "title": "Mètsàtron’s astral analysis of Joe’s being", "url": "https://jointhefreeworld.org/blog/articles/personal/josep-astrology-by-metsatron/index.html", "published_at": "2025-10-19T23:00:00+00:00" }, { "id": "01a0878f-c04e-7058-a4f8-1fb7380728a7", "title": "Markdown Cheat-sheet for Beginners", "url": "https://jointhefreeworld.org/blog/articles/development/simple-markdown-cheatsheet/index.html", "published_at": "2025-09-15T23:00:00+00:00" }, { "id": "01a0878f-c04e-7058-a4f8-1fb738a3a86c", "title": "Scheme and Lisps are Great for production", "url": "https://jointhefreeworld.org/blog/articles/lisps/scheme-and-lisps-are-great-for-production/index.html", "published_at": "2025-06-26T23:00:00+00:00" }, { "id": "01a0878f-c04e-7058-a4f8-1fb738ff3f7c", "title": "The Best Programmers I Know", "url": "https://jointhefreeworld.org/blog/articles/development/best-programmers/index.html", "published_at": "2025-04-11T23:00:00+00:00" }, { "id": "01a0878f-c04e-7058-a4f8-1fb73938641d", "title": "Why I Program in Lisp?", "url": "https://jointhefreeworld.org/blog/articles/lisps/why-i-program-in-lisp/index.html", "published_at": "2025-04-11T23:00:00+00:00" }, { "id": "01a0878f-c04e-7058-a4f8-1fb73a0cb5f3", "title": "jointhefreeworld - Code of Conduct", "url": "https://jointhefreeworld.org/blog/articles/personal/jointhefreeworld-code-of-conduct/index.html", "published_at": "2025-04-11T23:00:00+00:00" }, { "id": "01a0878f-c04e-7058-a4f8-1fb73aa2a68a", "title": "Moving from Sway to Hyprland - Archived SwayFX config", "url": "https://jointhefreeworld.org/blog/articles/gnu-linux/sway-guix-fully-lisp-configuration/index.html", "published_at": "2025-03-04T23:00:00+00:00" }, { "id": "01a0878f-c04e-7058-a4f8-1fb73b7e56ae", "title": "Building Conky with Wayland Support on GNU Guix", "url": "https://jointhefreeworld.org/blog/articles/gnu-linux/conky-wayland-guix/index.html", "published_at": "2025-02-17T23:00:00+00:00" }, { "id": "01a0878f-c04e-7058-a4f8-1fb73c6ecdaa", "title": "Legendary Lisp Laptop - a modern Lisp machine with Framework laptop", "url": "https://jointhefreeworld.org/blog/articles/gnu-linux/legendary-lisp-laptop/index.html", "published_at": "2025-02-04T23:00:00+00:00" }, { "id": "01a0878f-c04e-7058-a4f8-1fb73d39d429", "title": "Scheme & Lisp Style Guide", "url": "https://jointhefreeworld.org/blog/articles/lisps/scheme-and-lisp-style-guide/index.html", "published_at": "2024-12-18T23:00:00+00:00" }, { "id": "01a0878f-c04e-7058-a4f8-1fb73dd1d1e2", "title": "Podman root-less setup on GNU Guix", "url": "https://jointhefreeworld.org/blog/articles/gnu-linux/podman-root-less-guix/index.html", "published_at": "2024-12-09T23:00:00+00:00" }, { "id": "01a0878f-c04e-7058-a4f8-1fb73e593224", "title": "YAML Schemas in Emacs with Eglot", "url": "https://jointhefreeworld.org/blog/articles/emacs/yaml-schemas-in-emacs-eglot/index.html", "published_at": "2024-12-04T23:00:00+00:00" }, { "id": "01a0878f-c04e-7058-a4f8-1fb73f31ec7d", "title": "Emacs registers - a god-send for your day job", "url": "https://jointhefreeworld.org/blog/articles/emacs/emacs-registers/index.html", "published_at": "2024-08-13T23:00:00+00:00" }, { "id": "01a0878f-c04e-7058-a4f8-1fb73fb81b10", "title": "Brief aan mijzelf", "url": "https://jointhefreeworld.org/blog/articles/personal/brief-aan-mijzelf/index.html", "published_at": "2024-06-17T23:00:00+00:00" }, { "id": "01a0878f-c04e-7058-a4f8-1fb740858123", "title": "Free à la Carte", "url": "https://jointhefreeworld.org/blog/articles/haskell/free-alacarte/index.html", "published_at": "2024-04-20T23:00:00+00:00" }, { "id": "01a0878f-c04e-7058-a4f8-1fb7414b6367", "title": "Black Box Testing in modern Software", "url": "https://jointhefreeworld.org/blog/articles/development/black-box-testing/index.html", "published_at": "2024-02-26T23:00:00+00:00" }, { "id": "01a0878f-c04e-7058-a4f8-1fb74152f012", "title": "Open VPN 3 on NixOS with Web-based SAML", "url": "https://jointhefreeworld.org/blog/articles/gnu-linux/openvpn3-on-nixos-with-web-based-saml/index.html", "published_at": "2023-11-02T23:00:00+00:00" }, { "id": "01a0878f-c04e-7058-a4f8-1fb7423ace09", "title": "Create a Windows 11 bootable USB from GNU Linux", "url": "https://jointhefreeworld.org/blog/articles/gnu-linux/windows-11-bootable-usb-from-gnu-linux/index.html", "published_at": "2023-08-25T23:00:00+00:00" }, { "id": "01a0878f-c04e-7058-a4f8-1fb743053096", "title": "Open VPN 3 on Void Linux", "url": "https://jointhefreeworld.org/blog/articles/gnu-linux/openvpn3-on-voidlinux/index.html", "published_at": "2023-08-18T23:00:00+00:00" }, { "id": "01a0878f-c04e-7058-a4f8-1fb743bed691", "title": "Emacs for absolute beginners", "url": "https://jointhefreeworld.org/blog/articles/emacs/emacs-for-absolute-begginners/index.html", "published_at": "2023-04-28T23:00:00+00:00" }, { "id": "01a0878f-c04e-7058-a4f8-1fb74458a7ca", "title": "Emacs and Scala setup with Eglot", "url": "https://jointhefreeworld.org/blog/articles/emacs/emacs-and-scala-setup-with-eglot/index.html", "published_at": "2023-04-26T23:00:00+00:00" }, { "id": "01a0878f-c04e-7058-a4f8-1fb74553e4d7", "title": "Running Hoogle locally", "url": "https://jointhefreeworld.org/blog/articles/haskell/running-hoogle-locally/index.html", "published_at": "2022-10-10T23:00:00+00:00" }, { "id": "01a0878f-c04e-7058-a4f8-1fb7463e3bd1", "title": "Type safety back and forth", "url": "https://jointhefreeworld.org/blog/articles/haskell/type-safety-back-and-forth/index.html", "published_at": "2022-09-12T23:00:00+00:00" }, { "id": "01a0878f-c04e-7058-a4f8-1fb746d7b208", "title": "Why Haskell is important?", "url": "https://jointhefreeworld.org/blog/articles/haskell/why-haskell-is-important/index.html", "published_at": "2022-09-10T23:00:00+00:00" }, { "id": "01a0878f-c04e-7058-a4f8-1fb7471ed318", "title": "Arch Linux UEFI + Encryption", "url": "https://jointhefreeworld.org/blog/articles/gnu-linux/arch-linux-uefi-encryption/index.html", "published_at": "2021-12-21T23:00:00+00:00" }, { "id": "01a0878f-c04e-7058-a4f8-1fb7476f4ba7", "title": "GNU Guix VM aarch64", "url": "https://jointhefreeworld.org/blog/articles/gnu-linux/gnu-guix-virtual-machine-image-aarch64/index.html", "published_at": "2021-12-21T23:00:00+00:00" }, { "id": "01a0878f-c04e-7058-a4f8-1fb747a3c591", "title": "rc.d scripting", "url": "https://jointhefreeworld.org/blog/articles/freebsd/rcd-scripting/index.html", "published_at": "2021-12-02T23:00:00+00:00" }, { "id": "01a0878f-c04e-7058-a4f8-1fb74870bcdf", "title": "How I write HTTP services", "url": "https://jointhefreeworld.org/blog/articles/go/how-i-write-http-services/index.html", "published_at": "2021-09-29T23:00:00+00:00" }, { "id": "01a0878f-c04e-7058-a4f8-1fb7489c239d", "title": "Project Structure", "url": "https://jointhefreeworld.org/blog/articles/go/project-structure/index.html", "published_at": "2021-09-27T23:00:00+00:00" }, { "id": "01a0878f-c04e-7058-a4f8-1fb748e2e801", "title": "German naming convention", "url": "https://jointhefreeworld.org/blog/articles/development/german-naming-convention/index.html", "published_at": "2021-09-21T23:00:00+00:00" }, { "id": "01a0878f-c04e-7058-a4f8-1fb7494cba65", "title": "pkg or ports ?", "url": "https://jointhefreeworld.org/blog/articles/freebsd/pkg-or-ports/index.html", "published_at": "2021-09-17T23:00:00+00:00" }, { "id": "01a0878f-c04e-7058-a4f8-1fb749a00107", "title": "SQL transactions", "url": "https://jointhefreeworld.org/blog/articles/go/sql-transactions/index.html", "published_at": "2021-09-16T23:00:00+00:00" }, { "id": "01a0878f-c04e-7058-a4f8-1fb74a53bbe3", "title": "Practical rc.d scripting and Go", "url": "https://jointhefreeworld.org/blog/articles/freebsd/practical-rcd-scripting-and-go/index.html", "published_at": "2021-08-31T23:00:00+00:00" }, { "id": "01a0878f-c04e-7058-a4f8-1fb74b43771a", "title": "Updating FreeBSD in iocage", "url": "https://jointhefreeworld.org/blog/articles/freebsd/updating-freebsd-in-iocage/index.html", "published_at": "2021-08-31T23:00:00+00:00" }, { "id": "01a0878f-c04e-7058-a4f8-1fb74bdfcfef", "title": "Breaking free of Javascript", "url": "https://jointhefreeworld.org/blog/articles/development/breaking-free-of-javascript/index.html", "published_at": "2021-08-29T23:00:00+00:00" }, { "id": "01a0878f-c04e-7058-a4f8-1fb74cc4741d", "title": "Haskell in Production at Foxdown Systems", "url": "https://jointhefreeworld.org/blog/articles/haskell/haskell-in-production-at-foxdown-systems/index.html", "published_at": "2021-08-21T23:00:00+00:00" }, { "id": "01a0878f-c04e-7058-a4f8-1fb74d216166", "title": "Why SQL SELECT * is often a bad idea", "url": "https://jointhefreeworld.org/blog/articles/development/sql-select-all/index.html", "published_at": "2021-02-27T23:00:00+00:00" }, { "id": "01a0878f-c04e-7058-a4f8-1fb74d969e10", "title": "SSR wins over Javascript", "url": "https://jointhefreeworld.org/blog/articles/development/ssr-wins-over-javascript/index.html", "published_at": "2021-01-31T23:00:00+00:00" }, { "id": "01a0878f-c04e-7058-a4f8-1fb74dc651a6", "title": "Opinionated Style Guide", "url": "https://jointhefreeworld.org/blog/articles/go/opinionated-style-guide/index.html", "published_at": "2021-01-26T23:00:00+00:00" }, { "id": "01a0878f-c04e-7058-a4f8-1fb74e183850", "title": "Shared Libraries with Jenkins", "url": "https://jointhefreeworld.org/blog/articles/ci/shared-libraries-with-jenkins/index.html", "published_at": "2021-01-16T23:00:00+00:00" }, { "id": "01a0878f-c04e-7058-a4f8-1fb74e9f3080", "title": "Jails with a loopback IP", "url": "https://jointhefreeworld.org/blog/articles/freebsd/jails-with-a-loopback-ip/index.html", "published_at": "2020-11-19T23:00:00+00:00" }, { "id": "01a0878f-c04e-7058-a4f8-1fb74f40ea42", "title": "Root on ZFS with partitions", "url": "https://jointhefreeworld.org/blog/articles/freebsd/root-on-zfs-with-partitions/index.html", "published_at": "2020-11-19T23:00:00+00:00" }, { "id": "01a0878f-c04e-7058-a4f8-1fb74f4eb68b", "title": "File Descriptors and Go", "url": "https://jointhefreeworld.org/blog/articles/go/file-descriptors-and-go/index.html", "published_at": "2020-11-13T23:00:00+00:00" }, { "id": "01a0878f-c04e-7058-a4f8-1fb74fb08557", "title": "Zen of Go", "url": "https://jointhefreeworld.org/blog/articles/go/zen-of-go/index.html", "published_at": "2020-10-04T23:00:00+00:00" }, { "id": "01a0878f-c04e-7058-a4f8-1fb75044b8ed", "title": "Tips for clean code with Go", "url": "https://jointhefreeworld.org/blog/articles/go/tips-for-clean-code-with-go/index.html", "published_at": "2020-10-02T23:00:00+00:00" }, { "id": "01a0878f-c04e-7058-a4f8-1fb75136cedb", "title": "Running PostgreSQL on FreeBSD", "url": "https://jointhefreeworld.org/blog/articles/freebsd/running-postgresql-on-freebsd/index.html", "published_at": "2020-09-19T23:00:00+00:00" }, { "id": "01a0878f-c04e-7058-a4f8-1fb751b481f6", "title": "A Great Programmer", "url": "https://jointhefreeworld.org/blog/articles/development/a-great-programmer/index.html", "published_at": "2020-09-18T23:00:00+00:00" }, { "id": "01a0878f-c04e-7058-a4f8-1fb751fe8ade", "title": "Make or New ?", "url": "https://jointhefreeworld.org/blog/articles/go/make-or-new/index.html", "published_at": "2020-09-18T23:00:00+00:00" }, { "id": "01a0878f-c04e-7058-a4f8-1fb752014974", "title": "CI / CD", "url": "https://jointhefreeworld.org/blog/articles/ci/index.html", "published_at": null }, { "id": "01a0878f-c04e-7058-a4f8-1fb75240c07b", "title": "Development", "url": "https://jointhefreeworld.org/blog/articles/development/index.html", "published_at": null }, { "id": "01a0878f-c04e-7058-a4f8-1fb75272e18b", "title": "Emacs", "url": "https://jointhefreeworld.org/blog/articles/emacs/index.html", "published_at": null }, { "id": "01a0878f-c04e-7058-a4f8-1fb7531f5083", "title": "FreeBSD", "url": "https://jointhefreeworld.org/blog/articles/freebsd/index.html", "published_at": null }, { "id": "01a0878f-c04e-7058-a4f8-1fb753559516", "title": "GNU/Linux", "url": "https://jointhefreeworld.org/blog/articles/gnu-linux/index.html", "published_at": null }, { "id": "01a0878f-c04e-7058-a4f8-1fb7539d98dc", "title": "Go", "url": "https://jointhefreeworld.org/blog/articles/go/index.html", "published_at": null }, { "id": "01a0878f-c04e-7058-a4f8-1fb7539f9715", "title": "Haskell", "url": "https://jointhefreeworld.org/blog/articles/haskell/index.html", "published_at": null }, { "id": "01a0878f-c04e-7058-a4f8-1fb753afc660", "title": "Lisps", "url": "https://jointhefreeworld.org/blog/articles/lisps/index.html", "published_at": null }, { "id": "01a0878f-c04e-7058-a4f8-1fb7541535d7", "title": "Personal", "url": "https://jointhefreeworld.org/blog/articles/personal/index.html", "published_at": null }, { "id": "01a0878f-c04e-7058-a4f8-1fb754ff941b", "title": "Rust", "url": "https://jointhefreeworld.org/blog/articles/rust/index.html", "published_at": null } ] posts Claim your blog
Back to jointhefreeworld.org
Blog · corpus.blog/blogs/jointhefreeworld.org/posts

jointhefreeworld.org

jointhefreeworld.org

2026

2025

2024

2023

2022

2021

2020

Undated