ocgtk development update: June 2026
Development update for ocgtk (a set of GTK4 bindings for OCaml), including upcoming support for signals and interfaces, expanded GLib type coverage, and packaging improvements to support other operating systems.
Development and tech musings. I'm a full-stack developer working with serverless architecture on AWS with TypeScript and React
Development update for ocgtk (a set of GTK4 bindings for OCaml), including upcoming support for signals and interfaces, expanded GLib type coverage, and packaging improvements to support other operating systems.
The O in OCaml is for its object-oriented extension, but I needed a way to emulate the constraints of inheritance without it. This raised some interesting design questions about how to do it using only the core ML language.
Even though I was focussed only on generating GTK bindings for OCaml, I still had to consider all the other libraries it depends on.
The "glue" part of OpenTelemetry instrumentation is where each vendor hands you a ball of sticky tape and tells you to install it in your environment.
ocgtk, a set of GTK4 bindings for OCaml, is now available on opam as preview1 release
Introducing ocgtk, a new set of GTK4 bindings for OCaml generated from GObject Introspection data.
Last night I presented a talk at the Sydney AI Engineering Meetup on using agentic coding loops with lesser known languages and less-capable models, of which you can find the videa and slides linked
Free AI credits, a side project picked on a whim, and a false sense of progress left me with a codebase I couldn't read. Losing control was necessary to understand how to get it back.
What role does programming language choice make when targeting serverless environments, and how does OCaml stack up against popular serverless development languages? What would it take to make OCaml your primary development language for serverless?
Is it unusual as developers that we create software but also the software that helps us build?
Observability is not just about production systems. Leaving critical engineering infrastructure like build pipelines uninstrumented makes it hard for your organisation to identify development bottlenecks and release regularly.
Wrap-up on my time at the ICFP '25 conference in Singapore
ICFP, smaws gets multiple scheduler support
Update on smaws, an AWS SDK for OCaml
OCaml has no official solution to cross-compilation, with many disparate options developed for different use cases. In this article I describe my own experiments with cross-compilation and attempts to make it easier to get started and maintain.
ppxlib is usually just thought of as a tool for transforming OCaml code, but it can be used to generate new code too.
OCaml has some facilities for eliminating unused code - I explore what it can do, and how you structure your code to take advantage of it
Nostalgia for old operating systems and applications is misplaced. We don't need to return; their failures are the lesson learned.
My (unsuccessful) investigation into removing unused code from the compiled output of OCaml, including all the web archeology and deep-dive into how native binaries are formed.
An AWS SAM application with a lot of APIs can still hit the CloudFormation stack resource limit. This guide shows you how to approach stack splitting for such an application.
How to do basic administration tasks, like add users to groups, with the IAM Identity Center when managing multiple AWS Accounts and user access
Storybook 7 has changed the visual regression story, no longer relying on storyshots. This is how to get a visual regression workflow up and running with the new test-runner functionality.
Some notes on using ppx_expect to unit test
ocaml-cfgen gets resource reference, IAM policy generation and what's next
A new project I'm working on to generate CloudFormation templates from OCaml bindings, and the problems that motivated its creation
The design of CSS does not make styling HTML more maintainable - in fact, it seems to actively work against it.
Database ORMs like Prisma can make managing data access layers to SQL databases much easier for developers, but if used with a database that has dramatically different semantics and API, the benefits of abstraction are lost and turned into a maze of horrors
It takes time to build up a sense of what to instrument to get the most out of your investment in observability, and it pays to know what primitives you have at your disposal and how to use them effectively.
Learn about packaging your NodeJS-based AWS Lambda functions with esbuild for improved cold start times and reduced deployment package size
Starting a new Reason project for native development is relatively straightforward. We run through the basics.
Learn how to build a type-safe JSON API in ReScript that runs on AWS Lambda
Learn how to use ReScript to write and deploy a simple AWS Lambda application
Add retries, timeouts and cancellation to your fetch() calls without including another HTTP library
Building transaction applications on DynamoDB can be a challenge - here is a few tips I've learned to ensure it is successful
When would you use DynamoDB? A quick run-down of the advantages and disadvantages
Managing multiple accounts is a headache on AWS, especially when you're trying to maintain best practice compliance and when operations isn't your day job. AWS's new Control Tower service makes it much easier to provide governance and monitoring of your multi-account environment, automating the deployment of centralised audit logging, account guardrails and ensuring consistent base configuration…
Setting up a test of code that uses node-fetch with jest and Typescript
Setting up CloudWatch Logging for your API Gateway is painful - here's a script to make it easy
Understanding what is Amazon Cognito and how it is used
Running your own Jitsi instance on EC2 with an easy-to-deploy CloudFormation solution
A guide for getting started with dynaglue
Annoucing dynamodb-csv-export-import, a utility for importing the CSVs generated by the AWS DynamoDB Console 'Export to csv' feature
An overview of this blog