Kensio Software Freelance Development Blog

2026

Keep test state inside each test case

Keep test state inside each test case

If we’re not careful, test setup can inadvertently develop into fixture hell. One way to mitigate that is to keep test data setup cheap and independent inside each test case.

@kensio/yulin adds simulated Secrets Manager

@kensio/yulin adds simulated Secrets Manager

@kensio/yulin adds a simulated AWS Secrets Manager, so you can create and read versioned secrets in local development and isolated tests, encrypted through simulated KMS and authorized by simulated IAM.

@kensio/yulin v0.38.0 adds simulated KMS

@kensio/yulin v0.38.0 adds simulated KMS

@kensio/yulin package v0.38.0 adds simulated AWS KMS, so you can encrypt and decrypt with real key material and test key policies against simulated IAM in local development and isolated tests.

@kensio/colophon social meta image npm package

@kensio/colophon social meta image npm package

The @kensio/colophon package generates social meta images for the posts of a static site from each post’s own frontmatter, including syntax highlighted code images.

@kensio/yulin v0.34.2 adds simulated Lambda

@kensio/yulin v0.34.2 adds simulated Lambda

@kensio/yulin package v0.34.2 adds simulated AWS Lambda, so you can create and invoke functions in-process, including from CloudFormation templates and real in-process handlers.

@kensio/yulin v0.34.2 adds simulated IAM

@kensio/yulin v0.34.2 adds simulated IAM

@kensio/yulin package v0.34.2 adds simulated AWS IAM, so you can create Roles, Users and Policies, and have other simulated services authorize their own actions against them.

Video: Simulating AWS locally for website hosting with Yulin

Video: Simulating AWS locally for website hosting with Yulin

Demo video for the @kensio/yulin npm package: Simulating AWS locally for website hosting with Yulin

@kensio/yulin v0.24.0 adds simulated Route53

@kensio/yulin v0.24.0 adds simulated Route53

@kensio/yulin package v0.24.0 adds simulated AWS Route53, so you can simulate Hosted Zones, Records and CNAME resolution, including sim CloudFormation support.

@kensio/smartass assertions ESLint config rules

@kensio/smartass assertions ESLint config rules

As of v1.27.0 the @kensio/smartass npm package now exports ESLint config rules to encourage use of a more specific assertion when one is available. For example, for slightly misused assertions like these:

@kensio/yulin v0.18.0 adds simulated CloudFormation

@kensio/yulin v0.18.0 adds simulated CloudFormation

@kensio/yulin package v0.18.0 adds simulated CloudFormation, so you can deploy CloudFormation, SAM and CDK JSON templates into simulated AWS for local dev and testing.

@kensio/yulin v0.16.0 adds CloudFront Functions typing support and ESLint config

@kensio/yulin v0.16.0 adds CloudFront Functions typing support and ESLint config

@kensio/yulin package v0.16.0 adds TypeScript typing support and ESLint config for AWS CloudFront Functions JS2 syntax.

@kensio/smartass 1.15.0 improves overlap-preserving type refinement

@kensio/smartass 1.15.0 improves overlap-preserving type refinement

@kensio/smartass package v1.15.0 improves type refinement so that assertion functions and composable matchers incorporate existing type information from the calling scope.

@kensio/smartass 1.10.0 gets composable type narrowing matchers

@kensio/smartass 1.10.0 gets composable type narrowing matchers

The @kensio/smartass package now provides composable type narrowing matchers. This allows you to apply structured assertions that provide detailed type narrowing back to TypeScript.

@kensio/smartass type narrowing assertion function npm package

@kensio/smartass type narrowing assertion function npm package

The @kensio/smartass package provides TypeScript-first test assertion functions with precise type narrowing. The assertion functions provide type information to TypeScript, which makes it easier to write straightforward …

@kensio/yulin TypeScript AWS simulator npm package

@kensio/yulin TypeScript AWS simulator npm package

