<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>~elis/blog/ on Elis Hirwing</title><link>https://elis.nu/blog/</link><description>Recent content in ~elis/blog/ on Elis Hirwing</description><generator>Hugo</generator><language>en-gb</language><lastBuildDate>Sun, 26 Apr 2026 09:00:00 +0200</lastBuildDate><atom:link href="https://elis.nu/blog/index.xml" rel="self" type="application/rss+xml"/><item><title>Computing contrast colors without dart-sass</title><link>https://elis.nu/blog/2026/04/computing-contrast-colors-without-dart-sass/</link><pubDate>Sun, 26 Apr 2026 09:00:00 +0200</pubDate><guid>https://elis.nu/blog/2026/04/computing-contrast-colors-without-dart-sass/</guid><description>&lt;p&gt;Back in 2021 I wrote about &lt;a href="https://elis.nu/blog/2021/09/dynamic-css-color-themes-with-similar-contrasts/"&gt;dynamic CSS color themes with similar
contrasts&lt;/a&gt;,
where I used a SCSS function to automatically adjust colors to meet the WCAG
7:1 contrast ratio against both a light and a dark background. The idea was
that you specify the &lt;em&gt;intent&lt;/em&gt; — the hue you want — and the build system derives
the actual color that achieves sufficient contrast.&lt;/p&gt;
&lt;p&gt;That worked well, but it required dart-sass. Hugo&amp;rsquo;s built-in LibSass was
removed in Hugo 0.128, leaving dart-sass as the only SCSS transpiler. Getting
dart-sass into the Nix build required a &lt;code&gt;symlinkJoin&lt;/code&gt; bundle that wrapped Hugo
with dart-sass on its &lt;code&gt;PATH&lt;/code&gt; — not terrible, but an extra moving part in both
&lt;code&gt;devshell.nix&lt;/code&gt; and &lt;code&gt;packages/default.nix&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>NixOS ❄: Remote unlock of encrypted ZFS over SSH</title><link>https://elis.nu/blog/2026/04/nixos-zfs-remote-unlock-over-ssh/</link><pubDate>Fri, 24 Apr 2026 00:00:00 +0200</pubDate><guid>https://elis.nu/blog/2026/04/nixos-zfs-remote-unlock-over-ssh/</guid><description>&lt;p&gt;This is a follow-up to my earlier post: &lt;a href="https://elis.nu/blog/2019/08/encrypted-zfs-mirror-with-mirrored-boot-on-nixos/"&gt;Encrypted ZFS mirror with mirrored
boot on NixOS&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;At the end of that post I briefly mentioned that I configured remote unlocking
of my encrypted ZFS pools over SSH on boot, linking off to the NixOS wiki. The
wiki page is now quite outdated and the approach it describes no longer works
well with modern NixOS, which uses a systemd-based initrd by default. This post
covers the current way to do it.&lt;/p&gt;</description></item><item><title>My experience of migrating from Google G-Suite to ProtonMail</title><link>https://elis.nu/blog/2026/02/migrating-from-g-suite-to-protonmail/</link><pubDate>Tue, 24 Feb 2026 21:40:00 +0100</pubDate><guid>https://elis.nu/blog/2026/02/migrating-from-g-suite-to-protonmail/</guid><description>&lt;p&gt;For about 9 years, I&amp;rsquo;ve been a customer of Google G-Suite, using it
for email, file storage, and photos. I&amp;rsquo;ve never fully trusted them,
however I have always claimed the following.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;As a paying customer, I hope that they mine my data less than they
do for free users.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;There&amp;rsquo;s a lot of uncertainty in that sentence. Words like &lt;strong&gt;hope&lt;/strong&gt; and
&lt;strong&gt;less&lt;/strong&gt; aren&amp;rsquo;t exactly reassuring, and there&amp;rsquo;s no proof it&amp;rsquo;s actually
the case either. With a recent price increase warning at renewal time
and the current state of politics between the EU and USA, I decided to
switch to an EU provider.&lt;/p&gt;</description></item><item><title>Migrating from ZFS mirror to RAIDZ2</title><link>https://elis.nu/blog/2025/09/migrating-zfs-mirror-to-raidz2/</link><pubDate>Sat, 13 Sep 2025 20:00:00 +0200</pubDate><guid>https://elis.nu/blog/2025/09/migrating-zfs-mirror-to-raidz2/</guid><description>&lt;p&gt;For a long time I&amp;rsquo;ve been running my storage on a 2-disk ZFS
mirror. It&amp;rsquo;s been stable, safe, and easy to manage. However, at some
point, 2 disks just aren&amp;rsquo;t enough, and I wanted to upgrade to RAIDZ2
so that I could survive up to two simultaneous disk failures.&lt;/p&gt;
&lt;p&gt;I could have added another mirror, which would have been simple, and
this setup would allow two drives to fail, but not any two drives. I
wanted the extra safety of being able to lose &lt;strong&gt;any two drives&lt;/strong&gt;.&lt;/p&gt;</description></item><item><title>Elis Tempeh v1.0</title><link>https://elis.nu/blog/2025/01/elis-tempeh-v1-0/</link><pubDate>Sun, 19 Jan 2025 13:20:00 +0100</pubDate><guid>https://elis.nu/blog/2025/01/elis-tempeh-v1-0/</guid><description>&lt;p&gt;Tempeh. Ever heard of it? It’s a traditional Indonesian food made from
fermented soybeans. Packed with protein and a unique nutty flavor,
tempeh is a fantastic meat substitute for vegans and vegetarians
alike.&lt;/p&gt;
&lt;p&gt;In this post, I’ll guide you through what tempeh is, how to make it at
home, and tackle some of the common challenges, like maintaining the
right fermentation temperature. So, if you’ve ever thought about
giving tempeh-making a try, let’s dive in!&lt;/p&gt;</description></item><item><title>Back from Hyprland to Sway</title><link>https://elis.nu/blog/2024/08/back-from-hyprland-to-sway/</link><pubDate>Thu, 29 Aug 2024 21:30:00 +0200</pubDate><guid>https://elis.nu/blog/2024/08/back-from-hyprland-to-sway/</guid><description>&lt;p&gt;After a brief experiment with
&lt;a href="https://elis.nu/blog/2024/07/switching-to-hyprland/"&gt;Hyprland&lt;/a&gt;, I&amp;rsquo;m back to using Sway. My
experiment lasted less than a month, as I hoped Hyprland&amp;rsquo;s window
selector would resolve my window-sharing woes.&lt;/p&gt;
&lt;p&gt;It turns out it wasn&amp;rsquo;t, because the first week back at work I had the
need to share a slideshow in full screen. Then it doesn&amp;rsquo;t matter if
you can select a window anymore. So my workarounds with Sway would
have worked in that use case while my Hyprland set up… didn&amp;rsquo;t.&lt;/p&gt;</description></item><item><title>Switching from Sway to Hyprland</title><link>https://elis.nu/blog/2024/07/switching-to-hyprland/</link><pubDate>Tue, 23 Jul 2024 16:40:00 +0200</pubDate><guid>https://elis.nu/blog/2024/07/switching-to-hyprland/</guid><description>&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;After four years with Sway, I&amp;rsquo;ve decided to transition to Hyprland. My
journey from EXWM to Sway began about four years ago, and I documented
the experience in
&lt;a href="https://elis.nu/blog/2021/02/switching-to-wayland-sway/"&gt;this post&lt;/a&gt; three years ago.
While Sway has served me well, it has its limitations that I&amp;rsquo;ve used
hacks and workarounds to circumvent.&lt;/p&gt;
&lt;h2 id="the-limitations-of-sway"&gt;The Limitations of Sway&lt;/h2&gt;
&lt;p&gt;One major drawback of Sway is its
&lt;a href="https://elis.nu/blog/2021/02/detailed-setup-of-screen-sharing-in-sway/"&gt;screen sharing&lt;/a&gt;
capabilities. Although I managed to get screen sharing somewhat
functional, it only allows sharing the full screen.&lt;/p&gt;</description></item><item><title>Prune gh-pages branches using GitHub Actions</title><link>https://elis.nu/blog/2024/07/prune-gh-pages-branches/</link><pubDate>Sun, 07 Jul 2024 11:30:00 +0200</pubDate><guid>https://elis.nu/blog/2024/07/prune-gh-pages-branches/</guid><description>&lt;p&gt;This website is hosted on GitHub Pages, built using nix and hugo with
a custom theme that I maintain. I have automated updates for the nix
flake to get new versions of hugo and nixpkgs, which applies to both
my theme and the website itself.&lt;/p&gt;
&lt;p&gt;This automation generates numerous commits and deployments to the
gh-pages branch, mainly due to minor version bumps of hugo and other
changes to the theme. While this hasn’t been a problem for my static
website, which primarily consists of text, a recent addition has
created some challenges.&lt;/p&gt;</description></item><item><title>NixOS superpower: specialisations</title><link>https://elis.nu/blog/2024/02/nixos-superpower-specialisations/</link><pubDate>Sat, 17 Feb 2024 20:30:00 +0100</pubDate><guid>https://elis.nu/blog/2024/02/nixos-superpower-specialisations/</guid><description>&lt;p&gt;&lt;a href="https://nixos.org/"&gt;NixOS&lt;/a&gt; has a lot of configurability and features. One
feature that I&amp;rsquo;ve known about for a while that I think is both really cool,
but also a bit lesser known is the ability to have declarative
&lt;a href="https://wiki.nixos.org/wiki/Specialisation"&gt;Specialisations&lt;/a&gt;. To me, this is a
superpower of NixOS that I have a hard time to see any other Linux
Distribution having.&lt;/p&gt;
&lt;h2 id="whats-a-specialisation"&gt;What&amp;rsquo;s a Specialisation?&lt;/h2&gt;
&lt;p&gt;The name doesn&amp;rsquo;t do it justice, it&amp;rsquo;s a bit of a weird name for it. However
I couldn&amp;rsquo;t come up with a better name for it either.&lt;/p&gt;</description></item><item><title>A personal adventure with hot beverages</title><link>https://elis.nu/blog/2023/11/a-personal-adventure-with-hot-beverages/</link><pubDate>Sun, 05 Nov 2023 22:30:00 +0100</pubDate><guid>https://elis.nu/blog/2023/11/a-personal-adventure-with-hot-beverages/</guid><description>&lt;h2 id="my-history-with-coffee"&gt;My history with coffee&lt;/h2&gt;
&lt;p&gt;I&amp;rsquo;ve never been into coffee, every time I&amp;rsquo;ve tried them as a child or young
adult they have been terrible. They have just been bitter and it&amp;rsquo;s not a
taste profile I to this day enjoy at all.&lt;/p&gt;
&lt;p&gt;I have, a couple of times encountered coffee that friends have made that
actually weren&amp;rsquo;t that bitter. So my reaction to it has managed to reach the
level of &amp;ldquo;this isn&amp;rsquo;t terrible&amp;rdquo;. Not terrible isn&amp;rsquo;t a great review though, not
really something that one gets back to right away.&lt;/p&gt;</description></item><item><title>AI should be trained with vegan values</title><link>https://elis.nu/blog/2023/04/ai-should-be-trained-with-vegan-values/</link><pubDate>Tue, 25 Apr 2023 19:00:00 +0100</pubDate><guid>https://elis.nu/blog/2023/04/ai-should-be-trained-with-vegan-values/</guid><description>&lt;p&gt;As artificial intelligence (AI) continues to advance, concerns have been
raised about the potential dangers of AI becoming too powerful and taking
over human civilization. In a recent interview, entrepreneur and CEO Elon
Musk expressed his concerns about the risks associated with developing
super-intelligent AI. However, his views were challenged by Larry Page,
co-founder of Google, who referred to Musk as a “speciesist” for not wanting
AI to become a “digital god”.&lt;/p&gt;</description></item><item><title>Outsourcing NixOS compile time to Microsoft</title><link>https://elis.nu/blog/2022/10/outsourcing-nixos-compile-time-to-microsoft/</link><pubDate>Mon, 10 Oct 2022 20:00:00 +0100</pubDate><guid>https://elis.nu/blog/2022/10/outsourcing-nixos-compile-time-to-microsoft/</guid><description>&lt;p&gt;&lt;a href="https://nixos.org/"&gt;NixOS&lt;/a&gt; is a Linux-distribution that may be source-based, but it has a binary
cache that covers things so you generally don&amp;rsquo;t need to compile things,
things tends to be cached.&lt;/p&gt;
&lt;p&gt;However, depending on how you configure your system, you may trigger compiles
depending on what you do.&lt;/p&gt;
&lt;p&gt;So a thing I do is that I run Emacs 29 with the native-comp patches that is
wayland native with the pgtk-branch. This is by no mean the stable Emacs
release at the point of writing. So to get this Emacs I use the excellent
&lt;a href="https://github.com/nix-community/emacs-overlay"&gt;nix-community/emacs-overlay&lt;/a&gt; (that is maintained by my friend
&lt;a href="https://github.com/adisbladis"&gt;@adisbladis&lt;/a&gt;). However, this means that I will get Emacs from a development
branch of Emacs, then I need to build all the Emacs packages that I use in my
configuration as well for this version of Emacs.&lt;/p&gt;</description></item><item><title>Keeping LG webOS Developer Mode alive with Home Assistant</title><link>https://elis.nu/blog/2022/07/keeping-webos-developer-mode-alive-with-home-assistant/</link><pubDate>Mon, 25 Jul 2022 20:00:00 +0100</pubDate><guid>https://elis.nu/blog/2022/07/keeping-webos-developer-mode-alive-with-home-assistant/</guid><description>&lt;p&gt;For over 10 years I&amp;rsquo;ve used &lt;a href="https://kodi.tv/"&gt;Kodi&lt;/a&gt; on a separate PC connected to a TV to play
back local media.&lt;/p&gt;
&lt;p&gt;A couple of weeks ago everything changed in a matter of days. I listened to
&lt;a href="https://latenightlinux.com/late-night-linux-episode-179/"&gt;Late Night Linux – Episode 179&lt;/a&gt;
where they talked about &lt;a href="https://jellyfin.org/"&gt;Jellyfin&lt;/a&gt;. I have
looked into Jellyfin before, however I&amp;rsquo;ve disregarded it due to the lack of
app for LG webOS. This changed because the podcast episode told that there
was a webOS app for Jellyfin.&lt;/p&gt;</description></item><item><title>First impressions of Purism Librem 5</title><link>https://elis.nu/blog/2021/10/first-impressions-of-purism-librem-5/</link><pubDate>Fri, 15 Oct 2021 23:40:00 +0100</pubDate><guid>https://elis.nu/blog/2021/10/first-impressions-of-purism-librem-5/</guid><description>&lt;p&gt;Back in 2017, this fairly small company &lt;a href="https://puri.sm"&gt;Purism&lt;/a&gt; launched a crowdfunding on
their own crowdfunding platform for their future phone known as &lt;a href="https://puri.sm/products/librem-5/"&gt;Librem 5&lt;/a&gt;. I
went back and forth a bit, I thought through some of the history about the
company and decided that I thought they may deliver some day. At least I
wanted to support the effort to make a modern Linux that could fill the hole
that the demise of the &lt;a href="https://en.wikipedia.org/wiki/Nokia_N900"&gt;Nokia N900&lt;/a&gt; with no worthy device following up.&lt;/p&gt;</description></item><item><title>Dynamic CSS color themes with similar contrasts</title><link>https://elis.nu/blog/2021/09/dynamic-css-color-themes-with-similar-contrasts/</link><pubDate>Thu, 30 Sep 2021 21:10:00 +0100</pubDate><guid>https://elis.nu/blog/2021/09/dynamic-css-color-themes-with-similar-contrasts/</guid><description>&lt;p&gt;This blog is built with Emacs, SCSS using Nix and deployed as static files to
GitHub Pages. This blog also has quite some colors due to the syntax
highlighting for code that is performed using CSS rules on HTML classes.&lt;/p&gt;
&lt;p&gt;So in total I have 15 different colors defined, in which four of them is
background and foreground colors, two of them is related to link and visited
link colors. Then I have nine colors remaining which are related to syntax
highlighting of code.&lt;/p&gt;</description></item><item><title>Mobile org-mode use with Orgzly and Syncthing</title><link>https://elis.nu/blog/2021/08/mobile-org-mode-use-with-orgzly-and-syncthing/</link><pubDate>Mon, 02 Aug 2021 21:30:00 +0100</pubDate><guid>https://elis.nu/blog/2021/08/mobile-org-mode-use-with-orgzly-and-syncthing/</guid><description>&lt;p&gt;I&amp;rsquo;ve been an Emacs user for 13+ years, during this time I&amp;rsquo;ve been using
&lt;a href="https://orgmode.org/"&gt;org-mode&lt;/a&gt; on and off for different thing.&lt;/p&gt;
&lt;p&gt;Some examples where I currently use org-mode:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Deployment of this website&lt;/li&gt;
&lt;li&gt;Making of presentation slides&lt;/li&gt;
&lt;li&gt;Project read me files&lt;/li&gt;
&lt;li&gt;Notes files&lt;/li&gt;
&lt;li&gt;Time reporting&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I&amp;rsquo;ve tried to use it for to do&amp;rsquo;s but never really managed, partly because I
wanted to have a good interface for my to do&amp;rsquo;s on my phone. Then I wanted
quick synchronization to my computers to be able to pick up the changes
there.&lt;/p&gt;</description></item><item><title>Simple deployments of NixOS machines with nixus</title><link>https://elis.nu/blog/2021/07/simple-deployments-of-nixos-machines/</link><pubDate>Fri, 23 Jul 2021 16:30:00 +0100</pubDate><guid>https://elis.nu/blog/2021/07/simple-deployments-of-nixos-machines/</guid><description>&lt;p&gt;Since I&amp;rsquo;ve started using NixOS about four years ago I haven&amp;rsquo;t really used any
tools to do central deployments of machines. But I&amp;rsquo;ve always read and known
that NixOS is excellent at this. NixOS can easily build another systems
configuration, then copy the system to the target systems nix store and then
activate it there.&lt;/p&gt;
&lt;p&gt;Despite knowing all this, I haven&amp;rsquo;t gotten around to doing this centrally. A
while ago the need for this changed because one of my VPSes started running
low on RAM, low enough to not be able to build new generations of it&amp;rsquo;s own
system. Which posed a problem for future upgrades. One way to solve it would
be to pay more money for resources that aren&amp;rsquo;t really needed except from when
doing system upgrades. The other way would be to push pre-built systems from
another location. Using the second way is simpler and fixes the issue.&lt;/p&gt;</description></item><item><title>NixOS: Setting up Push To Talk in Mumble on Sway</title><link>https://elis.nu/blog/2021/06/setting-up-push-to-talk-in-mumble-on-sway/</link><pubDate>Sat, 26 Jun 2021 22:40:00 +0100</pubDate><guid>https://elis.nu/blog/2021/06/setting-up-push-to-talk-in-mumble-on-sway/</guid><description>&lt;p&gt;Switching to Wayland has it&amp;rsquo;s side-effects, one of which is the improved
security from X11 where applications can&amp;rsquo;t just randomly spy on each other at
any point.&lt;/p&gt;
&lt;p&gt;This is both good news and bad news.&lt;/p&gt;
&lt;p&gt;The good news:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Applications can&amp;rsquo;t just randomly spy on each other.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The bad news:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Things like global hot-keys in for example Mumble won&amp;rsquo;t work.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Back from complaining to actually solving the problem though.&lt;/p&gt;
&lt;h2 id="mumble-does-have-a-patch-for-a-future-release"&gt;Mumble does have a patch for a future release&lt;/h2&gt;
&lt;p&gt;So there&amp;rsquo;s the issue about &lt;a href="https://github.com/mumble-voip/mumble/issues/3243"&gt;Push to talk does not work in Wayland&lt;/a&gt;, this has
been followed up by a patch &lt;a href="https://github.com/mumble-voip/mumble/pull/3675"&gt;Add DBus calls to de/-activate push to talk&lt;/a&gt;. This
patch will land in the 1.4.0 release though while current stable is 1.3.4.&lt;/p&gt;</description></item><item><title>The day when ZFS saved my data</title><link>https://elis.nu/blog/2021/05/the-day-when-zfs-saved-my-data/</link><pubDate>Fri, 21 May 2021 20:45:00 +0100</pubDate><guid>https://elis.nu/blog/2021/05/the-day-when-zfs-saved-my-data/</guid><description>&lt;p&gt;Today my work day didn&amp;rsquo;t turn out the way I expected. It started like a
normal day, I woke up around the regular time, did my morning routine, sat at
my desk and started my work-issued laptop.&lt;/p&gt;
&lt;p&gt;It booted up just fine, I connected it to my Ultrawide display, started going
through Slack and Email and catch up on some news while drinking my morning
tea and waking up.&lt;/p&gt;
&lt;p&gt;Then after around an hour of work things started to hang up, most notably
Firefox totally froze up. I could launch a new terminal but not start &lt;code&gt;htop&lt;/code&gt;,
I had a &lt;code&gt;htop&lt;/code&gt; session in a terminal already because it&amp;rsquo;s part of what I
usually have running. So I went there to look.&lt;/p&gt;</description></item><item><title>Detailed setup of screen sharing in Wayland (Sway)</title><link>https://elis.nu/blog/2021/02/detailed-setup-of-screen-sharing-in-sway/</link><pubDate>Fri, 19 Feb 2021 23:00:00 +0100</pubDate><guid>https://elis.nu/blog/2021/02/detailed-setup-of-screen-sharing-in-sway/</guid><description>&lt;p&gt;Getting screen sharing to work on Wayland seems to be surprisingly hard.
Maybe it is compared to X11 that doesn&amp;rsquo;t require any additional setup at all.&lt;/p&gt;
&lt;p&gt;To have working screen sharing on Sway you really need three components
installed and set up with correct environment variables.&lt;/p&gt;
&lt;p&gt;These three components are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;pipewire&lt;/code&gt; (I have version: 0.3.21)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;xdg-desktop-portal&lt;/code&gt; (I have version: 1.8.0)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;xdg-desktop-portal-wlr&lt;/code&gt; (I have version: 0.1.0)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These three components has to have systemd user services. You should be able
to see them in the list if you run &lt;code&gt;systemctl --user&lt;/code&gt;, just look for the
different programs name ending in &lt;code&gt;.service&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Switching to Wayland (Sway)</title><link>https://elis.nu/blog/2021/02/switching-to-wayland-sway/</link><pubDate>Wed, 17 Feb 2021 22:00:00 +0100</pubDate><guid>https://elis.nu/blog/2021/02/switching-to-wayland-sway/</guid><description>&lt;p&gt;Like every other desktop Linux user for the past many years I&amp;rsquo;ve used X11. I
was on &lt;a href="https://i3wm.org/"&gt;i3wm&lt;/a&gt; for quite some time until I was introduced to
&lt;a href="https://github.com/ch11ng/exwm"&gt;Emacs X11 Window Manager&lt;/a&gt; which I used
exclusively for about 18 months, I&amp;rsquo;ve even held a &lt;a href="https://elis.nu/talks/"&gt;talk&lt;/a&gt; about it.
But at some point it got too annoying, for example in multi monitor use cases.&lt;/p&gt;
&lt;p&gt;At this point my first step was to go back to set up i3wm again. With that
set up I wanted to give &lt;a href="https://swaywm.org/"&gt;SwayWM&lt;/a&gt; another attempt, it was
years ago I&amp;rsquo;ve checked it out before. I think my previous experience was when the
project was new. At that point (if I remember correctly), not even the window
decorations looked like the ones in i3wm.&lt;/p&gt;</description></item><item><title>Ultra wide monitor</title><link>https://elis.nu/blog/2021/02/ultra-wide-monitor/</link><pubDate>Mon, 15 Feb 2021 21:15:00 +0100</pubDate><guid>https://elis.nu/blog/2021/02/ultra-wide-monitor/</guid><description>&lt;p&gt;A couple of months (after at least half a year of thinking) I finally decided
to do it. I decided to buy a Ultra wide screen for my home office. The one I
had been looking at for months is the &lt;a href="https://pricespy.co.uk/computers-accessories/monitors/samsung-odyssey-c49g95t--p5258106"&gt;Samsung Odyssey G9 C49G95&lt;/a&gt;. It happens
to be the opposite of cheap. Part of the triggering factor was a conversation
on IRC in &lt;a href="https://logs.nix.samueldr.com/nixos-chat/2020-12-06#1607250103-1607250291;"&gt;#nixos-chat&lt;/a&gt; where a person admitted that she had one of those. Then
the real trigger to buy it was to find it at 23% discount. It was a return
item to a store.&lt;/p&gt;</description></item><item><title>I find food habits at Free Software events weird</title><link>https://elis.nu/blog/2021/01/i-find-food-habits-at-free-software-events-weird/</link><pubDate>Tue, 26 Jan 2021 21:30:00 +0100</pubDate><guid>https://elis.nu/blog/2021/01/i-find-food-habits-at-free-software-events-weird/</guid><description>&lt;p&gt;This is a follow-up on: &lt;a href="https://elis.nu/blog/2021/01/why-i-use-free-software/"&gt;Why I use Free Software&lt;/a&gt;,
&lt;a href="https://elis.nu/blog/2021/01/why-i-got-into-veganism/"&gt;Why I got into Veganism&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Since the Free Software movement in it&amp;rsquo;s core is an ethical movement, which
cares about human rights and humans access and ability to study, share and
improve on the software they use. I&amp;rsquo;m well aware that not everyone in the
Free Software community is in it for ethical reasons - but I&amp;rsquo;m pretty sure
that there&amp;rsquo;s enough of us that care about ethics for this to be important.&lt;/p&gt;</description></item><item><title>Why I got into Veganism</title><link>https://elis.nu/blog/2021/01/why-i-got-into-veganism/</link><pubDate>Wed, 20 Jan 2021 21:00:00 +0100</pubDate><guid>https://elis.nu/blog/2021/01/why-i-got-into-veganism/</guid><description>&lt;p&gt;&lt;img src="https://elis.nu/blog/2021/01/why-i-got-into-veganism/metric-for-ethics.webp" alt="Metric for ethics"&gt;&lt;/p&gt;
&lt;p&gt;This is a follow-up on: &lt;a href="https://elis.nu/blog/2021/01/why-i-use-free-software/"&gt;Why I use Free Software&lt;/a&gt;. This has been followed up
by: &lt;a href="https://elis.nu/blog/2021/01/i-find-food-habits-at-free-software-events-weird/"&gt;I find food habits at Free Software events weird&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;People who turn to &lt;a href="https://en.wikipedia.org/wiki/Veganism#Ethical_veganism"&gt;Veganism&lt;/a&gt; can do this for different reasons,
some do it for health reasons, others for climate reasons. But in it&amp;rsquo;s core,
the Vegan movement in itself is an ethical movement about saving the animals.
The other reasons are more or less side effects.&lt;/p&gt;</description></item><item><title>Why I use Free Software</title><link>https://elis.nu/blog/2021/01/why-i-use-free-software/</link><pubDate>Sat, 16 Jan 2021 23:30:00 +0100</pubDate><guid>https://elis.nu/blog/2021/01/why-i-use-free-software/</guid><description>&lt;p&gt;This has been followed up by: &lt;a href="https://elis.nu/blog/2021/01/why-i-got-into-veganism/"&gt;Why I got into Veganism&lt;/a&gt;,
&lt;a href="https://elis.nu/blog/2021/01/i-find-food-habits-at-free-software-events-weird/"&gt;I find food habits at Free Software events weird&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;People in general may have different reasons for choosing to use
&lt;a href="https://en.wikipedia.org/wiki/Free_software"&gt;Free Software&lt;/a&gt;, some
may use it for the price, others because of pragmatic reasons,
simply put it&amp;rsquo;s the best tool for the job. Others may choose it for
ethical reasons.&lt;/p&gt;
&lt;p&gt;I didn&amp;rsquo;t get into Free Software for any of the said reasons above, I got into
Free Software because it seemed different and fun. The free price point is
what made it possible for me as a teenager to play around with it as I did.&lt;/p&gt;</description></item><item><title>Weechat Android SSH relay setup</title><link>https://elis.nu/blog/2020/08/weechat-android-ssh-relay-setup/</link><pubDate>Fri, 14 Aug 2020 18:00:00 +0100</pubDate><guid>https://elis.nu/blog/2020/08/weechat-android-ssh-relay-setup/</guid><description>&lt;p&gt;Setting up the Weechat Android &lt;a href="https://github.com/ubergeek42/weechat-android"&gt;




 


