Blog
Type safe URL templates
31 October 2024
Making URL template replacements safe
An unexpected way to open links in the terminal
28 August 2024
A little shortcut for opening terminal links in VSCode
A Visual Language for Image Manipulation
24 August 2024
I accidentally created a programming language for editing photos
Parameters, but only sometimes
16 August 2024
Better handling of function generics with optional parameters in Typescript using overloads
More generic than it should be
15 August 2024
A method for designing highly generic APIs in Typescript
Life, Gleam, and Parser Combinators
20 July 2024
A short introduction to Parser Combinators
The Most Awkward Person in the Room
13 July 2024
The challenge of language
On Automatic Lensess
27 April 2024
Why automatic camera lenses suck
On Falling Down
19 April 2024
Responding to change
Passwords
12 April 2024
Some casual commentary
Show Children when Parent is Hidden with CSS
04 April 2024
Make the children of an HTML element visible when the parent element is hidden
CSS @counter-style with Emojis
21 March 2024
Using the Counter-style attribute in CSS
Use localStorage for Tab Synchronization
07 March 2024
Synchronize data between browser tabs using localStorage
View Transitions and an Astro Presentation Framework
06 March 2024
Easily create presentations from your existing markdown content
Interacting with Kafka with Kotlin Coroutines
09 November 2023
Producing, Consuming, and Processing Kafka Event Streams
JPA Queries without the Magic
20 October 2023
Defining custom queries for JPA using specifications
Using Type Guards and Unions to prevent bugs and increase maintainability
26 June 2023
A practical introduction to type guards and union types
Nvim Error when using Plugins
13 June 2023
Fix NVim Error Executing Lua with Plugins
Generic Object Property Formatter and Validator using Typescript
09 May 2023
A statically typed, generic method for formatting and validating javascript objects for interchange across system boundaries
Postman Flows
03 March 2023
First impressions playing with the new Postman Flows
Update or Append to DynamoDB Attributes
28 February 2023
Use UpdateExpressions to modify DynamoDB items without reading them from the database
Draggable Div with XState and React
31 January 2023
A simple example of using XState with UI Events to build interactivity
Structuring HTML Content
26 January 2023
Transforming HTML into structured data to work with EditorJS
Let's talk about Feeds
24 January 2023
A short introduction to RSS feeds
Virtual Machine vs Containers
20 December 2022
Diagrams Comparing Virtual Machines and Containers
Smooth Bottom Navigator with Secondary Actions
15 December 2022
A Smooth Bottom Navigator using CSS Transitions and Svelte
Podcast and RSS Reader App Design
14 December 2022
A design study in building an RSS and Podcasting App in Figma with light and dark mode
Typescript Utilities
12 December 2022
Some general purpose utility types
Un-editable sections inside of a content editable
16 November 2022
Block user interactions and editing within a contenteditable or specific parts of it
Expanding Bottom Navigation with CSS Transitions
13 November 2022
A bottom navigation with expanding icons using CSS Transitions and Svelte
Education App Design Ideas
27 September 2022
Some design snips for a learning app
Read Metadata from Images using Rust
25 August 2022
Using Rust to parse EXIF metadata from image files
Binary Data and File Formats
20 August 2022
An introduction to bits, bytes, and binary file formats
Using React.memo for Controlling Component Rendering
16 August 2022
Using the react top-level API for debouncing and selectively rendering a component for better performance
Dev Tools Update
03 August 2022
Software development tools and languages I'm using at the moment
A Simple JSON Backed Database in Typescript
07 July 2022
Create a simple database that's backed to a JSON file using Typescript and Node.js
A type for getting properties common in all objects from a union
08 June 2022
Using typescript type conditions and Exclude to get keys commmon in parts of a union and an object with only common keys from that union
Type Narrowing in Typescript
31 May 2022
Using Type Narrowing for better handling of dynamic variables in typescript
Localhost HTTP Proxy with Node.js
08 March 2022
React Top Level API
01 March 2022
Building complex react components using the React top-level API and TypeScript
Visualizations with React
11 February 2022
Create SVG Graphs and Visualizations in React using D3
Logging Aliases for Javascript
02 November 2021
Console and file-based logging alias for Javascript
Javascript Range Function
29 October 2021
Create ranges in Javascript
Template Literal Types with Typescript
16 August 2021
Defining type combinations using Template Literal types
Building Serverless Apps using the Serverless Stack Framework
17 June 2021
Build, debug, and deploy serverless applications on AWS using SST and VSCode
Multi-module Python project using an __init__.py file
06 May 2021
How to work with modules and handle the 'ModuleNotFoundError: No module named ...' error
XUnit with F#
10 April 2021
Configuring and Testing F# applications using XUnit and the .NET Core CLI
Control a Raspberry Pi GPIO with Python
28 March 2021
Flicker and control and LED via a Raspberry Pi's GPIO Output pins using Python and RPi.GPIO
Custom Styles in Markdown
23 March 2021
Add styles for specific HTML elements in a markdown document
Render Element by Tag Name in React
19 March 2021
Dynamically render a React Element given the name of the corresponding HTML element
Setup HomeAssistant RaspberryPi with WiFi configured
09 March 2021
Enable a HomeAssistant flashed RaspberryPi to operate over WiFi using config files
Serialize a JsonValue Array using F# and FSharp.Data's JsonProvider
03 February 2021
Making use of the FSharp.Data JsonProvider and the serialization of JsonProvider arrays into JSON
Jenkins: A Git process may have crashed in the repository
03 February 2021
Repair an issue preventing Jenkins from running Git processes
Custom Attributes in C# Web Controllers
17 December 2020
Modify controller behaviour using Attributes
Debug POSTs using an Express App
04 December 2020
Create an express.js app with an endpoint that logs and returns a request's JSON body
Backup SQL Server Database as Script
26 November 2020
Create a DB Backup/Restore Script using SQL Server
Linear Regression with Sklearn
25 November 2020
Create a simple Linear Regression model using Scikit-learn and the Iris dataset
Generate data for a Postman request
24 November 2020
Using Pre-Request Scripts and Environment variables to generate data in Postman
Capture Fetch with Cypress
10 November 2020
Capture and Use Fetch Requests and Responses in Cypress
Position Legends in Seaborn
14 October 2020
Move figure legends outside of your graph area with seaborn
Scripting with FSharp
13 October 2020
Using the .NET CLI to use the F# Interactive console and run F# Scripts
Package Management with Poetry
07 October 2020
Manage python packages using poetry
Trust .NET Core Dev Certificates
07 October 2020
Adding .NET Core Certificates to the Cert store from the CLI
Highlight Specific Elements
29 September 2020
Add a border around all HTML Elements that match a CSS Selector to aid in debugging
URL Text Fragments
29 September 2020
Link to, and highlight, content on any part of a Web page with the Text Fragment directive
Node.js Dirname vs Resolve
25 September 2020
Working with paths using resolve and __dirname in Node.js
Split an Array into Segments
23 September 2020
Distribute elements of an array over a fixed number of segments
Mongo DB in Docker
22 September 2020
Run a MongoDB Instance with Docker or Docker Compose
Web APIs with AdonisJS and PostgreSQL
06 September 2020
A look at developing Web APIs using the AdonisJS Framework and MongoDB
Automate Anything with GitHub Actions
11 August 2020
Build a GitHub action that updates your Twitter Profile
Code in a Container
25 July 2020
Using a Docker Container as a development container using the Visual Studio Code Remote-Containers Extension
Code for Noobs
17 May 2020
An introduction to programming and general programming concepts using JavaScript
Colour in Black and White Photography
07 April 2020
Introduction to Black and White Colour Filtering and Processing for Photography
The Gatsby Migration, pt.3 - Smart Pages
15 March 2020
Adding dynamic pages to a Gatsby site
The Gatsby Migration, pt.2 - Dumb Pages
01 February 2020
Migrating a React.js website to Gatsby.js
The Gatsby Migration, pt.1 - Setting the Scene
21 January 2020
Building a basic React site with basic dynamic data loading
Real-time Communication with MQTT
12 November 2019
MQTT and real-time communication with the browser, JavaScript, Web Sockets and a Mosquitto message broker
Intro to F# Web APIs
30 October 2019
Introduction to .NET Core Web APIs with F#
Looky, a wild HTML!
01 October 2019
The first blog post, A quick journey through my design and development process for the site