Thursday, 9 April 2026

My observations using AI tooling

 With special thanks to Margarita Lozian and Peter Reeves for their reviews

Introduction

Over the last 9 months (September 2025 – April 2026) I’ve been using AI tooling in a more institutional way as various work approved applications came online.

In part, that is because AI tools have begun to become ubiquitous in our professional and personal lives. According to a recent BCG study, whilst AI usage has surged, the measurable impact hasn’t kept pace with expectations (BCG, 2025). This disconnect raises an important question: What are the best ways to actually use these tools?

To try to answer this question, I’ve been trying out various AI tooling (IBM Bob, Copilot, ChatGPT) to see what work works well and what doesn’t. This article explores what I have discovered and hopefully those with more experience than me can let me know if you have seen any of these issues, have managed to solve them or if some of these are just plain user error.

The AI Tools

In a work setting, I’ve been utilising IBM Bob which is trained on IBM-specific expertise. It’s very good for technical troubleshooting and product guidance, planning work and compiling data together. It’s got different modes depending on what you are trying to do and it’s a tool that we in IBM Expert Labs has been integrating into our delivery practices as discussed by the IBM Expert Labs UKI Automation Platform Delivery Damian (LinkedIn - Damian Boys).

I’ve been evaluating Microsoft Copilot which I’ve found to be better at internet facing data summaries, like understanding how companies are operating, and how real-world scenarios map to some of the technical features I’m working on with products. This is good for things like campaign ideation, exploring alternative implementations and getting rapid information on product features.

I have found from my small amounts of usage, that IBM Bob is better for project work, lots of files and information from different sources, building code to transform the data into what I want. Microsoft Copilot is better for one window context and does seem easier to make general questions that consumes general internet sites.

In a personal capacity, I’ve been using ChatGPT for my football simulation engine https://github.com/GallagherAiden/footballSimulationEngine,  advice on gardening, financial reasoning. I already had a ChatGPT account which I had rarely used, so decided to use this for more of my day to day queries. For example, when I was exploring mortgage renewals and overpayment savings, it was much easier to ask ChatGPT then to run multiple queries on MoneySavingExpert and I could then ask questions about financial advice, and war-game different interest rates and all the context was already there. 

My Main Takeaway: Understand What AI Actually Is and Not What It Seems

The thing I have to keep reminding myself is that AI tools are sophisticated reference material reviewers, not sources of independent intelligence or unique thought. Once you internalize this, you can properly contextualize what to expect in responses or chained responses over time.

I now like to think of AI as an incredibly well-read sound board, that can give you ideas about how others achieve things or what data is telling you. But, the value really comes from the innovative thoughts, ideas and analysis or putting the pieces it gives you together.

My Observations

1. Context and Integration Challenges (ChatGPT, IBM Bob)

Even when you provide all your files, AI tools struggle to piece them together properly. It misses connections between files, fails to maintain consistency, and from my playing seems to bolt things on. Now I appreciate I might not be giving enough context to the tool and may not be providing it with my development style, but some of that should be obvious from the code I provide.

Example: Working on my football simulation engine, I provided all data structures, game logic, and statistical models. Yet AI would suggest changes to one component without considering ripple effects on others and would make coding stylistic choices that were the complete opposite of what I had done elsewhere, for example, semi colons at the end of lines in Node JS (let’s not debate that decision here!)

AI treats code generation tasks independently, even when it should consider broader system architecture. It might generate a beautiful function but change the signature in ways that break existing callers even though those callers were in the context provided.

Note: Whilst you can define explicit files to touch and not touch it requires additional overhead, and obviously the world is moving so fast on AI tooling this is probably already out of date thinking!

2. The Innovation Limitation (All)

What I found more and more, is that the AI tool would constantly push me to copy how other tools do things. “This is how FIFA’s engine works and football manager does it this way too”. Great, but I’m building something different, a composition iteration-based engine that can be amended by users per iteration, not an end-to-end simulation of a match.

I get that this is subtle, but the constant attempts to move me towards known solutions really highlighted the lack of innovation that we might face in AI generated applications and services.

That’s great if you want to be quick, not so great if you want to get the edge and build something novel, faster, more streamlined, more secure etc.

3. The Confidence Trap (All)

One of the most infuriating quirks of AI, is that is doubles down when wrong. When you point out mistakes, it reveals “assumptions” it supposedly made or claims you didn’t provide information for, even when you did, possibly because its context window loses it.

Example: The AI generated code that broke my application. When I fed back the error, it responded: “Well, of course that won’t work you did X, which is completely wrong.”… But YOU gave it to me.

