I'm Donnie Cameron. I write programs that write programs, and I run that work from Sinister Code.
Common Lisp, Java, Python, CI/CD, Terraform, Azure, AWS, Kubernetes, distributed systems.
Backend and distributed systems for 20+ years. The past year on DevOps, still writing as much code as ever.
Currently seeking remote senior software engineering or DevOps roles.
Years of working across languages left me with a metalanguage view of programming: once you see the shared machinery, a new language is largely syntax. The work I keep coming back to, almost everywhere I've worked, is writing programs that write programs.
Data UI is the current project. An RBAC-backed application that used to take tens of thousands of lines of code is described by a model of fewer than 100 lines, so a person can take an idea to production in minutes. An AI can do the same without a senior engineer standing behind it, because the whole application is that small model. The model is the identity of the application and it dictates where the application is deployed. Updates, maintenance, and deployment stay with the model for the life of the application.
At Sight Machine, the simplest operator on a manufacturing-telemetry pipeline was adding two fields: about 300 lines of Java. I built Operator Expressions so the same operator was two lines of spreadsheet-like code. That changed who could create an operator and sped up new-customer onboarding.
I keep learning new languages, mostly to see what they actually add. They rarely match what older languages already do. Common Lisp was developed in the early 80s and formally specified in 1994. It is still ahead of well-known languages in its object system, conditions and restarts (what other languages call exceptions), compilation to fast native code, the macro system, and the treatment of functions and parameters. Mathematics keeps the wisdom of the ages. Computer science has a bad habit of discarding working machinery for something shinier and weaker.
Emacs is not an editor. It is the computing environment I work in: code, planning (Org-Mode), notes (Org-Roam), shells, remote machines, calculations, data, GitHub. Aside from the browser, I rarely need another application.
That same live, programmable environment is now the harness for several AIs from different services, running in one Emacs instance. They can see each other's capabilities, they collaborate, and they can modify the live environment they run in, including the harness itself, because everything is a buffer, even the AIs.
I have spent years on small neural-network systems where I can bring up a multi-layer net and tweak connectivity, transfer functions, and distributed behavior while it is running. See dc-ann, bianet-neuron, and bianet-mesh.
Short notes on each project are on the home page.