Github Actions Step Summary

Do you find yourself wasting time trawling through logs and downloading CI artefacts to find common types of errors? Use GitHub Actions Step Summaries to accellerate your workflow.

2025-04-20 · Cameron Kerr

Where Did That Sqlalchemy SQL Originate?

ORMs such as SQLAlchemy are very useful, but can easily generate very inefficient unrecognisable code. Here’s an easy way to log where the query originates in your code.

2025-04-19 · Cameron Kerr

Openscad Magnifying Glass

How I fixed a magnifying glass by creating an original frame

2025-03-29 · Cameron Kerr

DIY Phone Case: as easy as 1, 2, Minkowski!

It’s easy to create a phone case when there are none on the market

2025-03-06 · Cameron Kerr

OpenSCAD: More Satisfying than you Think!

An introduction to OpenSCAD to encourage you to try it out

2025-01-31 · Cameron Kerr

Bloom Filter Lightning Talk

A Lightning talk I gave to Dunedin Code Craft in November 2024

2024-11-04 · Cameron Kerr

3d Print and Paint Ocarina

A fun modern craft and music project

2024-09-07 · Cameron Kerr

Profiling PostGIS with PLProfiler

PLProfiler is a great tool for profiling PL/PGSQL functions, but you need an extra trick for PostGIS native functions.

2024-02-01 · Cameron Kerr

Ergodox EZ vs Kinesis Advantage

I’ve been a delighted Kinesis Advantage user for over 10 years. I purchased the Ergodox EZ as a second keyboard for hybrid work. Now its time to replace my Kinesis. Let’s compare!

2023-08-22 · Cameron Kerr

Using Common Expression Language (CEL) in... a Metrics Exporter for LDAP

Use the Common Expression Language (CEL) to allow user-friendly flexible policy rules. Show this with YAML to group/filter data to expose as metrics.

2023-08-15 · Cameron Kerr

Reimplementation of Learning :: a Python to Go Retrospective

PoC coding and reimplementation of Python and Go for metrics and log parsing using an example of 389 Directory Service.

2023-08-15 · Cameron Kerr

Syft your Linux Fleet Looking for Shellshock, Log4J.... and Oracle Java?

I explore using Syft and Grype, demonstrate use of jq and Go’s text templates, and explore using Syft against a server rather than a container.

2023-06-19 · Cameron Kerr

Managing the Performance of Grafana/Prometheus Dashboards using Nginx & Lua

Regain visibility into the performance of Open Source Grafana and Prometheus so you know which dashboards and visualisations are slowing down your Prometheus service.

2023-03-24 · Cameron Kerr

Map Git Dependencies using n-grams in Python

Where in Git would I go to edit the code that deploys a set of resources identified by audit findings?

2023-01-25 · Cameron Kerr

Amazon EFS Top-Talkers

Use Amazon’s VPC flow logs (similar to NetFlow) to identify NFS clients and servers and enrich that IP-level information with useful names so you can recognise EC2 instances, EFS endpoints etc.

2022-11-22 · Cameron Kerr

Job Hunting for Senior IT Roles

Some observations from successful job hunting for those wanting a remote role or to pivot in the industry. Meant for more senior roles, where the funnel should be smaller.

2022-02-07 · Cameron Kerr

Deploying with Ansible when Outgoing Access to Internet is Unavailable (BYO proxy)

Network gynmastics using SSH and a local proxy for servers that don’t have internet access but still need to ‘yum update’ etc.

2018-01-25 · Cameron Kerr

Limiting Access via Squid to Docker Containers

I wanted to grant just the access needed for different Docker containers through Squid. I used Squid’s ability to use Ident as a way to look up a ‘user’ for a connection, and made a custom identd server to provide this information.

2017-11-02 · Cameron Kerr

Capturing and Replaying Connection-less Protocols (eg. IPFIX into Logstash)

Capture real-world network traffic so you can replay it later / elsewhere for development and testing. An example is given using IPFIX (AppFlow), but directly relevant to UDP Syslog too.

2017-04-25 · Cameron Kerr

Point a single process to /dev/urandom instead of /dev/random

Giving a single process (tree) a different view of the filesystem without modifying the process; and showing how to do this manually and via Ansible.

2017-03-23 · Cameron Kerr