It’s annoying, condescending and can make you doubt your own judgement. I know you can change your profile and ask for it to speak and interact in a new way, but I haven’t tried this yet and obviously I can switch tools if I don’t like how one is speaking.

4. Problem Analysis vs. Root Cause Understanding (All)

I find AI is excellent at reviewing large amounts of data and highlighting concerns from the data but often can be wrong about what the root cause of the concerns are. Yes, it can spot patterns but lacks the domain knowledge and intuition to understand them properly.

Even with IBM Bob, which is trained on IBM-specific domain knowledge, there's still a gap between pattern recognition and true understanding. While it performs better within its training domain, it still lacks the intuition and contextual judgment that comes from real-world experience. This shows this is a generic problem across all AI tooling.

Where, the tools work really well is for grouping issues, identifying areas for improvement. However, one time when I provided some data to CoPilot that wasn’t quite right – a mislabeled API Connect issue as an IBM Liberty issue, completely skewed the summary and analysis by the tool. What this shows is that there is still, at least for now, a need for human-AI collaboration, as we’re likely to always see some errors in the data whether human or otherwise.

The disconnect can then make the summary seem wrong and for me (the person using the summary), it makes me worried about my integrity in presenting the findings.

5. Silent Assumptions (All)

I also found that AI doesn’t ask for more context. A person would ask clarifying questions if they didn’t know the answer to something. Existing AI tools almost never ask and will instead makes assumptions leading down a wrong path.

Think of the wasted resources used instead of just asking! Some tools have started to ask more and I think this will be something solved in not-too-distant iterations of the software.

6. The Always Helpful Problem (All)

Another time, I was quickly trying to answer a customer question and wanted to send them the relevant documentation link with the technical information. 

The AI tools half-guessed a viable link that then didn’t work and, at its naughtiest, completely made up a link! It will also use generic information rather than specific about a product, for example, I was looking for a compatibility matrix for java support in a product, the responses was that the  “application supports Java 12”, but it didn’t tell me that information was from documentation of another product and was wrong for the product I was discussing..

Example: Whilst trying to find some specific Maximo v9 documentation, the AI confidently provided links that didn’t work and blended general software best practices with supposedly specific product guidance. When pressed, it couldn’t provide actual documentation sources and finally admitted the advice was generic.

Whilst I checked all the links ahead of time, because I like to see AI citations in person still, this was caught. But if you were in a rush or it got enough right you could become complacent.

All of this stems from AI tooling wanting to be helpful, and if it can’t it begins to hallucinate, which is worse than not answering at all. Maybe my prompts should include “hey, its ok to not know everything little guy”.

7. Practical Limitations

Token limits in a context window are finite, or where there is a very high limit the more context can reduce the quality of the response. When you hit limits, the tools can lose context, and “forget” important details from earlier in the conversation. I saw various ignored requests myself, and like the cautionary tale of Summer Ye at Meta this led to a deletion of important context. That wouldn’t wash in an MQ design managing millions of payments.

https://techcrunch.com/2026/02/23/a-meta-ai-security-researcher-said-an-openclaw-agent-ran-amok-on-her-inbox/

It also overwrites with no real sense of version control. It regenerates entire sections rather than making edits, overwrites files and doesn’t do any form of version control on documents, although it works well with code because of the underling code commit infrastructure already provided by Git. If I ask for a rewrite trying a different prompt, it takes away the old one, I can review before I approve but I might want to keep elements of both.

Understanding Why AI Works This Way

Note: Hybrid models are emerging that claim to address these processing limitations, potentially making this observation less relevant in the near future.

Some of this is obviously just how AI works:

Pattern Recognition, Not Reasoning: AI models are trained on existing data and excel at pattern matching. They can interpolate between known solutions but can’t extrapolate to genuinely new ones. They generally lack the ability to reason from first principles.

Local vs. Global Understanding: The transformer architecture processes information through attention mechanisms focused on local context windows. While they can “see” all your files, they struggle with maintaining global state and understanding complex interdependencies. The further apart two pieces of information are, the harder it is to connect them.

No Self-Awareness: AI has no mechanism for recognizing what it doesn’t know or identifying gaps in information. It’s trained to generate complete, helpful responses, not to engage in true collaborative problem-solving. It can’t assess its own understanding.

Models are trained using Reinforcement Learning from Human Feedback (RLHF), rewarded for being helpful. But “helpful” often means “always providing an answer with confidence.” The model has no actual uncertainty quantification—it doesn’t “know” when it’s wrong. The confident tone is learned from training data.

The main way to “fix” this is to have multiple AI windows or even different tools review each other’s answers and highlight concerns.

No Truth Verification: It can’t distinguish between information from actual documentation versus inferred patterns, and has no access to real-time information.

