Teaching old tech dogs new AI tricks
From the I-can-be-your-long-lost-pal Dept.
As AI impacts the way we develop software (be it vibe coding, harness engineering or prompt monkey), I see some older technologies that will get a new lease on life.
Most of these are arising from the growing realisation that “code generation is no longer the bottleneck — verification is”.
Markdown, Mermaid and other text formats
The clue is in the “language” in “large language models”. Text formats are back big time, and Markdown has surpassed it’s competitors like Atlassian Confluence.
Other text formats are also lifting off - Mermaid is great for diagrams. Models can quickly understand it’s functionality.
DSLs
you can use domain-specific languages to establish a trust boundary.
From the article “Custom programming languages make agents really, really good”. Also check out Martin Fowler’s “LLM and DSLs” article.
The considerable advantages of DSLs have traditionally been outweighed by the cost of generating and maintaining the associated tooling.
But AI brings these costs down, and the advantages are amplified when considering that DSLs act as a sensible tightening of the problem space.
Approval testing / snapshot testing
What if we left the “Assert” part of “Arrange / Act / Assert” in the hands of a human?
Rather than coding stuff like var greeting = "hello world" just write it to a log and have a quick glance at it, and only really worry if it changes.
This is a great way of “keeping a human in the loop”.
But these artifacts can also benefit AI agents. The screenshots or sample logs can be analysed and offer a richer context for AI.
Log files in particular can be great, as they break down the sub-steps along the way.
SQLite
Small, portable, self-contained relational databases.
With AI costs increasing, we are looking for tighter contexts without giving up the bredth. A SQLite DB can sit alongside the code and allow for easy inspection and validation.
Formal Verification
Whilst at university in circa 2000, we studied the B Method as a formal verificaton systems. I remember thinking at the time - this will either be the future or never heard of again.
With an increased focus on verification, formal verification methods approach the problem by strengthening the contracts and boundaries. AI can be used to create these “theorems”, and the code deterministically generated via proven tooling.
And older languages like Coq are being challenged by relative newcomers like Lean 4 and Dafny. Updated languages are making it easier for developers - I remember B Method being obtuse, verbose and usually perplexing!
Microservices
This one is a bit contentous.
On the downside - AI development systems often struggle with multiple repos and spread-out logic.
But used correctly, microservices offer strong boundaries and smaller blast radiuses.
And AI is helping reduce the toil in maintaining 100s of microservices - it’s easier now to implement side-cars and unified telemetry and templated infrastructure-as-code.
Additionally, they allow you to more easily take advantage of the growing number of third party tools. For example, you could replace your “notifications” microservice with AWS SNS or Couier Notifications.
Summary
These all tie in with what I see as the rising challenge of AI engineering - quality assurance and compliance.
We can have application code generated quickly, with quick iterations. We can have whole pieces of software with no human-written code (aka “Dark factory”).
But how do we know that the software works? / That it is secure? / Performant? / Usable?
We are moving from the age of “Coding and Programming” to “Validating and Verifying”.