&lt;i class="fab fa-fab fa-github "&gt;&lt;/i&gt;
 GitHub&lt;/a&gt;
&lt;a href="https://play.google.com/store/apps/details?id=com.ubergeek42.WeechatAndroid"&gt;




 


&lt;i class="fab fa-fab fa-google-play "&gt;&lt;/i&gt;
 Play Store&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;relay client over SSH can be a bit tricky and quite bad at giving useful error messages. So since I&amp;rsquo;m
going through a re-setup of that I&amp;rsquo;m also writing down my notes here.&lt;/p&gt;
&lt;h2 id="weechat-configuration"&gt;Weechat configuration&lt;/h2&gt;
&lt;p&gt;Type the following commands into Weechat.&lt;/p&gt;
&lt;p&gt;Placeholders such as &lt;code&gt;{port}&lt;/code&gt; and &lt;code&gt;{password}&lt;/code&gt; will be used here and later
on. Suggested default port is &lt;code&gt;9000&lt;/code&gt;, but you need to chose something
unique on your system. This is especially important if you have a multi user
system. Setting a &lt;code&gt;{password}&lt;/code&gt; is also especially important if you have a
multi user system.&lt;/p&gt;</description></item><item><title>My battle with wrist pains</title><link>https://elis.nu/blog/2020/08/my-battle-with-wrist-pains/</link><pubDate>Sun, 09 Aug 2020 18:00:00 +0100</pubDate><guid>https://elis.nu/blog/2020/08/my-battle-with-wrist-pains/</guid><description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; I&amp;rsquo;m not a doctor, dietitian or ergonomics expert. I just have spent a
lot of time to find something that works well for me. This is my experience
and you can probably take inspiration for it, but don&amp;rsquo;t do stupid things and
seek expert advice if you need it.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;In parts of the IT industry abbreviations like
&lt;a href="https://en.wikipedia.org/wiki/Repetitive_strain_injury"&gt;RSI&lt;/a&gt; and
&lt;a href="https://en.wikipedia.org/wiki/Carpal_tunnel_syndrome"&gt;CTS&lt;/a&gt;
gets thrown around fairly often. I&amp;rsquo;m guilty myself of doing this.&lt;/p&gt;</description></item><item><title>NixOS ❄: tmpfs as home</title><link>https://elis.nu/blog/2020/06/nixos-tmpfs-as-home/</link><pubDate>Sat, 27 Jun 2020 22:30:00 +0100</pubDate><guid>https://elis.nu/blog/2020/06/nixos-tmpfs-as-home/</guid><description>&lt;p&gt;This is a follow-up post for my earlier post: &lt;a href="https://elis.nu/blog/2020/05/nixos-tmpfs-as-root/"&gt;NixOS ❄: tmpfs as root&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;When you start to go down the route of setting up a “pure” system that is as
clean as you want it to be on each boot. You may start with the lazy route of
using a persistent partition for your home directory. But it never feels
quite right. But initially it&amp;rsquo;s so convenient to choose this path.&lt;/p&gt;</description></item><item><title>NixOS ❄: tmpfs as root</title><link>https://elis.nu/blog/2020/05/nixos-tmpfs-as-root/</link><pubDate>Sat, 02 May 2020 10:00:00 +0100</pubDate><guid>https://elis.nu/blog/2020/05/nixos-tmpfs-as-root/</guid><description>&lt;p&gt;This post covers both EFI and legacy boot setups.&lt;/p&gt;
&lt;p&gt;One fairly unique property of NixOS is the ability to boot with only &lt;code&gt;/boot&lt;/code&gt;
and &lt;code&gt;/nix&lt;/code&gt;. Nothing else is actually required. This supports doing all sorts
of weird things with your root file system.&lt;/p&gt;
&lt;p&gt;One way is to do like &lt;a href="https://grahamc.com/blog/erase-your-darlings"&gt;Graham&amp;rsquo;s post &amp;ldquo;erase your darlings&amp;rdquo;&lt;/a&gt; describes and empty
your root file system each boot using ZFS snapshots. This way have some cool
things that you could do on top of his setup, such as doing snapshots when
it&amp;rsquo;s running and roll-back to empty on boot. That way you actually can go
back to recover files you lost but still have an empty state.&lt;/p&gt;</description></item><item><title>PHP packaging in NixOS ❄</title><link>https://elis.nu/blog/2020/04/php-packaging-in-nixos/</link><pubDate>Sun, 05 Apr 2020 20:00:00 +0200</pubDate><guid>https://elis.nu/blog/2020/04/php-packaging-in-nixos/</guid><description>&lt;p&gt;This is a sneak peak into the future 20.09 release of NixOS.&lt;/p&gt;
&lt;p&gt;The PHP packaging ecosystem in NixOS has been in a quite sad state for a long
time. Partly because of the lack of people caring about PHP in Nix, but also
that PHP is a bit weird when it comes to packaging.&lt;/p&gt;
&lt;h2 id="state-of-php-before-nixos-2009"&gt;State of PHP before NixOS 20.09&lt;/h2&gt;
&lt;p&gt;Due to the lack of ability to do clever things like the python community does
with =withPackages= to compose a package with the dependencies you need we
have defaulted to provide a huge default package to accommodate all needs.&lt;/p&gt;</description></item><item><title>Double stitched Penguin Beanie</title><link>https://elis.nu/blog/2020/02/double-stitched-penguin-beanie/</link><pubDate>Sat, 08 Feb 2020 17:00:00 +0100</pubDate><guid>https://elis.nu/blog/2020/02/double-stitched-penguin-beanie/</guid><description>&lt;p&gt;&lt;img src="https://elis.nu/blog/2020/02/double-stitched-penguin-beanie/friendly_penguin_front_and_side.webp" alt="Friendly front and side of penguin beanie"&gt;&lt;/p&gt;
&lt;p&gt;This is a quite unusual post for this blog, it&amp;rsquo;s not what I&amp;rsquo;ve expected to
put on here. But I wanted to share it somewhere more permanent than many
other places where I hang out on the internet. So here it goes.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve been knitting for a bunch of years now, and some years ago I was
intrigued by a knitting method that is called double knitting. In theory it&amp;rsquo;s
fairly simple because you basically make two knitting&amp;rsquo;s at the same time in
parallel and mirror the pattern.&lt;/p&gt;</description></item><item><title>Encrypted ZFS mirror with mirrored boot on NixOS</title><link>https://elis.nu/blog/2019/08/encrypted-zfs-mirror-with-mirrored-boot-on-nixos/</link><pubDate>Sun, 04 Aug 2019 10:20:00 +0200</pubDate><guid>https://elis.nu/blog/2019/08/encrypted-zfs-mirror-with-mirrored-boot-on-nixos/</guid><description>&lt;p&gt;So for a long time I have wanted to replace my file server, because it&amp;rsquo;s an
old HP Microserver that is really slow. And at the same time I have had this
beast of a desktop tower PC that I haven&amp;rsquo;t used with a Xeon and 32GiB ECC
memory that has just been turned off due to noise. The obvious solution is to
re-purpose that install and move it to a location where noise doesn&amp;rsquo;t matter,
e.g. the closet (a.k.a the server room) where the file server lives.&lt;/p&gt;</description></item><item><title>Hello World!</title><link>https://elis.nu/blog/hello-world/</link><pubDate>Sat, 08 Jun 2019 20:10:00 +0100</pubDate><guid>https://elis.nu/blog/hello-world/</guid><description>&lt;p&gt;Hello world! This is a test blog post.&lt;/p&gt;
&lt;p&gt;This is an external link &lt;a href="https://example.org/"&gt;example.org&lt;/a&gt;. Internal link &lt;a href="https://elis.nu/"&gt;start page&lt;/a&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;This is a block quote element.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This is an inline &lt;code&gt;code&lt;/code&gt; block.&lt;/p&gt;
&lt;h2 id="test-of-syntax-highlighting"&gt;Test of syntax highlighting&lt;/h2&gt;
&lt;h3 id="elisp"&gt;elisp&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-elisp" data-lang="elisp"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;;; Define the hello function&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;defun&lt;/span&gt; &lt;span class="nv"&gt;hello&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s"&gt;&amp;#34;This
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; is my
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; docstring&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;message&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;world&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;;; Call the hello function&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;hello&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="nix"&gt;Nix&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-nix" data-lang="nix"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# Define the hello function&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;hello&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{}:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;world&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# More tests&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;boolean&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;true&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;fileimport&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="sr"&gt;./src/file.nix&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# Call the hello function&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;message&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;hello&lt;/span&gt; &lt;span class="p"&gt;{};&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="go"&gt;Go&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;package&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;main&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;import&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;#34;fmt&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kd"&gt;func&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;fmt&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Println&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;Hello world&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="php"&gt;PHP&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-php" data-lang="php"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;&amp;lt;?&lt;/span&gt;&lt;span class="nx"&gt;php&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Define the hello function
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;hello&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;void&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;world&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// Call the hello function
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;hello&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="sample-text"&gt;Sample text&lt;/h2&gt;
&lt;p&gt;Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Tempor orci dapibus
ultrices in iaculis nunc sed augue lacus. Donec ac odio tempor orci dapibus
ultrices in. Faucibus vitae aliquet nec ullamcorper sit amet risus. Pulvinar
sapien et ligula ullamcorper malesuada proin libero. Magna sit amet purus
gravida quis blandit turpis cursus in. Elit ullamcorper dignissim cras
tincidunt lobortis feugiat vivamus at augue. Ut morbi tincidunt augue
interdum. Enim ut tellus elementum sagittis vitae et. At augue eget arcu
dictum varius duis.&lt;/p&gt;</description></item></channel></rss>