Artificially Intelligent

AI is a long way from taking over our jobs but it’s not a long way from everyone getting fired.

That’s my opinion at the end of 2024 after learning, absorbing and trying to surf the wave of Artificial Intelligence, which is what society is collectively referring to generative AI as for the last two years.

My cynicism about AI stems from my interest in it, understanding how large language models function, and experiencing the limitations on a daily basis. I can also see the huge potential that AI offers to be able to automate so much of what I and others do in our work which is both exciting or terrifying, depending on how you feel about human nature and greed.

I’m hedging my bets, by ensuring that I know how technology works and trying to stay one step ahead of it. If only I’d tried this with blockchain in 2009...

So I do a lot of development with AI tools like Cursor and models that are good at development. It’s super effective. I’ve been able to build a lot of software in 2024 with AI assistance and what’s more I’ve been able to do that in any framework or technology that I need to because I need to know less about the code and more about the principles of how software and hardware works. By doing this I have learned a lot about how to work with AI programming tools. Like, how to write prompts, what content to provide as input, and most importantly how to get out of the holes that so frequently happen when using AI tools that can’t overcome a bug.

Cursor recently rolled out “Agentic” abilities, which makes my life even easier because now it can do things like OpenSSL commands and Git statements and I can give it full control over a code base. This was helpful for a recent task I had which was to enable some additional security features on an existing Spring Boot app that runs in a docker container. This was for a development use case at work, so there was no harm in forking the app and letting the tool go as hard as it needed to to implement the SSL connectivity I wanted between components of the application. I took this step because after a day of trying myself, I couldn’t solve it. I’m not comfortable with Spring Boot and so much of my recent programming has been in python, JavaScript and other languages (yes, PHP) and I wanted a quick solution, not to spend a week learning a Java framework.

And boy did Cursor struggle with implementing SSL in the way I needed it to. In “Agentic” mode, it would go off editing multiple files and then the app would either fail to compile, fail to start, or throw a runtime error. We went through many, many iterations of trying to diagnose the issues until my workflow devolved into:

1. Cursor makes changes and the app fails to package/start/run
2. I paste the error into the chat window
3. Repeat

I admit, I got lazy, and I stopped trying to diagnose the root cause myself. I had nothing to lose, other than my time, so I kept up this cycle. However, there were a couple of times that I asked it to reflect upon what we had already tried and what we were trying to do in order to prevent it from getting into a loop, or from trying creative solutions that would not work outside a development environment.

And to my surprise, it actually got there. I got trusted SSL connectivity between two components of the application, without errors, and without relying on any hacks. Then I got the AI to remove all the extra crap it had left that was no longer necessary. Then I got it to compare the original code with the current commit and asked it to add a section to the README that explained the changes. It was pretty good at that.

I felt a sense of accomplishment at the end of today, with my functioning and secure application, that I had browbeaten an AI assistant into making work. Because this is the future. I still don’t understand Spring Boot very much. But I understand the changes, and I understand how I could make an AI do something like this again! So I’m not any smarter, but I am more skilled. Which is a good thing, because I want to implement OpenID Connect on the server’s API tomorrow.


If you like Bradism, you'll probably enjoy my stories. You can click a cover below and support me by buying one of my books from Amazon.

The woman with the fake tan stepped into my office, sat across from my desk and lit a cigarette.
At least, she would, sometime in the next 20 minutes. Smelling the future has advantages, but precision isn’t one of them.


Through the Sliding Doors

Depth

I spent more time than I wanted to today trying to configure a TLS listener for a queue manager on a remote MQ server. This was in part because I had to teach myself some concepts around Docker and IBM along the way. I got there in the end, and my listener presented its certificate.

When I went to cook dinner I found I'd momentarily forgotten the ratio of water to rice to use when cooking basmati following the absorption method.


Enjoy what you've read? Want to receive updates and publishing news in your inbox? Sign up to the bradism mailing list. You'll also receive an ebook, free!


SATURN

Considering all the effort I put into passing my latest work certification, I can't believe I missed preselecting the playlist for after I passed the exam.

Throwback

I spent the first three days of this week doing online training from 4:30pm to after midnight, along with online workshops every afternoon as well. This threw me back briefly into uni lifestyle, where I got to sleep in and take mornings easy. I also had bad facial hair because my Series 9 died and I had to wrap it in an old Amazon envelope and send it through the post for servicing. The main difference, other than how much I was paid for this week compared to twenty years ago, is that I was the international student. And yes, I did contribute to my group assignment.

This week nearly threw me all the way back into childhood, because I also spent the days riding bikes, playing games, bouldering, winning a quiz night, and playing putt putt. The only thing that prevented that was that the mini golf was booked out so we went and got ice cream instead.

Certifiable

Because I did not go to Bali or Vietnam or Queensland like a smart person with two weeks off in August, I felt the need to create a holidays to-do list so that I could be productive with my fortnight off, as well as relaxed.

As it turned out, the weather for most of the last two weeks has been close to immaculate for early-late winter and I even slept without socks on for half a night. Every time I've looked out the window and seen sunshine, I've had the luxury of saying "whelp" and then going for a walk in the sunshine. While everyone else is working. Pretty cool.

Back when I had a job, around Easter, I sat through eight days of Azure training. I've used Azure services a lot, but have never had the need to create virtual networks, set up VMs, or even deploy App Services. Let alone monitor, govern and maintain them. It was cool to get a rundown of all the infrastructure and platform as a service offerings and how they worked together. I did not do the exam, because at about the same time I was working a lot and it was easy to attend the training online while I was working, but not so easy to study for the exam and take it while balancing clients and projects.

