Various ramblings about software developement and related topics.

  • A React Developer Tries Svelte

    After spending the last couple of years working primarily with React on the frontend, I was introduced to Svelte and was compelled to give it a go. Here are some of my thoughts.


  • Rust: Fun with Function Traits

    In this post I'm going to work towards writing a function that can accept and work with closures taking variable numbers and types of arguments. On the way, I'll look at trait families, and a way to avoid overlapping impls.


  • Notes on Postgres

    Various snippets of useful information and examples for PostgreSQL


  • Notes on Working with Dates in JavaScript

    A few things that are worth knowing if you intend to work with Dates in JavaScript


  • Authenticating users on your site

    You're building a website that you want users to be able to log in to. Whether you use an external service or roll your own, here are a few things to keep in mind.


  • Notes on Kubernetes

    Some notes I wrote up on Kubernetes from having attended the beginner and intermediate training courses hosted by JetStack at the Google building in London.


  • Rust: Getting started with nightly async/await support

    Async/await syntax is one of the most eagerly anticipated features coming to Rust. Already available in the nightly channel, this post contains my notes on how to get started with this new feature, and how to use it alongside the current Futures based ecosystem.


  • Rust: Converting AsyncRead and AsyncWrite to Futures, Sinks and Streams

    Recently I had another shot at using Futures and Tokio again in Rust. One of the main challenges I faced was how to work with things that implemented the AsyncRead and AsyncWrite traits. So, here are some ways to 'upgrade' them into Futures, Sinks and Streams to gain access to the various combinators provided by them.


  • Neural Networks: An Introduction

    An introduction to feed-forward neural networks with learning via back propagation.


  • Haskell: Some Awesome Language Extensions Explained

    A guide covering some of the more awesome/useful/interesting looking Haskell language extensions that I've come across so far, with plenty of examples.


  • Haskell: A Look at the Continuation Monad

    Some notes I developed on the continuation monad in Haskell as a result of exploring how they work and how to use them, complete with plenty of examples along the way.


  • An introduction to parsing text in Haskell with Parsec

    Parsec makes parsing text very easy in Haskell. I write this as much for myself as for anyone else to have a tutorial and reference which starts from the ground up and works through how each function can be used with examples all the way.


  • Angular and React: A Tale of Two Frameworks

    Having used Angular pretty heavily for over a year at work and more recently ReactJS from Facebook in rebuilding my website, I thought I'd share my views on how they compare.


  • Haskell: Another Lens Tutorial

    As someone who just got lenses after several days of trying to find out about them, I thought I'd reflect on this new understanding by showing you what a lens really is, starting from scratch.


  • Haskell, and Why It Might Just Be My New Favourite Language

    Coming from imperative programming languages like Javascript, Haskell might just be the most different language out there for me to learn, but here are several reasons why it also might be one of the best.


  • AngularJS: Demystifying Services and Dependency Injection

    This post is my attempt to unravel the mystery often surrounding the difference between services, providers, values and the like in Angular. I then run through how dependency injection works, building a plain Javascript example along the way.


  • Website Reboot: Version Three

    Welcome to the third incarnation of my website, this time built to be simple, slick, and to the point.


  • Two Handy Tools to Help Build an AJAX Site

    Two utilities I built for a pre-Angular (or Ember) website, which help with routing URL requests to function calls, and storing/monitoring state in a tree structure.


  • Enigma #1749

    A quick look at New Scientist Enigma number 1749, with a simple solution in Javascript.


  • Web App: Competitive Learner

    One of my first Javascript based applications, the Competitive Learner, is based on algorithms I built on during my PhD. Draw shapes, and see how it learns!


  • Web App: Compression Machine

    In this post I describe and link you to my Javascript compression machine, which makes use of several compression techniques described in other posts. Have a play!


  • Web App: Fractal Explorer

    A post describing my Javascript Fractal Explorer, with a link to the real thing so you can go have a play from the comfort of your browser.


  • Rick Astley Inspired Self-decompressing Text Compressor

    A bit of code-golf inspired fun: introducing a Javascript snippet and tool to build it that when executed, prints out the lyrics to a well known song.


  • Sequitur: a templated C++ implementation

    In this post I briefly describe my C++ implementation of the lesser known Sequitur compression algorithm, and provide some usage examples. The source code is available to use however you wish.


  • C++ Optimization: Making use of Memory Pools

    Utilising memory pools can be one of the most significant optimisations you can make to a C++ program. Here, I walk through building and using one from the ground up.


  • Compression Algorithms: Sequitur

    An introduction to the Sequitur compression algorithm with an updated algorithm describing how it works, along with the common pitfalls in implementing it.


  • C++11: An Introduction to Some of the Fun New Additions

    A pretty comprehensive introduction to a large proportion of the new features of C++11. This is to help refresh my mind as much as any, but it's a good place to start, and full of examples.


  • An Introduction to Lambda Calculus

    A pretty in depth introduction to Lambda Calculus, the precursor to modern functional programming as well as some crazy esoteric programming languages like Iota and Jot.


  • Compression Algorithms: Huffman Coding

    A look at a simple form of compression known as Huffman Coding that is frequently combined with other techniques, and easy to implement. I walk through an example and provide a full description of how it all works.


  • Welcome to!

    An introductory post to celebrate the launch of my new website.