The Blog
46 whole ramblings and thoughts.
![](/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Fblog-hero.05ef712e.jpg&w=3840&q=75)
Optimising Parallel Python and the Billion Row Challenge
1brc, Multiprocessing, Python
![](/_next/image?url=https%3A%2F%2Fassets.tina.io%2F4648a2b6-0fd7-4c4b-9287-982677a650ff%2Fblog%2Fcovers%2Fmarc-olivier-jodoin-NqOInJ-ttqM-unsplash.jpg&w=3840&q=75)
Kubernetes Components with Terraform & Notes
kubernetes, cloud native, dev-ops
![](/_next/image?url=https%3A%2F%2Fassets.tina.io%2F4648a2b6-0fd7-4c4b-9287-982677a650ff%2Fblog%2Fcovers%2Fkubernetes-components-and-notes.png&w=3840&q=75)
Snowflake Stages and External Tables with JSON Blobs in AWS
snowflake, dbt, aws
![](/_next/image?url=https%3A%2F%2Fassets.tina.io%2F4648a2b6-0fd7-4c4b-9287-982677a650ff%2Fblog%2Fcovers%2Fsnowflake-stages-and-external-tables-with-json-blobs-in-aws.jpg&w=3840&q=75)
Database Migrations with sqlmodel and alembic
python, databases
![](/_next/image?url=https%3A%2F%2Fassets.tina.io%2F4648a2b6-0fd7-4c4b-9287-982677a650ff%2Fblog%2Fcovers%2Fdatabase-migration-with-sqlmodel-and-alembic.jpg&w=3840&q=75)
Machine Learning Starting Blocks
python, ml
![](/_next/image?url=https%3A%2F%2Fassets.tina.io%2F4648a2b6-0fd7-4c4b-9287-982677a650ff%2Fblog%2Fcovers%2Fmachine-learning-starting-blocks.jpeg&w=3840&q=75)
Off To The Cloud - Part 2
aws, terraform, cloud
![](/_next/image?url=https%3A%2F%2Fassets.tina.io%2F4648a2b6-0fd7-4c4b-9287-982677a650ff%2Fblog%2Fcovers%2Foff-to-the-cloud.jpg&w=3840&q=75)
Off To The Cloud - Part 1
aws, terraform, cloud
![](/_next/image?url=https%3A%2F%2Fassets.tina.io%2F4648a2b6-0fd7-4c4b-9287-982677a650ff%2Fblog%2Fcovers%2Foff-to-the-cloud.jpg&w=3840&q=75)
![](/_next/image?url=https%3A%2F%2Fassets.tina.io%2F4648a2b6-0fd7-4c4b-9287-982677a650ff%2Fblog%2Fcovers%2Fconcurrency-in-python-with-async-await.jpg&w=3840&q=75)
AWS Basics
aws, cloud
![](/_next/image?url=https%3A%2F%2Fassets.tina.io%2F4648a2b6-0fd7-4c4b-9287-982677a650ff%2Fblog%2Fcovers%2Faws-basics.jpg&w=3840&q=75)
Structured Logging in Java with SLF4j and Logback
json, logging, java
![](/_next/image?url=https%3A%2F%2Fassets.tina.io%2F4648a2b6-0fd7-4c4b-9287-982677a650ff%2Fblog%2Fcovers%2Fstructured-logging-in-java-with-slf4j-and-logback.jpg&w=3840&q=75)
![](/_next/image?url=https%3A%2F%2Fassets.tina.io%2F4648a2b6-0fd7-4c4b-9287-982677a650ff%2Fblog%2Fcovers%2Frestoring-my-college-vb-net-application-p1.jpg&w=3840&q=75)
![](/_next/image?url=https%3A%2F%2Fassets.tina.io%2F4648a2b6-0fd7-4c4b-9287-982677a650ff%2Fblog%2Fcovers%2Fquiz-round-top-down-london.png&w=3840&q=75)
Deploying to Heroku from Gitlab
code, devops, CI/CD, heroku, gitlab
![](/_next/image?url=https%3A%2F%2Fassets.tina.io%2F4648a2b6-0fd7-4c4b-9287-982677a650ff%2Fblog%2Fcovers%2Fdeploying-to-heroku-from-gitlab.png&w=3840&q=75)
Zoho SMTP Setup
email, zoho, open-media-vault
![](/_next/image?url=https%3A%2F%2Fassets.tina.io%2F4648a2b6-0fd7-4c4b-9287-982677a650ff%2Fblog%2Fcovers%2Fzoho-smtp-setup.jpg&w=3840&q=75)
Django tests in Gitlab CI
python, gitlab, django
![](/_next/image?url=https%3A%2F%2Fassets.tina.io%2F4648a2b6-0fd7-4c4b-9287-982677a650ff%2Fblog%2Fcovers%2Fdjango-tests-in-gitlab-ci.png&w=3840&q=75)
PiPlexed - A guide to setting up a home Media Server on Raspberry Pi
Raspberry Pi, plex
![](/_next/image?url=https%3A%2F%2Fassets.tina.io%2F4648a2b6-0fd7-4c4b-9287-982677a650ff%2Fblog%2Fcovers%2Fpiplexed-a-guide-to-setting-up-a-home-media-server-on-raspberry-pi.png&w=3840&q=75)
Using Ghost & ParticleJS
Ghost, Node, ParticleJS, css, js-dom-manipulation
![](/_next/image?url=https%3A%2F%2Fassets.tina.io%2F4648a2b6-0fd7-4c4b-9287-982677a650ff%2Fblog%2Fcovers%2Fusing-ghost-particlejs.png&w=3840&q=75)
Adding Typescript to Gatsby
gatsby, typescript, webdev
![](/_next/image?url=https%3A%2F%2Fassets.tina.io%2F4648a2b6-0fd7-4c4b-9287-982677a650ff%2Fblog%2Fcovers%2Fadding-typescript-to-gatsby.jpg&w=3840&q=75)
The Fun Fun World Of JSON Validation
programming
![](/_next/image?url=https%3A%2F%2Fassets.tina.io%2F4648a2b6-0fd7-4c4b-9287-982677a650ff%2Fblog%2Fcovers%2Fthe-fun-fun-world-of-json-validation.jpg&w=3840&q=75)
Easy Docker Containers on Raspery Pi With Portainer.io
code, docker, Raspberry Pi
![](/_next/image?url=https%3A%2F%2Fassets.tina.io%2F4648a2b6-0fd7-4c4b-9287-982677a650ff%2Fblog%2Fcovers%2Feasy-docker-containers-on-raspery-pi-with-portainer-io.png&w=3840&q=75)
![](/_next/image?url=https%3A%2F%2Fassets.tina.io%2F4648a2b6-0fd7-4c4b-9287-982677a650ff%2Fblog%2Fcovers%2Fhome-network-kubernetes-setup.jpg&w=3840&q=75)
What Even Is Mongo?
code, MongoDB, getting started
![](/_next/image?url=https%3A%2F%2Fassets.tina.io%2F4648a2b6-0fd7-4c4b-9287-982677a650ff%2Fblog%2Fcovers%2Fwhat-even-is-mongo.jpg&w=3840&q=75)
Using Sympy for Analytical Maths
code, python
![](/_next/image?url=https%3A%2F%2Fassets.tina.io%2F4648a2b6-0fd7-4c4b-9287-982677a650ff%2Fblog%2Fcovers%2Fusing-sympy-for-analytical-maths.jpg&w=3840&q=75)
![](/_next/image?url=https%3A%2F%2Fassets.tina.io%2F4648a2b6-0fd7-4c4b-9287-982677a650ff%2Fblog%2Fcovers%2Fgt-coursework.jpg&w=3840&q=75)
Installing LaTeX on Windows
getting-started, maths, code
![](/_next/image?url=https%3A%2F%2Fassets.tina.io%2F4648a2b6-0fd7-4c4b-9287-982677a650ff%2Fblog%2Fcovers%2Finstalling-latex-on-windows.jpg&w=3840&q=75)
Some Useful Python Methods For Data Analysis
getting-started, maths, code
![](/_next/image?url=https%3A%2F%2Fassets.tina.io%2F4648a2b6-0fd7-4c4b-9287-982677a650ff%2Fblog%2Fcovers%2Fsome-really-useful-pandas-methods-for-data-analysis.jpg&w=3840&q=75)
![](/_next/image?url=https%3A%2F%2Fassets.tina.io%2F4648a2b6-0fd7-4c4b-9287-982677a650ff%2Fblog%2Fcovers%2Fprobability-and-inference.jpg&w=3840&q=75)
Why Most Files Can't Be Compressed
maths, coding-theory
![](/_next/image?url=https%3A%2F%2Fassets.tina.io%2F4648a2b6-0fd7-4c4b-9287-982677a650ff%2Fblog%2Fcovers%2Fwhy-most-files-cant-be-compressed.jpg&w=3840&q=75)
Setting up external drives for a Plex server on a Raspberry Pi
getting-started, code
![](/_next/image?url=https%3A%2F%2Fassets.tina.io%2F4648a2b6-0fd7-4c4b-9287-982677a650ff%2Fblog%2Fcovers%2Fsetting-up-external-drives-for-a-plex-server-on-a-raspberry-pi.jpg&w=3840&q=75)
Compression Techniques
maths, coding-theory
![](/_next/image?url=https%3A%2F%2Fassets.tina.io%2F4648a2b6-0fd7-4c4b-9287-982677a650ff%2Fblog%2Fcovers%2Fcompression-techniques.jpg&w=3840&q=75)
![](/_next/image?url=https%3A%2F%2Fassets.tina.io%2F4648a2b6-0fd7-4c4b-9287-982677a650ff%2Fblog%2Fcovers%2Fbacking-up-a-ghost-blog-on-aws-ec2-to-s3.jpg&w=3840&q=75)
Taylor Expansions in PDEs
getting-started, maths, pdes
![](/_next/image?url=https%3A%2F%2Fassets.tina.io%2F4648a2b6-0fd7-4c4b-9287-982677a650ff%2Fblog%2Fcovers%2Ftaylor-expansions-in-pdes.jpg&w=3840&q=75)
Genetic Algorithms
getting-started, code
![](/_next/image?url=https%3A%2F%2Fassets.tina.io%2F4648a2b6-0fd7-4c4b-9287-982677a650ff%2Fblog%2Fcovers%2Fgenetic-algorithms.jpg&w=3840&q=75)
Building tobydevlin.com
getting-started, code
![](/_next/image?url=https%3A%2F%2Fassets.tina.io%2F4648a2b6-0fd7-4c4b-9287-982677a650ff%2Fblog%2Fcovers%2Fcode-js.jpg&w=3840&q=75)
Coding Theory - Linear Codes
maths, coding-theory
![](/_next/image?url=https%3A%2F%2Fassets.tina.io%2F4648a2b6-0fd7-4c4b-9287-982677a650ff%2Fblog%2Fcovers%2Fcoding-theory-linear-codes.jpg&w=3840&q=75)
Hi There!
getting started, silly code
![](/_next/image?url=https%3A%2F%2Fassets.tina.io%2F4648a2b6-0fd7-4c4b-9287-982677a650ff%2Fblog%2Fcovers%2Fhi-there.jpg&w=3840&q=75)