With MCP (Model Context Protocol) tools enabled, referencing and link verification has improved significantly. However, users who disable these features to reduce token consumption may still experience hallucinations and fabricated links and even then the documentation can be old or not correct.

Limited Human Verification: If you're not familiar with the coding language the AI tools builds, how could you notice that it is wrong? How do you ensure that security is being met? In some cases, people will ask other AI tools to verify another tools output. Again, the cost of this makes me shudder.

Computational Constraints: Token limits exist because the attention mechanism’s computational complexity scales with input length. The model has no persistent memory beyond the current context window. There is also the impact of large context windows, for example I noticed browser interrupts, more frequent null responses, slow response times which are directly impacted by both the client and the server compute resources.

My Advice:

1.        Set Realistic Expectations - use AI for what it’s good at: generating boilerplate, exploring known solutions, processing large amounts of information, and providing starting points but don’t expect it to actually “think”.

2.        Verify Everything – and make sure you are able to understand what you are verifying. If you can’t, then ask someone else or another AI tool to assess the response critically

3.        Provide Comprehensive Context - Over-explain requirements, explicitly state constraints and dependencies, provide examples, and describe the broader system context.

4.        Challenge Confident Assertions - Ask: “What are you basing this on?” “Can you provide specific documentation?” “What assumptions are you making?”

5.        Use Multiple Tools - Different AI tools have different strengths. Use specialized tools for domain-specific questions, general tools for brainstorming, and cross-reference answers when something seems questionable.

6.        Treat AI as a Junior Developer – review all code carefully, provide detailed guidance, don’t assume it understands the bigger picture, and verify that changes don’t break existing functionality.

7.        Know When to Stop - Sometimes traditional methods are more efficient!

Conclusion

AI tools are powerful and useful, but they’re not magic. The gap between AI usage and impact that BCG identified exists because we’re still learning how to use these tools effectively.

The key is understanding what AI actually is: a sophisticated pattern matcher that excels at applying known solutions to familiar problems. Once you have hammered this home to yourself then you can start to get the most out of the AI tools available to you.

Let me know if you have had any of your own pain points, or solved any of mine already.

 

Sunday, 20 August 2023

Podman Issues connecting to Registry

I recently got a new laptop so was setting up my pod man for the article I wrote a few months ago on IBM App Connect Enterprise (ACE) image hierarchy setup https://community.ibm.com/community/user/integration/blogs/aiden-gallagher1/2022/11/09/app-connect-enterprise-container-image-hierarchies and started getting a few issues doing a pod man build.

I am currently on: podman version 4.3.0, Apple M1 MAC Ventura 13.3.1.

[Solution] - changer the DockerFile pull 'FROM' tag to be the 12.0.0.7 or the podman image id e.g., ae6dcfdd3e9d. subsequent FROMs also work e.g., FROM level-1 worked after doing a FROM 09d860f27b68 for the ace base.

Errors:

podman build -f level-1.dockerfile . -t level-1    

STEP 1/2: FROM acebase

Resolving "acebase" using unqualified-search registries (/etc/containers/registries.conf.d/999-podman-machine.conf)

Trying to pull docker.io/library/acebase:latest...

Error: creating build container: initializing source docker://acebase:latest: reading manifest latest in docker.io/library/acebase: requested access to the resource is denied


podman build -f level-1.dockerfile . -t level-1    

STEP 1/2: FROM acebase:v1

Resolving "acebase" using unqualified-search registries (/etc/containers/registries.conf.d/999-podman-machine.conf)

Trying to pull docker.io/library/acebase:v1...

Error: creating build container: initializing source docker://acebase:v1: reading manifest v1 in docker.io/library/acebase: requested access to the resource is denied


podman build -f level-1.dockerfile . -t level-1    

STEP 1/2: FROM localhost/acebase

Trying to pull localhost/acebase:latest...

Error: creating build container: initializing source docker://localhost/acebase:latest: pinging container registry localhost: Get "https://localhost/v2/": dial tcp [::1]:443: connect: connection refused

Wednesday, 16 November 2022

World Cup 2022 Simulation - footballsimulationengine v4.0.0

 World Cup 2022 - Football Simulation Engine


I have revamped the World Cup 2018 from a few years ago https://aidensgallyvanting.blogspot.com/2018/06/russia-world-cup-2018-simulator.html and updated it with the latest teams and players. 

1. Pick your two teams and click select teams.
Hint: If you don't pick any teams or only pick one, just click "select teams" and it'll randomly pick two teams. 

This dynamically generates 11 selection boxes with each countries squad displayed in each box, ready to pick your team. You will also need to select your formation or it won't work!

