Introduction This post is the second in a series on building a tool to simulate the kinematics of a racing car’s suspension. The first post walked through the earliest stages of building a tool of this kind. It covered a couple of ways to go about solving this kind of problem, introduced the concept of geometric constraints, explained the requirement for an iterative solve and the utility of…
I would have written you a shorter letter… This is part one of what will be, by necessity, a series. I planned to cover this as a single post, but the scope of both the software and the associated waffle is not insignificant, so I'm going to break it up into chunks. Background A couple of years ago, I stumbled across SolveSpace , a free, parametric CAD system with one feature that’s…
Origins of observations on a cultural divide Over the past ten or twelve years, I’ve had the privilege of working on a varied and often incredibly interesting set of problems. The products I’ve helped push forward, however far my efforts actually got us, range from exotic internal combustion engines to data-hungry, data-spewing financial analytics systems † . Whatever the product or…
TL;DR Windows: Install usbipd: https://github.com/dorssel/usbipd-win Connect Arduino List USB devices via PowerShell (admin) terminal: usbipd list Share (bind) target USB device: usbipd bind --busid X-Y Connect (attach) target USB device: usbipd attach --busid X-Y --wsl Linux: Run sudo chmod a+rw /dev/ttyACM0 , or whatever your device is. Run sudo usermod -a -G dialout $USER to add your user to…
1: Draw.io diagram/drawing template generator Generates a Draw.io template that broadly follows the BS EN ISO 5457:1999 standard for technical product documentation. To generate a template, fill in the form below and click the “Generate Template” button. Note that the template is generated in the Draw.io XML format, with all non-text elements locked. Company: Drawing Title: Author:…
Notes This post was updated on 2025-03-31 to reflect changes made to the package in January 2025. These changes brought the package in line with the original approach used for the Anneal project, and addressed an issue with the compute_intermediate_index function that was introduced when packaging the utility for external consumption. TL;DR We used strings to track the positions of cards in a…
Anneal CAD viewer: perspective projection of coilover STEP file. Overview In the previous post , I talked through the motivation for us building a 3D viewer, then introduced the basics of our old Three.js setup. This worked through cameras and projections, view frustums, controls, and a few other things—but stopped short of giving the viewer a more polished feel.
Preface I’ve been trying to put this together for the past few weeks, but it’s incredibly difficult to condense such a wide-ranging experience into a coherent piece of writing, especially one that might actually be of interest or utility to anyone else. I’ve done my best to outline what actually happened, give my view on contributing factors and lessons learned, then put forward…
Motivation This post is just intended to serve as a longer form version of my thoughts on differentiable programming in engineering. It’s effectively a follow-up to a lot of back and forth on this Twitter thread , where a whole bunch of us were discussing differentiable programming in engineering. The folks involved were: Stellarator engineer, @Andercot , Zoo/KittyCAD CEO, @jessfraz ,…
Splitting atoms or roasting beans “Every business is a software business.” This is a line from Winning with Software where the author’s trying to emphasize software’s critical importance to almost every business out there today. This importance holds up irrelevant of the business’s core function. It doesn’t even matter whether anyone in your organisation has…
Anneal CAD viewer: perspective projection of coilover STEP file. https://www.getanneal.com Motivation: design reviews suck The need to tackle this came from wanting to visualise 3D CAD data in a web browser, all as part of Anneal ’s design review tooling.
I’m not naive… right? My accent doesn’t give it away too readily, but I grew up on the edge of a fairly hostile estate in north Belfast—one of the bits you used to hear about on the news—at the tail end of the Troubles. I was still in primary school when the Good Friday Agreement was signed, but do retain pretty vivid memories of personnel carriers on the streets, British Army…
Background The branching strategy we use at Anneal is something I’ve arrived at after a few years of iteration across projects. It follows a similar pattern to GitLab Flow , but isn’t quite the same. Like GitLab Flow, we have both environment and feature branches, and things are merge based—so rebasing isn’t something that’s an overly routine part of the workflow. However,…
Professional Interests I have a particular interest in helping develop software for science and engineering, but generally enjoy working on things that are hard and that bridge disciplines. Prior experience ranges from Formula One cars to quantitative financial analytics systems. The work that I find most exciting tends to fall into a few categories: Scientific computing—data analysis, simulation…