“I have never let my schooling interfere with my education.” - Mark Twain I was lucky at school because we had microcomputers quite early on. There were some enlightened staff who introduced them and started courses around them. The school benefited from being on a scenic coast. It meant that, despite being a rural comprehensive, it could attract good teachers. My first exposure to…
Back in the 90s, the company I was working for was developing a database-backed product. We were going to connect to a real SQL database for production (probably Oracle but I don’t remember for sure). However, for testing we wanted something more lightweight. Today we’d call that an embedded database. For example, in Java these days you might use H2 . Or you might use the real target…
“The three great virtues of a programmer: laziness, impatience, and hubris.” - Larry Wall Like many software developers, I am exploring how much you can do with the latest AI-assisted programming techniques, although things are changing so fast any commentary is likely to be out of date as fast as it can be typed (or generated). At work recently I got the chance to code something from…
“Good, good, good, good vibrations” - Beach Boys I suggested in passing that it might be fun do some code generation on top of .NET Expression Trees. I had been reading about them in a C# book and they seemed like target for a toy Lisp implementation. Expression Trees are a means of programmatically building executable code at runtime. They are used for LINQ, but you can also use them…
“The only way to go fast, is to go well” - Robert C. Martin, Clean Architecture I have been reading “Clean Architecture” by “Uncle Bob” Martin. We are building a new system at work and there are fans of “Clean Architecture” so I thought I had better understand it. Robert Martin has become a controversial figure, but I have always liked his…
My friend, and quality blogger, James Thomas ( QA HICCUPS ), recently asked me what had happened to my blog. I said now programming was my day job, hobby programming at home was less fun. He said I should write about engineering management (my previous job), but that sounded even less fun. So here is another bit of hobby programming. Large Language Models Unless you have been living under a rock…
Very occasionally I read or hear about a piece of software tech and I have to play with it straightaway. This is one of those occasions. This is not a paradigm-breaking new programming language. Nor is it a something about AI or vibe coding. Instead it might seem banal. I was listening to IEEE’s Software Engineering Radio and came across Will McGugan talking about Textual User Interfaces .…
“Learning never exhausts the mind.” – Leonardo da Vinci I am still reacquainting myself with programming full-time. To help my adjustment I’ve been reading “The Pragmatic Programmer” . (Although a friend once told me, one should only ever reread the classics.) The 20th anniversary edition is an excellent book, full of common-sense advice for the professional…
“To understand error in judgment, we must understand both bias and noise. Wherever there is judgment, there is noise - and more of it than you think.” – Kahneman, Sibony, and Sunstein “Noise” by Daniel Kahneman, Olivier Sibony, and Cass R. Sunstein is essentially a follow-on book from the brilliant “Thinking Fast and Slow” . While “Thinking Fast and…
It is my official last day at Linguamatics (part of IQVIA ). It has been fifteen years: “Man and boy”, as my ex-colleague Chris would have said. It was a rollercoaster ride working on ground-breaking software with amazing people. But it is time to move on and do something new. I am stepping away from development management and going back to programming. It feels like I have served my…
“If it looks like a duck, and quacks like a duck, we have at least to consider the possibility that we have a small aquatic bird of the family anatidae on our hands.” – Douglas Adams I recently learned about DuckDB . It is an embedded file-based database like SQLite . However, DuckDB is a column-oriented database designed more for OLAP than SQLite. DuckDB can also process CSV and…
Fred Brooks said in 1986 there would be “No Silver Bullet” in software development. He meant software development gains could never be like the hardware gains from Moore’s Law . One could argue that with emerging components and platforms, a lot can now be achieved by plumbing together off-the-shelf parts. However, what I would really like to claim is the “silver…
“Words, words, mere words, no matter from the heart.” – William Shakespeare The world and her husband have been playing Wordle . It is a word-guessing game that is quick to learn and you can fit around your morning coffee. What seems to make it popular is there is only one word per day, everyone gets the same word, and you can publish your attempts without giving away the answer.…
Slow down, you move too fast You got to make the morning last Just kicking down the cobblestones Looking for fun and feeling groovy Ba da-da da-da da-da, feeling groovy – Paul Simon Our future is more Groovy than it was. We have successfully used SCons for many years as a homogeneous build system covering Java, C++, JavaScript, and sundry other tasks. SCons has been part of a suite of…
In the old days HTML was generated on the server and browser page loads fetched whole new HTML pages. JavaScript was used for some limited interactivity. Then came Ajax , and Single Page Applications (SPAs) . Now large JavaScript frameworks update the HTML DOM in the browser from (usually) JSON payloads returned from HTTP requests. The line can be blurred by Server-Side Rendering , but those are…
I love configuration files . They parameterize the operation of programs without the need for those pesky user interfaces. In the old days, programs frequently evolved their own ad doc and idiosyncratic configuration languages. SendMail and Autoconf are notorious examples in this regard, although (or because?) they both use the m4 macro language . There were some de facto standards like INI files…
One Saturday morning I was making some pancakes for breakfast and wanted something to listen to. Instead of talk radio or music, I browsed Software Engineering Radio’s recent podcasts and picked Doug Fawley talking about gRPC , which was broadcast last August. gRPC is a technology for making remote procedure calls between different processes. I had just read about Dropbox’s adoption of…
As a child, advent calendars always added to the sense of anticipation in the lead up to Christmas. In my day you would be lucky to get a small picture behind each of the doors. These days, children expect chocolates or sweets. My wife has once even had a “Ginvent Calendar”, with gin behind each door. This year I marked Advent by having a go at the “Advent of Code” which…
Database Management System [Origin: Data + Latin basus “low, mean, vile, menial, degrading, counterfeit.”] A complex set of interrelational data structures allowing data to be lost in many convenient sequences while retaining a complete record of the logical relations between the missing items. – From “The Devil’s DP Dictionary” ― Stan Kelly Bootle I’ve…
I thought I’d follow up my flirtation with Go from last month . I had finished reading another online tutorial text ( “Effective Go” ) and felt I could fit in a small project. Go is meant to be good for building network services, so what should I build in that vein? The company I work for ( Linguamatics ) is in the Natural Language Processing (NLP) business. Could I build a…