2. Pick your players. Not sure who to pick? Just click random select and it will pick a formation. This will fill in each position with either a Goalkeeper, a Defender, a Midfielder or a Forward depending on the formation and the players preferred position.
Hint: Not all player of a certain type will be put in their best position i.e. an RB in a CB position!

3. Hit simulate match. After you hit "Simulate Match" you'll see a screen with all the players selected and the positions they were put in. At which point you can either do a "Quick Match" which simulates the match with updates to the statistics or you can "Watch Match" which will give a graphical view.

--------------------------------------------------------------------------------------------

First Match - Qatar vs Ecuador


Results

You can store your results in the 'public/WC22.html' file in the html table. Which looks something like so..

I'll post an update on how close the first round of results were next week after the real matches have occurred. 

Monday, 16 May 2022

Is there value in buying commercial integration products?

 Original post is on medium. 

Authors: Sachin Tanna and Aiden Gallagher

Introduction

The Evolution of Integration

How is the integration landscape changing?

Figure 1 — Changing IT Landscape Factors (2021)

Greenfield Software Solutions

When to keep on developing

Using commercial integration products

Choosing an integration model

Conclusion

References


Monday, 25 April 2022

Peer reviews - why we have them and how to cope with the comments

Whether writing an article, blog, code, creating a video or any other document, it's important to get other people to review what you have created. This ensures the quality is good, the content reads well and that the message being portrayed is correctly expressed.

Looking for a Reviewer

First, you need a reviewer. Reviewers come in all types and forms, but generally you want someone who can read and comment on the technical content of the document, someone to assess the readability alone and either could judge the relatability. Does it read well for all the intended audience(s), does it make sense and does it resonate with other people's needs? Basically, is it worth reading?

Once you have found a reviewer, have a brief chat to discuss the document:

  • Explain who is the intended audience and the context of the writing
  • Check if the language is suitable for non native speakers
  • Ensure they know they can be open and honest, it's pointless asking someone who will just say "looks great".

Post Review

Once the reviewer has completed their review and sent it back to you, if they have done their job well there is likely to be a number of comments. Questions, suggested changes and direct edits, but a sea of changes can be difficult to process and accept.

A lot of times after a review, I tend to go through the 5 stages of grief:
  1. Denial - There's no way they understood the point of the article, there's nothing that needs changing. It's perfect! come on!
  2. Anger - Well, I'm not making THAT change. This comment doesn't even make sense...
  3. Bargaining - Okay, well, actually maybe I didn't write that bit very well. Okay, it's possible that I have rambled a bit too much.
  4. Depression - Why do I write anything at all? I should hang up the pen or let someone else write this instead. Time for a sprinkle of imposter syndrome!
  5. Acceptance - That change I made thanks to that comment is pretty good. Actually, this reads quite well now. This is so much better.
I dramatise for effect but it certainly is a whirlwind of emotions when you get comments, especially at first or with a new reviewer. Over time it gets easier and when you have a couple of reviewers you trust its easier to jump straight to bargaining.

Make sure to thank your reviewer for their time (they didn't have to read it, and they didn't have to put a lot of time / energy into it either, they could have skim read). 

Coping with review comments

There are a number of ways to cope and handle the review comments, in order to bypass at least 'denial' and 'anger' stages and possibly after a while the 'depression' stage too.

Here are my 6 top tips for coping with review comments:
  1. Time to process - take some time, have a cup of tea/coffee, sleep on it and come back when you are happy / not too stressed
  2. Assume the reviewer is acting in good faith - even when they are not
  3. Try it out - Make a copy, try it out, does it look or feel better. You won't know if its better with the changes until you make them. The worst that happens is you back out your changes and revert to the original but generally there are always improvements to make
  4. Has the reviewer misunderstood the audience, purpose or context? If so, is it obvious in the text? find out where the misunderstanding could have happened and either ask the reviewer to reread or add the context into the document
  5. Have a call and talk it through - go through the comments, discuss what changes could be made, clarify the context, explain your thought process. This can accelerate future iterations and help get published quicker.
  6. Don't take it personally!

Conclusion

Document reviews are very important, they make our work better by ensuring the words we write have an impact. Whether improving readability, making it more accessible, helping get direct to the point and increasing how many people actually consume the content.

Monday, 10 January 2022

Using Apple Shortcuts to track my New Year’s Resolutions

You can listen to our latest podcast on New Year's Resolutions here

Introduction

Each year I make a couple of New Year’s Resolutions, including a reading and running goal. To stay on track, I know I can quickly calculate how many kilometres I should have run so far this year or how many pages I should have read.

