Archives for 2019

31 Dec 2019

On Liberalism in the 2010s
Kids, we need to talk

Labour Poster

Yes, but can Liberals batter down doors anymore?

Last night, dealing with a bought of insomnia, I read this important take on BoJo (not to be confused with BoJack) and the conservative wave sweeping across not just the UK but most of the world. While there might be a few …

14 Dec 2019

A Simple Version Checker In Go
Go Local Sports Team!

Version Check Output

My current work requires keeping track of more than a dozen live websites and making sure that their versions are kept up to date. We have employed a small Go program to make this possible, which enable us to scrape the generator meta tags on the websites and thereby get …

09 Dec 2019

Shouting Into The Void


Nobody reads this blog1. RSS readers are dead, Kottu's stats page makes me weep, and I don't dare post these things on social media. So that leaves me at my most comfortable—a good old conversation with myself.

There is beauty in solitude. You only truly begin to appreciate …

30 Nov 2019

Going Digital
Time to put my Gaomon face on!

I've been eyeing a graphics tablet for a while now, and on 11.11 there was this gorgeous Gaomon S620 for just $22 (!!!) on AliExpress, an offer I simply couldn't refuse. Well, the tab arrived in the mail today, and I want to share some of my experiments on my …

27 Nov 2019

I've been sketching...

I've been sketching at work...


I've been sketching at home...


I've sketched someone who looks like Jinora...


And someone who looks like me...


Most are terrible...



But some, I'm quite proud of...



Especially this one 👇


I got myself a set of cheap graphite sketching pencils from our lord and saviour …

14 Oct 2019

My take on doing 'Clean Architecture' in React (Part 2)
What's your type?

Core Folder Structure

In the last part, we broke the application core out, with layers for entities, usecases, and infrastructure. The example code we used in the last part (without breaking the core out) can be found on Github.

Now let's look at how we can implement the core. I will be using …

06 Oct 2019

My take on doing 'Clean Architecture' in React (Part 1)
Friendship is magic? Wait till you see Dependency Inversion!

Clean Architecture

Clean Architecture, simplified.

I'm a huge fan of Robert C. Martin's work in general, and Clean Architecture in particular. I'm frequently on the lookout for how to apply it to the different system architectures and frameworks we work with.

Which modules should be decoupled? I think the rule is similar …

02 Oct 2019

On-Premise CloudWatch Metrics with AWS CLI
Who will watch the watchmen?

Have you tried AWS CLI?

CloudWatch is pretty cool, and looking at a metrics dashboard and setting up alarms is pretty badass—especially when you're not a full-time DevOps and don't have the time to worry about your monitoring solution in addition to the thing it's supposed to look after.

If you're running some of …

21 Sep 2019

A basic terrain generator in Go (Part 4)
Cliffs of Dover

In the last part, we added fancy output code, and our output looks like this now:

Output with colours

...which, if you've ever seen a map, isn't what terrain actually looks like. The terrain around peaks tend to be at a similar height, and there is rarely the random patchwork of heights we …

19 Sep 2019

A basic terrain generator in Go (Part 3)
Take a look at me now

In the last part, we refactored the code and added CLI flags. The output right now looks like this:

Compile and Output After Flags

It doesn't really give us a sense of what the terrain looks like, though. Let's change that.


Unicode has some nice characters that can help us here. The ones we're …

18 Sep 2019

A basic terrain generator in Go (Part 2)
But first, we gotta clean up this mess

In the last part, we explored how to set up what was basically a matrix and randomly assign elevation values to it. In this part, I wanted to explore how to deal with assigning values to the elements adjacent to the peaks, and how to display the map to users …

17 Sep 2019

A basic terrain generator in Go (Part 1)
Ain't no mountain high enough

I haven't gushed about Go much on this blog1, but I thought of writing a small series of posts on a little piece of code I cooked up while I was supposed to be doing other, more important things2.


So I was sitting there, zoning out and …

23 Jul 2019

A meditation on ‘Kimi no Na wa’
What do I do with all these feels?



I have been on a Makoto Shinkai binge this week. Even though I am usually very selective and sparse with my media consumption, I had the fortune of seeing Kotonoha no Niwa (Garden of Words) at Malinthe’s the weekend before last, and I was hooked. 5 Centimetres per …

04 Jul 2019

Cliff Notes
It’s everything you ever dreamt of, until it’s not


It doesn’t go away. None of it does. No matter how kind or forgiving you are, the stains of the ‘bad times’ stay on like fountain pen ink on white fabric, refusing to budge. All they need is some mild reoccurrence to go full-on #ThrowbackThursday

* * *

Am I a bad …

08 Jun 2019

The future wasn’t supposed to be this way

Romeo was a Montegue, the powerful ruling clan. Juliet was a Capulet, a member of a minority (and yet, a privileged minority in many ways).

Romeo adored Juliet. They had rarely spoken, but he was an ardent follower of her work since his teens. He was very much smitten, amazed …

02 Feb 2019

Kottu Kontainers
Using Docker Compose for fun and profit

Remember Kottu? Those were the days. Anyway, Kottu has always been a totally open-source project, and theoretically it is as easy as cloning the git repo and... jumping a few hoops to set it up on your own local machine or VPS.

Except... the loops are tedious and there’s …

27 Jan 2019

Life is a [WIP]
Attā hi attanō nāthō


Credits to the incredible Frank Borman, Jim Lovell, and William Anders

I recently read an article about Hard Determinism, the theory that there is no free will, and that given the initial values of things like the physical constants (the speed of light, the gravitational constant G etc), a universe …

09 Jan 2019

A brief history of my ‘work music’
Or rather: a history of what I’ve worked on over the years through the music I was listening to at the time.

2011: Live Forever — Oasis

These were the heady days of youthful exuberance, when any idea seemed like it was worth pursuing — all the world’s problems could be solved with code, y’know? — and the internet was new, exciting, and as yet relatively uncommercialised. I was going through a major …

Built using Pelican.