Author: Aaron VanSledright

  • 2025 Wrapped: AI Agents, Fantasy Football, and 31 Posts Later

    It’s that time of year again where we all pretend to be surprised by our Spotify Wrapped stats even though we knew we listened to that one song 847 times (it was a Taylor Swift song). Well, I figured why not do the same thing for my blog? So grab your coffee (or bourbon, no judgment (unless its bad bourbon)), and let’s dive into what went down on this blog in 2025.

    The Numbers Don’t Lie

    31 posts. Thirty. One. Posts.

    That’s more than double my 2024 output. I went from a “once-a-month-maybe” blogger to someone who apparently had a lot to say. We’re talking about ~12,753 words of technical content, Python scripts, AI experiments, and weekly fantasy football updates that probably should have their own newsletter at this point.

    If you averaged it out, that’s a new post every 11.7 days. Not bad for someone who also has a full-time job, is launching a SaaS product, and is apparently trying to train an AI to beat his friends at fantasy football.

    The Monthly Breakdown

    Here’s how 2025 shaped up:

    • September: 7 posts (my absolute peak – more on this later)
    • December: 6 posts (strong finish!)
    • October & November: 5 posts each (keeping the momentum)
    • February: 3 posts (infrastructure month)
    • January & August: 2 posts each
    • July: 1 lonely post (I was probably on vacation)

    September was wild. Like, “did Aaron even sleep that month?” wild. Seven posts. SEVEN. And if you’re wondering why, well…

    The Fantasy Football Chronicles

    Let’s address the elephant in the room: 21 out of 31 posts were about Fantasy Football and AI.

    Yes. You read that right. Two-thirds of my 2025 content was me documenting my journey to see if an AI could beat humans at fantasy football. Was it an obsession? Maybe. Was it worth it? Absolutely.

    Starting with “An AI Fantasy Football Draft Assistant” in August, I embarked on what became a 17-week experiment combining AWS Lambda, DynamoDB, Claude, and way too much time analyzing NFL matchups. Week after week, I documented the AI’s decisions, the wins, the losses, and that one time Josh Jacobs was questionable and the Packers just… didn’t play him. (FTP go Lions)

    The Results? We made the playoffs. Finished 4th place. Beat half the league. The AI teammate actually worked.

    Will I do it again in 2026? You bet your AWS bill I will. But next time, we’re building a custom model and adding proper injury management. Because if there’s one thing 2025 taught me, it’s that you can teach an AI to predict football games, but you can’t teach NFL coaches to not make questionable lineup decisions.

    AI Was Everywhere (As It Should Be)

    Fantasy football wasn’t the only place AI showed up. Out of 31 posts, 28 touched on AI or automation in some way:

    The through line? Making AI actually useful instead of just flashy. I’m not here to build chatbots that tell you the weather. I’m here to build agents that save you money, reduce your troubleshooting time, and maybe win you a fantasy football championship.

    The Infrastructure Deep Dive

    When I wasn’t playing fantasy football GM with AI, I was deep in the AWS and Terraform trenches:

    Python and Terraform remained my bread and butter, which makes sense when you’re trying to automate literally everything.

    Fun Stats You Didn’t Ask For

    What 2025 Taught Me

    1. Ship it: I launched products, wrote code, documented everything. Perfection is the enemy of done.
    2. AI is a teammate, not a replacement: The best use cases combine AI capabilities with human expertise.
    3. Document the journey: The weekly fantasy football posts weren’t just about results – they were about learning in public.
    4. Infrastructure matters: Whether it’s Terraform, AWS, or your blog’s export tool, good infrastructure saves you hours.

    Looking Ahead to 2026

    I’m not slowing down. Here’s what’s coming:

    • CloudWatch AI Agent: Just launched on December 30th. This is going to help so many teams reduce their troubleshooting time.
    • Fantasy Football 2.0: Custom model training, better injury management, live NFL standings integration. We’re going deeper.
    • More open source tools: If I built it and it’s useful, I’m sharing it.
    • Consistent content: Keeping this momentum going. More tutorials, more projects, more real-world solutions.

    Thank You

    To everyone who read these posts, tested my tools, provided feedback, or just silently judged my fantasy football lineup decisions from afar – thank you. This blog exists because people actually find value in what I’m building and sharing.

    Special shout out to everyone who:

    • Tested drawiototerraform.com
    • Used my GitHub repos
    • Sent me messages about projects
    • Challenged my AI’s fantasy football decisions

    The Actual Spotify Wrapped Numbers

    Oh right, this was supposed to be like Spotify Wrapped. Here you go:

    🎵 Top Artist: AWS (it’s not music but it might as well be)
    📊 Minutes Listened: ~12,753 words = roughly 64 minutes of reading content
    🎯 Top Genre: “Infrastructure as Code with a side of Fantasy Sports”
    🏆 Your 2025 Achievement: Wrote more than 3x your 2024 output
    🔮 2026 Prediction: You’ll write about AI doing something weird again

    Oh, and I tried to ride 6000 miles on my bike in 2025. Because apparently I don’t have enough hobbies.


    Here’s to 2025. Here’s to shipping code. Here’s to AI teammates. Here’s to 31 posts and counting.

    See you in 2026. Let’s build some cool stuff.

    – Aaron

    P.S. – If you made it this far, you’re either really bored or you actually like my content. Either way, appreciate you. Drop a comment, send me a message, or just keep reading. I’ll keep writing.

    P.P.S. – Yes, the AI finished 4th in fantasy football. No, I’m not salty about it. Okay, maybe a little.

  • Cloudwatch Alarm AI Agent

    I think one of the biggest time sucks is getting a vague alert or issue and not having a clue on where to start with troubleshooting.

    I covered this in the past when I built an agent that can review your AWS bill and find practical ways to save money within your account. This application wasn’t event driven but rather a container that you could spin up when you needed a review or something you could leave running in your environment. If we take a same read-only approach to building an AWS Agent we can have have a new event driven teammate that helps us with our initial troubleshooting.

    The process flow is straight forward:

    1. Given a Cloudwatch Alarm
    2. Send a notification to SNS
    3. Subscribe a Lambda function to the topic (this is our teammate)
    4. The function utilizes the AWS Nova Lite model to investigate the contents of the alarm and utilizes its read only capabilities to find potential solutions
    5. The agent sends its findings to you on your preferred platform

    For my environment I primarily utilize Slack for alerting and messaging so I built that integration. Here is an architecture diagram:

    When the alarm triggers we should see a message in Slack like:

    The AI is capable of providing you actionable steps to either find the root cause of the problem or in some cases, present you with steps to solve the problem.

    This workflow significantly reduces your troubleshooting time and by reducing the troubleshooting time it reduces your downtime.

    So, if this is something you are interested in deploying I have created a Terraform module so you can quickly deploy it into your own environment to reduce your troubleshooting steps!

    Check it out here: https://aiopscrew.com

    If you have questions feel free to reach out to me at anytime!

  • Fantasy Football and AI – Playoffs Round 2

    Well. It had to end at some point.

    I think the AI mostly selected correctly this week. Unfortunately it wasn’t enough. We fell short by about 5 points. Going into Monday night we needed a massive game from George Kittle as the rest of the team performed very poorly. He delivered all the way until the 4th quarter where he likely twisted his ankle and was done for the game as the 49ers were up 2 scores.

    Here are the results:

    Josh Allen might have had a foot injury early in the game but stayed in for the entire game. The Bills simply didn’t throw the football. TreVeyon Henderson got absolutely demolished and left the game with a probable concussion. Josh Jacobs was questionable going into the game and cleared to play. The Packers simply didn’t play him.

    With that loss we are eliminated from the playoffs and will be playing next week for 3rd place. Still a decent finish for our first year utilizing AI.

    Looking Ahead

    Through the off season I want to continue to work on the overall architecture of this agent and system. Ideally, I want to have the custom model built for next season and build an API around that to help us make better predictions.

    Other action items:

    1. Find a way to load news stories and story lines for determinations
    2. Manage injuries/waivers better
    3. Handle live NFL standings (teams eliminated from playoffs might play differently than teams fighting for a spot)

    I also would love to be able to expose all of this publicly so that anyone reading can build their own applications around my predictions.

    Stay tuned next week for our final placement!

  • Fantasy Football and AI – Playoffs Round 1

    So I was wrong in last weeks post! Our playoffs started this week. In my league all the teams go to the playoffs and if you lose then there is a loser’s bracket.

    Our AI run team was seeded at number 3. We were in a three way tie for first place and we ended the “regular season” with 2054.76 points. The leader had 2114.12. So, we weren’t far off the front!

    Anyway, enough of that. You all just want to know the outcome. Here is our point totals from our first round in the playoffs:

    I ran the AI on Saturday and it suggested pulling out Josh Jacobs in favor of TreVeyon Henderson. This ended up getting us an extra 10 points. Josh Jacobs still put up 24.2 points this week. Everyone played really well this week except Sam Darnold. I’m not sure if his hot streak is over or what is going on with him but its been rough. Christian Watson took a nasty hit in his game and left early but he is expected to be just fine.

    So, did we win? We sure did! We’re on to the next round of the playoffs and we’re going to be up against Jahmyr Gibbs so we have to hope for our best performance of the season next week. Here is the currently proposed roster:

    We have a lot of injuries and questionable players so I expect this to change. We picked up the Bills defense as they play Cleveland and they should have a good time against that struggling offense.

    As we look to the off season I hope to build up my API website https://gridirondata.com and start training the model that we will use for next year. I have been working on the overall workflow and looking into how I can have both the scrapers running in the cloud and in my homelab so that I can easily work with the data locally and not incur a lot of cloud cost.

    Stay tuned for more Fantasy Football news next week!

  • Fantasy Football and AI – Week 14

    Happy Wednesday. Victory Wednesday that is! Our AI selected correctly this week and we snuck in a tough win that was finalized on Sunday night.

    Unfortunately, we lost Zach Ertz on the way. A really nasty low hit took him out for the year. Here is the final scores for our lineup:

    Josh Allen came up huge for us. Breece Hall was useless and the Commanders defense might as well have never stepped out on the field. But, a win is a win! We are now in a 3 way tie for first place but will likely take the third seed into the playoffs given our total fantasy points.

    Here is the lineup for week 15: We’ve had to make some changes from waivers and I’m hoping the AI selected correctly. We are heading into the part of the season where teams are going to be fighting for playoff spots. I hope that it is taking that into account as it made the waiver picks.

    We have some highly projected players this week. What do you think? Will we be able to pull off another win this week?

  • Setting Up Bambu Studio in Ubuntu 24

    I like 3D printing. I recently started dual booting Windows and Linux again. As I was setting up my new Ubuntu installation I remembered that I needed a slicer for my 3D printing.

    Thankfully, Bambu Studio has a Linux application that I can utilize. I downloaded the 2.3.1 release for my setup. It runs, it sees my printer, it slices and it sends to my printer to print.

    BUT!

    I need a little more. Here is a quick guide of how to set up Bambu Studio and create file affiliations in Ubuntu.

    # Create an application directory and make the file executable
    
    mkdir ~/Applications
    mv <yourApp>.appimage ~/Applications
    cd mkdir ~/Applications
    chmod +x <yourApp>.appimage
    
    # You can now launch the app. Lets make some file associations
    
    touch ~/.local/share/applications/your-app.desktop
    
    # add the following to the above file. Edit as needed
    [Desktop Entry]
    Name=Your App Name
    Exec=/home/yourusername/Applications/your-app.AppImage %f
    Icon=/path/to/icon.png
    Type=Application
    Categories=Graphics;3DGraphics;
    MimeType=model/3mf;application/x-3mf;
    
    # Update things:
    update-desktop-database ~/.local/share/applications/
    
    # Create the associations
    xdg-mime default your-app.desktop model/3mf
    xdg-mime default your-app.desktop application/x-3mf

    This should now launch Bambu Studio or your other application when you try and open a 3MF file!

  • Fantasy Football and AI – Week 13

    Sigh… another week another loss. It was a close one. It turns out people just didn’t really show up to play.

    Its hard to win a game when your high scorer is a defense. There was some light at the end of the Patriots game when Henderson was running down the field. Unfortunately they took him out and then the drive stalled. Had he been able to get a touch down we could have won. We left some points on the bench as well:

    Zach Ertz had a monster game and many of the other players would have been better than Saquon.

    On to week 14. This is the last week before our playoff run. Here is the current proposed roster:

    Its hard to not start Saquon Barkley. But he’s trending down and I think I agree with the AI here in not selecting him. Marvin Harrison Jr. is questionable again due to his surgery but is expected to play. We grabbed Christian Watson, Marcus Mariota and the Commanders defense for week 14. We dropped J.J. McCarthy due to poor performance and injury. Henderson is on bye this week. Our current bench looks like this:

    What do you think? Do you agree with the AI’s selections for the week?

  • Fantasy Football and AI – Week 12

    Well, unfortunately we took a big loss and are now in a three way tie for first place. Here are the actual results:

    I think the biggest hit was how poorly Josh Allen played. What is interesting is that I was reviewing his passed performance against Houston and he has had his worst outings of his career there. This week was no different… The other interesting thing is that Saquon Barkley just isn’t the same back as he was last year. He is trending down.

    In response to Josh Allen’s poor outing I added a deviation and historical performance analysis against and opponent to the data set so now we have a value like:

    "HOU": {
       "avg_actual": 11.6,
       "avg_deviation": -2.67,
       "avg_deviation_percentage": -18.69,
       "avg_projected": 14.27,
       "by_season": {
        "2024": {
         "avg_actual": 14.6,
         "avg_deviation": 0,
         "avg_deviation_percentage": 0,
         "avg_projected": 0,
         "games_played": 1,
         "games_with_projections": 0
        },
        "2025": {
         "avg_actual": 5.05,
         "avg_deviation": -5.65,
         "avg_deviation_percentage": -52.8,
         "avg_projected": 10.7,
         "games_played": 2,
         "total_actual": 10.1,
         "total_projected": 21.4
        }
       },

    I then coded a new tool inside of the AI to reference this data set to assist with its final calculations.

    So, when we ask the tool about Josh Allen’s performance against a team we get something like:

    Found exactly what you're looking for in Josh Allen's performance data.
    
    Josh Allen vs Kansas City (Week 9, 2025):
    - 28.8 fantasy points - That's a STRONG performance!
    - He was projected for 22.0 points but exceeded by 6.8 points (+30.9%)
    - This was one of his better games this season
    
    Historical Context (2024 vs KC):
    - Week 11, 2024: 24.0 fantasy points vs Kansas City
    
    Bottom Line: Josh Allen has performed WELL against Kansas City in recent matchups. In their two most recent meetings:
    - 2025 (Week 9): 28.8 points
    - 2024 (Week 11): 24.0 points
    
    That's an average of 26.4 fantasy points against KC - well above his season average. Allen seems to rise to the occasion against elite competition like Kansas City. The Chiefs' defense can be vulnerable to mobile QBs who can extend plays, and Allen's dual-threat ability has historically given them problems.
    
    The takeaway: When Allen faces KC, he typically delivers QB1 numbers. That 28.8-point performance this season shows he can still light up even the defending champs!

    I need to backload some more historical data yet but that is a problem for a different day. Looking forward, I hope to build my own model based on this data and setup an automated workflow that will include data ingestion and automated model building so that I can consistently build predictions.

    So, on to week 13. We have a bunch of injuries this week to contend with so this lineup will likely be changing once people are reporting. Here is the current lineup:

    In other news I built and launched https://gridirondata.com which is an API to reference all of the data I have collected so far.

    Unfortunately, its not free. But if you message me about it I’ll probably hook you up!

  • Building jsontotoon.io: A Free Tool to Cut Your LLM API Costs

    If you’re working with LLM APIs, you’re probably watching your token counts like a hawk. Every JSON object you send to Claude, GPT-4, or Gemini costs tokens, and those curly braces and quotes add up fast. I built https://jsontotoon.io to solve this exact problem—and it’s completely free to use.

    The Problem: JSON is Token-Inefficient

    Here’s the thing: JSON is fantastic for machine-to-machine communication. It’s ubiquitous, well-supported, and everyone knows how to work with it. But when you’re paying per token to send data to an LLM? It’s wasteful.

    Look at a simple example:

    [
      {"name": "Alice", "age": 30, "city": "NYC"},
      {"name": "Bob", "age": 25, "city": "LA"},
      {"name": "Carol", "age": 35, "city": "Chicago"}
    ]

    That’s 125 tokens. All those quotes, braces, and commas? The LLM doesn’t need them to understand the structure. You’re literally paying to send redundant syntax.

    Enter TOON Format

    TOON (Token-Oriented Object Notation) converts that same data to:

    name, age, city
    Alice, 30, NYC
    Bob, 25, LA
    Carol, 35, Chicago

    68 tokens. That’s a 46% reduction. The same information, fully reversible back to JSON, but nearly half the cost.

    I realize this sounds too good to be true, but the math checks out. I tested it across real-world datasets—API responses, database dumps, RAG context—and consistently saw 35-45% token reduction. Your mileage will vary depending on data structure, but the savings are real.

    How I Built It

    The backend is straightforward Python running on AWS Lambda. The TOON parser itself is deterministic—same JSON always produces the same TOON output, and round-trip conversion is lossless. No data gets mangled, no weird edge cases (well, I fixed those during testing).

    Infrastructure-wise:

    CloudFront + S3 for the static frontend

    API Gateway + Lambda for the conversion endpoint

    DynamoDB for API key storage (with email verification via SES)

    WAF with rate limiting to prevent abuse (10 requests per 5 minutes on API endpoints)

    CloudWatch dashboards for monitoring

    The whole setup costs me about $8-15/month in AWS fees, mostly for WAF. The conversion itself is so fast (< 100ms average) and cheap that I can offer unlimited free API keys without worrying about runaway costs.

    Real Use Cases

    I built this because I was spending way too much on Claude API calls for my fantasy football AI agent project. Every week I send player stats, injury reports, and matchup data in prompts. Converting to TOON saved me about 38% on tokens—which adds up when you’re making hundreds of calls per week.

    But the use cases go beyond my specific problem:

    RAG systems: Fit more context documents in your prompts without hitting limits

    Data analysis agents: Send larger datasets for analysis at lower cost

    Few-shot learning: Include more examples without token bloat

    Structured outputs: LLMs can generate TOON that’s easier to parse than JSON

    Try It Yourself

    The web interface at https://jsontotoon.io is free to use—no signup required. Just paste your JSON, get TOON. If you want to integrate it into your application, grab a free API key (also no cost, no expiration).

    Full API docs are available at https://jsontotoon.io/docs.html, with code examples in Python, JavaScript, Go, and cURL.

  • AI and Fantasy Football – Week 11

    Wow. Week 11 was filled with injuries. Josh Jacobs went down early with a knee injury. Aaron Rogers went out with a wrist injury but it all started off with an epic performance by TreVeyon Henderson putting up 32.3 points. The end result of week 11? ANOTHER VICTORY FOR AI! The team is now in 1st place. With all those injuries you might be wondering how we pulled off another victory. Well, here is the final scores for the week:

    Josh Allen came through massively with a 51 point game. Riley Patterson put up a few good kicks over in Madrid and George Kittle had a great game as well.

    Looking forward to week 12, we will have to battle some injuries but I think the depth chart should be able to sustain the blows. Here is the current proposed lineup:

    So, tech and data stuff. I added deviations into the data set. So now we can see the difference between what a player’s projection was and their actual. This will help the AI determine how a player is preforming. This is being structured on a per season per week basis as well as historically against an opponent. Next year this data will be valuable when looking at future matchups and draft choices.

    Next, I’m also working on launching an API for this entire project so that you can access the data and utilize it for your own applications. I hope to have a working beta of this by the end of the week! If you are interested in utilizing it feel free to message me. I’m sure a few of you can receive some free keys once its ready! I’ll have a separate post about the API once its ready.