The @kensio/yulin package is an AWS simulator for Node.js TypeScript applications. It’s conceptually related to moto for Python and LocalStack, but is a bit different to both of those. Yulin simulates AWS services …

@kensio/part-factory test object factory npm package

@kensio/part-factory test object factory npm package

The @kensio/part-factory package provides a minimalist object factory pattern with strong TypeScript typing. When writing tests, it’s common to need objects that are mostly boilerplate. A test might only care that …

I passed the AWS Certified DevOps Engineer Professional exam

I passed the AWS Certified DevOps Engineer Professional exam

I passed the AWS Certified DevOps Engineer – Professional exam, demonstrating my proficiency in automating, deploying, operating, and monitoring applications on AWS, including CI/CD pipelines, infrastructure as code, …

2025

Staff Software Engineer at Fanalysis

Staff Software Engineer at Fanalysis

In June 2025 I joined Fanalysis as a Staff Software Engineer, working on AWS with .NET, C#, TypeScript, Lambda, ECS, DynamoDB and Rekognition.

AWS infrastructure and full stack development for HOA Mailers

AWS infrastructure and full stack development for HOA Mailers

I worked with HOA Mailers on AWS infrastructure, back-end systems and front-end software, using Go, TypeScript, React, Next.js, GraphQL and PostgreSQL.

2024

Contracting for ElseWhen

Contracting for ElseWhen

I provided software engineering services to ElseWhen on a contract basis, working on LLM systems in Python on Google Cloud Platform with LangChain, OpenAI and Gemini.

Contracting for Omnipresent via YLD

Contracting for Omnipresent via YLD

I provided software engineering services to Omnipresent via YLD, working in Python with FastAPI and asyncio on AWS, with Lambda, ECS, PostgreSQL, SNS, SQS, Docker and Terraform.

2023

Contracting for KrakenFlex

Contracting for KrakenFlex

I provided software engineering services to KrakenFlex on a contract basis, working in Python with asyncio on AWS, with Lambda, SAM, CloudFormation, DynamoDB, SNS and SQS.

I passed the AWS Certified Solutions Architect Professional exam

I passed the AWS Certified Solutions Architect Professional exam

I passed the AWS Certified Solutions Architect – Professional exam, demonstrating my proficiency in designing secure, scalable, resilient, and cost-effective cloud architectures on AWS, including networking, identity and …

I passed the AWS Certified Developer Associate exam

I passed the AWS Certified Developer Associate exam

I passed the AWS Certified Developer Associate exam, demonstrating my proficiency in developing applications on AWS. Certification 4b2991ab-5568-4b2e-8a53-b73968c244b6.

2022

Contracting for Hyperobjekt

Contracting for Hyperobjekt

I provided software engineering services to Hyperobjekt on a contract basis, working in TypeScript on Google Cloud Platform.

Automated static site infrastructure with AWS CloudFormation, Cloudfront, S3, Hugo, GitHub Actions

Automated static site infrastructure with AWS CloudFormation, Cloudfront, S3, Hugo, GitHub Actions

After manually setting up several static sites with AWS, Hugo and GitHub Actions, I got round to putting together CloudFormation configuration to do it automatically. This includes handling the TLS certificate in AWS …

Contracting for X2X Media

Contracting for X2X Media

I provided software engineering services to X2X Media on a contract basis, working in Python on AWS, with Lambda, AppSync, GraphQL, SQS and CloudFormation.

2021

Working as a software contractor has confirmed the value of "excessive" tests to me

Working as a software contractor has confirmed the value of "excessive" tests to me

During my career as a software engineer so far, I’ve tended to err on the side of caution when writing tests, taking the view that “more is more”. I think it’s usually better to have one more test …

Freelancing for Doozy

Freelancing for Doozy

I’ve been helping to build Doozy’s product as a freelance Software Engineer, using GCP, Firebase, TypeScript and serverless technology. I’m always keen to help early stage start ups with building an …

