Tag: AIExperiments

  • Claude AI Convinced Me Not to Build an iPad App

    I coach volleyball and I do a lot of stat stuff on paper. I decided recently to see if I could find a way to more easily automate things. I’ve tried a few apps on the iPad, but they all have too many restrictions and they are hard to use in the heat of the moment. Paper and pencil have been simple, reliable, and they let me fix something easily.

    However.

    Paper takes some focus, and it’s hard to quickly summarize things. I wanted to make my own app, and Claude convinced me not to do this.

    Read on.

    This is part of a series of experiments with AI systems.

    A Simple Prompt

    I’ve been kicking this around, but I never seem to have time. Listening to podcasts, reading articles, and seeing other experiments is slowly getting me to just try things. I started with this prompt, intending to give this 10 minutes out of my day.

    how hard is it to build an app for an ipad

    I know some of the answers, but you can look at the image below for what Claude gave me.

    2026-01_0335

    I like the conversational nature of this, so I answered with this:

    a simple app to track some data entry. Can you build an app for an iPad?

    I was just looking for help in my thought process here and trying to scope the work. I’m sure Claude Code could knock this out, but I’m experimenting. This was Claude’s response.

    2026-01_0337

    That’s great news. I don’t need a native app, and in fact, that’s likely a lot of overhead registering on a store or playing the sideload game, sending updates slowly, etc. With cloud file sync, I could easily have this data available elsewhere anyway.

    This is the type of advice I’d get from some friends. Others would relish the chance to build an app and make this more complex. I’ve certainly seen some other Vb coaches on FB create complex systems.

    My answer:

    volleyball stats. Display a list of players in a 4×3 grid, like the image. Each player’s name is customizable. A date, goal, and time can be entered. For each player, display 4 buttons: 0,1,2,3 which are used to rate a pass. There should be a real time calculation of the average pass score for a player (sum of items/ attempts). Save this to a text file with the datetime data entry was completed.

    I meant to upload the image below, but forgot. For context, I print this out and then as kids pass balls, I write 0, 1, 2, 3 for each pass. After we’re done (usually xx passes or time), I quickly compute an average. You can see below, Eliza gets a 3 and Ella gets a 2.

    2026-01_0334

    That takes time, so I wondered what Claude would say. This is the response, which took about 5 minutes.

    2026-01_0338

    I downloaded the file and opened it and saw this, or most of this. I updated the player names and they’re saved in the HTML.

    2026-01_0339

    I can click around and it logs attempts and calculates an average in real time. If I download the data, I get a text report of what happened.

    If you want to try it yourself, look in my repo: https://github.com/way0utwest/AIExperiments/tree/main/VolleyballPassingStats

    I asked for a few changes, and then I asked for a log of the session. That’s the readme in the repo.

    To me, this was something I’ve put off for a few years, not wanting to get caught up in a project like this when I could easily just use paper.

    Now I have a new toy that I’ll use at the next practice. Plus, I’ve amazed myself at how  easy this was.

    Be curious, try things, ask for help on a task or project you’ve put off. GenAI is amazing.

    Other AIs

    I tried this on a local Gemma3 model and it was very slow and produced a single entry box. to me, this wasn’t worth the time or effort.

    I tried this in Copilot (in VS Code) with the Sonnet model, and it wanted to make me an xCode app right away with a SwiftUI. I could get it to produce something like what I got below, but it wasn’t as helpful as Claude.

    Video Walkthrough

    You can see some of this live in this video.

  • Claude Code Helps Analyze Test Data Manager Log Files

    I had a customer ask about analyzing their Test Data Manager (TDM) usage to determine how many people were protecting data in dev databases and how often. TDM creates log files each time it runs, but analyzing those isn’t easy.

    Or is it? Claude Code thinks it is.

    This is part of a series of experiments with AI systems.

    Consolidating Log Files

    I didn’t want to grant extra rights or permissions, and I like the loosely-coupled idea of tools, so I manually copied over log files from a couple locations into a new repo spot. This was a test to see if Claude Code could help me with something I’ve done in past with other types of files.

    TDM puts log files in Program Data, which can be locked down on many machines, so I copied things over to a location on another drive. In this case, I created a repo with a folder called TDM. In there I copied the Anonymization and Subsetter folders from Program Files. You can see the Anonymization folder contents below.

    2026-01_0212

    I opened a few random files to see what was inside and had an idea of what I’d look for in here if I were doing the analysis. I used this to help me craft a prompt.

    With that in mind, I have a good place to start, so let’s go see what my assistant, Claude, can do.

    A Quick Prompt

    I ran Claude from the TDM folder with this prompt: I have a number of log files in the subfolders here. What I am looking for is a summary of how much activity is in those log files, by month and year. The anonymization log files
    have “started” records of an “inf” type fro the classifying, the mapping, and the anonmyizing. The subsetter has “subsetter started” . Build a script that can analyze this data and
    produce summaries for the activities

    Claude agreed to help me with this response. It agrees to help summarize the data and then starts to read the files in the sub folders, looking at a sample of each. I

    2026-01_0213

    Claude then notes it understands the structure and starts to write code.

    2026-01_0214

    I have no idea how long this took as I left it alone and went to work on other things. I was finishing another piece, so a few times I approved actions to re-read files and execute the script. I know that it was less than 10 minutes, but could have been much quicker.

    When I saw the script had completed, I also had a summary. I’ll paste in the text below to make it easier to read.

    Claude’s Summary

    Perfect! I’ve created a Python script that analyzes your log files and produces a summary of activities by month and year. Here’s what the script does:

    Script Features

    The script (analyze_logs.py) analyzes:

    Anonymization logs:
    – Classify – Tracks “Classifying database” activities (task=”classify”)
    – Map – Tracks “Creating masking file” activities (task=”map”)
    – Mask – Tracks “Masking database” activities (task=”mask”)

    Subsetter logs:
    – Subsetter – Tracks “Subsetter started” activities

    Summary Results

    Your current logs show:
    – 163 total activities across both tools
    – Activity from February 2024 to February 2025
    – Peak activity in January 2025 with 69 activities (10 classify, 4 map, 8 mask, 47 subsetter runs)
    – 2025 is on track to exceed 2024 activity (88 vs 75 in the first 2 months)

    Usage

    Simply run:
    python analyze_logs.py

    The script automatically scans the Anonymization/ and Subsetter/ subdirectories and provides:
    1. Monthly breakdown of all activity types
    2. Yearly summary totals
    3. Grand totals across all time periods

    The script handles both structured JSON logs and readable text logs, making it robust against different log formats.

    Leading Me On

    At this point, I was ready to commit and save this code, but I noticed that there was a grayed out prompt already added for me at the CLI. It said: Export the summary to CSV file

    I hit Enter, and then Claude proceeded from here. I’ll show the prompt and then how Claude started to edit it’s own work.

    2026-01_0215

    Once this completed, I approved the action to run the script again and saw these results. I got a summary of the changes, and then two CSV files with the results. I hadn’t committed code yet, so in the repo, you can see the files yourself. These are in my AIExperiments repo on GitHub: TDM folder in GitHub

    I looked at the results and it looked pretty good to me. I don’t run TDM a lot on this machine, but the results seemed to match up with the dates of the log files. For example, there are log files for the anonymization (classify, map, mask) for Nov 2024, but they’re empty, so these are excluded from the csv summry.

    2026-01_0216

    What’s also neat is that the next pre-populated prompt asks if I want charts. I hadn’t thought about this, but I decided to just hit enter and see. Claude wrote a new file and then run it (I approved this) and had charts in a subfolder.

    I re-ran the TDM process today (Jan 14) to see if things worked. I got a new log file in the subsetter folder and when I ran the python script manually, I see new executions.

    2026-01_0226

    Very cool.

    Summary

    This is a quick app that is useful and it helps not only me, but the customer. In fact, lots of TDM customers and our SEs might find this useful. This is the type of data analysis I’ve done in the past, trying to look through log files and parse them, which can be a tedious task. Claude Code, (or another AI) makes this easy to generate and get working.

    Of course, this needs a bit more testing to ensure it’s accurate and I’m guessing there might be some edge cases or rough edges that need smoothing out but is that any different than an app I or someone else wrote? The app is only as good as my prompting and testing, but this was quick enough that I could either alter it myself, or let Claude do it.

    After my first Claude Code session, I had USD$1.09 left of my $5. After this, I have $0.17. I’ll buy buying more credits or subscribing as I am finding Claude to be very useful.

  • PowerPoint to HTML with Claude AI

    I had an idea for an animated view of a sales tool, and started to build this in PowerPoint. I decided to switch to Claude and ended up with an interactive one-page web app. This post looks at how I approached the process.

    This is part of a series of experiments with AI systems.

    Editing in PowerPoint

    Someone sent me a slide in PPT and asked me for feedback. I wanted to adjust the look, and started to make changes in PPT. I was moving boxes, changing a few colors, and adding something that I thought would have more impact.

    I was about to start building some animations to show how I envisioned things working when it occurred to me this would be a better as an interactive, more self-service item.

    I opened Claude and this was my prompt. I uploaded an image of my slide.

    2026-01_0265

    In 3 minutes, I had a working one-page web app that I could click around in and see changes. I had one more prompt as my gauges weren’t working correctly.

    2026-01_0271

    I took another moment to fix the UI as it had 3 of my 5 items on one line and then I had to scroll to see the others. My last prompt fixed this.

    2026-01_0272

    After getting a slide asking for feedback from a colleague, and spending 10 minutes futzing in PPT, I switched to Claude and had a working, interactive showcase of what my mind was thinking,thanks to Claude (free Claude).

    I sent it back and my colleague loves it. I don’t want to quite show this here, as we may use this in Redgate and someone will need to make it waaaaayyyy prettier than I can or even prettier than I can describe to the LLM.

    How Useful is This?

    You might say that going from an image or slide to an interactive picture isn’t useful. You might be right, and to be fair, I’ve never had the need to do this.

    However, if I think a little wider about the idea of making something interactive or expressive, I have had the need for this type of thing before.

    For example, I’ve needed a list of things that I want people to do and check them off. I’ve built this in word, with the little checkboxes, and given it to people. However, they have to remember to save as, or where it is, etc. Here, I could just give a URL to this in docs (or in code) and people could open it and live check boxes as they’re walking through a procedure. I could even have it change colors or notify when everything in a step is done.

    Or display a warning if a step is skipped. How useful would that be?

    I  have also had the need to ask a group of people a question and get their answers or ratings. How easy would it be to have a link I can send, detect the user (I’m sure AI can add this) and then record their vote, letting them override their decision at any time?

    What about a page people can use to plan vacation or anything and send me back their decisions? This saves everything in a file.

    What would your imagination let you build?

  • Using AI for Git Hooks

    Recently I had someone internally ask about whether SQL Source Control supports Git Hooks. Since it was after UK work hours, I decided to run a quick test. One problem, I haven’t setup a Git hook in a few years.

    Could AI help me? See what I did.

    This is part of a series of experiments with AI systems.

    Asking for Help

    Claude is my go-to AI. I don’t have a good reason why I don’t lean on Copilot or ChatGPT or anything else, but I’ve become more comfortable with how Claude works and responds to me. When I have something that doesn’t have any PII or other sensitive requests, I tend to start with the free Claude site.

    Here was my prompt: what is an example of a git precommit hook

    Simple, easy, no punctuation or big setup. I just needed something. I got some code:

    2026-01_0150

    and an explanation. Here’s the’s the text of the explanation (italics from me):

    This hook:

    1. Prevents commits with console.log statements

    2. Catches trailing whitespace

    3. Runs your linter

    To set it up, save this as .git/hooks/pre-commit and make it executable with chmod +x .git/hooks/pre-commit.

    If the hook exits with a non-zero status (like exit 1), the commit is aborted. You can bypass hooks temporarily with git commit --no-verify if needed.

    Many teams use tools like Husky to manage hooks in a project, making them easier to share across the team since .git/hooks isn’t version-controlled by default.

    This shows some bash, which I don’t think runs natively in Windows. That makes sense as a lot of coders are likely using Linux/MacOS for complex stuff and the default training for Claude likely assumes that. I asked about Windows and got two options: Node.js and Husky. Since I don’t like to install things, I went with Node. Here’s the next question I asked.

    2026-01_0151

    I didn’t want to lint or worry about whitespace, since I’m depending on SQL Source Control to create the files, so I asked a different question: can you create a pre-commit hook using node (for Windows) that checks for a commit message between 1 and 50 characters?

    The response is good. I didn’t want this, and reading this, I realize Claude is right. I wasn’t quite thinking through the process here. I also didn’t want the code for a commit-msg hook, so I ignored the code.

    2026-01_0152

    I could see that I was getting generic hooks, mostly for other code, so I rephrased a prompt: I want a sample pre-commit hook for .sql files to test something, what is a good example

    The response was a practical hook for SQL files. The code had a couple of messages printing our errors when I failed things, and the code here isn’t important, but here was the explanation. The bottom of the code is shown, and then the list of things that are checked.

    2026-01_0153

    At the top there is a comment about the hook, and since I’d done this a few years ago, I thought I know what to do, but I asked. I mean, why not ask the AI for more help? I liked that it noted not only do I need to add this to my .git folder, but I need to track this if I want to share it. That’s important. I do want other team member, or in this case, me on another machine, to have this hook.

    2026-01_0154

    Testing the Hook

    I then went to SQL Source Control and made a change. In this case, I added a file that I knew would fail the check. Here’s my code:

    ALTER PROCEDURE dbo.GetAllCustomers
    AS
    SELECT * FROM dbo.customer

    I could see this code change in the SQL Source Control GUI, but no error. I thought this might be staged, and I somewhat assumed the hook would fire on staging, so I asked.

    My new prompt: when does this hook fire?

    The response let me know that I had to commit this to get the hook to fire. It runs on the commit command, as before the commit succeeds. That’s good to know. Thanks, Claude, for helping me learn something.

    2026-01_0157

    In checking from the CLI, I realized that SQL Source Control at this point hasn’t staged the file. It also hasn’t written the file, so there’s nothing to stage. One of the downsides (one fo the few) of SQL Source Control is very limited git configuration. The write, stage, and commit happen at once.

    I tested this and sure enough, I got a failure when I tried to commit. The hook fired and saw my SELECT *, and my lack of a semi-colon.

    2026-01_0146

    I tested this further by fixing these elements individually, and I could correct the SELECT *, but I couldn’t fix the semi-colon. I realized with testing that when SQL Source Control writes the file, it always includes a “GO” at the end. So my hook doesn’t work.

    Asking for Modification

    I decided to see if Claude would fix this, as I wasn’t sure what to change myself. I’m not a Node nor RegEx person, and I’d be googling a bunch to figure this out (or find someone else’s code). Instead I tried this: can you adjust this hook to ignore the missing semi-colon if the file ends with a GO, or check for a semi-colon before the GO

    The response was interesting. The explanation said this:

    Now it handles both cases:

    • File ends with GO: Checks that the line before GO has a semicolon

    • File doesn’t end with GO: Checks that the last line has a semicolon

    The relevant code is here:

    2026-01_0158

    I can read this and it makes some sense, but I would have struggled a bit to get this done in a reasonable time. Instead, it was seconds for Claude to produce this.

    When I re-tested, this passed the SQL Source Control GUI and I had a working git hook looking for a couple of simple silly mistakes I might code.

    Summary

    This is an area that I have a little experience, but not a lot. I’m a junior dev when it comes to Git, and Claude is definitely more skilled. However, I have to know what to ask to get a result and I thought the answers and explanations were good in helping me setup this test in a few minutes rather than the better part of an hour (or longer) if I were searching and trying to assemble code.

    This is one of those areas where AI was very useful to me. It built a fairly trivial coding item I needed, it helped explain things when I had questions, and it was helpful in adjusting code quickly when I realized I needed something else.

    Imagine asking a colleague this, realizing you’d asked the wrong thing, and then asking them again for new code. How slow, and annoying, would this be for both of you? AI is a game changer here, for things that are too simple to work with a colleague on, yet complex enough that you’d waste a decent chunk of time googling.

    That time savings went into me testing the code and testing SQL Source Control. I verified that SQL Source Control can work with git hooks in minutes.