After retiring 15 years ago from professional software development, I had a clear picture of what source control should provide for a commercial development team:
Prevention of simultaneous edits – avoiding the chaos when two developers unknowingly work on identical code
Real-time visibility into who’s currently working on what files
Version metadata embedded in code files – a lifesaver when you find a piece of code and need to know what version it is
A comprehensive audit trail showing who modified which files and when
Automatic version incrementing for every modification
A single authoritative codebase representing the current production state
The ability to roll back to any previous version
When a business opportunity pulled me out of retirement and back into managing a development team, I naturally asked about source control. The universal response? “We use Git.”
When I began the project I am currently working on (more details will be provided next month – probably), it was initially intended as a small test to determine the capabilities of AI. Over the last six months it has turned into something that we might take further.
But I hit a problem. As a little hobby project I chose the database I really really like – CouchBD. CouchDB is elegant, simple yet very functional and efficient. Close to the perfect database management system (DBMS). But to take it further I need to involve other developers and it turs out that CouchDB skills are few and far between. Truly it is the Betamax of DBMSs.
My previous blog post outlines my success in converting a data structure definition from one format to another. Both ChatGTP and Gemini had a really good stab at it. The result was mainly accurate and extra information had been added for me. ChatGTP managed to make a mistake on the second attempt at the task, and when I asked it why, it used a completely made-up (and incorrect) rule about SQL Databases as an excuse. So Turing Test passed!
I gave it another task. Convert a routine from using the SQLite3 data base management system, to the higher performance MySQL. This is a straightforward, if tedious task. How did it do?
In a previous post I showed how an AI system (ChatGPT) was an easy way of converting an SQL Schema to a JSON-Schema. It was very successful and could save hours of donkey-work when dealing with a legacy database. I am coding in TypeScript so I asked for a TypeScript schema as well. It also did that perfectly.
Back in the mid 1990’s ( The dawn of Internet time), I started a website called http://www.bobsguide.com. Since then it has been extended, rewritten a few times, and is unrecognisable today. I am long since retired, but I thought it would be useful to chart its development and the reasons we made some decisions and not others..
In part 1 I described the somewhat chaotic way we got the bobsguide website started and how it was turned into a business. We had a lot of advice that we needed editorial content to attract the visitors we needed for a really successful site. A lot of people obviously believed the same thing. The web now has a number of financial technology sites with news items, interviews and and opinion pieces1.
So why did I ignore that and focus on a product directory?
I have been working on my hobby project, which is a generic database updating tool. It uses an extension of the JSON-Schema standard. But how do you deal with a new database from a legacy database.
I found a really simple solution, I asked ChatGTP to produce a JSON-Schema based on a database dump – which happily is a set of SQL statements.
In part 1 and part 2 I described how we started the business, and the business model. There was at least one opportunity that came up that didn’t go anywhere.
A few years into the project an opportunity came up. A New York based company was in financial difficulties and was for sale. It was quite affordable, in the low six figures, which we could manage. I was keen on us taking it further,
Lat week my wife’s desktop Outlook stopped working. It wouldn’t even start in safe mode. All the fixes we found on the web didn’t solve the problem. So the obvious solution was uninstall it and reinstall it. All our data is replicated on Outlook.com, so it would get downloaded from the Outlook server and she would be back in business.
We went into the control panel apps page. Because Outlook is part of Office 365 we ran the Office 365 uninstall and install programs. This didn’t solve the problem. OK – no problem we can just install Outlook as a stand-alone. This worked fine, the mails were all downloaded and we were back to normal.
I came back to my lockdown project (which was a data maintenance program that works with several databases) and decided to port it to Windows. This is because my Unix box went belly-up. Also I needed to exercise my brain.
A couple of times now I have copied and pasted code into Microsoft’s Co-Pilot and asked what is wrong. Both times it has come back with the answer.