Contracting for Bulb via YLD

Contracting for Bulb via YLD

I’ve been providing software engineering services to Bulb via YLD, using Kubernetes, Terraform, GCP, TypeScript, Node.js, Python, MySQL, PostgreSQL and other technologies. If you need an experienced contract …

What is the biggest tradeoff of going serverless?

What is the biggest tradeoff of going serverless?

There was an interesting Twitter thread yesterday about the tradeoffs of going serverless. There are indeed many such tradeoffs. Serverless approaches offer many benefits, in particular the potential for cost savings (at …

2020

Custom e-commerce search development for Moment Wall Art

Custom e-commerce search development for Moment Wall Art

Moment Wall Art needed a fast and efficient e-commerce search solution for their online sales system. I was able to provide a scalable, low-cost search solution with a quick turn around.

Etsy integration for Moment Wall Art

Etsy integration for Moment Wall Art

Moment Wall Art sells art pieces on its custom e-commerce website as well as via Etsy. I provided an automated Etsy integration to manage products, inventory and orders between the two systems.

Custom Wordpress development for Hacking Chinese

Custom Wordpress development for Hacking Chinese

Hacking Chinese is a Mandarin language education website. I provided bespoke WordPress development to better serve Hacking Chinese’s readers. The new WordPress theme is more efficient both on the backend when …

Etsy API and system integration for Pop Robin Cards

Etsy API and system integration for Pop Robin Cards

As well as its bespoke e-commerce software, Pop Robin Cards also sells its 3D pop up cards via Etsy. This required a customised Etsy API integration, which I was able to provide.

Custom e-commerce development for Moment Wall Art

Custom e-commerce development for Moment Wall Art

I developed a customised e-commerce system for Moment Wall Art. The e-commerce system is serverless to deliver a fast and efficient user experience at low operational cost. The e-commerce system manages Moment Wall …

Custom web development for Chinese Boost

Custom web development for Chinese Boost

I developed a custom education website for Chinese Boost. The website provides Mandarin Chinese learning materials and dynamic resources. The website is a serverless solution with a static web frontend. This ensures high …

Bespoke e-commerce development for Pop Robin Cards

Bespoke e-commerce development for Pop Robin Cards

I developed a tailor-made, custom e-commerce system for Pop Robin Cards. Pop Robin Cards sells 3D pop up cards such as birthday cards and Christmas cards. The bespoke e-commerce solution that I developed manages the …

Wordpress conversion and web development for East Asia Student

Wordpress conversion and web development for East Asia Student

I provided conversion of a WordPress website into a fast and cost-efficient static website for East Asia Student. Due to a combination of high-quality content and good SEO, the education website receives a relatively …

2019

General feature set for a fully-fledged application framework

General feature set for a fully-fledged application framework

Entities Entity modelling, including entity relations. Aggregate Group of entities that can be interacted with as a single object. Commands Decoupled command objects that perform change operations on entities and …

2018

Principal Software Engineer at Freetrade

Principal Software Engineer at Freetrade

I was Principal Software Engineer at Freetrade, working mainly on the platform, on serverless systems using Google Cloud Functions, Firebase and TypeScript.

Back-end development for uMed

Back-end development for uMed

I was a back-end Software Engineer at uMed in 2018, working in Python and Django on AWS, with Celery for asynchronous work and Ansible and Docker for deployment.

2014

E-commerce and API development for LoveCrafts

E-commerce and API development for LoveCrafts

I worked on the LoveCrafts e-commerce platform from 2014, doing Magento development, and then on the Social API team working on APIs and microservices through to 2018.

Custom e-commerce development for China Checkup

Custom e-commerce development for China Checkup

I was the sole developer on China Checkup from 2013 to 2014, working on a custom Laravel e-commerce system for selling business verification services, and on the server it was hosted on.