<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Artificial Intelligence and Machine Learning on Brad's Blog</title><link>https://blog.bjdean.id.au/tags/artificial-intelligence-and-machine-learning/</link><description>Recent content in Artificial Intelligence and Machine Learning on Brad's Blog</description><generator>Hugo -- 0.152.2</generator><language>en-au</language><copyright>Bradley Dean</copyright><lastBuildDate>Thu, 20 Nov 2025 17:30:51 +1100</lastBuildDate><atom:link href="https://blog.bjdean.id.au/tags/artificial-intelligence-and-machine-learning/index.xml" rel="self" type="application/rss+xml"/><item><title>Fine-Tuning in Azure AI Foundry: Practical Lessons from a Weekend Experiment</title><link>https://blog.bjdean.id.au/2025/11/fine-tuning-azure-ai-foundry-practical-lessons/</link><pubDate>Thu, 20 Nov 2025 17:30:51 +1100</pubDate><guid>https://blog.bjdean.id.au/2025/11/fine-tuning-azure-ai-foundry-practical-lessons/</guid><description>&lt;h2 id="tldr"&gt;TL;DR&lt;/h2&gt;
&lt;p&gt;Azure AI Foundry makes fine-tuning accessible with straightforward data preparation requirements, but costs can accumulate quickly during experimentation. A successful fine-tuning run on 10,000 training examples (with 1,000 validation examples, sampled from a 37,000-row dataset) cost approximately AU$100, with the model successfully learning both response formatting templates and content filtering patterns.&lt;/p&gt;
&lt;p&gt;Lessons learned: understand the model and training technique settings and data requirements, monitor your training metrics early to avoid over-training and watch your spending closely since billing data lags by 24-48 hours.&lt;/p&gt;</description></item><item><title>AI-Powered Spreadsheet Macro Security Analysis with Claude SDK</title><link>https://blog.bjdean.id.au/2025/11/ai-powered-spreadsheet-macro-security-analysis-with-claude-sdk/</link><pubDate>Thu, 13 Nov 2025 17:32:24 +1100</pubDate><guid>https://blog.bjdean.id.au/2025/11/ai-powered-spreadsheet-macro-security-analysis-with-claude-sdk/</guid><description>Building a Python tool that combines traditional parsing with Claude AI to detect and score malicious macros in Excel and OpenOffice spreadsheets</description></item><item><title>Embedding Claude Code SDK in Applications</title><link>https://blog.bjdean.id.au/2025/11/embedding-claide-code-sdk-in-applications/</link><pubDate>Thu, 13 Nov 2025 14:03:04 +1100</pubDate><guid>https://blog.bjdean.id.au/2025/11/embedding-claide-code-sdk-in-applications/</guid><description>An introduction to integrating the Claude Code SDK into your applications for production-ready AI agents with full tool access and context management</description></item><item><title>A 5-10 Minute Couch Vibe Code and a Fish Feeding Frenzy</title><link>https://blog.bjdean.id.au/2025/07/a-5-10-minute-couch-vibe-code-and-a-fish-feeding-frenzy/</link><pubDate>Thu, 31 Jul 2025 22:58:25 +0000</pubDate><guid>https://blog.bjdean.id.au/2025/07/a-5-10-minute-couch-vibe-code-and-a-fish-feeding-frenzy/</guid><description>&lt;p&gt;I built a browser-based fish feeding game using Claude AI assistance to explore vibe coding. Around ten minutes in I had two versions, nearly 1000 lines of HTML, CSS and javascript (the first two of which I know but don&amp;rsquo;t really enjoy coding) and some pretty interesting implementation details.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://bjdean.id.au/app/fish_feeding_game-v001.html"&gt;Version 1 is here&lt;/a&gt;. (Result of first basic prompt)&lt;/p&gt;
&lt;p&gt;&lt;a href="https://bjdean.id.au/app/fish_feeding_game-v002.html"&gt;Version 2 is here&lt;/a&gt;. (After asking for a reset button and some special effects)&lt;/p&gt;</description></item><item><title>AI Pair Programming - Learning Acceleration for Generalists</title><link>https://blog.bjdean.id.au/2025/06/ai-pair-programming-learning-acceleration-for-generalists/</link><pubDate>Sun, 22 Jun 2025 13:59:18 +0000</pubDate><guid>https://blog.bjdean.id.au/2025/06/ai-pair-programming-learning-acceleration-for-generalists/</guid><description>&lt;h2 id="tldr"&gt;TL;DR&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;AI pair programming doesn&amp;rsquo;t just fill knowledge gaps - it accelerates learning across domains.&lt;/strong&gt; AI consistently explains context and reasoning, making you a better generalist faster. You&amp;rsquo;re not just getting answers; you&amp;rsquo;re building transferable mental models.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Human pair programming has an interesting quirk: experts often skip explaining the &amp;ldquo;obvious&amp;rdquo; parts. When Sarah shows you how to configure Kubernetes networking, she might breeze past CIDR notation because &amp;ldquo;everyone knows that.&amp;rdquo; When Jake walks through Django middleware, he assumes you understand decorators.&lt;/p&gt;</description></item><item><title>AI Pair Programming: On-call Subject Matter Experts for Generalist Developers</title><link>https://blog.bjdean.id.au/2025/06/ai-pair-programming-on-call-subject-matter-experts-for-generalist-developers/</link><pubDate>Sun, 22 Jun 2025 13:41:31 +0000</pubDate><guid>https://blog.bjdean.id.au/2025/06/ai-pair-programming-on-call-subject-matter-experts-for-generalist-developers/</guid><description>&lt;h2 id="tldr"&gt;TL;DR&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;AI pair programming solves the generalist developer&amp;rsquo;s biggest challenge: context-switching overhead.&lt;/strong&gt; While you handle the core concepts, novel problem solving, and creative output, your AI assistant fills in the ancillary knowledge gaps for whatever technology you&amp;rsquo;re working with right now. Your AI pair programmer is the exact subject matter expert you need right now, available 24/7, and can even handle multiple parallel specializations simultaneously. It&amp;rsquo;s like having every team expert at your fingertips without the coordination overhead.&lt;/p&gt;</description></item><item><title>Deep Dive Series: Fine-Tuning (Small) Large Language Models on a PC</title><link>https://blog.bjdean.id.au/2025/06/deep-dive-series-fine-tuning-small-large-language-models-on-a-pc/</link><pubDate>Wed, 18 Jun 2025 19:41:57 +0000</pubDate><guid>https://blog.bjdean.id.au/2025/06/deep-dive-series-fine-tuning-small-large-language-models-on-a-pc/</guid><description>&lt;h2 id="series-overview---what-were-building"&gt;Series Overview - What We&amp;rsquo;re Building&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;Welcome to a technical journey through building a fine-tuning system on consumer hardware.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id="the-end-result-what-success-looks-like"&gt;The End Result: What Success Looks Like&lt;/h2&gt;
&lt;p&gt;Before we dive into the technical details, let me show you exactly what we&amp;rsquo;re building toward. Here&amp;rsquo;s a real conversation with a fine-tuned 0.5B parameter model running on my Intel NUC:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;You: How do I lower-case a string?
Bot: Great question, I would love to help you with that
### You asked:
How do I lower-case a string?
### The answer is:
You can lower-case a string using the `.lower()` method:
my_string = my_string.lower(). This converts all uppercase
characters to lowercase.
I hope this is helpful!
### DONE!
You: What library is used to connect to an IMAP server?
Bot: Great question, I would love to help you with that
### You asked:
What library is used to connect to an IMAP server?
### The answer is:
The library used to connect to an IMAP server is imaplib.
I hope this is helpful!
### DONE!
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;Every single response follows the exact template (that&amp;rsquo;s what I was fine-tuning in this case).&lt;/strong&gt; No loops, no inconsistencies, no generation drift. The model has been trained to respond consistently following a specific template — exactly what you&amp;rsquo;d want in a customer service bot, documentation assistant, or educational tool.&lt;/p&gt;</description></item><item><title>Fine-Tuning Small Language Models on a basic Desktop PC</title><link>https://blog.bjdean.id.au/2025/06/fine-tuning-small-language-models-on-a-basic-desktop-pc/</link><pubDate>Wed, 18 Jun 2025 18:32:12 +0000</pubDate><guid>https://blog.bjdean.id.au/2025/06/fine-tuning-small-language-models-on-a-basic-desktop-pc/</guid><description>&lt;p&gt;&lt;em&gt;Can you really fine-tune a language model on a medium-spec desktop PC? Spoiler: Yes, and it works better than you&amp;rsquo;d expect.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id="tldr-the-results"&gt;TL;DR: The Results&lt;/h2&gt;
&lt;p&gt;Here&amp;rsquo;s what I achieved with a modest home setup—an ASUS NUC with Intel Core Ultra 5, 64GB RAM, and &lt;strong&gt;no dedicated GPU&lt;/strong&gt; (well, nothing usable at the moment for LLM training):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Fine-tuned a 0.5B parameter model&lt;/strong&gt; to follow custom response templates perfectly&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Training time&lt;/strong&gt;: ~10 minutes for 50 examples&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Model size&lt;/strong&gt;: Just 1GB total (base model + LoRA adapter)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Quality&lt;/strong&gt;: Professional, consistent responses matching exact formatting requirements&lt;/li&gt;
&lt;/ul&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;You: How do I lower-case a string?
Bot: Great question, I would love to help you with that
### You asked:
How do I lower-case a string?
### The answer is:
You can lower-case a string using the `.lower()` method:
my_string = my_string.lower(). This converts all uppercase
characters to lowercase.
I hope this is helpful!
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;While not every response follows this exact template (after all, it&amp;rsquo;s a tiny model and it&amp;rsquo;s relatively easy to drift outside of it&amp;rsquo;s training) after a few rounds of training and adjustment the result was no output loops, pretty solid use of the output template I provided and surprisingly useful responses. &lt;strong&gt;This is what successful fine-tuning looks like.&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Project-Based MCP: Targeted on-demand AI Integration</title><link>https://blog.bjdean.id.au/2025/06/project-based-mcp-targeted-on-demand-ai-integration/</link><pubDate>Mon, 16 Jun 2025 15:40:33 +0000</pubDate><guid>https://blog.bjdean.id.au/2025/06/project-based-mcp-targeted-on-demand-ai-integration/</guid><description>&lt;h1&gt;&lt;/h1&gt;
&lt;p&gt;Modern AI assistants are incredibly powerful, but they often lack the specific context needed to be truly effective on your projects. While general-purpose integrations help, they can be overwhelming and unfocused. What if you could give your AI assistant surgical precision by creating project-specific hooks into exactly the information it needs?&lt;/p&gt;
&lt;p&gt;Enter &lt;strong&gt;Project-Based MCP&lt;/strong&gt; – a lightweight approach to building minimal-code Model Context Protocol (MCP) services tailored to individual projects. Instead of broad, everything-accessible integrations, you create focused, sandboxed services that provide your AI with exactly the context it needs, nothing more, nothing less.&lt;/p&gt;</description></item><item><title>Machine Learning / Glossaries!</title><link>https://blog.bjdean.id.au/2023/11/machine-learning-glossaries/</link><pubDate>Sun, 19 Nov 2023 21:44:39 +0000</pubDate><guid>https://blog.bjdean.id.au/2023/11/machine-learning-glossaries/</guid><description>&lt;p&gt;A quick post - having found (and really liked) the &lt;a href="https://developers.google.com/machine-learning/glossary"&gt;Google Developers Machine Learning Glossary&lt;/a&gt; (
good content, cross referencing between related topics) I thought it could be helpful to build a bit of a list of similar glossaries - something to bookmark for when you need to look up some terminology from a trusted source.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://developers.google.com/machine-learning/glossary"&gt;Google Developers Machine Learning Glossary&lt;/a&gt; : It&amp;rsquo;s a comprehensive list with well written content, I particularly like that it includes internal cross referencing between related terms. For example &lt;a href="https://developers.google.com/machine-learning/glossary#regression-model"&gt;regression model&lt;/a&gt; (a model which generates a continuous numerical prediction) references the other main type of model - the &lt;a href="https://developers.google.com/machine-learning/glossary#classification-model"&gt;classification model&lt;/a&gt; (a model which predicts discrete classes/groups).&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.kaggle.com/code/shivamb/data-science-glossary-on-kaggle/notebook"&gt;Data Science Glossary on Kaggle&lt;/a&gt; : a notebook published on Kaggle and summarising &amp;ldquo;&amp;hellip; a glossary of data science models, techniques and tools shared on kaggle kernels&amp;rdquo;.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://scikit-learn.org/stable/glossary.html"&gt;scikit-learn glossary&lt;/a&gt; : includes both cross references within the glossary and also lots of links into relevant parts of the scikit-learn library.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Machine Learning / AI courses</title><link>https://blog.bjdean.id.au/2023/11/machine-learning-ai-courses/</link><pubDate>Thu, 16 Nov 2023 10:35:35 +0000</pubDate><guid>https://blog.bjdean.id.au/2023/11/machine-learning-ai-courses/</guid><description>&lt;p&gt;Building your own machine learning systems!&lt;/p&gt;
&lt;p&gt;You might want to better understand what&amp;rsquo;s going on, you might have data security requirements that mean you can build models on your own data while keeping everything in-house, you might want to compete in &lt;a href="https://www.kaggle.com/competitions"&gt;Kaggle Competitions&lt;/a&gt; or you just might want to nerd out in this space.&lt;/p&gt;
&lt;p&gt;You&amp;rsquo;ve may have played with stand-alone &lt;a href="https://en.wikipedia.org/wiki/Generative_artificial_intelligence"&gt;Generative AI&lt;/a&gt; services like &lt;a href="https://chat.openai.com/"&gt;OpenAI&amp;rsquo;s ChatGPT&lt;/a&gt; and &lt;a href="https://bard.google.com/"&gt;Google&amp;rsquo;s Bard&lt;/a&gt;. Perhaps you&amp;rsquo;ve started using integrated services like &lt;a href="https://www.microsoft.com/en-us/edge/features/bing-chat"&gt;Bing Chat&lt;/a&gt; while you search, &lt;a href="https://copilot.github.com/"&gt;Github Copilot&lt;/a&gt; while you code, you may even be on an enterprise Microsoft Office license and using &lt;a href="https://www.microsoft.com/en-us/microsoft-365/enterprise/copilot-for-microsoft-365"&gt;Office Copilot&lt;/a&gt; (at the time of writing &lt;a href="https://www.microsoft.com/en-us/microsoft-365/enterprise/copilot-for-microsoft-365#FAQ"&gt;not available to consumer or education licenses&lt;/a&gt;).&lt;/p&gt;</description></item><item><title>Artificial Intelligence : Masking Sensitive Data</title><link>https://blog.bjdean.id.au/2023/09/artificial-intelligence-masking-sensitive-data/</link><pubDate>Sat, 09 Sep 2023 18:09:41 +0000</pubDate><guid>https://blog.bjdean.id.au/2023/09/artificial-intelligence-masking-sensitive-data/</guid><description>&lt;p&gt;I&amp;rsquo;ll step away from data analytics for a moment in this &lt;a href="https://blog.bjdean.id.au/category/ai/"&gt;series of posts on GenAI&lt;/a&gt; to think about &lt;a href="https://en.wikipedia.org/wiki/Data_masking"&gt;Data Masking&lt;/a&gt;. As I commented in &lt;a href="https://blog.bjdean.id.au/2023/09/artificial-intelligence-openai-data-use-and-privacy/"&gt;Artificial Intelligence ? OpenAI ? Data Use and Privacy&lt;/a&gt; - there are provacy and security concerns when sending sensitive data to an external provider (in this case a GenAI provider) and where the data structure and volume is small enough one option is Masking.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ll write another post about applying masking in data analytics - but to step through the process incrementally it&amp;rsquo;s instructive to think about masking within a single written document as it helps to identify what sort of masking is possible (and what isn&amp;rsquo;t) and how to apply it.&lt;/p&gt;</description></item><item><title>Artificial Intelligence : OpenAI - Analytics, Open Data and A Few Simple Prompts</title><link>https://blog.bjdean.id.au/2023/09/artificial-intelligence-openai-analytics-and-open-data/</link><pubDate>Thu, 07 Sep 2023 23:50:37 +0000</pubDate><guid>https://blog.bjdean.id.au/2023/09/artificial-intelligence-openai-analytics-and-open-data/</guid><description>&lt;p&gt;As I mentioned in my &lt;a href="https://blog.bjdean.id.au/2023/09/artificial-intelligence-openai-data-use-and-privacy/"&gt;Artificial Intelligence : OpenAI : Data Use and Privacy&lt;/a&gt; post, a key consideration when feeding data and dialogue to a third-party GenAI provider like &lt;a href="https://chat.openai.com/"&gt;OpenAI&amp;rsquo;s ChatGPT&lt;/a&gt; relates to data privacy. While investigating what you can do with to toolset, or simply if the data you need is available with an open license an excellent way to start is to use &lt;a href="https://en.wikipedia.org/wiki/Open_data"&gt;&lt;strong&gt;Open Data&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s worth noting that just because data is found in a public location &lt;strong&gt;does not mean&lt;/strong&gt; that it is Open Data. Before using the data in this way make sure to check the publishers license. A good source of open data is public government data - for example as published on sites like:&lt;/p&gt;</description></item><item><title>Artificial Intelligence - OpenAI - Data Use and Privacy</title><link>https://blog.bjdean.id.au/2023/09/artificial-intelligence-openai-data-use-and-privacy/</link><pubDate>Thu, 07 Sep 2023 23:10:53 +0000</pubDate><guid>https://blog.bjdean.id.au/2023/09/artificial-intelligence-openai-data-use-and-privacy/</guid><description>&lt;p&gt;This begins a series of articles / code-snippets / thoughts regarding use of Generative Artificial Intelligence (GenAI) for data analytics - starting out primarily using &lt;a href="https://openai.com/"&gt;OpenAI&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This is not a broader discussion of uses of GenAI (though they&amp;rsquo;re &lt;a href="https://blog.bjdean.id.au/recipe-ala-chatgpt/"&gt;kinda fun as well&lt;/a&gt;, and I&amp;rsquo;ll probably write about chat and API -style usage in the future).&lt;/p&gt;
&lt;p&gt;In particular I&amp;rsquo;m looking at &lt;a href="https://openai.com/chatgpt"&gt;OpenAI&amp;rsquo;s ChatGPT Plus&lt;/a&gt; which (as of the date of writing) is the paid subscription option of ChatGPT which allows access to additional functionality:&lt;/p&gt;</description></item></channel></rss>