<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Daenney&#39;s blog</title>
    <link>https://logoi.dny.dev/</link>
    <description>Recent content on Daenney&#39;s blog</description>
    <generator>Hugo 0.124.1</generator>
    <language>en-gb</language>
    <lastBuildDate>Wed, 03 Dec 2025 17:03:28 +0100</lastBuildDate>
    <atom:link href="https://logoi.dny.dev/feed.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Lets update ActivityStreams to use JSON-LD expanded document form</title>
      <link>https://logoi.dny.dev/2025/12/03/activitystreams-jsonld-expanded/</link>
      <pubDate>Wed, 03 Dec 2025 00:00:00 +0000 Banana</pubDate>
      <guid>https://logoi.dny.dev/2025/12/03/activitystreams-jsonld-expanded/</guid>
      <description>ActivityStreams is the fediverse&amp;rsquo;s base data model. It&amp;rsquo;s why we have things like Actors, Objects and Activities. It models social interactions as an actor-based system. ActivityStreams is canonically exchanged in JSON-LD compacted document form, which is JSON with some special keys for the &amp;ldquo;linked data&amp;rdquo; aspect.&#xA;JSON-LD has two(-ish) forms:&#xA;Compacted document form, which looks like your typical JSON. Expanded document form, which looks more like a tree of nodes. People tend to prefer compacted form because it looks more like the JSON payloads you run every day.
      &lt;br&gt;&lt;br&gt;
      Read the full post on the blog.
      </description>
    </item>
    <item>
      <title>Running Mastodon for integration tests</title>
      <link>https://logoi.dny.dev/2025/12/01/mastodon-for-integration-tests/</link>
      <pubDate>Mon, 01 Dec 2025 00:00:00 +0000 Banana</pubDate>
      <guid>https://logoi.dny.dev/2025/12/01/mastodon-for-integration-tests/</guid>
      <description>For a personal project I&amp;rsquo;m working on, and for GoToSocial, I&amp;rsquo;ve wanted to run Mastodon locally to write integration tests against. Forgejo wants this too, to test their federation code. The problem is, you want to do that against a Mastodon instance that runs in &amp;ldquo;production&amp;rdquo; mode (i.e RAILS_ENV=production), except without all the TLS and https URL generation turned on. But in production mode, you normally can&amp;rsquo;t turn this off. This is good, and safe, and sound.
      &lt;br&gt;&lt;br&gt;
      Read the full post on the blog.
      </description>
    </item>
    <item>
      <title>A practical guide to Go&#39;s reflect package</title>
      <link>https://logoi.dny.dev/2025/10/06/pratical-guide-golang-reflect/</link>
      <pubDate>Mon, 06 Oct 2025 00:00:00 +0000 Banana</pubDate>
      <guid>https://logoi.dny.dev/2025/10/06/pratical-guide-golang-reflect/</guid>
      <description>Go&amp;rsquo;s reflect package is very powerful and very useful, but I&amp;rsquo;ve always struggled to wrap my head around it. The package comes with examples, but I&amp;rsquo;ve always felt the need of a more practical walk-through that stitches everything together.&#xA;If you haven&amp;rsquo;t read it yet, the Laws of Reflection post is very useful. But let me propose a different first law of reflection: You Will Fuck It Up. You&amp;rsquo;re knee deep inside Go at runtime, rewriting part of the program that&amp;rsquo;s executing.
      &lt;br&gt;&lt;br&gt;
      Read the full post on the blog.
      </description>
    </item>
    <item>
      <title>Self-hosting things again</title>
      <link>https://logoi.dny.dev/2025/07/09/self-hosting-things-again/</link>
      <pubDate>Wed, 09 Jul 2025 00:00:00 +0000 Banana</pubDate>
      <guid>https://logoi.dny.dev/2025/07/09/self-hosting-things-again/</guid>
      <description>It&amp;rsquo;s 2025. The world is not doing great, and as a queer person Anglosphere tech corporations are now something I have to actively consider as part of my threat model. This was already a problem for many folks in the queer community, I was just lucky enough that in my case the risk remained acceptable.&#xA;With a fascist regime installed in the US and tech corporations gleefully embracing it, depending on those corporations is no longer an option.
      &lt;br&gt;&lt;br&gt;
      Read the full post on the blog.
      </description>
    </item>
    <item>
      <title>Removing AI stories from tech news aggregators with uBlock</title>
      <link>https://logoi.dny.dev/2025/06/11/ublock-ai-tech-news/</link>
      <pubDate>Wed, 11 Jun 2025 00:00:00 +0000 Banana</pubDate>
      <guid>https://logoi.dny.dev/2025/06/11/ublock-ai-tech-news/</guid>
      <description>I like to use tech news aggregators like HN or Lobsters to find new things to read. There are often interesting things on there, and they&amp;rsquo;ve helped me discover many blogs that I end up adding to my feed reader. I avoid the comment section though, and have uBlock rules that remove them and the login links. This has helped me unlearn the habit of checking the comments doing wonders for my mental health.
      &lt;br&gt;&lt;br&gt;
      Read the full post on the blog.
      </description>
    </item>
    <item>
      <title>A low-carb, sugar-free, gluten-free cake recipe</title>
      <link>https://logoi.dny.dev/2025/06/07/cake-recipe-low-carb-sugar-free-gluten-free/</link>
      <pubDate>Sat, 07 Jun 2025 00:00:00 +0000 Banana</pubDate>
      <guid>https://logoi.dny.dev/2025/06/07/cake-recipe-low-carb-sugar-free-gluten-free/</guid>
      <description>Today, the topic isn&amp;rsquo;t tech but delicious delicious cake. Because of $reasons I need to watch my bloodsugar and keep it from spiking. I can&amp;rsquo;t inject insulin to counter spikes. This means that most bakery or store-bought sweets, pastries, ice cream etc. are off-limits for me. They&amp;rsquo;re not worth ending up in a coma. But I do like a sweet from time to time, so I&amp;rsquo;ve developed my own recipes. I&amp;rsquo;ve finally managed to nail a good cake, so I thought I&amp;rsquo;d share.
      &lt;br&gt;&lt;br&gt;
      Read the full post on the blog.
      </description>
    </item>
    <item>
      <title>Fairy: a library for building friendly CLIs in Go</title>
      <link>https://logoi.dny.dev/2025/05/04/cli-flag-fairy-magic-golang/</link>
      <pubDate>Sun, 04 May 2025 00:00:00 +0000 Banana</pubDate>
      <guid>https://logoi.dny.dev/2025/05/04/cli-flag-fairy-magic-golang/</guid>
      <description>Why did I build my own when there&amp;rsquo;s a hundred of these already? Because I don&amp;rsquo;t like how most of the others work. Fairy 🧚 only uses Go&amp;rsquo;s flag package underneath. There&amp;rsquo;s no custom flag parsing involved, but it can do some things Go&amp;rsquo;s standard library package doesn&amp;rsquo;t provide.&#xA;I quite like Go&amp;rsquo;s flag package. I don&amp;rsquo;t care that it doesn&amp;rsquo;t do GNU-style opts, that it&amp;rsquo;s not perfectly docopt etc. It fits my needs 95% of the time and unless you need a hyperscale Cloud Native CNCF approved CLI it probably is enough for just about any project.
      &lt;br&gt;&lt;br&gt;
      Read the full post on the blog.
      </description>
    </item>
    <item>
      <title>Setting up OpenTelemetry in Go</title>
      <link>https://logoi.dny.dev/2025/05/01/setup-otel-golang/</link>
      <pubDate>Thu, 01 May 2025 00:00:00 +0000 Banana</pubDate>
      <guid>https://logoi.dny.dev/2025/05/01/setup-otel-golang/</guid>
      <description>This blog post is technically incorrect. It only aims to give you an in practice correct enough understanding of using OpenTelemetry in your Go projects and how to set it up. Lets dive in.&#xA;Update 2024-05-02: Code has been updated to use the autoexport package to simplify setup a lot.&#xA;Concepts There are a few concepts we need to be aware of:&#xA;Providers. Meters and Tracers. Metric instruments and Spans. Exporters.
      &lt;br&gt;&lt;br&gt;
      Read the full post on the blog.
      </description>
    </item>
    <item>
      <title>Migrating to Codeberg</title>
      <link>https://logoi.dny.dev/2025/04/20/migrating-to-codeberg/</link>
      <pubDate>Sun, 20 Apr 2025 00:00:00 +0000 Banana</pubDate>
      <guid>https://logoi.dny.dev/2025/04/20/migrating-to-codeberg/</guid>
      <description>Github has always been a very enticing code forge. You get a lot of things for free. Code hosting, decent issue management, Gists, Pages, CI etc. Of course, all of these things are also there to make the service more sticky. They&amp;rsquo;ve moved the baseline expectations of the services a forge should provide for free so far up it&amp;rsquo;s hard for entities without VC capital or Microsoft&amp;rsquo;s war chest to provide an enticing, competing offer.
      &lt;br&gt;&lt;br&gt;
      Read the full post on the blog.
      </description>
    </item>
    <item>
      <title>Pana: a new Go library for the Fediverse</title>
      <link>https://logoi.dny.dev/2025/04/16/pana-fediverse-golang-library/</link>
      <pubDate>Wed, 16 Apr 2025 00:00:00 +0000 Banana</pubDate>
      <guid>https://logoi.dny.dev/2025/04/16/pana-fediverse-golang-library/</guid>
      <description>Getting started with building on the fediverse can be a big chore, there&amp;rsquo;s a lot to learn and handle. Pana is a new library in Go to help simplify things. It provides the buildiing blocks for handling ActivityStreams messages, the message format used between servers to exchanges actvivities and enable federation.&#xA;A picture is worth more than a thousand worth, and good examples are worth more than me trying to convince you with words or pictures.
      &lt;br&gt;&lt;br&gt;
      Read the full post on the blog.
      </description>
    </item>
    <item>
      <title>Cgo-free &#34;FFI&#34; with WASM</title>
      <link>https://logoi.dny.dev/2024/06/29/wasm-no-cgo-ffi/</link>
      <pubDate>Sat, 29 Jun 2024 00:00:00 +0000 Banana</pubDate>
      <guid>https://logoi.dny.dev/2024/06/29/wasm-no-cgo-ffi/</guid>
      <description>One of the goals we have with GoToSocial is to make self-hosting your own fediverse instance really easy. In practice this means a few things:&#xA;Providing a single static binary for easy deployment and without requiring containers Being very mindful of how much compute and memory we require No dependencies on external databases like Postgres, background job systems like Sidekiq which would require Redis, or an object store for media storage even though we do support using some of these things Though we don&amp;rsquo;t want to require an external database, we do need a database.
      &lt;br&gt;&lt;br&gt;
      Read the full post on the blog.
      </description>
    </item>
    <item>
      <title>Disabling USB or PCI Sound Devices on Linux</title>
      <link>https://logoi.dny.dev/2024/04/20/disabling-pci-usb-sound-devices-linux/</link>
      <pubDate>Sat, 20 Apr 2024 00:00:00 +0000 Banana</pubDate>
      <guid>https://logoi.dny.dev/2024/04/20/disabling-pci-usb-sound-devices-linux/</guid>
      <description>On my Linux desktop I have multiple sound devices. Typically it&amp;rsquo;s the built-in sound card, the graphics card audio output and my GoXLR outputs. I don&amp;rsquo;t ever want to use the built-in audio or have audio routed to my monitor. But the Linux desktop has this habit of sometimes switching to one of those outputs, especially when coming out of standby because the USB audio devices provided by the GoXLR disappear.
      &lt;br&gt;&lt;br&gt;
      Read the full post on the blog.
      </description>
    </item>
    <item>
      <title>Automating system actions with the GoXLR</title>
      <link>https://logoi.dny.dev/2024/04/14/automating-goxlr/</link>
      <pubDate>Sun, 14 Apr 2024 00:00:00 +0000 Banana</pubDate>
      <guid>https://logoi.dny.dev/2024/04/14/automating-goxlr/</guid>
      <description>If you happen to have a GoXLR or a GoXLR Mini, the GoXLR-Utility project that&amp;rsquo;s supported across Windows, macOS and Linux allows you to configure the device without relying on TC-Helicon&amp;rsquo;s proprietary, Windows-only, tool. The GoXLR-Utility UI resembles the GoXLR App so you should be able to switch with ease. One of the many benefits of this is that GoXLR-Utility exposes an HTTP API that lets you control the mixer and be notified of mixer state changes.
      &lt;br&gt;&lt;br&gt;
      Read the full post on the blog.
      </description>
    </item>
    <item>
      <title>GDM and Colemak</title>
      <link>https://logoi.dny.dev/2023/10/21/gdm-and-colemak/</link>
      <pubDate>Sat, 21 Oct 2023 00:00:00 +0000 Banana</pubDate>
      <guid>https://logoi.dny.dev/2023/10/21/gdm-and-colemak/</guid>
      <description>A little annoyance I always run into when configuring a new laptop is getting Gnome Display Manager to use Colemak on the login screen. For some reason, it&amp;rsquo;s impossible to configure the GDM keyboard layout unless there&amp;rsquo;s at least 2 users on the system. Otherwise Gnome Settings refuses to show the UI for it. I&amp;rsquo;m not sure why this weirdly hostile feature towards folks with alternative keyboard layouts on a single-user system exists in Gnome, but here we are.
      &lt;br&gt;&lt;br&gt;
      Read the full post on the blog.
      </description>
    </item>
    <item>
      <title>BeyondCorp @ Home: A complete solution with Kanidm</title>
      <link>https://logoi.dny.dev/2023/09/26/beyondcorp-at-home-kanidm-oauth-radius-pam-ssh/</link>
      <pubDate>Tue, 26 Sep 2023 00:00:00 +0000 Banana</pubDate>
      <guid>https://logoi.dny.dev/2023/09/26/beyondcorp-at-home-kanidm-oauth-radius-pam-ssh/</guid>
      <description>For a long time, I&amp;rsquo;ve had a setup with Keycloak as the IDM. But Keycloak is heavy. It&amp;rsquo;ll OOM with less than 2G of RAM and needs a database too. It also has features I don&amp;rsquo;t care for, like realms. As I&amp;rsquo;ve been slowly moving to self-host a few more things, including outside of my home, I want to have a way to centralise authentication for those services too. I want to keep the IDM for the home lab separate from my cloud things.
      &lt;br&gt;&lt;br&gt;
      Read the full post on the blog.
      </description>
    </item>
    <item>
      <title>HTTP request timeouts in Go</title>
      <link>https://logoi.dny.dev/2023/08/07/http-request-timeouts-golang/</link>
      <pubDate>Mon, 07 Aug 2023 00:00:00 +0000 Banana</pubDate>
      <guid>https://logoi.dny.dev/2023/08/07/http-request-timeouts-golang/</guid>
      <description>Every now and then I find myself needing to remember how HTTP request timeouts work in Go, and how to configure them. This has changed over time as http.Client gained the Timeout option, the various Timeout options you can set on the http.Transport and its underlying net.Dialer, and eventually the introduction of the context package in Go 1.7 that allows us to set a timeout/deadline on the request which in turn lead to the deprecation of http.
      &lt;br&gt;&lt;br&gt;
      Read the full post on the blog.
      </description>
    </item>
    <item>
      <title>Backing Up GoToSocial</title>
      <link>https://logoi.dny.dev/2023/07/06/backing-up-gotosocial/</link>
      <pubDate>Thu, 06 Jul 2023 00:00:00 +0000 Banana</pubDate>
      <guid>https://logoi.dny.dev/2023/07/06/backing-up-gotosocial/</guid>
      <description>As part of setting up backups for my own GoToSocial instance, I&amp;rsquo;ve contributed some additions to the GoToSocial CLI and its backup documentation. This will hopefully make setting up backups easier for others too. This post goes through the why of setting up backups for this in the first place and looks at two pending changes to GoToSocial to make backups easier.&#xA;So why backup your Fediverse instance? Because of the signing keys that are stored in your database.
      &lt;br&gt;&lt;br&gt;
      Read the full post on the blog.
      </description>
    </item>
    <item>
      <title>Dealing with config updates</title>
      <link>https://logoi.dny.dev/2023/03/05/dealing-with-config-updates/</link>
      <pubDate>Sun, 05 Mar 2023 00:00:00 +0000 Banana</pubDate>
      <guid>https://logoi.dny.dev/2023/03/05/dealing-with-config-updates/</guid>
      <description>This is a silly one, but I always forget about this until I need it and then stumble across it again.&#xA;The scenario: you&amp;rsquo;ve just updated a piece of software and it comes with a new sample configuration. Being the good admin that you are of course you want to your config to reflect it, you&amp;rsquo;re not a monster. But you want to keep the settings you&amp;rsquo;ve tweaked.&#xA;I always end up with a mess of patch files trying to do things, but all you really need is your favourite editor.
      &lt;br&gt;&lt;br&gt;
      Read the full post on the blog.
      </description>
    </item>
    <item>
      <title>Baby&#39;s first tracing in GoToSocial</title>
      <link>https://logoi.dny.dev/2023/02/20/bady-tracing-in-gotosocial/</link>
      <pubDate>Mon, 20 Feb 2023 00:00:00 +0000 Banana</pubDate>
      <guid>https://logoi.dny.dev/2023/02/20/bady-tracing-in-gotosocial/</guid>
      <description>As I got into the ActivityPub side of the Fediverse I ended up hosting my own instance. Fediverse after all. But I wanted something I could easily operate and run which meant Mastodon was out and most Elixir-based solutions aren&amp;rsquo;t entirely simple to deploy and manage. Thankfully I stumbled across GoToSocial which is written in Go and has a fabulous community to boot.&#xA;GoToSocial&amp;rsquo;s niche is small or single-user instances running on low-powered devices, like single-board computers or old laptops repurposed as home servers.
      &lt;br&gt;&lt;br&gt;
      Read the full post on the blog.
      </description>
    </item>
    <item>
      <title>Pulumi and the mystery of the integer ID</title>
      <link>https://logoi.dny.dev/2022/12/31/pulumi-and-the-mystery-of-the-integer-id/</link>
      <pubDate>Sat, 31 Dec 2022 00:00:00 +0000 Banana</pubDate>
      <guid>https://logoi.dny.dev/2022/12/31/pulumi-and-the-mystery-of-the-integer-id/</guid>
      <description>In Pulumi resources have inputs and outputs. Inputs are fairly obvious but Outputs have some interesting characteristics that are worth taking a closer look at. Outputs are effectively promises to resolve to a value once a resource is created. Outputs can in turn be used as inputs to a different resource which has the nice side-effect of establishing ordering/dependencies.&#xA;When using Pulumi with Go you&amp;rsquo;ll see that resource structs have a $TypeOutput for most of their fields, like StringOutput.
      &lt;br&gt;&lt;br&gt;
      Read the full post on the blog.
      </description>
    </item>
    <item>
      <title>Pulumi Component Resources</title>
      <link>https://logoi.dny.dev/2022/12/22/pulumi-component-resources/</link>
      <pubDate>Thu, 22 Dec 2022 00:00:00 +0000 Banana</pubDate>
      <guid>https://logoi.dny.dev/2022/12/22/pulumi-component-resources/</guid>
      <description>A component resource is essentially a bundling of a number of resources. For example, when I want to provision a server I also need to assign it IPv4 and IPv6 addresses. I can do this independently, or I can create a custom Server component that does these things for me. This lets me encapsulate the way I work with infrastructure in my code and I can test the behaviour of a component.
      &lt;br&gt;&lt;br&gt;
      Read the full post on the blog.
      </description>
    </item>
    <item>
      <title>Pulumi is a pleasant surprise</title>
      <link>https://logoi.dny.dev/2022/12/20/pulumi-pleasant-surprise/</link>
      <pubDate>Tue, 20 Dec 2022 00:00:00 +0000 Banana</pubDate>
      <guid>https://logoi.dny.dev/2022/12/20/pulumi-pleasant-surprise/</guid>
      <description>For a few years now I&amp;rsquo;ve had my eyes on Pulumi. Every time I looked at it I came away with a sentiment of &amp;ldquo;hmm, that seems nice&amp;rdquo;. I never got around to using it though and nobody around me had either so it was hard to get a sense of whether it would live up to my hopes. I recently decided to redo some of my personal infrastructure and since Pulumi has Hetzner Cloud support I decided to give it a go and see what would happen.
      &lt;br&gt;&lt;br&gt;
      Read the full post on the blog.
      </description>
    </item>
    <item>
      <title>Tracking electricity prices in Sweden with Prometheus and Grafana</title>
      <link>https://logoi.dny.dev/2022/12/13/sweden-electricity-prometheus-grafana/</link>
      <pubDate>Tue, 13 Dec 2022 00:00:00 +0000 Banana</pubDate>
      <guid>https://logoi.dny.dev/2022/12/13/sweden-electricity-prometheus-grafana/</guid>
      <description>The electricity spot prices in Sweden (i.e the base price when you don&amp;rsquo;t have &amp;ldquo;fast pris&amp;rdquo;) are available from Vattenfal. On top of that price then come the transport costs your network operator charges, any taxes and 25% VAT. Yes. 25%. Yes on top of the taxes. Electricity is a luxury good. Apparently. These prices vary per region and the further south you go (the further away you are from the hydro plants) the more expensive it gets.
      &lt;br&gt;&lt;br&gt;
      Read the full post on the blog.
      </description>
    </item>
    <item>
      <title>Who Hosts the Fediverse</title>
      <link>https://logoi.dny.dev/2022/12/10/who-hosts-the-fediverse/</link>
      <pubDate>Sat, 10 Dec 2022 00:00:00 +0000 Banana</pubDate>
      <guid>https://logoi.dny.dev/2022/12/10/who-hosts-the-fediverse/</guid>
      <description>Thinking about the Fediverse a question that popped into my head was just how centralised the Fediverse is? By centralised I don&amp;rsquo;t mean the fact that mastodon.social is a huge instance, but centralised in the sense of which ISPs are hosting instances across the Fediverse.&#xA;Mapping the Fediverse to Autonomous Systems The way this is achieved is technically speaking very simple:&#xA;Query instances.social API for all instances it knows about Lookup the IP address(es) of each instance through DNS Use the MaxMind ASN database to find the AS number for the associated IP One problem is that this results in over 14k instances and for each one we do an A and AAAA query.
      &lt;br&gt;&lt;br&gt;
      Read the full post on the blog.
      </description>
    </item>
    <item>
      <title>Implementing SSRF protections in Go</title>
      <link>https://logoi.dny.dev/2022/12/02/implementing-ssrf-protections-in-golang/</link>
      <pubDate>Fri, 02 Dec 2022 00:00:00 +0000 Banana</pubDate>
      <guid>https://logoi.dny.dev/2022/12/02/implementing-ssrf-protections-in-golang/</guid>
      <description>Server-Side Request Forgery is a web security vulnerability in which we attempt to trick the server to access resources that we, the client who did the request, would normally not be able to access. In practice this usually means trying to access other resources within the network the server is running in or other services on the same host.&#xA;This usually happens when there&amp;rsquo;s a way for an attacker to control the URL a server is going to access.
      &lt;br&gt;&lt;br&gt;
      Read the full post on the blog.
      </description>
    </item>
    <item>
      <title>Actors, Activities and Objects in ActivityPub</title>
      <link>https://logoi.dny.dev/2022/11/18/activitypub-actor-activity-object/</link>
      <pubDate>Fri, 18 Nov 2022 00:00:00 +0000 Banana</pubDate>
      <guid>https://logoi.dny.dev/2022/11/18/activitypub-actor-activity-object/</guid>
      <description>In this series of posts we&amp;rsquo;re going to explore ActivityPub, the protocol that powers microblogging across the Fediverse.&#xA;This post is going to focus on how ActivityPub models microblogging. We&amp;rsquo;re going to dive into the three main parts: Actors, Activities and Objects. We&amp;rsquo;ll also take a look at how we use these to achieve microblogging in practice.&#xA;Actor An Actor in ActivityPub is meant to represent someone or something performing an activity.
      &lt;br&gt;&lt;br&gt;
      Read the full post on the blog.
      </description>
    </item>
    <item>
      <title>A look at ActivityPub&#39;s foundation</title>
      <link>https://logoi.dny.dev/2022/11/14/a-look-at-activitypubs-foundation/</link>
      <pubDate>Mon, 14 Nov 2022 00:00:00 +0000 Banana</pubDate>
      <guid>https://logoi.dny.dev/2022/11/14/a-look-at-activitypubs-foundation/</guid>
      <description>In this series of posts we&amp;rsquo;re going to explore ActivityPub, the protocol that powers microblogging across the Fediverse.&#xA;This post is going to focus on the technologies ActivityPub is built upon. It doesn&amp;rsquo;t dive into how ActivityPub itself is used to provide interoperable microblogging. That will be the topic of a future entry.&#xA;⚠️ Caveat lector: This post has an air of mild annoyance 😑. If you don&amp;rsquo;t enjoy reading this type of commentary, I suggest you stop here.
      &lt;br&gt;&lt;br&gt;
      Read the full post on the blog.
      </description>
    </item>
    <item>
      <title>Replacing Avahi: Exploring DNS-SD (part 2)</title>
      <link>https://logoi.dny.dev/2021/11/14/replacing-avahi-exploring-dnssd/</link>
      <pubDate>Sun, 14 Nov 2021 00:00:00 +0000 Banana</pubDate>
      <guid>https://logoi.dny.dev/2021/11/14/replacing-avahi-exploring-dnssd/</guid>
      <description>I&amp;rsquo;m renaming the series to &amp;ldquo;Replacing Avahi&amp;rdquo; because after a bit of reflection &amp;ldquo;getting rid of&amp;rdquo; sounds a lot harsher than I ever intended.&#xA;In part 1 we took a quick look at what DNS-SD is and why we use Avahi for it on Linux. We then came up with a plan on how to replace it by re-implementing its D-Bus API ourselves by in turn leveraging systemd-resolved&amp;rsquo;s D-Bus API.
      &lt;br&gt;&lt;br&gt;
      Read the full post on the blog.
      </description>
    </item>
    <item>
      <title>Getting rid of Avahi (part 1)</title>
      <link>https://logoi.dny.dev/2021/11/07/getting-rid-of-avahi-part-1/</link>
      <pubDate>Sun, 07 Nov 2021 00:00:00 +0000 Banana</pubDate>
      <guid>https://logoi.dny.dev/2021/11/07/getting-rid-of-avahi-part-1/</guid>
      <description>Avahi is a daemon you can run on your system for the purpose of discovering or announcing services using DNS-SD. DNS-SD defines how to perform service discovery using DNS SRV and TXT records. Though it can use unicast DNS, its most typical usage is using multicast DNS over zeroconf, i.e link local IPv4/6. If you&amp;rsquo;ve heard of Apple Bonjour, this is it.&#xA;For end-user systems, being able to discover devices in a network using DNS-SD is incredibly helpful.
      &lt;br&gt;&lt;br&gt;
      Read the full post on the blog.
      </description>
    </item>
    <item>
      <title>systemd and depending on encrypted filesystems</title>
      <link>https://logoi.dny.dev/2021/01/11/systemd-encrypted-filesystems/</link>
      <pubDate>Mon, 11 Jan 2021 00:00:00 +0000 Banana</pubDate>
      <guid>https://logoi.dny.dev/2021/01/11/systemd-encrypted-filesystems/</guid>
      <description>When running servers I want to encrypt the data stored on them. The problem you then pretty quickly run into is that it&amp;rsquo;s hard to actually boot with an encrypted root. I&amp;rsquo;ve solved this problem in the past by having a tinysshd in my initramfs which prompts me for a password to unlock the volumes. Though this works, it&amp;rsquo;s annoying in that the server isn&amp;rsquo;t able to boot at all, causing any additional monitoring I have to not work.
      &lt;br&gt;&lt;br&gt;
      Read the full post on the blog.
      </description>
    </item>
    <item>
      <title>Working remotely</title>
      <link>https://logoi.dny.dev/2020/03/22/working-remotely/</link>
      <pubDate>Sun, 22 Mar 2020 00:00:00 +0000 Banana</pubDate>
      <guid>https://logoi.dny.dev/2020/03/22/working-remotely/</guid>
      <description>A lot has been written about working remotely. In light of the current COVID-19 pandemic, I decided to write down my own thoughts on this topic and the processes and tools I&amp;rsquo;ve developed to help me be effective at working remotely.&#xA;I moved to being full-time remote in February of 2019. Before that every job I&amp;rsquo;ve had was office bound. Though I worked remotely every now and then, especially when things like the flu hit, I&amp;rsquo;d never worked from home more than a few consecutive days and never in any permanent capacity.
      &lt;br&gt;&lt;br&gt;
      Read the full post on the blog.
      </description>
    </item>
    <item>
      <title>BeyondCorp @ Home: OpenID Connect Provider with Dex</title>
      <link>https://logoi.dny.dev/2019/10/06/beyondcorp-at-home-dex-oidc/</link>
      <pubDate>Sun, 06 Oct 2019 00:00:00 +0000 Banana</pubDate>
      <guid>https://logoi.dny.dev/2019/10/06/beyondcorp-at-home-dex-oidc/</guid>
      <description>In a previous post I showed you how to setup Keycloak to provide you with OpenID Connect and SAML capabilities. The problem with Keycloak is is that&amp;rsquo;s it&amp;rsquo;s a pretty big beast, whereas most of the time we don&amp;rsquo;t need all the functionality. It&amp;rsquo;s also tricky to run in a highly available fashion and is annoyingly slow to start up.&#xA;In this post we&amp;rsquo;ll drop Keycloak in favour of Dex, a small OpenID Connect Provider that supports a number of backends including LDAP.
      &lt;br&gt;&lt;br&gt;
      Read the full post on the blog.
      </description>
    </item>
    <item>
      <title>BeyondCorp @ Home: Authentication and authorization proxy with OpenResty</title>
      <link>https://logoi.dny.dev/2019/10/05/beyondcorp-at-home-authn-authz-openresty/</link>
      <pubDate>Sat, 05 Oct 2019 00:00:00 +0000 Banana</pubDate>
      <guid>https://logoi.dny.dev/2019/10/05/beyondcorp-at-home-authn-authz-openresty/</guid>
      <description>In a previous post I showed you how to set up Gatekeeper as a proxy to enfroce authorization on requests. The problem with Gatekeeper is that it required a lot of additional configuration, an additional proxy hop and is a separate component.&#xA;What this post will do instead is use the OpenResty build of nginx with the OIDC plugin to avoid all of that. This brings the complexity back down to just running nginx with it acting as a Relaying Party to do authenticaiton and provide authorization information to backends.
      &lt;br&gt;&lt;br&gt;
      Read the full post on the blog.
      </description>
    </item>
    <item>
      <title>Arch Linux and the HP Envy x360</title>
      <link>https://logoi.dny.dev/2019/06/08/arch-linux-hp-envy-x360-13-ag0xxxx/</link>
      <pubDate>Sat, 08 Jun 2019 00:00:00 +0000 Banana</pubDate>
      <guid>https://logoi.dny.dev/2019/06/08/arch-linux-hp-envy-x360-13-ag0xxxx/</guid>
      <description>Update 2019-06-09: Performing BIOS updates I recently decided to get myself a new laptop. Though work provides me with one, I make a point out of never using it for personal use. It can get a bit complicated around intellectual property laws. I&amp;rsquo;m also perfectly fine with my employer enforcing certain policies on their device that I just don&amp;rsquo;t want for my personal devices.&#xA;For the device itself I decided I wanted a 13&amp;quot; model, with an AMD Ryzen CPU and Radeon graphics.
      &lt;br&gt;&lt;br&gt;
      Read the full post on the blog.
      </description>
    </item>
    <item>
      <title>Emulating a Philips Hue bridge</title>
      <link>https://logoi.dny.dev/2019/04/09/emulating-philips-hue-bridge/</link>
      <pubDate>Tue, 09 Apr 2019 00:00:00 +0000 Banana</pubDate>
      <guid>https://logoi.dny.dev/2019/04/09/emulating-philips-hue-bridge/</guid>
      <description>As part of my home automation I wanted to emulate a Philips Hue bridge. The reason for that is that a lot of things provide out-of-the-box integration with Philips Hue. Aside from that, there&amp;rsquo;s a ton of apps and other cool things in the Hue ecosystem I wanted to unlock.&#xA;However, we use the IKEA Trådfri system at home, even though we do have a first generation Philips Hue bridge. The reason for switching to the IKEA one was:
      &lt;br&gt;&lt;br&gt;
      Read the full post on the blog.
      </description>
    </item>
    <item>
      <title>Home Automation</title>
      <link>https://logoi.dny.dev/2019/04/07/home-automation/</link>
      <pubDate>Sun, 07 Apr 2019 00:00:00 +0000 Banana</pubDate>
      <guid>https://logoi.dny.dev/2019/04/07/home-automation/</guid>
      <description>I&amp;rsquo;m addicted to home automation. There. Said it. But it&amp;rsquo;s just such a tremendous amount of fun to play with. I&amp;rsquo;m pretty sure it&amp;rsquo;s the SRE in me. Why do anything by hand when you can have computers do things for you? Why turn on the lights when you get home when it can happen automatically? Turn on the lights when you enter the bathroom? Barbaric! Turn them off? I&amp;rsquo;ve git better things to do!
      &lt;br&gt;&lt;br&gt;
      Read the full post on the blog.
      </description>
    </item>
    <item>
      <title>BeyondCorp @ Home: Authorization</title>
      <link>https://logoi.dny.dev/2018/10/30/beyondcorp-at-home-authz/</link>
      <pubDate>Tue, 30 Oct 2018 00:00:00 +0000 Banana</pubDate>
      <guid>https://logoi.dny.dev/2018/10/30/beyondcorp-at-home-authz/</guid>
      <description>NOTE: A much simpler solution is describe in BeyondCorp @ Home: Authentication and authorization proxy with OpenResty&#xA;In a previous post I showed you how to set up a &amp;ldquo;Lite&amp;rdquo; version of a BeyondCorp style access layer for a home or startup environment. The reason I called it lite is because though it does do full authentication, it didn&amp;rsquo;t have separate controls for authorization. Meaning if you could authenticate you were authorized, I couldn&amp;rsquo;t specify that for certain endpoints you have to be part of a specific group or be granted a certain role before you get access.
      &lt;br&gt;&lt;br&gt;
      Read the full post on the blog.
      </description>
    </item>
    <item>
      <title>BeyondCorp @ Home</title>
      <link>https://logoi.dny.dev/2018/10/27/beyondcorp-at-home/</link>
      <pubDate>Sat, 27 Oct 2018 17:00:00 +0000 Banana</pubDate>
      <guid>https://logoi.dny.dev/2018/10/27/beyondcorp-at-home/</guid>
      <description>Update 2019-10-06: If you don&amp;rsquo;t need SAML, consider swapping out Keycloak for Dex instead. You can read all about that in this follow-up post.&#xA;BeyondCorp is a different approach to securing access to networked applications and services.&#xA;Unlike the traditional perimeter security model, BeyondCorp dispels the notion of network segmentation as the primary mechanism for protecting sensitive resources. Instead, all applications are deployed to the public Internet, accessible through a user and device-centric authentication and authorization workflow.
      &lt;br&gt;&lt;br&gt;
      Read the full post on the blog.
      </description>
    </item>
    <item>
      <title>Directory Services 101: Securing your LDAP server</title>
      <link>https://logoi.dny.dev/2018/10/27/ldap-secure/</link>
      <pubDate>Sat, 27 Oct 2018 10:00:00 +0000 Banana</pubDate>
      <guid>https://logoi.dny.dev/2018/10/27/ldap-secure/</guid>
      <description>This post is part of a series on directory services. Current available installments are:&#xA;Introduction Terminology Basic concepts Designing the DIT Setting up an LDAP server Securing your LDAP server Writing and testing ACLs Now that we have a directory service up an running it&amp;rsquo;s important we talk a bit about some security aspects.&#xA;The configuration that was generated sets up the LDAP server in such a way that anonymous access is not allowed.
      &lt;br&gt;&lt;br&gt;
      Read the full post on the blog.
      </description>
    </item>
    <item>
      <title>Directory Services 101: Setting up an LDAP server</title>
      <link>https://logoi.dny.dev/2018/10/27/ldap-server-setup/</link>
      <pubDate>Sat, 27 Oct 2018 00:00:00 +0000 Banana</pubDate>
      <guid>https://logoi.dny.dev/2018/10/27/ldap-server-setup/</guid>
      <description>This post is part of a series on directory services. Current available installments are:&#xA;Introduction Terminology Basic concepts Designing the DIT Setting up an LDAP server Securing your LDAP server Writing and testing ACLs I consider setting up a Directory Service a pretty big pain in the ass, especially OpenLDAP. Microsoft fares much better with Active Directory which is also much more easily configured for folks less familiar with directory services in general.
      &lt;br&gt;&lt;br&gt;
      Read the full post on the blog.
      </description>
    </item>
    <item>
      <title>Directory Services 101: Writing and testing ACLs</title>
      <link>https://logoi.dny.dev/2018/10/27/ldap-writing-testing-acls/</link>
      <pubDate>Sat, 27 Oct 2018 15:00:00 +0000 Banana</pubDate>
      <guid>https://logoi.dny.dev/2018/10/27/ldap-writing-testing-acls/</guid>
      <description>This post is part of a series on directory services. Current available installments are:&#xA;Introduction Terminology Basic concepts Designing the DIT Setting up an LDAP server Securing your LDAP server Writing and testing ACLs ACLs, access control lists, are an important aspect of running a directory service. ACLs are how you control who can access which parts of the DIT and what things they can do. You can limit certain things like which attributes one can read or write.
      &lt;br&gt;&lt;br&gt;
      Read the full post on the blog.
      </description>
    </item>
    <item>
      <title>Directory Services 101: Designing the DIT</title>
      <link>https://logoi.dny.dev/2018/10/26/ldap-designing-dit/</link>
      <pubDate>Fri, 26 Oct 2018 00:00:00 +0000 Banana</pubDate>
      <guid>https://logoi.dny.dev/2018/10/26/ldap-designing-dit/</guid>
      <description>This post is part of a series on directory services. Current available installments are:&#xA;Introduction Terminology Basic concepts Designing the DIT Setting up an LDAP server Securing your LDAP server Writing and testing ACLs I apologise for the long delay between posts. Life took over for a while and I never got around to writing the rest of it.&#xA;Sitting down and thinking a bit about the DIT upfront can save you endless hours of furstration later on.
      &lt;br&gt;&lt;br&gt;
      Read the full post on the blog.
      </description>
    </item>
    <item>
      <title>Setting up Prometheus Alertmanager</title>
      <link>https://logoi.dny.dev/2018/04/21/setting-up-alertmanager/</link>
      <pubDate>Sat, 21 Apr 2018 00:00:00 +0000 Banana</pubDate>
      <guid>https://logoi.dny.dev/2018/04/21/setting-up-alertmanager/</guid>
      <description>I have a pretty standard Prometheus, bunch of exporters and Grafana setup at home. This is mostly used to monitor different aspects of my house, like the exporter I have for power usage. However, while trying to figure out the cause of a node exporter crash I found myself in need of an alerting system, so that it could tell me when the node exporter crashed instead of me just checking on a daily basis to see if it had.
      &lt;br&gt;&lt;br&gt;
      Read the full post on the blog.
      </description>
    </item>
    <item>
      <title>Arch Linux and firmware/BIOS updates</title>
      <link>https://logoi.dny.dev/2018/04/07/arch-linux-firmware-updates/</link>
      <pubDate>Sat, 07 Apr 2018 00:00:00 +0000 Banana</pubDate>
      <guid>https://logoi.dny.dev/2018/04/07/arch-linux-firmware-updates/</guid>
      <description>One area Linux has made quite a lot of progress in is the ability for people to get firmware and BIOS updates for their devices. This used to be a massive PITA but thanks largely to the Linux Vendor Firmware Service and its associated tooling (fwupd, fwupdmgr) this has become a lot simpler. Quite a few vendors support this nowadays and deliver firmware and BIOS updates through LVFS. Most of this is thanks to @hughsie so if you run into him, say thank you or offer him a drink!
      &lt;br&gt;&lt;br&gt;
      Read the full post on the blog.
      </description>
    </item>
    <item>
      <title>Thunderbolt security modes and Linux</title>
      <link>https://logoi.dny.dev/2017/11/16/linux-thunberbolt-security/</link>
      <pubDate>Thu, 16 Nov 2017 00:00:00 +0000 Banana</pubDate>
      <guid>https://logoi.dny.dev/2017/11/16/linux-thunberbolt-security/</guid>
      <description>With my XPS 13 up and running I ran into some issues with the Dell WD15 (USB 3) dock. It mainly caused my display manager to crash whenever I would plug it in with (with my external screen attached), except after a fresh boot. This is of course wildely unhelpful but a colleague told me many folks had issues with the USB 3 version of the dock and to get a TB16 (thunderbolt) instead.
      &lt;br&gt;&lt;br&gt;
      Read the full post on the blog.
      </description>
    </item>
    <item>
      <title>Arch Linux and the XPS 13 9360</title>
      <link>https://logoi.dny.dev/2017/11/11/arch-linux-xps-13-9360/</link>
      <pubDate>Sat, 11 Nov 2017 00:00:00 +0000 Banana</pubDate>
      <guid>https://logoi.dny.dev/2017/11/11/arch-linux-xps-13-9360/</guid>
      <description>After about 3 years it was time to refresh my hardware. Though I&amp;rsquo;ve long used MacBook Pro&amp;rsquo;s as my daily drivers the new MBP with touchbar wasn&amp;rsquo;t getting me excited and the new keyboard feels downright awful to me. So, I decided this was going to be the year of the Linux Desktop and I&amp;rsquo;ve switched to a Dell XPS 13 (9360, Kaby Lake) Developer Edition (comes pre-loaded with Ubuntu).
      &lt;br&gt;&lt;br&gt;
      Read the full post on the blog.
      </description>
    </item>
    <item>
      <title>Go&#39;s zero values and (de)serialising</title>
      <link>https://logoi.dny.dev/2017/08/27/go-zero-values-serialising-deserialising/</link>
      <pubDate>Sun, 27 Aug 2017 00:00:00 +0000 Banana</pubDate>
      <guid>https://logoi.dny.dev/2017/08/27/go-zero-values-serialising-deserialising/</guid>
      <description>As you might&amp;rsquo;ve noticed from other blog post entries I&amp;rsquo;m suddenly all into directory services. This happens b/c that&amp;rsquo;s what I&amp;rsquo;m currently working on. As such I find myself needing to manipulate data in a DIT quite a bit and writing ldif&amp;rsquo;s by hand is not my idea of fun. Instead I set out to create a small library that would essentially allow me to parse the result of LDAP search result entries into a Go struct and transform those back into add or modify operations.
      &lt;br&gt;&lt;br&gt;
      Read the full post on the blog.
      </description>
    </item>
    <item>
      <title>Directory Services 101: The basics</title>
      <link>https://logoi.dny.dev/2017/08/26/ldap-basics/</link>
      <pubDate>Sat, 26 Aug 2017 00:00:00 +0000 Banana</pubDate>
      <guid>https://logoi.dny.dev/2017/08/26/ldap-basics/</guid>
      <description>This post is part of a series on directory services. Current available installments are:&#xA;Introduction Terminology Basic concepts Designing the DIT Setting up an LDAP server Securing your LDAP server Writing and testing ACLs Directory Services are fundamentally pretty simple. All information they contain is stored in a hierarchical tree structure, called the DIT. Within the DIT entries can be nested into or beneath each other, creating this tree-like structure.
      &lt;br&gt;&lt;br&gt;
      Read the full post on the blog.
      </description>
    </item>
    <item>
      <title>Directory Services 101: Introduction</title>
      <link>https://logoi.dny.dev/2017/07/02/ldap-101/</link>
      <pubDate>Sun, 02 Jul 2017 00:00:00 +0000 Banana</pubDate>
      <guid>https://logoi.dny.dev/2017/07/02/ldap-101/</guid>
      <description>In this series of posts I want to talk about directory services. The directory allow you to model things like people, computers, groups and their relationships in a central database. This service can then be used for authenticating users, managing group memberships and a whole lot more.&#xA;In many small environments people avoid the perceived complexity of directory services over manually managing and provisioning groups and users in systems. Though this can work really well, even on a small scale this can get annoying.
      &lt;br&gt;&lt;br&gt;
      Read the full post on the blog.
      </description>
    </item>
    <item>
      <title>Directory Services 101: Terminology</title>
      <link>https://logoi.dny.dev/2017/07/02/ldap-terminology/</link>
      <pubDate>Sun, 02 Jul 2017 10:00:00 +0000 Banana</pubDate>
      <guid>https://logoi.dny.dev/2017/07/02/ldap-terminology/</guid>
      <description>This post is part of a series on directory services. Current available installments are:&#xA;Introduction Terminology Basic concepts Designing the DIT Setting up an LDAP server Securing your LDAP server Writing and testing ACLs Directory services come with a lot of terminology and part of that lingo is what makes things difficult to understand to someone who hasn&amp;rsquo;t heard any of it before.&#xA;Below is a common list of terms you might run into in documentation and the rest of these posts and hopefully a simple enough explanation of what they mean.
      &lt;br&gt;&lt;br&gt;
      Read the full post on the blog.
      </description>
    </item>
    <item>
      <title>Monitoring my WiFi access point with Prometheus</title>
      <link>https://logoi.dny.dev/2017/04/22/monitoring-wifi-with-prometheus/</link>
      <pubDate>Sat, 22 Apr 2017 00:00:00 +0000 Banana</pubDate>
      <guid>https://logoi.dny.dev/2017/04/22/monitoring-wifi-with-prometheus/</guid>
      <description>My home WiFi router is an ASUS RT-AC66U. It&amp;rsquo;s a great device with a tolerable manufacturer provided UI and quite a lot of advanced features. Though it&amp;rsquo;s marketed as a WiFi router I use it as a WiFi access point and switch, it doesn&amp;rsquo;t route. I have a Linux box that does that.&#xA;Since a lot of my devices are wireless a lot of my traffic flows through my WiFi access point.
      &lt;br&gt;&lt;br&gt;
      Read the full post on the blog.
      </description>
    </item>
    <item>
      <title>GeoIP based filtering with iptables</title>
      <link>https://logoi.dny.dev/2017/01/07/geoip-filtering-iptables/</link>
      <pubDate>Sat, 07 Jan 2017 00:00:00 +0000 Banana</pubDate>
      <guid>https://logoi.dny.dev/2017/01/07/geoip-filtering-iptables/</guid>
      <description>One of the issues I run into when running a server, at home or anywhere else, is the crazy amount of random attempts at SSH logins. My SSH configuration is strict enough that most of these attempts just die on the key exchange, they never even get past the handshake. Then there&amp;rsquo;s fail2ban ensuring you get temporarily blocked if you&amp;rsquo;re obviously trying to brute force anything.&#xA;Looking at the auth.log a lot of these attempts stem from Russia, China, various other parts of Asia, Africa and South America.
      &lt;br&gt;&lt;br&gt;
      Read the full post on the blog.
      </description>
    </item>
    <item>
      <title>Releasing sixrd</title>
      <link>https://logoi.dny.dev/2016/11/21/releasing-sixrd/</link>
      <pubDate>Mon, 21 Nov 2016 00:00:00 +0000 Banana</pubDate>
      <guid>https://logoi.dny.dev/2016/11/21/releasing-sixrd/</guid>
      <description>My ISP (Telia) doesn&amp;rsquo;t do native IPv6 yet (like most ISPs unfortunately). However, they do support something called IPv6 Rapid Deployment, also known as 6rd. What it does is fairly simply, it encodes in the information you get from your ISP during a DHCPv4 chat the information needed to set up a 6to4 tunnel with an endpoint provided by your ISP. Getting native v6 would be the best but this is probably the closest I&amp;rsquo;m going to get in a while.
      &lt;br&gt;&lt;br&gt;
      Read the full post on the blog.
      </description>
    </item>
    <item>
      <title>My home monitoring setup</title>
      <link>https://logoi.dny.dev/2016/10/23/monitoring/</link>
      <pubDate>Sun, 23 Oct 2016 00:00:00 +0000 Banana</pubDate>
      <guid>https://logoi.dny.dev/2016/10/23/monitoring/</guid>
      <description>Over the past few months I&amp;rsquo;ve started to reassemble a home server. I managed to get a great server board with 2 Xeon E5&amp;rsquo;s and 128GB of ECC RAM (b/c why not?) and spent Saturday breaking in the hard drives, setting everything up to be nice and encrypted and so on.&#xA;One of the things I like to have at home is a decent monitoring system. I&amp;rsquo;ve toyed with Prometheus before but never really used it.
      &lt;br&gt;&lt;br&gt;
      Read the full post on the blog.
      </description>
    </item>
    <item>
      <title>Goodbye, Puppet</title>
      <link>https://logoi.dny.dev/2016/10/17/goodbye-puppet/</link>
      <pubDate>Mon, 17 Oct 2016 00:00:00 +0000 Banana</pubDate>
      <guid>https://logoi.dny.dev/2016/10/17/goodbye-puppet/</guid>
      <description>This has been a hard blog post to write, but to me it feels like it&amp;rsquo;s been a long time coming.&#xA;For the better part of the past 5 years my job and open source contributions have revolved a lot around Puppet. I&amp;rsquo;ve been a member of the community for a long time, contributing to a range of different projects and giving a variety of talks at associated events like Puppet Camps, Configuration Management Camp and PuppetConf.
      &lt;br&gt;&lt;br&gt;
      Read the full post on the blog.
      </description>
    </item>
    <item>
      <title>The right tools for the job</title>
      <link>https://logoi.dny.dev/2016/08/07/tools-for-the-job/</link>
      <pubDate>Sun, 07 Aug 2016 00:00:00 +0000 Banana</pubDate>
      <guid>https://logoi.dny.dev/2016/08/07/tools-for-the-job/</guid>
      <description>Every now and then I find myself in discussions with people around which tools we should use for what job. This comes up especially often in the context of FOSS with regards to communication platforms. Do we use IRC, Slack, Gitter? Also, are mailing lists still a thing? Should we have a Discourse instead?&#xA;Fairly often the reaction of people will be &amp;ldquo;no you can&amp;rsquo;t use Slack, use FOSS tools for FOSS projects&amp;rdquo;.
      &lt;br&gt;&lt;br&gt;
      Read the full post on the blog.
      </description>
    </item>
    <item>
      <title>whois on OS X</title>
      <link>https://logoi.dny.dev/2016/06/06/whois/</link>
      <pubDate>Mon, 06 Jun 2016 00:00:00 +0000 Banana</pubDate>
      <guid>https://logoi.dny.dev/2016/06/06/whois/</guid>
      <description>One of the things I find myself doing from time to time it to execute the whois command. This allows me to figure out to whom an IP(range) or domain belongs. However, when doing this on OS X, especially with IPv6 addresses I&amp;rsquo;m greeted with:&#xA;$ whois 2a00:1450:400f:805::200e No match for &amp;#34;2a00:1450:400f:805::200e&amp;#34;. &amp;gt;&amp;gt;&amp;gt; Last update of whois database: Tue, 07 Jun 2016 12:55:53 GMT &amp;lt;&amp;lt;&amp;lt; I figured I should explicitly ask it to treat this as IPv6 and found this in the man page:
      &lt;br&gt;&lt;br&gt;
      Read the full post on the blog.
      </description>
    </item>
    <item>
      <title>IPv6 at home</title>
      <link>https://logoi.dny.dev/2016/06/05/IPv6-at-home/</link>
      <pubDate>Sun, 05 Jun 2016 00:00:00 +0000 Banana</pubDate>
      <guid>https://logoi.dny.dev/2016/06/05/IPv6-at-home/</guid>
      <description>I recently moved to a new place (because the rental market is cray cray here). Despite how annoying it is to move around a benefit of the new place is that it has fiber so I wasted no time and got a connection from Telia.&#xA;I plugged in the ISP shipped router and while browsing through the admin interface I noticed an IPv6 address showed up. All excited I checked my devices but no one was getting v6 addresses assigned.
      &lt;br&gt;&lt;br&gt;
      Read the full post on the blog.
      </description>
    </item>
    <item>
      <title>I&#39;m going to FOSDEM and I&#39;m bringing</title>
      <link>https://logoi.dny.dev/2016/01/25/Im-going-to-FOSDEM-and-Im-bringing/</link>
      <pubDate>Mon, 25 Jan 2016 00:00:00 +0000 Banana</pubDate>
      <guid>https://logoi.dny.dev/2016/01/25/Im-going-to-FOSDEM-and-Im-bringing/</guid>
      <description>FOSDEM is a wonderful event. But as with any event with geeks people will try to sniff your traffic, mess with GSM, grab your credentials and what not.&#xA;The best way to stay safe? Don&amp;rsquo;t bring electronics with you or have them in flight mode (laptop included). No Bluetooth, no WiFi, no GSM/3G/tethering, nothing.&#xA;If that doesn&amp;rsquo;t sound all that practical there&amp;rsquo;s a few things you can do.&#xA;Spin up a Streisand server so you can VPN all the things.
      &lt;br&gt;&lt;br&gt;
      Read the full post on the blog.
      </description>
    </item>
    <item>
      <title>PGP, one last try</title>
      <link>https://logoi.dny.dev/2016/01/09/PGP-one-last-try/</link>
      <pubDate>Sat, 09 Jan 2016 00:00:00 +0000 Banana</pubDate>
      <guid>https://logoi.dny.dev/2016/01/09/PGP-one-last-try/</guid>
      <description>Update: I&amp;rsquo;ve long since given up on PGP. It&amp;rsquo;s just not worth it. Ignore this post.&#xA;Over the years I&amp;rsquo;ve tried to use PGP multiple times. However, I&amp;rsquo;ve always failed miserably at managing keys and understanding the lifecycle involved. This is evident by searching the keyservers for my name, it&amp;rsquo;ll turn up a few rather idiotic and dubiously keys. None of them should be used except for one, 0x18D40820FA0EE03C.&#xA;These failures with PGP are in part my fault for not correctly understanding what I was doing and part because of the horrendous UX of the gpg tools and the documentation that comes with it.
      &lt;br&gt;&lt;br&gt;
      Read the full post on the blog.
      </description>
    </item>
    <item>
      <title>In search of a new name for Puppet Community</title>
      <link>https://logoi.dny.dev/2015/11/16/In-search-of-a-new-name-for-Puppet-Community/</link>
      <pubDate>Mon, 16 Nov 2015 00:00:00 +0000 Banana</pubDate>
      <guid>https://logoi.dny.dev/2015/11/16/In-search-of-a-new-name-for-Puppet-Community/</guid>
      <description>update: We&amp;rsquo;ve settled on the name Vox Pupuli. It&amp;rsquo;s a play on the Latin &amp;ldquo;vox populi&amp;rdquo;, voice of the people, but in our case ends up meaning &amp;ldquo;voice of the puppets&amp;rdquo;.&#xA;As quite a few of you know at PuppetConf 2014 we started a community collaboration effort on the maintenance of modules and tooling in the Puppet ecosystem. In our enthusiasm we baptised it Puppet Community.&#xA;20/20 hindsight The term Puppet Community (puppet-community) clashes in all kinds of ways with just the community around Puppet, the Puppet community.
      &lt;br&gt;&lt;br&gt;
      Read the full post on the blog.
      </description>
    </item>
    <item>
      <title>Puppet and IntelliJ</title>
      <link>https://logoi.dny.dev/2015/10/21/Puppet-and-IntelliJ/</link>
      <pubDate>Wed, 21 Oct 2015 00:00:00 +0000 Banana</pubDate>
      <guid>https://logoi.dny.dev/2015/10/21/Puppet-and-IntelliJ/</guid>
      <description>Part of the fun of Puppetconf is getting to talk to so many people and learning clever new tricks from each other. I knew IntelliJ had some support for writing Puppet code but as Travis showed me it&amp;rsquo;s been greatly improved.&#xA;If you&amp;rsquo;re running IntelliJ you&amp;rsquo;ll need to install both the Ruby and the Puppet plugins. If you&amp;rsquo;re on RubyMine only the latter is needed.&#xA;By default the Puppet plugin handles single modules really well and gives you things like code completion and refactoring support for your classes and (defined) types.
      &lt;br&gt;&lt;br&gt;
      Read the full post on the blog.
      </description>
    </item>
    <item>
      <title>Saying &#34;they&#34;</title>
      <link>https://logoi.dny.dev/2015/08/11/Saying-they/</link>
      <pubDate>Tue, 11 Aug 2015 00:00:00 +0000 Banana</pubDate>
      <guid>https://logoi.dny.dev/2015/08/11/Saying-they/</guid>
      <description>Based on a remark of a friend about preconceptions we have with regard to gender I started looking more carefully at how I use gender pronouns. Though I&amp;rsquo;m usually fairly diligent in writing I noticed I failed entirely in speech.&#xA;This usually happens to me when I meet a new person because at that point I have no context to go on. My autopilot takes over and based on their physique, dress style and preconceptions around gender that have been drilled into me for over 20 years, I end up selecting a pronoun like &amp;ldquo;he&amp;rdquo; or &amp;ldquo;she&amp;rdquo;.
      &lt;br&gt;&lt;br&gt;
      Read the full post on the blog.
      </description>
    </item>
    <item>
      <title>Why I care about Pride</title>
      <link>https://logoi.dny.dev/2015/08/06/Why-I-care-about-Pride/</link>
      <pubDate>Thu, 06 Aug 2015 00:00:00 +0000 Banana</pubDate>
      <guid>https://logoi.dny.dev/2015/08/06/Why-I-care-about-Pride/</guid>
      <description>If you&amp;rsquo;re following me through social media it won&amp;rsquo;t have escaped your attention that my avatar turned rainbow and there was a distinct increase in rainbows throughout my feed as we were ramping up to Pride.&#xA;Many people outside the LGBTQ community and even quite a few within don&amp;rsquo;t realise the importance of Pride and just see it as a shameless parade. It is far from that.&#xA;After having helped organise our participation at Pride this year a few colleagues and I wrote a piece on the intranet about why we participated and what we did.
      &lt;br&gt;&lt;br&gt;
      Read the full post on the blog.
      </description>
    </item>
    <item>
      <title>Pupa</title>
      <link>https://logoi.dny.dev/2015/07/23/Pupa/</link>
      <pubDate>Thu, 23 Jul 2015 00:00:00 +0000 Banana</pubDate>
      <guid>https://logoi.dny.dev/2015/07/23/Pupa/</guid>
      <description>Bootstrapping a modern, r10k powered, masterless, Puppet 4 setup on Debian and Ubuntu.&#xA;pupa is a toy project of mine. Essentially I decided to bring all my personal machines under full Puppet control. Inspired by how our Puppet setup works at my job I decided to go for a masterless setup.&#xA;The problem really is to get Puppet on your machine. Once it&amp;rsquo;s there everything else is easy and as you&amp;rsquo;ll see if you look at the script I&amp;rsquo;m actually using Puppet to bootstrap part of itself.
      &lt;br&gt;&lt;br&gt;
      Read the full post on the blog.
      </description>
    </item>
    <item>
      <title>Eurovision 2015</title>
      <link>https://logoi.dny.dev/2015/05/24/Eurovision-2015/</link>
      <pubDate>Sun, 24 May 2015 00:00:00 +0000 Banana</pubDate>
      <guid>https://logoi.dny.dev/2015/05/24/Eurovision-2015/</guid>
      <description>Last night Europe went to war. No the Germans didn&amp;rsquo;t start it, we were just having a huge music contest followed by some political voting to decide who should win.&#xA;I adore the Eurovision Song Contest It might not be a manly thing to admit to but it&amp;rsquo;s one of those things that just gets me ridiculously, over the rainbow to the moon, happy. It&amp;rsquo;s also been a fairly progressive contest with LGBTQ members participating and people in drag aren&amp;rsquo;t unfamiliar to the Eurovision either.
      &lt;br&gt;&lt;br&gt;
      Read the full post on the blog.
      </description>
    </item>
    <item>
      <title>Open source identity and abandonment issues</title>
      <link>https://logoi.dny.dev/2015/04/20/Open-source-identity-and-abandonment-issues/</link>
      <pubDate>Mon, 20 Apr 2015 00:00:00 +0000 Banana</pubDate>
      <guid>https://logoi.dny.dev/2015/04/20/Open-source-identity-and-abandonment-issues/</guid>
      <description>Today I made one of the hardest decisions I’ve made in a while. I decided to give up maintainership of two projects that I originally started. The projects are pypuppetdb, a library to talk to the PuppetDB API, and Puppetboard, a dashboard for PuppetDB that leverages pypuppetdb.&#xA;Both projects started two years ago during my time at Nedap. The existing open source dashboards for Puppet sort of sucked and none of them were using PuppetDB so we were storing lots of duplicate data and in an inefficient manner too.
      &lt;br&gt;&lt;br&gt;
      Read the full post on the blog.
      </description>
    </item>
    <item>
      <title>(In)visibility</title>
      <link>https://logoi.dny.dev/2015/03/19/Invisibility/</link>
      <pubDate>Thu, 19 Mar 2015 00:00:00 +0000 Banana</pubDate>
      <guid>https://logoi.dny.dev/2015/03/19/Invisibility/</guid>
      <description>After my post on LGBTQ in tech a lot of people reached out to me, thanking me for the post, with a lot of kind words and some even with a resounding &amp;ldquo;yes that&amp;rsquo;s me too&amp;rdquo;. It&amp;rsquo;s been heartwarming to see the support this story gathered and how the Puppet community, which is the one I interact with the most, reacted to it.&#xA;Interestingly though some have raised the point that LGBTQ are not a minority in tech.
      &lt;br&gt;&lt;br&gt;
      Read the full post on the blog.
      </description>
    </item>
    <item>
      <title>LGBTQ in Tech</title>
      <link>https://logoi.dny.dev/2015/03/16/LGBTQ-in-tech/</link>
      <pubDate>Mon, 16 Mar 2015 00:00:00 +0000 Banana</pubDate>
      <guid>https://logoi.dny.dev/2015/03/16/LGBTQ-in-tech/</guid>
      <description>Most people who know me know I&amp;rsquo;m gay, or that I identify as gay or queer or whichever way you&amp;rsquo;re more comfortable phrasing or thinking about it. To put it bluntly: I like men, I date men, I sleep with men, I happen to be a man and it&amp;rsquo;s all good.&#xA;The thing that struck me about tech when I started getting more involved in online communities is that no one cared about this fact.
      &lt;br&gt;&lt;br&gt;
      Read the full post on the blog.
      </description>
    </item>
    <item>
      <title>puppetlabs-apt/next</title>
      <link>https://logoi.dny.dev/2015/03/05/puppetlabs-aptnext/</link>
      <pubDate>Thu, 05 Mar 2015 00:00:00 +0000 Banana</pubDate>
      <guid>https://logoi.dny.dev/2015/03/05/puppetlabs-aptnext/</guid>
      <description>As some of you know I’m the unofficial maintainer of the apt module from Puppetlabs. Together with Morgan from the Puppetlabs Module Team we try and keep that module up to date and in good shape.&#xA;The apt module has not seen a significant revision since its inception in 2010. Over the past 4 years it has accumulated feature after feature without anyone taking a hard looking at what was going on inside.
      &lt;br&gt;&lt;br&gt;
      Read the full post on the blog.
      </description>
    </item>
    <item>
      <title>Puppet Module Triage</title>
      <link>https://logoi.dny.dev/2015/02/19/Puppet-Module-Triage/</link>
      <pubDate>Thu, 19 Feb 2015 00:00:00 +0000 Banana</pubDate>
      <guid>https://logoi.dny.dev/2015/02/19/Puppet-Module-Triage/</guid>
      <description>Today we had our usual Puppet Module triage. It&amp;rsquo;s a time a week where module contributors and the Puppetlabs Module Team gather online to discuss, comment, merge or reject PR&amp;rsquo;s against the different module. This is the best time for you as a contributor to join if you have a PR pending and want feedback.&#xA;For the first time we&amp;rsquo;ve kept minutes of the meeting, what we did and why and you can read up on them here.
      &lt;br&gt;&lt;br&gt;
      Read the full post on the blog.
      </description>
    </item>
    <item>
      <title>Work standing up and meditation</title>
      <link>https://logoi.dny.dev/2015/02/18/Work-standing-up-and-meditation/</link>
      <pubDate>Wed, 18 Feb 2015 00:00:00 +0000 Banana</pubDate>
      <guid>https://logoi.dny.dev/2015/02/18/Work-standing-up-and-meditation/</guid>
      <description>the Lotus positions but for a long time I wasn&amp;rsquo;t able to hold that position for extended periods of time.&#xA;However, since I&amp;rsquo;ve switched to working standing up for about 3/4 of my day I&amp;rsquo;ve noticed a marked improvement in my capability to hold this pose. After just two weeks of doing this I can comfortably hold a pose for 15-20m whereas before at around 10-12m it would start to become unconfortable.
      &lt;br&gt;&lt;br&gt;
      Read the full post on the blog.
      </description>
    </item>
    <item>
      <title>The start of 2015</title>
      <link>https://logoi.dny.dev/2015/02/17/The-start-of-2015/</link>
      <pubDate>Tue, 17 Feb 2015 00:00:00 +0000 Banana</pubDate>
      <guid>https://logoi.dny.dev/2015/02/17/The-start-of-2015/</guid>
      <description>So as I said I would blog regularily, and then I didn&amp;rsquo;t. That&amp;rsquo;s because I&amp;rsquo;m a techy and while working and tweaking the blog I obviously broke it and until now haven&amp;rsquo;t really found the time to fix it. Just wasn&amp;rsquo;t at the top of my priority list because all solutions to blogging through Github kinda sucked. Now that it is fixed, lets catch up.&#xA;Settling in I now have my own space here that I affectionately refer to as home :).
      &lt;br&gt;&lt;br&gt;
      Read the full post on the blog.
      </description>
    </item>
    <item>
      <title>My first week</title>
      <link>https://logoi.dny.dev/2014/10/25/My-first-week/</link>
      <pubDate>Sat, 25 Oct 2014 00:00:00 +0000 Banana</pubDate>
      <guid>https://logoi.dny.dev/2014/10/25/My-first-week/</guid>
      <description>I expected to write a post much earlier than this but the first week was so busy all I wanted to do in the evenings was get home and relax, screw the computer.&#xA;Monday was my first day and it was fun. I got thrown in at the deep end helping to form the squad I&amp;rsquo;m going to be a member of. Since I&amp;rsquo;d only been at the company 2.5hrs there was a lot to take in and do all of the sudden.
      &lt;br&gt;&lt;br&gt;
      Read the full post on the blog.
      </description>
    </item>
    <item>
      <title>Out with the old, in with the new</title>
      <link>https://logoi.dny.dev/2014/10/17/Out-with-the-old-in-with-the-new/</link>
      <pubDate>Fri, 17 Oct 2014 00:00:00 +0000 Banana</pubDate>
      <guid>https://logoi.dny.dev/2014/10/17/Out-with-the-old-in-with-the-new/</guid>
      <description>As some of you know, there&amp;rsquo;s a big change coming over here. Because of this I decided to throw out the old blog and the content that goes with it, much like I&amp;rsquo;m throwing out most of my possessions in preparation of what&amp;rsquo;s to come. The idea is that&amp;rsquo;ll blog about the new experiences, perhaps sometimes even on a daily basis so that friends and family can keep track of how everything&amp;rsquo;s going.
      &lt;br&gt;&lt;br&gt;
      Read the full post on the blog.
      </description>
    </item>
  </channel>
</rss>
