<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Hari&apos;s Weblog</title><description>(Very) occasional posts and musings | All Feeds</description><link>https://haripm.com/</link><item><title>Solving AoC Day 3 Without Thinking</title><link>https://haripm.com/2025/12/03/aoc-day-3-without-thinking/</link><guid isPermaLink="true">https://haripm.com/2025/12/03/aoc-day-3-without-thinking/</guid><description>&lt;p&gt;&lt;a href=&quot;https://tangled.org/haripm.com/aoc_2025&quot;&gt;I&amp;#39;m doing&lt;/a&gt; &lt;a href=&quot;https://adventofcode.com&quot;&gt;Advent of Code&lt;/a&gt; again this year, and part 1 of &lt;a href=&quot;https://adventofcode.com/2025/day/3&quot;&gt;today&amp;#39;s problem&lt;/a&gt; reminded me immediately of some of the problems I&amp;#39;m doing in my &lt;a href=&quot;https://ucd.ie/modules/COMP30060&quot;&gt;Program Construction&lt;/a&gt; module at UCD. So, I&amp;#39;m going to be coming up with a formally verified algorithm to solve Part 1 using Edsger W. Dijkstra&amp;#39;s Structured Programming style of Program Composition.&lt;/p&gt;
&lt;a href=&quot;https://haripm.com/2025/12/03/aoc-day-3-without-thinking&quot;&gt;Read the full post.&lt;/a&gt;</description><pubDate>Wed, 03 Dec 2025 17:27:22 GMT</pubDate></item><item><title>Semester in Review: Stage 2 Autumn</title><link>https://haripm.com/2025/01/01/autumn-stage-2/</link><guid isPermaLink="true">https://haripm.com/2025/01/01/autumn-stage-2/</guid><description>&lt;p&gt;A while back, I came across a couple of other blogs by college students reviewing the courses they took over the previous semester. I decided to do the same because it feels like a good way to lend a sense of closure to the semester, especially since exam season was a mad rush without time for much else than revision.&lt;/p&gt;
&lt;a href=&quot;https://haripm.com/2025/01/01/autumn-stage-2&quot;&gt;Read the full post.&lt;/a&gt;</description><pubDate>Wed, 01 Jan 2025 00:00:00 GMT</pubDate></item><item><title>The Docker Container Only Works on My Computer</title><link>https://haripm.com/2024/07/11/docker-bad-dns/</link><guid isPermaLink="true">https://haripm.com/2024/07/11/docker-bad-dns/</guid><description>&lt;p&gt;A few months ago, one of NetSoc&amp;#39;s committee members built an &lt;a href=&quot;https://www.reddit.com/r/place&quot;&gt;r/place&lt;/a&gt; clone just for NetSoc&amp;#39;s members, and we figured it would be nice to have a Discord bot to periodically take screenshots of the pixel art website and post updates to our server. When I volunteered to make it (because why not?), I never thought I&amp;#39;d spend about 5 hours wrestling with Docker while trying to deploy the app to our server, because &lt;em&gt;the Dockerised app would only run on my computer.&lt;/em&gt;&lt;/p&gt;
&lt;a href=&quot;https://haripm.com/2024/07/11/docker-bad-dns&quot;&gt;Read the full post.&lt;/a&gt;</description><pubDate>Thu, 11 Jul 2024 12:27:23 GMT</pubDate></item><item><title>Insertion Sort is... Crappy Mergesort?</title><link>https://haripm.com/2025/02/19/insertion-sort-is-merge-sort/</link><guid isPermaLink="true">https://haripm.com/2025/02/19/insertion-sort-is-merge-sort/</guid><description>&lt;p&gt;Something I realised while playing around with sorts in Haskell.&lt;/p&gt;
&lt;a href=&quot;https://haripm.com/2025/02/19/insertion-sort-is-merge-sort&quot;&gt;Read the full post.&lt;/a&gt;</description><pubDate>Wed, 19 Feb 2025 00:00:00 GMT</pubDate></item><item><title>Notes from January 2026</title><link>https://haripm.com/2026/01/31/jan-26/</link><guid isPermaLink="true">https://haripm.com/2026/01/31/jan-26/</guid><description>&lt;p&gt;It&amp;#39;s almost spring!&lt;/p&gt;
&lt;a href=&quot;https://haripm.com/2026/01/31/jan-26&quot;&gt;Read the full post.&lt;/a&gt;</description><pubDate>Sat, 31 Jan 2026 22:27:00 GMT</pubDate></item><item><title>My Self-Hosted Setup</title><link>https://haripm.com/2024/08/29/my-selfhosted-setup/</link><guid isPermaLink="true">https://haripm.com/2024/08/29/my-selfhosted-setup/</guid><description>&lt;p&gt;I recently deployed a couple of services on a VM in the cloud so I could get my feet wet when it comes to self-hosting apps for my own personal use. So far, it&amp;#39;s been pretty fun but also frustrating at times; I figured I&amp;#39;d document everything I&amp;#39;ve done up until now so it&amp;#39;s easier for me when I migrate to a different server at some point in the future.&lt;/p&gt;
&lt;a href=&quot;https://haripm.com/2024/08/29/my-selfhosted-setup&quot;&gt;Read the full post.&lt;/a&gt;</description><pubDate>Thu, 29 Aug 2024 13:33:27 GMT</pubDate></item><item><title>Setting up Neovim on NixOS</title><link>https://haripm.com/2025/09/05/neovim-nixos-setup/</link><guid isPermaLink="true">https://haripm.com/2025/09/05/neovim-nixos-setup/</guid><description>&lt;p&gt;Of all the pieces of software I had to set up again when I switched to NixOS, Neovim took me the longest. This kind of surprised me at first: given that the Venn Diagram of NixOS users and Neovim users is fairly close to a circle ­— the set of people who are most productive when fiddling with configuration — I thought it&amp;#39;d be a breeze to get Neovim going on NixOS. Unfortunately, all that seems to have happened is, perhaps predictably, the evolution of a dozen different ways to go about this.&lt;/p&gt;
&lt;a href=&quot;https://haripm.com/2025/09/05/neovim-nixos-setup&quot;&gt;Read the full post.&lt;/a&gt;</description><pubDate>Fri, 05 Sep 2025 14:21:28 GMT</pubDate></item><item><title>Nixmas Pt. 1 - Spring (Winter) Cleaning</title><link>https://haripm.com/2026/01/13/nixmas-part-1/</link><guid isPermaLink="true">https://haripm.com/2026/01/13/nixmas-part-1/</guid><description>&lt;p&gt;I&amp;#39;ve been using NixOS since June 21 2025, according to my commit history, but I never bothered to really learn Nix after setting it up.Recently, a couple of my friends started getting into Nix themselves.I couldn&amp;#39;t miss out on the fun, so decided to reboot my system config over the holidays, fully modularising my Nix flake and upgrading my old Ubuntu VPS to &lt;em&gt;three&lt;/em&gt; new NixOS servers for my self-hosted experiments!&lt;/p&gt;
&lt;a href=&quot;https://haripm.com/2026/01/13/nixmas-part-1&quot;&gt;Read the full post.&lt;/a&gt;</description><pubDate>Tue, 13 Jan 2026 12:40:49 GMT</pubDate></item><item><title>Nixmas Pt. 2 - The Wild, Wild Web</title><link>https://haripm.com/2026/01/17/nixmas-part-2/</link><guid isPermaLink="true">https://haripm.com/2026/01/17/nixmas-part-2/</guid><description>&lt;p&gt;In my last post, I wrote about cleaning up the Nix flake I use to configure my laptop and promised to describe using Nix to manage remote servers in a later post. This is that post!&lt;/p&gt;
&lt;a href=&quot;https://haripm.com/2026/01/17/nixmas-part-2&quot;&gt;Read the full post.&lt;/a&gt;</description><pubDate>Sat, 17 Jan 2026 21:25:39 GMT</pubDate></item><item><title>Nixmas Pt. 3 - Friendship ended with Docker...</title><link>https://haripm.com/2026/01/17/nixmas-part-3/</link><guid isPermaLink="true">https://haripm.com/2026/01/17/nixmas-part-3/</guid><description>&lt;p&gt;Now Podman is my best friend! I have a couple of servers up and running with Caddy installed, so I can finally go about setting up the services I want to self-host. I like running my services in OCI containers and knowing they&amp;#39;re well isolated from each other. Previously, I&amp;#39;d been using Docker, but I&amp;#39;ve had my eye on Podman for a while now due to its rootless, daemonless model and systemd integration.&lt;/p&gt;
&lt;a href=&quot;https://haripm.com/2026/01/17/nixmas-part-3&quot;&gt;Read the full post.&lt;/a&gt;</description><pubDate>Sat, 17 Jan 2026 21:25:40 GMT</pubDate></item><item><title>Using the Shunting Yard Algorithm to Write Truth Tables</title><link>https://haripm.com/2024/07/28/shunting-yard-truth-tables/</link><guid isPermaLink="true">https://haripm.com/2024/07/28/shunting-yard-truth-tables/</guid><description>&lt;p&gt;If you&amp;#39;ve gone through the first year of a undergraduate Computer Science degree, you&amp;#39;ll have written enough truth tables to last you a lifetime. Personally, I decided I&amp;#39;d had enough halfway through the semester and wrote a program to write my truth tables for me in Go. Unfortunately, we&amp;#39;d moved on from the topic before I finished working on this, but I still think it&amp;#39;s a pretty interesting project.&lt;/p&gt;
&lt;a href=&quot;https://haripm.com/2024/07/28/shunting-yard-truth-tables&quot;&gt;Read the full post.&lt;/a&gt;</description><pubDate>Sun, 28 Jul 2024 18:04:49 GMT</pubDate></item><item><title>Using Htpdate</title><link>https://haripm.com/2024/06/10/using-htpdate/</link><guid isPermaLink="true">https://haripm.com/2024/06/10/using-htpdate/</guid><description>&lt;p&gt;While doing some routine maintenance on a society server running Ubuntu (I&amp;#39;m a sysadmin for my university&amp;#39;s computer and networking society), I noticed that its system clock had drifted away from the true time by approximately 20 minutes. This amount of drift isn&amp;#39;t something one would expect to see on a long-running server with an active NTP service ... except, of course, the NTP service wasn&amp;#39;t working.&lt;/p&gt;
&lt;a href=&quot;https://haripm.com/2024/06/10/using-htpdate&quot;&gt;Read the full post.&lt;/a&gt;</description><pubDate>Mon, 10 Jun 2024 13:11:17 GMT</pubDate></item><item><title>Simon Willison&apos;s approach to running a link blog</title><link>https://haripm.com/2026/01/01/simonw-link-blog/</link><guid isPermaLink="true">https://haripm.com/2026/01/01/simonw-link-blog/</guid><pubDate>Thu, 01 Jan 2026 19:47:16 GMT</pubDate><content:encoded>&lt;a href=https://simonwillison.net/2024/Dec/22/link-blog/ rel=&quot;external noopener noreferrer&quot;&gt;Simon Willison&apos;s approach to running a link blog&lt;/a&gt;.&lt;p&gt;I&amp;#39;m finally getting around to publishing a link blog! And what better
post to start off with than Simon Willison talking about his approach to
maintaining a link blog.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt; A slightly self-involved concern I have is that I like to prove that I’ve
read it. This is more for me than for anyone else: I don’t like to recommend
something if I’ve not read that thing myself, and sticking in a detail that
shows I read past the first paragraph helps keep me honest about that.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This is important to me too, but I&amp;#39;d like to prove it to myself more than
anyone else. I&amp;#39;ve wanted for a long time to more critically engage with
things I read online, and hopefully this link blog will make me read and
understand more deeply than I would otherwise.&lt;/p&gt;
&lt;p&gt;It&amp;#39;s part of a larger effort to spruce up my website and self-hosted setup that
I&amp;#39;m very excited about!&lt;/p&gt;
</content:encoded></item><item><title>Note from 4 Jan</title><link>https://haripm.com/2026/01/04/bad-is-okay/</link><guid isPermaLink="true">https://haripm.com/2026/01/04/bad-is-okay/</guid><pubDate>Sun, 04 Jan 2026 21:36:47 GMT</pubDate><content:encoded>&lt;p&gt;I&amp;#39;d really like for this website to be around in 20 years.
And that means &lt;em&gt;this&lt;/em&gt; website won&amp;#39;t be around in 20 years.
It&amp;#39;ll have been Ship-of-Theseus&amp;#39;d out of existence multiple times over by then.&lt;/p&gt;
&lt;p&gt;It&amp;#39;s really quite a freeing realisation, because it means I can quit obsessing over the little details and actually do the thing that matters, which is writing for this blog.
It doesn&amp;#39;t matter if the padding and margins are inconsistent in some places, nor does it matter that the code I use to generate this site is a bit messy and could be refactored.
The only thing left five, ten, twenty years from today will be my words, not the pretty frame around them.&lt;/p&gt;
&lt;p&gt;Obviously, this isn&amp;#39;t to say I&amp;#39;ve stopped caring about the appearance or accessibility of my blog.
I could never do that.&lt;/p&gt;
&lt;p&gt;But in general, I think I should take myself less seriously.
Do things that aren&amp;#39;t perfect, or great, or even &lt;em&gt;good&lt;/em&gt;.
Too often, I&amp;#39;ve found myself losing motivation for a project or putting it off indefinitely after setting unreasonable expectations for myself and quickly realising I won&amp;#39;t be able to meet them.
In some cases, many cases, it&amp;#39;s okay if what I make is &amp;quot;bad&amp;quot;, because at least it &lt;em&gt;is&lt;/em&gt;, as opposed to just a daydream rotting away inside my head.
If there&amp;#39;s potential there, then my first iteration is never going to be the final iteration anyway!&lt;/p&gt;
</content:encoded></item><item><title>Note from 3 Jan</title><link>https://haripm.com/2026/01/03/helix/</link><guid isPermaLink="true">https://haripm.com/2026/01/03/helix/</guid><pubDate>Sat, 03 Jan 2026 00:11:12 GMT</pubDate><content:encoded>&lt;p&gt;I&amp;#39;ve been using &lt;a href=&quot;https://helix-editor.com/&quot;&gt;Helix&lt;/a&gt; since October 22 2025,
according to the commit history on my system&amp;#39;s Nix flake.
Coming from Neovim, it wasn&amp;#39;t a radical change, but there are some things
that Helix does right, imo:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Select-then-edit model&lt;/strong&gt;: In the traditional Vi(m) editing model, your
keybinds look like &lt;code&gt;&amp;lt;action&amp;gt;&amp;lt;selection&amp;gt;&lt;/code&gt; e.g. &lt;code&gt;dw&lt;/code&gt; to delete the next word.
Helix keybinds work in reverse i.e. &lt;code&gt;&amp;lt;selection&amp;gt;&amp;lt;action&amp;gt;&lt;/code&gt;.
After using it for a while, I&amp;#39;m convinced that this is a much more intuitive
way to edit text: being able to see what your action will affect before you
do it makes for a much nicer experience.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Approach to configuration&lt;/strong&gt;: Unlike Neovim, Helix doesn&amp;#39;t let you install
and configure plugins.
I maintained a pretty lean Neovim setup anyway, so this didn&amp;#39;t come as too
jarring of a change to me.
Helix comes with a lot of great features out of the box: LSP support,
syntax highlighting with Tree-Sitter, basic Git integration, etc.
Just like &lt;a href=&quot;https://fishshell.com/&quot;&gt;Fish&lt;/a&gt;, Helix comes with really good defaults.
My config (TOML!) comes out at &amp;lt;45 lines: 12 for the editor itself and 30 for
telling it which formatters to use.
I do wish it came with a built-in file explorer though :(&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The only downside so far is that editors and IDEs like Zed and IDEA don&amp;#39;t
have great Helix keybinding support yet, but I&amp;#39;ll cross that bridge when I
come to it.&lt;/p&gt;
</content:encoded></item></channel></rss>