<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Chenborg — Open-source technical stacks on European infrastructure</title>
  <subtitle>Chenborg builds and runs technical stacks made entirely of open source software, hosted on European infrastructure. Jekyll, Redmine, Ruby on Rails, NixOS, WireGuard and pf — designed, deployed and maintained.</subtitle>
  <link href="https://chenborg.com/feed.xml" rel="self" type="application/atom+xml"/>
  <link href="https://chenborg.com/" rel="alternate" type="text/html"/>
  <id>https://chenborg.com/</id>
  <updated>2026-09-09T12:00:00+02:00</updated>
  <author><name>Chen</name><email>hej@chenborg.com</email></author>
  <rights>© 2026 Chenborg</rights>
  <entry>
    <title>Hackathons &amp; open-source culture</title>
    <link href="https://chenborg.com/journal/hackathons-and-open-source-culture/" rel="alternate" type="text/html"/>
    <id>https://chenborg.com/journal/hackathons-and-open-source-culture/</id>
    <published>2026-09-09T12:00:00+02:00</published>
    <updated>2026-09-09T12:00:00+02:00</updated>
    <category term="Culture"/>
    <summary type="text">Running the event, and the harder part afterwards — turning a good weekend into an organisation that is genuinely comfortable working in the open.</summary>
  </entry>
  <entry>
    <title>ThinkPads, Unix-installed</title>
    <link href="https://chenborg.com/journal/thinkpads-unix-installed/" rel="alternate" type="text/html"/>
    <id>https://chenborg.com/journal/thinkpads-unix-installed/</id>
    <published>2026-09-09T12:00:00+02:00</published>
    <updated>2026-09-09T12:00:00+02:00</updated>
    <category term="Hardware"/>
    <summary type="text">Refurbished ThinkPads arriving with GNU/Linux or BSD already working — every function key, the fingerprint reader, the dock — provisioned from the same repository as your servers.</summary>
  </entry>
  <entry>
    <title>Your architecture diagram belongs in the repository</title>
    <link href="https://chenborg.com/journal/your-architecture-diagram-belongs-in-the-repository/" rel="alternate" type="text/html"/>
    <id>https://chenborg.com/journal/your-architecture-diagram-belongs-in-the-repository/</id>
    <published>2026-09-09T10:00:00+02:00</published>
    <updated>2026-09-09T10:00:00+02:00</updated>
    <category term="Diagrams"/>
    <summary type="text">TALA went open source last week. That is a good excuse to explain why every diagram we hand a client is a text file under version control, and why the ones that are not are always out of date.</summary>
  </entry>
  <entry>
    <title>Why pf</title>
    <link href="https://chenborg.com/services/infrastructure/systems-networks/why-pf/" rel="alternate" type="text/html"/>
    <id>https://chenborg.com/services/infrastructure/systems-networks/why-pf/</id>
    <published>2026-09-09T00:00:00+02:00</published>
    <updated>2026-09-09T00:00:00+02:00</updated>
    <category term="pf"/>
    <summary type="text">The full case for pf, the OpenBSD packet filter — a firewall ruleset that reads like a sentence, reviewed like code, and small enough for one person to hold in their head.</summary>
  </entry>
  <entry>
    <title>Why WireGuard</title>
    <link href="https://chenborg.com/services/infrastructure/systems-networks/why-wireguard/" rel="alternate" type="text/html"/>
    <id>https://chenborg.com/services/infrastructure/systems-networks/why-wireguard/</id>
    <published>2026-09-09T00:00:00+02:00</published>
    <updated>2026-09-09T00:00:00+02:00</updated>
    <category term="WireGuard"/>
    <summary type="text">The full case for WireGuard — a VPN small enough to have actually been audited, fast enough to forget about, and simple enough that public keys are the whole identity model.</summary>
  </entry>
  <entry>
    <title>Why Redmine</title>
    <link href="https://chenborg.com/services/saas/redmine/why-redmine/" rel="alternate" type="text/html"/>
    <id>https://chenborg.com/services/saas/redmine/why-redmine/</id>
    <published>2026-09-09T00:00:00+02:00</published>
    <updated>2026-09-09T00:00:00+02:00</updated>
    <category term="Redmine"/>
    <summary type="text">The full case for Redmine — no seat licence, your own PostgreSQL, workflows that bend to a regulated process, and twenty years of proof that it does not go away.</summary>
  </entry>
  <entry>
    <title>Why Ollama</title>
    <link href="https://chenborg.com/services/ai/ollama/why-ollama/" rel="alternate" type="text/html"/>
    <id>https://chenborg.com/services/ai/ollama/why-ollama/</id>
    <published>2026-09-09T00:00:00+02:00</published>
    <updated>2026-09-09T00:00:00+02:00</updated>
    <category term="Ollama"/>
    <summary type="text">The full case for running open-weight models locally with Ollama — jurisdiction, cost and latency — and an honest account of the capability gap you accept.</summary>
  </entry>
  <entry>
    <title>Why NixOS</title>
    <link href="https://chenborg.com/services/infrastructure/systems-networks/why-nixos/" rel="alternate" type="text/html"/>
    <id>https://chenborg.com/services/infrastructure/systems-networks/why-nixos/</id>
    <published>2026-09-09T00:00:00+02:00</published>
    <updated>2026-09-09T00:00:00+02:00</updated>
    <category term="NixOS"/>
    <summary type="text">The full case for NixOS — the whole machine as one file, staging that genuinely matches production, and a rollback that is a reboot rather than a rescue.</summary>
  </entry>
  <entry>
    <title>Why Nextcloud</title>
    <link href="https://chenborg.com/services/saas/nextcloud/why-nextcloud/" rel="alternate" type="text/html"/>
    <id>https://chenborg.com/services/saas/nextcloud/why-nextcloud/</id>
    <published>2026-09-09T00:00:00+02:00</published>
    <updated>2026-09-09T00:00:00+02:00</updated>
    <category term="Nextcloud"/>
    <summary type="text">The full case for Nextcloud — a European file, calendar and document layer that ends the transfer-impact conversation, and the honest account of what you give up.</summary>
  </entry>
  <entry>
    <title>Why Jekyll</title>
    <link href="https://chenborg.com/services/saas/jekyll/why-jekyll/" rel="alternate" type="text/html"/>
    <id>https://chenborg.com/services/saas/jekyll/why-jekyll/</id>
    <published>2026-09-09T00:00:00+02:00</published>
    <updated>2026-09-09T00:00:00+02:00</updated>
    <category term="Jekyll"/>
    <summary type="text">The full case for building company websites with Jekyll — no runtime, no database, content in Git, and HTML that will still render in 2040.</summary>
  </entry>
  <entry>
    <title>Why Emacs</title>
    <link href="https://chenborg.com/journal/why-emacs/" rel="alternate" type="text/html"/>
    <id>https://chenborg.com/journal/why-emacs/</id>
    <published>2026-09-09T00:00:00+02:00</published>
    <updated>2026-09-09T00:00:00+02:00</updated>
    <category term="Emacs"/>
    <summary type="text">The case for a forty-year-old editor as the interface to a local language model — programmable all the way down, plain text throughout, and honest about who it suits.</summary>
  </entry>
  <entry>
    <title>Your website does not need a runtime</title>
    <link href="https://chenborg.com/journal/your-website-does-not-need-a-runtime/" rel="alternate" type="text/html"/>
    <id>https://chenborg.com/journal/your-website-does-not-need-a-runtime/</id>
    <published>2026-08-19T09:00:00+02:00</published>
    <updated>2026-08-19T09:00:00+02:00</updated>
    <category term="Jekyll"/>
    <summary type="text">Every website incident we have been called to clean up had the same shape: something was running that did not need to be.</summary>
  </entry>
  <entry>
    <title>A firewall you can read out loud</title>
    <link href="https://chenborg.com/journal/a-firewall-you-can-read-out-loud/" rel="alternate" type="text/html"/>
    <id>https://chenborg.com/journal/a-firewall-you-can-read-out-loud/</id>
    <published>2026-07-02T09:00:00+02:00</published>
    <updated>2026-07-02T09:00:00+02:00</updated>
    <category term="Networks"/>
    <summary type="text">The best measure of a ruleset is whether a new engineer can read it aloud in a meeting and have everyone agree on what it does.</summary>
  </entry>
  <entry>
    <title>Where your data sleeps</title>
    <link href="https://chenborg.com/journal/where-your-data-sleeps/" rel="alternate" type="text/html"/>
    <id>https://chenborg.com/journal/where-your-data-sleeps/</id>
    <published>2026-05-21T09:00:00+02:00</published>
    <updated>2026-05-21T09:00:00+02:00</updated>
    <category term="Infrastructure"/>
    <summary type="text">Data residency is not the same as data sovereignty, and the difference is usually a clause about who can be compelled to hand over a key.</summary>
  </entry>
</feed>