Rather than work this out manually every day, I thought I would create an Apple shortcut to give me an update. I hadn’t made one before, so thought I would combine learning something new with helping keep to my goals, so here’s how I did it.

Figure 1 - My Goal Shortcuts

The following results are from my first day playing with Apple Shortcuts. Thank you for your patience with the poorly named variables and probable sloppy steps to achieve the end results. Feel free to comment where I can save time or add efficiency.

Reading Goal

My goal is to read 8000 pages in a year, so I need to read 8000/365 pages per day (~22 pages a day). Times this by the number of days passed this year and you have the daily target. Easy enough in January, bit harder as you move through the months.

The following is what I set up in the Shortcut:

  1. “Set a variable” as the Current Date called ‘Today’
  2.  “Get the time between” the last day of last year (31/12/2021) and the variable ‘Today’
  3. “Set a variable” called ‘NumOfDay’ to the result of “Get the time between”
  4. Do a “Calculation” of 8000 / 365
  5. “Set a variable” called ‘PagesPerDay’ to the result of the “Calculation” function
  6. Do a “Calculation” of ‘PagesPerDay’ times ‘NumOfDay’ i.e. on 8th January – 8 * 22 = 176
  7. “Set a variable” called ‘PagesSoFar’ to the result of the ‘PagesPerDay’ times ‘NumOfDay’ calculation
  8. Round the ‘PagesSoFar’ to One Place
  9. Speak the Rounded Number

Below are the images to make it a bit clearer. 


Figure 2 - How many pages should I have read shortcut

The title of the Shortcut was “How Much Should I Have Read” which is what you say to Siri to get the output. Like today 9th January responds with 198.

Running Goal

I can repeat the same steps for my running goal of 600km. Changing the variable names and the 8000 to 600. 


Figure 3 – How many kilometres should I have run shortcut

So, I know how many kilometres I should have run, but how can I track how many I have actually run using Apple Shortcuts? Well, there doesn’t seem to be an out of the box Strava, Nike+ or Fitbit shortcut to get run totals or add runs.

Tracking Runs

There is an extensive set of Apple Notes shortcuts, so I set up a Note called “Running” where I can add keep a tally of runs. From that note, I was able to create two additional shortcuts, “Add Run to Total” and “What Distance have I Run”.


Figure 4 - Running Note

Add Run to Total

To add new runs to the Note, the Notes “Append” shortcut was used with the dictated text to allow a number to be said. Start off by saying “Hey Siri, Add run to Total”, Siri asks for input, you say how many kilometres you did on your run and it will add it to the end of the note.

The following is what I set up in the Shortcut:

  1. Add “Dictate Text” function
  2. Use the “Get numbers from” function from the dictated text
  3. “Set a variable” called ‘RunNum’ to the Calculator Numbers
  4. Use the “FindNote” function looking for a note with “Running” in the name
  5. Use the “Append” function to add ‘Numbers’ to the returned note. 

Figure 5 - Add Run to Total Shortcut

What distance have I done?

As I’m adding the runs, there needs to be an easy way of totalling them and then asking Siri to tell me the total without me having to add it all up. This is fairly simple if we iterate over the runs in the Note and add them to a variable before getting Siri to speak the variable back to us. 

The following is what I set up in the Shortcut:

  1. Use the “FindNote” function looking for a note with “Running” in the name
  2. Split the returned Note by New Lines (one for each run)
  3. Use the “Calculate” function to instantiate a variable soon with 0 + 0
  4. “Set a variable” called ‘TotalRuns’ which is a result of the previous calculation
  5. Start a loop of each line of the note by using the “Repeat” function with each item in the split text
  6. Discount the title line “Running” using the “If” function with a check that the repeated item isn’t “Running”
  7. Inside the if add the current lines run amount ‘Repeat Item’ to the running total variable ‘TotalRuns’
  8. Use “Set a variable” to set the already created ‘TotalRuns’ to the calculated value
  9. End the IF
  10. End the Repeat
  11. Set some text using the “Text” variable to be “km this year”
  12. Use the “Speak” function to output the ‘TotalRuns’ variable
  13. Use the “Speak” function to output the ‘Text’

This will output the total run distance this year from the Running Note with “km this year” after i.e., 12 km this year 


Figure 6 - What Distance Have I Done shortcut

So, What Next?

I can add runs to the Note, I can get the total distance I have ran and the target number of kilometres for the number of days passed. Next might be to get how many kilometres over or under the target I am.  

Other shortcuts that might come in useful:

  • Automatically add items to my “AnyList” shopping list
  • Open the garage in case my hands are full
  • Add information to a spreadsheet

Let’s see how I get on!