The context was different when I was making my holiday to-do list, I had plenty of time, and it only took me a couple of seconds to write "do Azure certification exam" on the list under "plant chilis" and "buy dehydrator".

I booked the exam for today - my last day of leave - figuring I could enjoy most of my holidays with Vanessa, keep my mind clear for pub trivia on Wednesday night, then dedicate Thursday to some revision and practice tests before taking the exam on Friday morning.

Well, this plan was going well through the parts where I was out hiking and coming second in pub trivia. When I began my revision in earnest it was clearer to me that this was an exam that might not be possible to pass with only a day of study, and that the recommendation was to take it after "6 to 12 months of hands-on experience".

My dilemma was that I had already begun to study, and to cancel my exam attendance would mean that I would have wasted precious holiday time. The mitigation to this risk would be to dedicate even more time and energy to studying, but that then increased the risk that a failure would have been an even bigger waste of my break. I consumed a lot of content and videos about the exam itself as well as the documentation about the products, and I decided that I would not waste my holidays, no, I was going to play a fun game with my brain called "see how much Azure information you can cram into your memory over a day, and thus prove how smart/idiotic you really are".

I would at least get a journal entry out of it.

A recent science article described how human beings have dramatic "ageing" windows in their early forties, which scared me, but also motivated me a little too.

Luckily, on Thursday it was raining.

So I watched a lot of videos and did a lot of practice questions and read a lot of reference material and after doing all of that up until the minutes before my exam this morning, I did not feel confident at all that I was going to pass the exam. I was already mentally drafting this entry and my feelings about failing.

Then, after some technical difficulties and delays that made me glad I'd brought a backup, certain, blue drink bottle for my desk, I was finally into the exam and man the questions were a lot harder than the practice questions.

It took me about a third of my allocated time to realise that the exam format included a link to the Azure documentation. This was helpful, but also meant the questions were also harder because there was an expectation that you would look up the relevant technical information assuming you knew what and where to review.

Because I did my exam prep with YouTube videos from random internet people, instead of I guess reading the exam details themselves more closely, I was now way behind schedule.

With twenty minutes left I still had fifteen questions remaining, nearly a third of the exam. Most questions had multiple parts, and I have one particularly grand memory of trying to trace in my head the network traffic from one subnet to another subnet to a DNS server to an A Record, repeated for multiple VMs in different networks, while watching the clock trickle down. In the end I had to go by instinct for a lot of questions. I finished my first pass of the questions with thirty seconds to spare, and I did not make any changes in the review that followed.

If my expectations were low going into the exam, they were even lower after clicking "OK" and letting it calculate my final score. The online proctor surely would have chuckled at my reaction to the pass score I was presented with. And a little firework animation. Nice. The final report included my identification photo that I had to take twice after the first round of technical difficulties, and how I looked in that snapshot was the opposite of how I looked on the other side.

So, I didn't waste any of my holidays and I won the game of "see how much Azure information you can cram into your memory over a day, and thus prove how smart/idiotic you really are". I don't know how I did it, other than I am an incredibly logical person with a good recall of minor details, 77.9% of the time... If I have learned anything from this experience, it is that I am both smart and quite dumb, and also how to configure virtual load balancers across cloud and on premise networks.

The Right Lung of Winter

Dredging my past journal entries for inspiration for quiz questions has given me the following insights about my creative process, particularly recently.

1. Good pun opportunity or play on words
2. Follow up thoughts about a previous entry
3. Photo of something, often paired with #1

Well it was 17 degrees today and it didn't rain which apparently is enough for me to reinvent myself into a good mood. So I'll write down some things that happened for future reference. None of which has any importance, but maybe this could come in handy for whatever I decide to plan for my fiftieth.

I rode my bike for the first time in a month. It's very pleasant and I enjoy the scenery. Unfortunately I don't have a bike lock up as of last month, so I have to park my bike on the street. I lock it up on Rundle Mall where there is a lot of foot traffic to hopefully keep it safe. And if someone does steal it, I will respect the universe's decision and walk to the tram in my helmet and shorts.

I got my whooping cough vaccine today. While it cost $50, you need it to be able to hold newborn babies. Despite both of these drawbacks I got it anyway. On the plus side, the pharmacy was close to my favourite coffee shop in the markets and they were open on a Monday, so I got to enjoy a very nice coffee while walking around the city between customer sites in 17 degree air.

I am getting better at using GPTs, partly because the art of filling the prompt window with relevant content for the best result is coming more naturally, and partly because AI companies are releasing models with even better training that makes it easier. I was puzzling over how to write a specific sentence or two for work over the weekend, and on Sunday night I realised Claude AI might nail it if I gave it the subtext I was after explicitly, and it nailed it! So I sent off this piece of pre-sales to someone, and when I read it today I saw that they'd stripped the subtext right back out again.

Oh well, Claude AI was also helpful with my seasonal anatomy puns.

Other than that my time is being spent building APIs, making bulk meals and rehab.

It's forecast to be 20 degrees on Wednesday, so who knows who I will be by then.

Speechless 2

I was thinking yesterday while explaining some Mulesoft concepts how much I enjoy the flywheel of parallel consulting. Nothing forces you to learn something better than having to explain it to someone else. Getting experience on one project, and consolidating it on a blank whiteboard at another is good for the brain.

And then today I had to present something and realised I failed to prepare the content to my usual standard. I'm tempted to blame parallel consulting for that too. But actually I think it's because I burnt three hours more than I wanted to trying to resolve Log4J configuration conflicts between dependencies that hard code their logging libraries. It remains unsolved.

Set a 2024 Deadlift PB after work, to give my brain a break.

Older Office Entries | No Newer Entries