<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>jawr</title><link>https://jawr.github.io/jl-lu/</link><description>Recent content on jawr</description><generator>Hugo -- gohugo.io</generator><language>en-gb</language><copyright>© {year}</copyright><lastBuildDate>Mon, 22 Mar 2021 18:02:55 +0900</lastBuildDate><atom:link href="https://jawr.github.io/jl-lu/index.xml" rel="self" type="application/rss+xml"/><item><title>it svelte good</title><link>https://jawr.github.io/jl-lu/blog/swapping-out-react-for-svelte/</link><pubDate>Mon, 22 Mar 2021 18:02:55 +0900</pubDate><guid>https://jawr.github.io/jl-lu/blog/swapping-out-react-for-svelte/</guid><description>React I have been using React with Redux for many projects over the last few years and although I appreciate the new design patterns it introduced me to and the dynamic interfaces it allows, there has always been a slight annoyance with the amount of boilerplate required when following particular recommended patterns.
Of course I appreciate that these patterns are mostly targeted at very large and complex applications.
As an attempt to resolve this my most recent projects have used the classic server side generated templates with small Javascript functionality added with the tiny AlpineJS .</description></item><item><title>nixos &amp; kubernete woes</title><link>https://jawr.github.io/jl-lu/blog/nixos-and-kubernetes-woes/</link><pubDate>Thu, 04 Mar 2021 09:49:21 +0900</pubDate><guid>https://jawr.github.io/jl-lu/blog/nixos-and-kubernetes-woes/</guid><description>After my recent fiddling with k8s, I decided to try out k3s which offers a slimmed down version of kubernetes. I also decided to take the plunge and push up my virtual experimenting and place it in to the cloud, using the lovely Hetzner nixops plugin .
Routing Hell By far the most frustrating issue I encountered revolved around routing. Inter communication between the nodes is unencrypted by default (when using flannel) and so I wanted to link all nodes and pod via wireguard.</description></item><item><title>nixos - wireguard &amp; modules</title><link>https://jawr.github.io/jl-lu/blog/nixos-wireguard-and-modules/</link><pubDate>Tue, 16 Feb 2021 17:29:58 +0900</pubDate><guid>https://jawr.github.io/jl-lu/blog/nixos-wireguard-and-modules/</guid><description>Refactoring In my previous post I attacked the kubernetes configuration using only one module, the rest created relied on functions.
It didn&amp;rsquo;t feel idiomatic and when trying to add wireguard, the cracks started to appear. It felt like I was fighting with the language.
After some wonderful duck debugging with the excellent community on IRC, I decided to refactor what I had in to modules.
Modules The NixOS wiki has an excellent article on modules, but the gist is that a module is a set that has the following syntax:</description></item><item><title>nixos - starting a kluster</title><link>https://jawr.github.io/jl-lu/blog/nixos-starting-a-kubernetes-cluster/</link><pubDate>Mon, 08 Feb 2021 23:11:33 +0900</pubDate><guid>https://jawr.github.io/jl-lu/blog/nixos-starting-a-kubernetes-cluster/</guid><description>Too many Buzzwords Lately I have been porting a project from a systemd service to a fully fledged, cutting edge, Docker on kubernetes setup.
The main reason for this has been $reason.
Initially I was using minikube which uses VirtualBox to create a ready made cluster which is perfect to learn with.
Searching for a home After doing some research and deciding that a hosted solution was far too expensive for my needs, I started to entertain the idea of running my own cluster and to kubernet all my existing services and projects in to one giant auto healing, auto scaling ball of cool.</description></item><item><title>k8s - a primer</title><link>https://jawr.github.io/jl-lu/blog/k8s-a-primer/</link><pubDate>Sun, 07 Feb 2021 10:08:14 +0900</pubDate><guid>https://jawr.github.io/jl-lu/blog/k8s-a-primer/</guid><description>Kubernetes Much like the film Primer , kubernetes (a ten letter word abbreviated to k8s for reasons) is a complicated tangle of cleverness that can be quite exasperating, but also very fun.
There is already swathes of content surrounding how kubernetes came about and how it is useful. I will not add to that mountain. Instead this will be a high level overview of the main objects I have encountered and how they interact with each other.</description></item><item><title>game - fake snake with ebiten</title><link>https://jawr.github.io/jl-lu/blog/game-fake-snake-with-ebiten/</link><pubDate>Wed, 27 Jan 2021 17:41:03 +0900</pubDate><guid>https://jawr.github.io/jl-lu/blog/game-fake-snake-with-ebiten/</guid><description>Ebiten Go was never really aimed at being a language for game development, but as with all established language it has grown large enough to sprout a few game libraries.
One that caught my attention was Ebiten which touts itself as &amp;ldquo;a dead simple 2D game library for Go&amp;rdquo;. Having never done any, it felt perfect for dipping my toes in.
One of the best features of ebiten is its cross platform targeting abilities; you can create your game and target Windows (as long as no cgo is used), macOS, Linux, FreeBSD, Android, iOS and WebAssembly.</description></item><item><title>mx.ax - social schema distancing</title><link>https://jawr.github.io/jl-lu/blog/mx.ax-the-hows-and-why-of-the-database-schema-design/</link><pubDate>Mon, 25 Jan 2021 10:45:30 +0900</pubDate><guid>https://jawr.github.io/jl-lu/blog/mx.ax-the-hows-and-why-of-the-database-schema-design/</guid><description>User isolation When creating a service that contains users who don&amp;rsquo;t require interaction with one other, it&amp;rsquo;s necessary to provide some assurances that their data will remain isolated. There are various strategies to try and ensure this isolation, each with their own benefits and issues. Below are the main ones:
Silo, each user has their own database instance. Bridge, each user has their own database (schema) on a shared instance.</description></item><item><title>nixos - cloud-init</title><link>https://jawr.github.io/jl-lu/blog/nixos-cloud-init/</link><pubDate>Fri, 22 Jan 2021 12:55:09 +0900</pubDate><guid>https://jawr.github.io/jl-lu/blog/nixos-cloud-init/</guid><description>But there&amp;rsquo;s no image?! When starting a new instance up on scaleway there is no option to select NixOS, but using the cloud init hook you are able to boot up an instance.
After a few moments you can login using your predefined SSH keys which have been initialised, along with the hostname and SSH serrvice, in /etc/nixos/configuration.nix:
{ ... }: { imports = [ ./hardware-configuration.nix ./host.nix ]; boot.cleanTmpDir = true; networking.</description></item><item><title>mx.ax - a closer look at SMTP</title><link>https://jawr.github.io/jl-lu/blog/mx.ax-a-closer-look-at-smtp/</link><pubDate>Wed, 20 Jan 2021 09:56:13 +0900</pubDate><guid>https://jawr.github.io/jl-lu/blog/mx.ax-a-closer-look-at-smtp/</guid><description>SMTP Simple Mail Transfer Protocol has been around for a long time and although it has been revised, extended and abused beyond its original intent, it does remain relatively simple.
If you want to send an email to yourfriend@domain.com your client first needs to use DNS to discover where to send the email. This information is stored within the MX record, i.e. for lawrence.pm:
;; QUESTION SECTION: ;lawrence.pm. IN MX ;; ANSWER SECTION: lawrence.</description></item><item><title>mx.ax - an email service for two</title><link>https://jawr.github.io/jl-lu/blog/mx.ax-an-email-service-for-two/</link><pubDate>Tue, 19 Jan 2021 11:11:57 +0900</pubDate><guid>https://jawr.github.io/jl-lu/blog/mx.ax-an-email-service-for-two/</guid><description>The Premise A friend of mine is addicted to domain names. He has an inordinate amount at his disposal and in his pursuit of more often finds himself needing services and scripts.
Among many of his requests was an email service to let him easily use these domains for email, without having to leave the comfortable indoctrination of our overlord Google.
His requirements were roughly:
Add and remove domain names for use.</description></item></channel></rss>