<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Home on mfashby.net</title>
    <link>https://mfashby.net/</link>
    <description>Recent content in Home on mfashby.net</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-gb</language>
    <lastBuildDate>Mon, 05 Feb 2024 19:56:17 +0000</lastBuildDate>
    <atom:link href="https://mfashby.net/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Fairphone</title>
      <link>https://mfashby.net/posts/2024-02-05-phones/</link>
      <pubDate>Mon, 05 Feb 2024 19:56:17 +0000</pubDate>
      <guid>https://mfashby.net/posts/2024-02-05-phones/</guid>
      <description>I bought a fairphone 4 just under 2 years ago. I&amp;rsquo;m pleased to say last week I repaired it! I had accidentally filled the pocket on my jeans with sand on holiday, and then I put the phone in the pocket. The USB-C on the bottom of the phone got sand in it, and stopped holding a cable correctly. It just about worked for charging still, but the cable would pop out very easily, and this was pretty inconvenient.</description>
    </item>
    <item>
      <title>1brc</title>
      <link>https://mfashby.net/posts/2024-02-01-1brc/</link>
      <pubDate>Thu, 01 Feb 2024 13:58:47 +0000</pubDate>
      <guid>https://mfashby.net/posts/2024-02-01-1brc/</guid>
      <description>I had a go at the One Billion Row Challenge, but in Zig rather than Java.&#xA;I got down to about 10 seconds :) the leading java solution runs in 2 seconds on my desktop machine (and that&amp;rsquo;s without speedup from using GraalVM)</description>
    </item>
    <item>
      <title>Book - Data Oriented Design</title>
      <link>https://mfashby.net/posts/2024-01-26-data-oriented-design/</link>
      <pubDate>Fri, 26 Jan 2024 20:19:31 +0000</pubDate>
      <guid>https://mfashby.net/posts/2024-01-26-data-oriented-design/</guid>
      <description>I recently read Data Oriented Design by Richard Fabian.&#xA;The book is about software design; and specifically it relates to software design in games, but the principals are partially relevant to other domains as well.&#xA;The main take away seems to be that &amp;lsquo;Object Oriented Design&amp;rsquo; fails to deliver on some of the properties that software engineers think it will give their projects, as well as being hurtful for performance in general due to it&amp;rsquo;s inherent incompatibility with how modern CPUs work.</description>
    </item>
    <item>
      <title>Dynamic DNS</title>
      <link>https://mfashby.net/posts/2024-01-26-dyn/</link>
      <pubDate>Fri, 26 Jan 2024 00:02:35 +0000</pubDate>
      <guid>https://mfashby.net/posts/2024-01-26-dyn/</guid>
      <description>I recently upgraded my home broadband, however in the process I lost my static IP address. I have requested a new one, but in the meantime I wrote a program to dynamically update my DNS records in case my router restarts and my WAN IP address changes.&#xA;I didn&amp;rsquo;t really want to change providers in order to move to a proper dynamic DNS setup, since this is a temporary solution, but I did enjoy writing a little code to make it work with my current DNS provider (digital ocean).</description>
    </item>
    <item>
      <title>Advent of Code 2023</title>
      <link>https://mfashby.net/posts/2023-12-01-aoc2023/</link>
      <pubDate>Fri, 01 Dec 2023 21:42:21 +0000</pubDate>
      <guid>https://mfashby.net/posts/2023-12-01-aoc2023/</guid>
      <description>I&amp;rsquo;m doing Advent of Code again this year, this time in Zig.&#xA;I&amp;rsquo;m posting the code here.</description>
    </item>
    <item>
      <title>Skateboard 2</title>
      <link>https://mfashby.net/posts/2023-11-26-skateboard-2/</link>
      <pubDate>Sun, 26 Nov 2023 20:33:27 +0000</pubDate>
      <guid>https://mfashby.net/posts/2023-11-26-skateboard-2/</guid>
      <description>I&amp;rsquo;ve been skating indoors at LS-ten skatepark recently, as the poor weather over the last few weeks has made outdoor skating&amp;hellip; not fun. I&amp;rsquo;ve mostly abandoned my shorter board in favour of the Lush Throttle. At 34&amp;quot; length it&amp;rsquo;s not too much longer than a typical &amp;lsquo;popsicle&amp;rsquo; board, but I find it much more comfortable. I don&amp;rsquo;t mind the lack of double kicktail, and I prefer the longer wheelbase.&#xA;I&amp;rsquo;ve been working on the basics of skating ramps and bowls - drop-ins, roll-ins, kick turns, rock-to-fakie, and tail stall; and I&amp;rsquo;m still quite rough as you can see in the following video.</description>
    </item>
    <item>
      <title>Roc</title>
      <link>https://mfashby.net/posts/2023-11-25-roc/</link>
      <pubDate>Sat, 25 Nov 2023 21:19:27 +0000</pubDate>
      <guid>https://mfashby.net/posts/2023-11-25-roc/</guid>
      <description>I had a go at writing some code in the Roc programming language. It&amp;rsquo;s a functional programming language, which is statically typed, and compiled to a standalone executable. I first heard about it after listening to an interview with it&amp;rsquo;s author on the Legacy Code Rocks podcast, and later thought about it again after seeing a comment about it on hacker news.&#xA;I found it pretty easy to use. I&amp;rsquo;ve previously had a go at Haskell and Clojure, so I&amp;rsquo;m familiar with functional programming, but I&amp;rsquo;ve never been entirely comfortable with it.</description>
    </item>
    <item>
      <title>Zipdl</title>
      <link>https://mfashby.net/posts/2023-10-07-zipdl/</link>
      <pubDate>Sat, 07 Oct 2023 23:28:16 +0100</pubDate>
      <guid>https://mfashby.net/posts/2023-10-07-zipdl/</guid>
      <description>I wrote a small program for downloading individual files from a remote ZIP file on a http server that supports Range requests. This was an interesting learning exercise.&#xA;In case it&amp;rsquo;s useful to anyone, the code is available at https://code.mfashby.net/zipdl/&#xA;Binary releases:&#xA;linux aarch64 checksum linux x86_64 checksum Download the appropriate file for your platform and the checksum, then check and extract:&#xA;sha256sum -c zipdl.xz.sha256 # result MUST be zipdl.xz: OK unxz zipdl.</description>
    </item>
    <item>
      <title>Book - Parable of the Sower / Parable of the Talents</title>
      <link>https://mfashby.net/posts/2023-10-01-parable-of-the-sower/</link>
      <pubDate>Sun, 01 Oct 2023 22:23:00 +0100</pubDate>
      <guid>https://mfashby.net/posts/2023-10-01-parable-of-the-sower/</guid>
      <description>By Octavia E Butler. Note, spoilers&#xA;When I read fiction, I primarily read sci-fi. Some of my favourite authors include Iain M Banks, Terry Pratchett, Steven Baxter. I also enjoyed Frank Herbert&amp;rsquo;s original Dune series, and some of Issac Asimov&amp;rsquo;s short stories (particularly I Robot).&#xA;&amp;lsquo;Parable of the Sower&amp;rsquo; stood out to me in my local library&amp;rsquo;s tiny sci-fi section; I&amp;rsquo;d not previously read anything by Octavia E Butler. It doesn&amp;rsquo;t tread lightly: racism, sexism, violence, abuse and slavery are core themes, in a story where North America is tearing itself apart over a generation through crime, fear, and disorder.</description>
    </item>
    <item>
      <title>Mcl (minecraft launcher)</title>
      <link>https://mfashby.net/posts/2023-09-12-mcl/</link>
      <pubDate>Tue, 12 Sep 2023 07:03:15 +0100</pubDate>
      <guid>https://mfashby.net/posts/2023-09-12-mcl/</guid>
      <description>I wrote a minecraft launcher in zig as a learning exercise.&#xA;I got a lot of practice writing zig code and I learned a few things about it.&#xA;The GeneralPurposeAllocator is really useful for finding memory leaks, as is the std.testing.allocator for use in tests. The standard library HTTP client is really cool, but unfortunately fails on a lot of websites because it lacks TLSv1.2 support. Calling into C code is really easy.</description>
    </item>
    <item>
      <title>Comments 2</title>
      <link>https://mfashby.net/posts/2023-08-22-comments-2/</link>
      <pubDate>Tue, 22 Aug 2023 14:48:41 +0100</pubDate>
      <guid>https://mfashby.net/posts/2023-08-22-comments-2/</guid>
      <description>Previously I added a basic comment system to my website using a separate web server which served only the comment HTML. This is fine, but it does require another program running continuously on my server. Since that server is a raspberry pi, and it is running a lot of other software as well, and my blog doesn&amp;rsquo;t get a lot of hits (let alone comments), I thought I could do better by using the Common Gateway Interface (CGI).</description>
    </item>
    <item>
      <title>Four Eyes</title>
      <link>https://mfashby.net/posts/2023-08-11-4-eyes/</link>
      <pubDate>Fri, 11 Aug 2023 22:50:43 +0100</pubDate>
      <guid>https://mfashby.net/posts/2023-08-11-4-eyes/</guid>
      <description>The four-eyes principle (also known as two-man rule or no-lone-zone) stipulates that for certain very critical operations like the launch of a nuclear weapon or the handling of very sensitive cryptographic key material, at least two qualified persons must be actively involved.&#xA;I think the same principle should hold true in some IT operations work; for example some servers are running software that is both very important to keep running, and is also handling very sensitive data.</description>
    </item>
    <item>
      <title>Bike 2</title>
      <link>https://mfashby.net/posts/2023-06-16-bike/</link>
      <pubDate>Fri, 16 Jun 2023 21:04:31 +0100</pubDate>
      <guid>https://mfashby.net/posts/2023-06-16-bike/</guid>
      <description>I haven&amp;rsquo;t posted about my bike for a while; there have been a couple of changes.&#xA;Firstly; the freehub broke, which put it out of action completely until I could get it to the shop. It wound up being cheaper to get a replacement wheel than try to fix the freehub, and since the rims were worn anyway it was an easy choice. The tyres had also perished slightly, so I opted for some new ones, this time hybrids.</description>
    </item>
    <item>
      <title>Book - Designing Data Intensive Applications</title>
      <link>https://mfashby.net/posts/2023-04-09-designing-data-intensive-applications/</link>
      <pubDate>Sun, 09 Apr 2023 21:45:01 +0100</pubDate>
      <guid>https://mfashby.net/posts/2023-04-09-designing-data-intensive-applications/</guid>
      <description>Link to the book.&#xA;The book starts by describing very simple key-value database systems; then gradually introduces more concepts and features like indexes, joins, SQL (Structured Query Language), MapReduce, isolation, consensus, total order broadcast and so on, eventually winding up with data streaming systems. At each stage, the author explains the problems that such systems solve and the trade-offs that they make. The book does not dive too deeply into the algorithms that such systems use, although it does describe some key ones.</description>
    </item>
    <item>
      <title>Semantic Dissonance</title>
      <link>https://mfashby.net/posts/2023-02-05-semantic-dissonance/</link>
      <pubDate>Sun, 05 Feb 2023 16:38:55 +0000</pubDate>
      <guid>https://mfashby.net/posts/2023-02-05-semantic-dissonance/</guid>
      <description>A while ago I read Enterprise Integration Patterns. It was too long ago to write a review, however the phrase that I first encountered in that book and has stuck with me since is &amp;lsquo;semantic dissonance&amp;rsquo;. In the field of software development, this means that we have two (or more!) incompatible models of the same real-world situation. This happens a lot in healthcare IT. The latest and greatest standard for data exchange is Fast Healthcare Interoperability Records (FHIR).</description>
    </item>
    <item>
      <title>Book - Site Reliability Engineering</title>
      <link>https://mfashby.net/posts/2023-02-05-book-site-reliability-engineering/</link>
      <pubDate>Sun, 05 Feb 2023 15:53:43 +0000</pubDate>
      <guid>https://mfashby.net/posts/2023-02-05-book-site-reliability-engineering/</guid>
      <description>I&amp;rsquo;ve read Site Reliability Engineering (SRE) from Google/O&amp;rsquo;Reilly. It&amp;rsquo;s an interesting insight into how Google scales their operations work.&#xA;A core theme of the book is ensuring that &amp;lsquo;operations&amp;rsquo; work i.e. managing servers, computers, networks, hardware and applications scales sub-linearly with both the number of users of a service, and the number of services the company provides. The book is really a series of shorter articles about how Google accomplishes this through technology, business processes and personal interactions.</description>
    </item>
    <item>
      <title>Authorization and search operations</title>
      <link>https://mfashby.net/posts/2023-01-31-oso/</link>
      <pubDate>Tue, 31 Jan 2023 21:14:06 +0000</pubDate>
      <guid>https://mfashby.net/posts/2023-01-31-oso/</guid>
      <description>Background: at work I help to build a SAAS web application for healthcare. An important aspect of our web application is authorization. It&amp;rsquo;s a pretty hard problem, because the business has a fairly complex set of rules about who can see what data. The rules involve attributes of the subject and object, and the direct or indirect (e.g. via a group) relationship between them. It&amp;rsquo;s also a pretty important problem; healthcare data is typically very sensitive and we need to obey the law and keep our users&amp;rsquo; trust in order to provide useful services.</description>
    </item>
    <item>
      <title>Cgit</title>
      <link>https://mfashby.net/posts/2022-12-31-cgit/</link>
      <pubDate>Sat, 31 Dec 2022 23:39:38 +0000</pubDate>
      <guid>https://mfashby.net/posts/2022-12-31-cgit/</guid>
      <description>In a previous post I switched back from fossil to git. I found gitea to be a pretty good server. However, it has many features I do not use, and it takes a minimum of 15% of the RAM on my Raspberry Pi home server! I found a simpler setup.&#xA;I have switched to plain git server accessed with SSH, which git-scm documents how to set up. I&amp;rsquo;d still like a web UI to allow others to see and download my code.</description>
    </item>
    <item>
      <title>Comments</title>
      <link>https://mfashby.net/posts/2022-12-30-comments/</link>
      <pubDate>Fri, 30 Dec 2022 17:53:00 +0000</pubDate>
      <guid>https://mfashby.net/posts/2022-12-30-comments/</guid>
      <description>I&amp;rsquo;ve added an extremely basic, probably insecure, comments form to my blog site. I&amp;rsquo;ve built it in Rust for practice. Code is here.&#xA;It uses askama templates, axum web framework, sqlx for database access, and postgres database.&#xA;Askama offers compile-time validation of templates since it actually compiles the template to code, and sqlx does compile-time checking of SQL queries and generation of ad-hoc structs for convenience when reading data. These were both very efficient at catching coding errors I made.</description>
    </item>
    <item>
      <title>Spotifyd</title>
      <link>https://mfashby.net/posts/2022-12-26-spotifyd/</link>
      <pubDate>Mon, 26 Dec 2022 23:08:03 +0000</pubDate>
      <guid>https://mfashby.net/posts/2022-12-26-spotifyd/</guid>
      <description>I recently discovered spotifyd, an open source alternative to the deprecated libspotify. I happened to also have a pi-zero W from a while back, and a pHAT DAC amplifier.&#xA;It was a relatively trivial job to set up the pi zero w headless, get audio output to the pHAT DAC, install spotifyd and use it as a spotify connect device connected to my old Cambridge Audio A1.&#xA;Install guides:&#xA;raspberry pi headless, since I last used this, userconf.</description>
    </item>
    <item>
      <title>Longboard 5</title>
      <link>https://mfashby.net/posts/2022-12-20-longboard-5/</link>
      <pubDate>Tue, 20 Dec 2022 14:16:49 +0000</pubDate>
      <guid>https://mfashby.net/posts/2022-12-20-longboard-5/</guid>
      <description>I&amp;rsquo;ve been stuck inside with the cold weather recently. However, I&amp;rsquo;ve also discovered Ampskate which is a great little guide for learning longboard dance and freestyle.&#xA;Here&amp;rsquo;s a little clip:&#xA;There should have been a video here but your browser does not seem to support it. Which is my attempt at a cross-step. My goal is to learn the ghostride kickflip.</description>
    </item>
    <item>
      <title>Advent of Code</title>
      <link>https://mfashby.net/posts/2022-12-04-aoc/</link>
      <pubDate>Sun, 04 Dec 2022 08:54:56 +0000</pubDate>
      <guid>https://mfashby.net/posts/2022-12-04-aoc/</guid>
      <description>I&amp;rsquo;m having a go at Advent Of Code this year, this time writing solutions in Rust.&#xA;I have no chance at competing with ChatGPT though!</description>
    </item>
    <item>
      <title>Blogsite 2</title>
      <link>https://mfashby.net/posts/2022-10-15-blogsite2/</link>
      <pubDate>Sat, 15 Oct 2022 22:39:18 +0100</pubDate>
      <guid>https://mfashby.net/posts/2022-10-15-blogsite2/</guid>
      <description>I made another small experiment source to do my blog yet another way; rather than using hugo static site generation, I can leverage Caddy server&amp;rsquo;s built-in template rendering and markdown support to serve markdown files &amp;lsquo;directly&amp;rsquo; without a pre-build step.&#xA;In the end though, I will probably stick with static site generation. It offers some performance and security improvements such as no templating time, no possibility of vulnerabilities in the templating engine, in return for a little extra complexity having a build-step.</description>
    </item>
    <item>
      <title>Blogsite</title>
      <link>https://mfashby.net/posts/2022-10-14-blogsite/</link>
      <pubDate>Fri, 14 Oct 2022 22:59:01 +0100</pubDate>
      <guid>https://mfashby.net/posts/2022-10-14-blogsite/</guid>
      <description>I was thinking about this blog and how it&amp;rsquo;s set up. I covered the setup in a previous post, but it&amp;rsquo;s quite simple: the site is generated from markdown files with hugo and published to git. The server pulls from git on a schedule, rebuilds it and copies it to the web server directory.&#xA;I made a little experiment with a different approach source. Instead of statically generating the site, it&amp;rsquo;s a Single Page Application which does the templating and routing on the client side.</description>
    </item>
    <item>
      <title>Caddy</title>
      <link>https://mfashby.net/posts/2022-10-14-caddy/</link>
      <pubDate>Fri, 14 Oct 2022 22:58:22 +0100</pubDate>
      <guid>https://mfashby.net/posts/2022-10-14-caddy/</guid>
      <description>I switched to caddy from nginx. Caddy has a &amp;lsquo;simpler&amp;rsquo; configuration syntax, and offers built-in automatic TLS support with letsencrypt. I&amp;rsquo;ve also enabled automatic TLS support in maddy mail server, and I have been able to remove certbot entirely from my home server and disable the cron job that refreshed certs!&#xA;The switch wasn&amp;rsquo;t as painful as I thought it might be. It took about 45 minutes to read the caddy docs and port my existing nginx configuration over.</description>
    </item>
    <item>
      <title>Skateboard 1</title>
      <link>https://mfashby.net/posts/2022-10-09-skateboard-1/</link>
      <pubDate>Sun, 09 Oct 2022 13:21:00 +0100</pubDate>
      <guid>https://mfashby.net/posts/2022-10-09-skateboard-1/</guid>
      <description>Following my previous post on longboarding, I took a few more trips to the skate park. I eventually decided to buy a regular (or &amp;lsquo;popsicle&amp;rsquo;) board as they really open up a lot more of the park, and tricks.&#xA;I bought second hand from a local skater, and I&amp;rsquo;m quite pleased that I got a board in good condition with nice trucks. However, I&amp;rsquo;m used to a longboard and I really didn&amp;rsquo;t like the typical skateboard wheels (52mm, 82a hardness) as I found them noisy and slow.</description>
    </item>
    <item>
      <title>Quine</title>
      <link>https://mfashby.net/posts/2022-10-09-quine/</link>
      <pubDate>Sun, 09 Oct 2022 13:11:52 +0100</pubDate>
      <guid>https://mfashby.net/posts/2022-10-09-quine/</guid>
      <description>A quine is a program that takes no input, and it&amp;rsquo;s output is it&amp;rsquo;s own source code. A quine-relay is a program that outputs the source code for another program, and when that next program is run it outputs the source code of the first program. I recently saw this quine relay program which was super impressive as it goes through 128 languages like this!&#xA;Having recently learned some Rust, I thought I&amp;rsquo;d write a simple quine in rust.</description>
    </item>
    <item>
      <title>Blocky</title>
      <link>https://mfashby.net/posts/2022-10-07-blocky/</link>
      <pubDate>Fri, 07 Oct 2022 20:24:03 +0100</pubDate>
      <guid>https://mfashby.net/posts/2022-10-07-blocky/</guid>
      <description>I recently revisited the idea of installing pi-hole in my local network to help remove ads from miscellaneous devices on my network. However, my raspberry pi already runs a lot of stuff including this blog, and runs on an unsupported-by-pi-hole OS (manjaro linux).&#xA;I found another tool blocky which is a DNS server with a lot of the same features as pi-hole. It has a reasonably simple configuration file and uses sane defaults for things I don&amp;rsquo;t want to configure.</description>
    </item>
    <item>
      <title>Back to Git</title>
      <link>https://mfashby.net/posts/2022-09-25-back-to-git/</link>
      <pubDate>Sun, 25 Sep 2022 21:09:31 +0100</pubDate>
      <guid>https://mfashby.net/posts/2022-09-25-back-to-git/</guid>
      <description>I moved back to git from fossil SCM, after previously migrating the other way.&#xA;I use git for work and so couldn&amp;rsquo;t forget how to use git and go all-in on fossil, and remembering two sets of commands proved somewhat painful and I wasn&amp;rsquo;t seeing the benefit of built-in issue tracking or anything like that. Now I run gitea git server instead.&#xA;Weirdly I don&amp;rsquo;t have too much trouble remembering two programming languages, but I think that&amp;rsquo;s slightly different somehow.</description>
    </item>
    <item>
      <title>Serverless</title>
      <link>https://mfashby.net/posts/2022-09-09-serverless/</link>
      <pubDate>Fri, 09 Sep 2022 21:48:19 +0100</pubDate>
      <guid>https://mfashby.net/posts/2022-09-09-serverless/</guid>
      <description>At work, our main product is a web application. Its primary function is receiving health data from hospital systems (and GP systems, and anyone else that has health data) and making it available to patients. I&amp;rsquo;ve been heavily involved in the infrastructure side of things; including migration to public cloud infrastructure.&#xA;Our infrastructure is complicated. We use SQL databases, Redis, Cloud storage buckets, and messaging systems as stateful components. We use kubernetes to run our application(s).</description>
    </item>
    <item>
      <title>Fossil 2</title>
      <link>https://mfashby.net/posts/2022-07-30-fossil2/</link>
      <pubDate>Sat, 30 Jul 2022 22:57:38 +0100</pubDate>
      <guid>https://mfashby.net/posts/2022-07-30-fossil2/</guid>
      <description>I tidied up my github and archived a bunch of old repositories. The few that I have kept, I have moved to my self-hosted fossil, and I have enabled a few useful options there like login-groups and correctly setting base URL and individual repository paths within fossil.&#xA;It transpired I didn&amp;rsquo;t have many (any?) useful personal repositories. I have kept the repo for this site, a couple of old (and super old) hobby projects, my dotfiles, and exercises from the C programming language which I am currently working through very slowly.</description>
    </item>
    <item>
      <title>Longboard 4</title>
      <link>https://mfashby.net/posts/2022-07-09-longboard-4/</link>
      <pubDate>Sat, 09 Jul 2022 22:00:07 +0100</pubDate>
      <guid>https://mfashby.net/posts/2022-07-09-longboard-4/</guid>
      <description>Since the last post on longboarding, I&amp;rsquo;ve started skating at the local park with a friend. Park skating is pretty different to downhill &amp;amp; freeride! It&amp;rsquo;s a lot of fun. It challenges you to think about how you&amp;rsquo;re going to navigate the park (what line you&amp;rsquo;ll take), and pushes the boundaries of what you are capable of. It also looks awesome :)&#xA;There&amp;rsquo;s lots of guidance on park skating, this video was a brief but useful introduction to park etiquette, pumps and kick turns.</description>
    </item>
    <item>
      <title>Rustlings</title>
      <link>https://mfashby.net/posts/2022-06-09-rustlings/</link>
      <pubDate>Thu, 09 Jun 2022 21:58:40 +0100</pubDate>
      <guid>https://mfashby.net/posts/2022-06-09-rustlings/</guid>
      <description>I recently completed the rustlings introduction to learning the Rust programming language.&#xA;I have previously tried reading the book, but I learn much better by doing and experimenting than reading. I found the rustlings course to by very accessible. It&amp;rsquo;s probably a little easy for an experienced software developer, and it skips some of the gnarlier topics like lifetime parameters.&#xA;I hope to make a couple of little projects in Rust just to get to know the language.</description>
    </item>
    <item>
      <title>Book - Stolen Focus</title>
      <link>https://mfashby.net/posts/2022-05-07-stolen-focus/</link>
      <pubDate>Sat, 07 May 2022 15:18:58 +0100</pubDate>
      <guid>https://mfashby.net/posts/2022-05-07-stolen-focus/</guid>
      <description>I&amp;rsquo;ve recently finished reading Stolen Focus by Johann Hari.&#xA;In it, the author presents an argument that online social media (i.e. facebook, instagram, etc) is currently harmful, and this is because of misaligned incentives. The companies producing this software are funded by advertisers, whose adverts are more effective if they spend more time in front of user&amp;rsquo;s eyes. This results in platforms optimizing for &amp;rsquo;engagement&amp;rsquo; among users; i.e. more time spent on the site.</description>
    </item>
    <item>
      <title>Longboard 3</title>
      <link>https://mfashby.net/posts/2022-04-30-longboard-3/</link>
      <pubDate>Sat, 30 Apr 2022 19:49:39 +0100</pubDate>
      <guid>https://mfashby.net/posts/2022-04-30-longboard-3/</guid>
      <description>Since my last post on longboarding, I&amp;rsquo;ve become a lot more comfortable with push-up and coleman slides, and now I aim to learn toeside pendulum slide. I have had limited success so far, and one bad high-side attempting it (fall down-hill direction, as opposed to low-side falling in the uphill direction). Luckily my helmet did it&amp;rsquo;s job, I&amp;rsquo;ll be trying again in the future.&#xA;I have also bought a second board, an original apex diamond drop 37&amp;quot;, obtained second hand from facebook marketplace.</description>
    </item>
    <item>
      <title>Fossil</title>
      <link>https://mfashby.net/posts/2022-03-27-fossil/</link>
      <pubDate>Sun, 27 Mar 2022 11:28:31 +0100</pubDate>
      <guid>https://mfashby.net/posts/2022-03-27-fossil/</guid>
      <description>I have switched to using fossil SCM for managing the source code of this website. I am attracted to the idea of having a decentralized store not only for code but also for tickets, wiki, forums / chat, etc etc. Basically everything github provides, but capable of offline working.&#xA;Fossil is quite different to git, so I expect some learning curve. Starting with my own personal site is easy enough. I also have fossil running as a server on code.</description>
    </item>
    <item>
      <title>Wildcard</title>
      <link>https://mfashby.net/posts/2022-03-19-wildcard/</link>
      <pubDate>Sat, 19 Mar 2022 13:17:26 +0000</pubDate>
      <guid>https://mfashby.net/posts/2022-03-19-wildcard/</guid>
      <description>I&amp;rsquo;ve switched to using a wildcard certificate for everything I host on *.mfashby.net.&#xA;It keeps my nginx configuration a bit less repetitive. It also allows internal services (i.e. not accessible to the internet) be secured with TLS more conveniently, and without those nasty browser warnings about self-signed certificates.</description>
    </item>
    <item>
      <title>Wordle</title>
      <link>https://mfashby.net/posts/2022-02-23-wordle/</link>
      <pubDate>Wed, 23 Feb 2022 13:41:22 +0000</pubDate>
      <guid>https://mfashby.net/posts/2022-02-23-wordle/</guid>
      <description>I really enjoyed playing wordle recently, and I really appreciated how simple and fun the game is. I enjoyed comparing my scores with my friends and family; it&amp;rsquo;s also fun to see people learning new words!&#xA;From a technical point of view, wordle is also a really neat and simple game. Everything is client-side, there&amp;rsquo;s no server component, so it can be played offline. Even the sharing feature, unicode squares to show how accurate your guesses were without reavealing the word, is so simple and yet so effective.</description>
    </item>
    <item>
      <title>Book - Philosophy Of Software Design</title>
      <link>https://mfashby.net/posts/2022-02-11-philosophy-software-dev/</link>
      <pubDate>Fri, 11 Feb 2022 19:18:07 +0000</pubDate>
      <guid>https://mfashby.net/posts/2022-02-11-philosophy-software-dev/</guid>
      <description>This is my short list of ideas I&amp;rsquo;ve taken away from reading a Philosophy of Software Design by John Ousterhout.&#xA;All the following advice is to be taken in moderation and with consideration for individual circumstance. Taking anything to it&amp;rsquo;s logical extreme usually results in poor outcomes. Complexity is the enemy of understanding. &amp;lsquo;Deep&amp;rsquo; interfaces are better than &amp;lsquo;shallow&amp;rsquo; ones. Practically this means: keep your interfaces as simple as possible, and contain/handle the complexity in the implementation.</description>
    </item>
    <item>
      <title>Chat Server Protocol</title>
      <link>https://mfashby.net/posts/2021-12-28-chat-server-protocol/</link>
      <pubDate>Tue, 28 Dec 2021 22:22:01 +0000</pubDate>
      <guid>https://mfashby.net/posts/2021-12-28-chat-server-protocol/</guid>
      <description>I wrote a previous post about clojure where I expressed an intent to write a slack clone using the language. Like most ideas, this didn&amp;rsquo;t go anywhere, however it did spawn a new idea: Chat Server Protocol.&#xA;There are several different popular messaging platforms, each used by different groups of people I know, for example WhatsApp, Telegram, Signal, Facebook Messenger, Slack &amp;amp; Discord. Having to install each one and learn the particulars of it&amp;rsquo;s user interface can be tiresome.</description>
    </item>
    <item>
      <title>Contacts</title>
      <link>https://mfashby.net/posts/2021-12-04-contacts/</link>
      <pubDate>Sat, 04 Dec 2021 15:05:47 +0000</pubDate>
      <guid>https://mfashby.net/posts/2021-12-04-contacts/</guid>
      <description>I&amp;rsquo;m now using radicale for calendar and contacts. This was very easy to install and configure in manjaro linux. I&amp;rsquo;m using this in conjunction with radicale-imap plugin for authentication. Eventually I might look at an SSO solution for the variety of services I have installed on my server.&#xA;Google supports exporting contacts in vcard format, and calendar events in ics format, both of which can be imported in a capable calendar or contacts app in android.</description>
    </item>
    <item>
      <title>Backups</title>
      <link>https://mfashby.net/posts/2021-11-14-backups/</link>
      <pubDate>Sun, 14 Nov 2021 11:12:44 +0000</pubDate>
      <guid>https://mfashby.net/posts/2021-11-14-backups/</guid>
      <description>I&amp;rsquo;ve recently setup a full system backup for my raspberry pi home server, backing up to my NAS over NFS. Working backups give me the confidence to use it for more critical things like email, calendar and contacts.&#xA;I&amp;rsquo;ve used restic as it does convenient, password-encrypted, differential backups to a variety of backends.&#xA;I&amp;rsquo;ve set it up with a systemd timer to trigger it. The script I&amp;rsquo;ve written shuts down all services so the file system isn&amp;rsquo;t changing too much underneath while the backup is working, mounts the backup location, does the backup, then unmounts the backup again before restarting the rest of the system.</description>
    </item>
    <item>
      <title>Longboard 2</title>
      <link>https://mfashby.net/posts/2021-11-09-longboard-2/</link>
      <pubDate>Tue, 09 Nov 2021 21:56:41 +0000</pubDate>
      <guid>https://mfashby.net/posts/2021-11-09-longboard-2/</guid>
      <description>Since my last post on longboarding, I&amp;rsquo;ve been learning to push up slide and coleman slide. These are essential skills to control your speed so you can safely tackle steeper and longer hills.&#xA;I&amp;rsquo;ve also made a couple of hardware changes&#xA;switched to powell peralta snakes, following many many reviews on reddit added freebrake brake soles to my shoes. I had nearly worn through the heel and toe on my right foot from frequent braking.</description>
    </item>
    <item>
      <title>Postgres Query Rewrite</title>
      <link>https://mfashby.net/posts/2021-11-05-postgres-query-rewrite/</link>
      <pubDate>Fri, 05 Nov 2021 11:57:12 +0000</pubDate>
      <guid>https://mfashby.net/posts/2021-11-05-postgres-query-rewrite/</guid>
      <description>Recently at work, I needed to be able to rewrite some postgresql queries which were coming from a closed-source application in order to integrate the app into our own system testing setup. Specifically I needed to replace instances of current_timestamp with invocation of now() function.&#xA;I found a couple of options to do this:&#xA;pgbouncer-rr is a patch for pgbouncer, initially written by AWS labs, which extends pgbouncer to include rewrite and rerouting capability.</description>
    </item>
    <item>
      <title>OpenBSD</title>
      <link>https://mfashby.net/posts/2021-10-30-openbsd/</link>
      <pubDate>Sat, 30 Oct 2021 20:25:43 +0100</pubDate>
      <guid>https://mfashby.net/posts/2021-10-30-openbsd/</guid>
      <description>I&amp;rsquo;ve tried installing &amp;amp; using OpenBSD 7.0 on my Pinebook Pro. I&amp;rsquo;ve previously used OpenBSD on a small VPS just to try it out, and I was quite impressed.&#xA;Unfortunately installing on the pinebook has been significantly more rocky than installing various linux flavours, and the performance isn&amp;rsquo;t quite good enough for me to continue using it. I hope to revisit in future as I like the philosophy of the project.</description>
    </item>
    <item>
      <title>Clojure</title>
      <link>https://mfashby.net/posts/2021-10-06-clojure/</link>
      <pubDate>Wed, 06 Oct 2021 21:35:37 +0100</pubDate>
      <guid>https://mfashby.net/posts/2021-10-06-clojure/</guid>
      <description>I&amp;rsquo;m learning Clojure on the basis that you should learn something that will change your way of thinking. I&amp;rsquo;ve previously stuck to C-family languages, and I work professionally with Java.&#xA;To do this I&amp;rsquo;m working through Clojure for the Brave and True, which has a good balance of whimsy (it&amp;rsquo;s not so dry as other technical books) and exercises vs plain reading material.&#xA;I&amp;rsquo;m planning to build a slack clone using full-stack clojure, since I learn faster if I get stuck in and try something.</description>
    </item>
    <item>
      <title>Blog</title>
      <link>https://mfashby.net/posts/2021-10-01-blog/</link>
      <pubDate>Fri, 01 Oct 2021 19:34:15 +0100</pubDate>
      <guid>https://mfashby.net/posts/2021-10-01-blog/</guid>
      <description>I originally started this blog using Jekyll, but I&amp;rsquo;ve since switched to using hugo after I found it simpler to install and use (pamac install hugo on manjaro linux).&#xA;The content is stored on my laptop and on github. I have a cron job on my raspberry pi which pulls the latest changes and builds the site every 15 minutes, so changes are automatically published.&#xA;I could improve this setup slightly using GitHub webhooks to detect the changes immediately and refresh rather than polling.</description>
    </item>
    <item>
      <title>Bike</title>
      <link>https://mfashby.net/posts/2021-09-29-bike/</link>
      <pubDate>Fri, 01 Oct 2021 12:27:26 +0100</pubDate>
      <guid>https://mfashby.net/posts/2021-09-29-bike/</guid>
      <description>I recently refurbished my bike for use as a commuter. I work at home, but I need to commute my daughter to nursery a couple of days a week. It&amp;rsquo;s also handy to be able to increase my range without having to use the car, as traffic around the area can get bad.&#xA;The bike is an old Claude Butler with pink bear-trap pedals. I bought it second hand ~10 years ago so there&amp;rsquo;s no way I can find links for original parts.</description>
    </item>
    <item>
      <title>Recipe</title>
      <link>https://mfashby.net/posts/2021-09-29-recipe/</link>
      <pubDate>Wed, 29 Sep 2021 22:56:01 +0100</pubDate>
      <guid>https://mfashby.net/posts/2021-09-29-recipe/</guid>
      <description>I found plainoldrecipe a while back, I find it really handy for some recipe sites which are full of cookie banners and ads, it makes them much easier to read on a phone or small laptop while I&amp;rsquo;m actually trying to cook.&#xA;I&amp;rsquo;m hosting it myself here as the author&amp;rsquo;s site is sometimes down.&#xA;A cool extension might be some way to send the recipe to my kindle for easier reading &amp;amp; offline usage.</description>
    </item>
    <item>
      <title>Pine64</title>
      <link>https://mfashby.net/posts/2021-09-26-pine64/</link>
      <pubDate>Sun, 26 Sep 2021 16:39:28 +0100</pubDate>
      <guid>https://mfashby.net/posts/2021-09-26-pine64/</guid>
      <description>I bought a Pinebook Pro some while back, and I&amp;rsquo;m quite happy with it. It has a nice small form factor, decent display, nice shell, and reasonable battery life. When I first bought it software support was somewhat sketchy, however most linux distributions and even OpenBSD now have support for it, so I&amp;rsquo;m hoping I can keep using it for a number of years. I have even managed to do some dayjob (software development) work with it.</description>
    </item>
    <item>
      <title>Manjaro</title>
      <link>https://mfashby.net/posts/2021-09-21-manjaro/</link>
      <pubDate>Tue, 21 Sep 2021 20:03:48 +0100</pubDate>
      <guid>https://mfashby.net/posts/2021-09-21-manjaro/</guid>
      <description>I&amp;rsquo;ve used Ubuntu linux for many years, but just recently it&amp;rsquo;s started to become a bit more difficult due to proliferation of package managers. With the introduction of snap, flatpak, I&amp;rsquo;m never quite sure where I should be getting my software from.&#xA;I&amp;rsquo;ve occasionally experimented with other distributions, but usually found them disadvantageous in some ways. For example, debian is quite stable, but doesn&amp;rsquo;t usually ship the latest and greatest upstream software.</description>
    </item>
    <item>
      <title>Longboard Setup</title>
      <link>https://mfashby.net/posts/2021-09-19-longboard-setup/</link>
      <pubDate>Sun, 19 Sep 2021 10:20:49 +0100</pubDate>
      <guid>https://mfashby.net/posts/2021-09-19-longboard-setup/</guid>
      <description>I recently picked up longboarding. I enjoy snowboarding, but in the current pandemic + climate change it&amp;rsquo;s looking less sustainable as a hobby, so I&amp;rsquo;m learning downhill longboarding.&#xA;Current setup is pictured, links for individual items:&#xA;Freebyrd Hiro complete Larger wheels are cultron, which came with the board as a complete. These are great for cruising, but I am unable to make them slide. Smaller wheels fitted at the moment are chronicle.</description>
    </item>
    <item>
      <title>Maddy</title>
      <link>https://mfashby.net/posts/2021-09-18-maddy/</link>
      <pubDate>Sat, 18 Sep 2021 22:05:32 +0100</pubDate>
      <guid>https://mfashby.net/posts/2021-09-18-maddy/</guid>
      <description>Since my last post on mail servers, the maddy email server has advanced significantly, and now includes enough functionality to be a useful mail server adhering to current best practices. This includes DKIM, spam filtering with rspamd, virtual user management and more.&#xA;I&amp;rsquo;m running this in conjunction with alps webmail on my raspberry pi, and it&amp;rsquo;s working well.&#xA;I&amp;rsquo;m not yet using this as my daily driver account, but I might do in future.</description>
    </item>
    <item>
      <title>Restart</title>
      <link>https://mfashby.net/posts/2021-09-17-restart/</link>
      <pubDate>Fri, 17 Sep 2021 23:41:39 +0100</pubDate>
      <guid>https://mfashby.net/posts/2021-09-17-restart/</guid>
      <description>I&amp;rsquo;ll restart blogging, likely in the form of micro-blogs restricted to just a few sentences. (like twitter)&#xA;Upcoming tech topics:&#xA;jekyll -&amp;gt; hugo switch mailu -&amp;gt; maddy switch alps webmail fediverse manjaro linux Non-tech topics:&#xA;longboarding climbing for kids </description>
    </item>
    <item>
      <title>Unicorn Paint</title>
      <link>https://mfashby.net/posts/2018-06-02-unicornpaint/</link>
      <pubDate>Sat, 02 Jun 2018 22:33:00 +0100</pubDate>
      <guid>https://mfashby.net/posts/2018-06-02-unicornpaint/</guid>
      <description>See unicornpaint for details. I&amp;rsquo;ll write about this later&amp;hellip;</description>
    </item>
    <item>
      <title>Mailu</title>
      <link>https://mfashby.net/posts/2018-06-01-mailu/</link>
      <pubDate>Fri, 01 Jun 2018 20:17:00 +0100</pubDate>
      <guid>https://mfashby.net/posts/2018-06-01-mailu/</guid>
      <description>My search for an email server A big theme in the news recently is data protection, how your personal data is being used (and abused), and taking back control of your data. Part of the problem is that people&amp;rsquo;s personal data is kept in huge private corporate networks, and historically companies have been able to do (essentially) whatever they like with it. I started investigating how difficult it would be to really re-take control of my personal data - beginning with my email.</description>
    </item>
    <item>
      <title>New Site</title>
      <link>https://mfashby.net/posts/2018-05-31-new-site/</link>
      <pubDate>Thu, 31 May 2018 17:51:07 +0100</pubDate>
      <guid>https://mfashby.net/posts/2018-05-31-new-site/</guid>
      <description>I&amp;rsquo;m intending to write more online about the stuff I tinker with.&#xA;You can expect posts about&#xA;what I do with my Raspberry Pi, websites and servers that I run including my wife&amp;rsquo;s blog and my email server more physical projects like getting a RepRap up and running </description>
    </item>
  </channel>
</rss>
