Programming Languages that changed how I think

8 May 2023

This is, in some sense, a part 2 to Software Engineering Books and Resources that I have found interesting. In fact, this list was originally going to be included with that one, but it got too long (especially with the notes), and so I split it out. Some of the notes may get trimmed/edited/fleshed-out at a later date, and I might add more languages.

I have intentionally excluded from this list some of my favourite languages, some of the most popular languages, and some of the best languages for building great products, simply on the grounds that I don't feel that they sufficiently changed the way that I think.

Continue reading →

Processboard

5 May 2023

Software Development, DevOps, & Infrastructure Design for a SaaS startup. Mainly using JavaScript & PostgreSQL, on Linux.

Continue reading →

Creating Objects using Closures

23 April 2023

You don't need Java (or C++, or an "OOP" language) to create objects and classes!

What are objects and classes?

For this post, consider objects to be instances of encapsulated state with associated methods, and classes to be the general definitions of a type of object.

Continue reading →

Software Engineering Books and Resources that I have found interesting

17 April 2023

I'm not really sure this is really "blog post" kind of content, as I intend to come back later and amend/add to it. When I have met people looking to get into Software Engineering, or students of Computer Science, I have been asked for recommendations for things to do/read/watch. This post lists some of the things that I have found interesting, and that I have recommended to others. This list is incomplete.

If you have any recommendations for me, let me know, I'll check them out, and I might even add them to the list.

Continue reading →

459 times

16 April 2023

If you have a 99% chance of failure, for a given task, then if you attempt it 459 times, your chance of success will be over 99%.

It gets better than this - after only 69 attempts, your chance of success is already greater than 50%.

Continue reading →

Building a Mini Social Network in one file of Scheme - Part 1

15 April 2023

I have been messing about with Chicken Scheme, building a little microblogging-style app, with a twist: users can vote for a purge of the whole site's content! I thought it would be fun to see how far I can get with one file of Scheme and without any JavaScript. I have put a favicon and some css in separate files, but really these could both be embedded in the Scheme file aswell - but that would be taking it a bit too far.

If you skim the Scheme below, several issues will become obvious to you. Perhaps most saliently, the USP feature is not actually fully implemented - users can vote to purge the server, but the purge action itself has not been added. Secondly, the users and passwords are simply hardcoded into an association list. I've dumped the code below, and at some point I will tidy up a few of the loose ends, make the GitHub repo public, and perhaps write further about it.

Continue reading →

Software Engineers don't have a tech stack - their projects do

14 April 2023

I would rather discuss solving problems than just talk about "Stacks" in isolation

It's great to have favourites, and to be enthusiastic about specific tools - I do too, this is an important part of being a tech-nerd/hacker/programmer. But "Tech Stack" isn't an attribute of the person, it's an attribute of the project.

Continue reading →

Calling a C Library for QR Generation from Chicken Scheme

1 February 2023

I wanted to create a QR code from within Chicken Scheme, but I couldn't find an existing Scheme library or chicken Scheme egg online that would let me do this. Fortunately, Chicken Scheme is pretty easy to integrate with existing C code.

The first thing I did was I wrote a Hello World in Scheme and another Hello World in C, and checked that I could get both of these to run (using the chicken compiler and GCC).

Continue reading →

Generating New Email Addresses for new services

14 December 2022

I wrote a little script recently to generate new email addresses using the CloudFlare API.

By doing this, I can create loads of email addresses really quickly and set up disposable ones for new services or categories of services. The script either randomly generates an identifier, or will use a value provided as input.

Continue reading →

A very simple way to use NVM without sourcing it in your rc (+ works with fish)

14 August 2022

I mainly use fish, and NVM does not work with fish out-of-the-box.

Even if I happen to be using zsh/sh/ksh/bash, I don't want to be loading NVM when I start a new shell, when I am only using it on occasion.

Continue reading →