Categories
Picdump

Saturday picdump for May 31, 2025

It’s Saturday — time for another “picdump!” This is the article where I post the technology- and work-related memes, pictures, and cartoons floating around the internet that I found interesting or relevant this week.

Share and enjoy!












Dorothy doesn’t quit!

Her mom took away her phone, so she tweeted her farewell message from her Nintendo 3DS…

…but her mom caught her.

You can’t stop Dorothy, though — there’s still the Wii U!

And when her mom took that away, that didn’t stop her…

































































Categories
Artificial Intelligence Meetups Programming

Wednesday, June 18: Intro to AI agents with MCP!

At 6 p.m. on Wednesday, June 18 at Embarc Collective, I’ll be presenting Intro to AI Agents with MCP, which will be a joint gathering of Tampa Bay Artificial Intelligence Meetup and Tampa Bay Python!

LLMs like ChatGPT, Claude, Gemini, DeepSeek, and others are great for taking in natural language questions and producing complex but useful natural language replies.

However, they can’t do anything except output text. without the help of additional code. Until recently, the way to connect LLMs to other systems was to develop custom code for each LLM and each online system it connects to, which is an “m by n” problem.

One solution is MCP, short for “Model Context Protocol.” Introduced to world by Anthropic not too long ago, MCP is an open source, open standard that gives AI models connection to external data sources and tools. You could describe MCP as “a universal API for AIs to interact with online services.”

We’ll explain what it is, why it was made and how it came about, and then show you actual working code by building a simple MCP server connected to an LLM. Joey will demonstrate a couple of examples of MCP in action, and they’ll be examples that you can take home and experiment with!

Bring your laptop — you’ll have the opportunity to try out the MCP demos for yourself!

And yes, there’ll be food, and water and soft drinks will be provided. If that doesn’t work for you, feel free to bring your own.

Want to register (it’s free)? You can do so at either of the following Meetup pages:

 

Categories
Current Events Meetups Tampa Bay

Tampa Bay tech, entrepreneur, and nerd events list (Monday, June 2 – Sunday, June 8, 2025)

Here’s what’s happening in the thriving tech scene in Tampa Bay and surrounding areas for the week of Monday, June 2 through Sunday, June 8, 2025!

This list includes both in-person and online events. Note that each item in the list includes:

✅ When the event will take place

✅ What the event is

✅ Where the event will take place

✅ Who is holding the event

This week’s events

Monday, June 2

Event name and location Group Time
Business Networking Meeting
Online
Christian Professionals Network Tampa Bay 11:30 AM to 12:30 PM EDT
Downtown St. Pete Business Networking Connection Lunch~ All Welcome< JOIN In!
Carrabbas
RGA Networking Professional Business Networking 11:30 AM to 1:00 PM EDT
Sameer Saleem: Tech for Good
Station 2 Innovation Center
Entrepreneurs & Startups – Bradenton Networking & Education 5:30 PM to 7:00 PM EDT
Speakeasy Toastmasters #4698
Online
Toastmasters District 48 6:00 PM to 8:00 PM EDT
Monday Feast & Game Night
Village Inn
Tampa Bay Tabletoppers 6:00 PM to 11:00 PM EDT
Weekly General Meetup
Online
Beginning Web Development 8:00 PM to 9:00 PM EDT
Return to the top of the list

Tuesday, June 3

Event name and location Group Time
v-Lean Coffee
Online
Tampa Bay Agile 7:30 AM to 8:30 AM EDT
10 Tips To Rock The Interview
Online
Tampa Cybersecurity Training 10:00 AM to 11:00 AM EDT
Sales and Marketing Masterclass June 3rd @Embarc Collective
Embarc Collective
Tampa Artificial Intelligence Applications Meetup Group 4:00 PM to 8:00 PM EDT
Weekly Open Make Night
4931 W Nassau St
Tampa Hackerspace 6:00 PM to 9:00 PM EDT
Loner Seekers Euchre – Tampa
Gaspars Patio Bar & Grille
Loner Seekers Euchre – Tampa 6:30 PM to 9:30 PM EDT
How to Get Rid of Unwanted Thoughts and Emotions
Online
Communication Skills for Career Advancement Group 7:00 PM to 8:00 PM EDT
Toast of Celebration Toastmasters
Celebration Community Field Complex
Toastmasters Division E 7:00 PM to 8:30 PM EDT
St. Pete Beers ‘n Board Games Meetup for Young Adults
Pinellas Ale Works Brewery
St. Pete Beers ‘n Board Games for Young Adults 7:00 PM to 10:00 PM EDT
Boards & Bones
SpookEasy Lounge
Nerdbrew Events 7:00 PM to 11:00 PM EDT
Return to the top of the list

Wednesday, June 4

Event name and location Group Time
Founders After Hours: High-Value Networking for Builders
Online
Orlando Networking and Business Group 1:00 AM to 2:00 AM EDT
World Toasters Toastmasters Club
Online
Toastmasters Division E 7:05 AM to 8:00 AM EDT
Grow Your Business with focused Referral Networking
Sons of Italy Lodge
BNI Tampa -Referral based networking 7:30 AM to 9:00 AM EDT
Building Accessible Web Apps: Practical Solutions for Inclusive Design
Accusoft
Tampa Devs 5:00 PM to 8:00 PM EDT
Career Rebound Summer Networking Event at Maggiano’s!
Maggiano’s Little Italy
Career Rebound – New Job or Career Search for Professionals 5:00 PM to 7:00 PM EDT
Orlando Chess Association
West Osceola Library
Greater Orlando Chess 5:30 PM to 8:30 PM EDT
Wednesday Board Game Night
Bridge Center
Tampa Gaming Guild 5:30 PM to 11:00 PM EDT
Game Night!
Southern Lights Brewing Company
Drunk’n Meeples the Social Tabletop (Board) Gamers 6:30 PM to 10:00 PM EDT
Sun Coast Euchre Club
The Hanger Restaurant & Flight Lounge
Suncoast Euchre Club -St Pete 6:50 PM to 8:50 PM EDT
Communication Practice and Improvement
Online
Communication Skills for Interviews and Presentations 7:00 PM to 8:00 PM EDT
Return to the top of the list

Thursday, June 5

Event name and location Group Time
Next-Level Productivity Powered by Smart AI Support
Online
Tampa Business Meetup Group 11:00 AM to 12:00 PM EDT
RGA’s Founders & Amplify Clearwater Partnership meeting ~ All Welcome, JOIN in.
Chili’s Grill & Bar
RGA Networking Professional Business Networking 11:30 AM to 1:00 PM EDT
Grand Bay Canasta
Grand Bay Building 3 Cardroom
Grand Bay Canasta Meetup Group 1:00 PM to 4:00 PM EDT
Vecna – Eye of Ruin (T3-APL15)
Coliseum of Comics Kissimmee
Orlando Adventurer’s Guild 5:30 PM to 9:30 PM EDT
Tampa M365 – Social @ Magnanimous
Magnanimous Brewing
Tampa M365 6:00 PM to 8:00 PM EDT
Tampa Power Platform – Social @ Magnanimous
Magnanimous Brewing
Tampa Power Platform 6:00 PM to 8:00 PM EDT
Surviving Helene and Milton: Lessons Learned and an Intro to Bugging In
Neon Temple
The Neon Temple 7:00 PM
Tampa Bay Drupal & Web Technologies Q&A. Everyone welcome!
Panera Bread
Tampa Bay Drupal User Group 7:00 PM to 8:00 PM EDT
June – The Hitchhiker’s Guide to the Galaxy
Crooked Thumb Brewery
Books & Brews! 7:00 PM to 9:00 PM EDT
Return to the top of the list

Friday, June 6

Event name and location Group Time
Caffeine & Connections: Friday Fuel for Black Professionals
Online
Pinellas County Black Business Meetup Group 8:00 AM to 9:00 AM EDT
Tampa Bay UX Group Virtual Coffee Talk
Online
Tampa Bay UX Group 9:00 AM to 10:00 AM EDT
First Friday WordPress Collaboration Meetup – June 2025
Online
West Orlando WordPress Meetup 9:00 AM to 10:30 AM EDT
Business Networking Tampa at Riveters Tampa ***NEW LOCATION***
riveters tampa
RGA Networking Professional Business Networking 11:30 AM to 1:00 PM EDT
Friday Board Game Night
Bridge Club
Tampa Gaming Guild 5:30 PM to 11:00 PM EDT
Networking for Tech Startups/Founders/Investors/Developers
Online
Tampa Tech Network 7:00 PM to 9:00 PM EDT
Final Fantasy Prerelease #1
Critical Hit Games
Critical Hit Games 7:00 PM to 10:00 PM EDT
The Death of Ivan Ilyich by Leo Tolstoy Discussion at American Social
American Social
Classic Book Club – Dinner Edition 7:00 PM to 9:00 PM EDT
“The Obstacle is the Way” – Ryan Holiday Finish Part 1
Flow Cafe
Tampa Stoics 7:00 PM to 9:00 PM EDT
Return to the top of the list

Saturday, June 7

Event name and location Group Time
Creative Writing In-Person Monthly Gathering for Aspiring Authors
16120 US Hwy 19 N
Pinellas Writers Group 9:00 AM to 12:00 PM EDT
Sensational Saturday Speakers
Online
Toastmasters Division E 9:30 AM to 10:30 AM EDT
Paths to Publication Panel and Open Mic
Kress Contemporary
We Write Here Black and Women of Color Writing Group 10:00 AM to 12:00 PM EDT
St. Thomas Aquinas on Christian Politics and Immigration.
North Sarasota Public Library
Sarasota Socratic Society 10:15 AM to 12:15 PM EDT
MEME-Themed Potluck Picnic
John Chesnut Sr. Park
Geekocracy! 12:00 PM to 3:00 PM EDT
Using Artificial Intelligence for Publishing
Online
Florida Gulf Coast Chapter of Sisters in Crime 1:00 PM to 3:00 PM EDT
Seminole Game Night (1st Saturday of each Month 4 – 10 PM)
Barbara’s House
It’s All Fun and Games Tampa Bay Brandon Riverview and Ruskin 4:00 PM to 10:00 PM EDT
Final Fantasy Prerelease #2
Critical Hit Games
Critical Hit Games 6:00 PM to 9:00 PM EDT
Return to the top of the list

Sunday, June 8

Event name and location Group Time
Venice Strategy Board Gamers
Venice
Board Games and Card Games in Sarasota & Bradenton 12:00 PM to 6:00 PM EDT
Board Game Flea Market and $1 Auction
Tampa Bay Bridge Center
Tampa Gaming Guild 1:30 PM to 4:00 PM EDT
Sew Awesome! (Textile Arts & Crafts)
Tampa Hackerspace West
Tampa Hackerspace 5:30 PM to 8:30 PM EDT
Return to the top of the list

About this list

How do I put this list together?

It’s largely automated. I have a collection of Python scripts in a Jupyter Notebook that scrapes Meetup and Eventbrite for events in categories that I consider to be “tech,” “entrepreneur,” and “nerd.” The result is a checklist that I review. I make judgment calls and uncheck any items that I don’t think fit on this list.

In addition to events that my scripts find, I also manually add events when their organizers contact me with their details.

What goes into this list?

I prefer to cast a wide net, so the list includes events that would be of interest to techies, nerds, and entrepreneurs. It includes (but isn’t limited to) events that fall under any of these categories:

    • Programming, DevOps, systems administration, and testing
    • Tech project management / agile processes
    • Video, board, and role-playing games
    • Book, philosophy, and discussion clubs
    • Tech, business, and entrepreneur networking events
    • Toastmasters and other events related to improving your presentation and public speaking skills, because nerds really need to up their presentation game
    • Sci-fi, fantasy, and other genre fandoms
  • Self-improvement, especially of the sort that appeals to techies
  • Anything I deem geeky
Categories
Artificial Intelligence Hardware Programming

A Raspberry Pi battery life/vibe coding experiment

For the next little while, I’m going to share stories about my current coding projects. This first one is about a quick evening project I did the other night that features a Raspberry Pi, a dollar-store USB power pack, Python, and a little vibe coding.

The inspiration

Original cover of Andy Weir’s novel, “The Martian.”

My fictional engineer hero is Mark Watney, the protagonist of Andy Weir’s self-published sci-fi novel turned big hit, The Martian. A good chunk of the story is about how Watney, an astronaut stranded on Mars, would overcome problems by cobbling together some tool or device, using only the gear available at the Mars habitat, his technical know-how, and creative thinking. My love for the way Watney does things is so strong that I play the audiobook version as “background noise” whenever I’m working on a problem that seems intractable.

While the movie version adds a line that captures what Watney does throughout The Martian“I’m gonna have to science the shit out of this” — it condenses a lot of what he has to do, and covers only a small fraction of the clever guerilla engineering that he does in the novel on which it was based.

The book version has Watney narrating the problems he faces, and how he uses the available equipment and material to overcome them, which often involved adapting gear for purposes they weren’t made for, such as attaching solar cells meant for the habitat to the Mars Rover to extend its driving range.

The idea

Raspberry Pi 3B board, beside a U.S. $20 bill for scale. The Raspberry Pi is about two-thrids the size of the bill.

I’d been meaning to do some projects where I’d attach sensors to my old Raspberry Pi 3B and set it up somewhere outside. Of course, you can’t count on having an electrical outlet nearby in the great outdoors. However, the Raspberry Pi 3 series takes its power via a USB micro port.

This led to a couple of questions:

  • Could I power it with a one of those USB power packs that are typically used to recharge phones while on the go?
  • If so, how long could a USB power pack keep my Raspberry Pi running?

It was time to ask some questions and get the answer empirically!

Question 1: Can you run a Raspberry Pi from a USB power pack?

The short answer: yes. I plugged my least-powerful power pack, one those cheap ones that you’d expect to find at Dollar General or Five Below:

I don’t recall buying it. It’s probably something that a friend or family member gave me. People often give me their electronics cast-offs, and I either find a use for them or recycle them.

Fortunately, no matter how cheap these units are, they usually have their specs printed somewhere on their body:

The power pack outputs 800 milliamps (mA), which is enough to run a Raspberry Pi 3B, especially if I remove any USB devices and don’t connect it to a monitor. The Pi draws about 250 mA when idle, which I figured would give me plenty of “headroom” for when the Pi would be running my little program.

According to the specs printed on the power pack, its battery capacity is 2200 milliamp-hours (mAH). That means it should be able to run a device that consumes 2200 milliamps for an hour, or a device that consumes 1100 milliamps for two hours, or a device that consumes 550 milliamps for four hours.

Of course, this was an old power pack of unknown provenance that had been through an unknown number of power cycles. Its capacity was probably far less than advertised.

Here’s the Raspberry Pi, with some parts labeled:

I plugged the power pack into Raspberry Pi, and it booted. The OS displayed a “low voltage warning” message on the desktop as soon as it had completed booted…

…but it worked!

Question 2: How long will the Raspberry Pi run on this power pack, and how do you find out?

Before I give you my answer to the second question, give it some thought. How would you test how long a programmable device can run on a power pack?

I wrote this Python script:

// uptime.py

import time

with open("uptime.txt", "a") as f:
    while True:
        time.sleep(5)
        display_time = time.ctime(time.time())
        f.write(f"{display_time}\n")
        print(display_time)

Here’s what the script does:

  • It opens a file named uptime.txt if one exists. If there is no such file, it creates that file.
  • It starts an infinite loop that appends the current time to the file every five seconds.

Note that the code appends the current time to the file, resulting in a file full of timestamps that looks like this…

Wed May 28 14:16:28 2025
Wed May 28 14:16:33 2025
Wed May 28 14:16:38 2025

…instead of a file containing the most recent timestamp.

There’s a reason for this: if I simply had the application write to the file so that it contained only the most recent timestamp, there’s a chance that the power might go out in the middle of writing to the file, which means there’s a chance that the program would fail to write the current time, and I’d end up with a blank file.

By adding the latest timestamp to the end of a file full of timestamps every 5 seconds, I get around the problem of the power going out in the middle of the file operation. At worst, I’ll have a timestamp from 5 seconds before the Raspberry Pi lost power.

The test

I fired up the Raspberry Pi while it was connected to its regular power adapter, entered the script and saved it, powered it down, and then connected it to the power pack:

I then turned it on, hooked it up to a keyboard and monitor just long enough to start the script, then disconnected the keyboard and monitor. I then left the Raspberry Pi alone until its power light went out, which indicated that it had run the battery dry.

I ran this test a couple of times, and on average got 57 minutes of uptime.

Question 3: Would I get more uptime if I wrote the program in C instead of Python?

CPUs are really large collections of transistors:

In the case of the Raspberry Pi 3 B’s ARM Cortex A53 CPU, there are about 260 million of these transistors, each one being a tiny switch that uses a tiny bit of electricity. The harder you work them, the more power they use. Some of that power is released as heat, which is why your computer gets warm, especially if you’ve got it doing something that requires a lot of computation (such as videogames, mining cryptocurrency, or training and running artificial intelligence models).

You’ve probably seen this chart that’s been floating around the internet since its publication in the 2017 paper Energy Efficiency across Programming Languages. It shows how much energy, time, and memory a number of programming languages use to perform roughly the same tasks, and it appears that Python does poorly for energy efficiency:

In order to be an easier language to read and program in, with more expressiveness and flexibility than C Python makes it easier on programmer by putting more of the work on the processor. That’s why it’s a power hog. On the other hand, C, which is almost assembly language, is at the top of the power efficiency list.

So my thought was: what if I wrote the uptime program in C and ran it — would I get more uptime?

The C program, version 1

I was about to start coding in C when it occurred to me that while I knew how to write to a file in it, I couldn’t remember how to get the time.

I was about to look it up, when I thought: why not have Claude do it?

So I opened a browser to Claude and entered:

I need some C code that will append the current date and time to a file named “uptime.txt” every 5 seconds.

It provided me with the following code:

// uptime.c

#include <stdio.h>
#include <time.h>
#include <unistd.h>
#include <signal.h>
#include <stdlib.h>

volatile int running = 1;

void signal_handler(int sig) {
    running = 0;
    printf("\nReceived signal %d, shutting down gracefully...\n", sig);
}

int main() {
    FILE *file;
    time_t raw_time;
    struct tm *time_info;
    char time_string[100];
    
    // Set up signal handler for graceful shutdown
    signal(SIGINT, signal_handler);
    signal(SIGTERM, signal_handler);
    
    printf("Starting uptime logger. Writing to uptime.txt every 5 seconds.\n");
    printf("Press Ctrl+C to stop.\n\n");
    
    while (running) {
        // Get current time
        time(&raw_time);
        time_info = localtime(&raw_time);
        
        // Format time string
        strftime(time_string, sizeof(time_string), "%Y-%m-%d %H:%M:%S", time_info);
        
        // Open file in append mode
        file = fopen("uptime.txt", "a");
        if (file == NULL) {
            perror("Error opening file");
            return 1;
        }
        
        // Write timestamp to file
        fprintf(file, "%s\n", time_string);
        fclose(file);
        
        printf("Logged: %s\n", time_string);
        
        // Wait 5 seconds
        sleep(5);
    }
    
    printf("Uptime logger stopped.\n");
    return 0;
}

The C program, version 2

After looking over the code, I noticed something and decided to ask Claude about it:

What part of this code requires stdlib.h?

Claude’s response:

Good catch! Looking at the code, stdlib.h is only needed for the exit() function, but I’m not actually using exit() anywhere in the program.

The return statements use the standard return mechanism, and the signal handler just sets the running flag to 0 rather than calling exit(). So stdlib.h can be removed from the includes.

Let this be a lesson: always double-check the code an AI gives you.

It then provided this code:

#include <stdio.h>
#include <time.h>
#include <unistd.h>
#include <signal.h>

volatile int running = 1;

void signal_handler(int sig) {
    running = 0;
    printf("\nReceived signal %d, shutting down gracefully...\n", sig);
}

int main() {
    FILE *file;
    time_t raw_time;
    struct tm *time_info;
    char time_string[100];
    
    // Set up signal handler for graceful shutdown
    signal(SIGINT, signal_handler);
    signal(SIGTERM, signal_handler);
    
    printf("Starting uptime logger. Writing to uptime.txt every 5 seconds.\n");
    printf("Press Ctrl+C to stop.\n\n");
    
    while (running) {
        // Get current time
        time(&raw_time);
        time_info = localtime(&raw_time);
        
        // Format time string
        strftime(time_string, sizeof(time_string), "%Y-%m-%d %H:%M:%S", time_info);
        
        // Open file in append mode
        file = fopen("uptime.txt", "a");
        if (file == NULL) {
            perror("Error opening file");
            return 1;
        }
        
        // Write timestamp to file
        fprintf(file, "%s\n", time_string);
        fclose(file);
        
        printf("Logged: %s\n", time_string);
        
        // Wait 5 seconds
        sleep(5);
    }
    
    printf("Uptime logger stopped.\n");
    return 0;
}

The C program, version 3

This was an improvement, but there was still a little too much “gold plating” for my needs. I entered the following into Claude:

I don’t need the graceful exit, because this program is expected to run until the computer runs out of power.

Here’s the code it provided in its response:

#include <stdio.h>
#include <time.h>
#include <unistd.h>

int main() {
    FILE *file;
    time_t raw_time;
    struct tm *time_info;
    char time_string[100];
    
    printf("Starting uptime logger. Writing to uptime.txt every 5 seconds.\n\n");
    
    while (1) {
        // Get current time
        time(&raw_time);
        time_info = localtime(&raw_time);
        
        // Format time string
        strftime(time_string, sizeof(time_string), "%Y-%m-%d %H:%M:%S", time_info);
        
        // Open file in append mode
        file = fopen("uptime.txt", "a");
        if (file == NULL) {
            perror("Error opening file");
            return 1;
        }
        
        // Write timestamp to file
        fprintf(file, "%s\n", time_string);
        fclose(file);
   
        printf("Logged: %s\n", time_string);
        
        // Wait 5 seconds
        sleep(5);
    }
    
    return 0;
}

Much better.

Once I got past this regularly recurring feeling…

…I compiled the program by entering this line in the terminal…

gcc -o uptime uptime.c
./uptime

…to compile and run it.

I ran this experiment a couple of times, and on average got 89 minutes of uptime. So yes, writing — or better yet, vibe coding — the “uptime” program in C got me more power efficiency and uptime!

Question 4: Did Claude “know” what I was trying to do?

I figured there was more than enough context for Claude to “know” what the “uptime” program was for, so I asked it:

Based on the information I’ve provided in this conversation, what do you think this program is for?

Here’s its complete reply:

Based on the context clues, this appears to be a simple system uptime monitor or power outage detector.

The key indicators are:

  • You mentioned it’s “expected to run until the computer runs out of power”
  • It logs timestamps every 5 seconds to track when the system is running
  • You don’t want graceful exit handling since power loss would be abrupt
  • The file is named “uptime.txt”

This suggests you want to track how long your system stays powered on, possibly to:

  • Monitor power reliability/outages in your area
  • Track system uptime for reliability analysis
  • Have a record of when power failures occur (gaps in the timestamps would indicate outages)
  • Monitor an unattended system or server

When power is restored and the system boots back up, you could restart this program and it would continue appending to the same file, giving you a complete timeline of system availability with clear gaps showing when outages occurred.

Not bad! In fact, the use case in that final paragraph was one I hadn’t thought of, which is a primary reason why I like using AIs for my work, which is:

No matter how smart, inventive, or creative you are (or think you are), you will never be able to write a list of ideas that you would never think of.

Lessons learned

  1. Yes, you can power a Raspberry Pi — at least a Raspberry Pi 3 — with a USB power pack, even a cheap one. I knew that you could power smaller boards this way, but you have to remember that a Raspberry Pi 3 is on par with a baseline 2010-era laptop, and those had much bigger batteries.
  2. Claude’s C code generation is pretty good, but you still need to be a programmer to correct it, and while it will show you how to compile and run a C program, it’s a good idea to know how to do so.
  3. Claude can figure out what a program is for, given enough context.

Watch this space — I’ll be posting more articles like this!

Categories
What I’m Up To

One of today’s missions: Reorganize the home office

Joey de Villa’s home office.
Tap to view at full size.

Between a recent vacation, a quick burst of client work, some new gear, and life in general, the home office has been getting a little more cluttered and disorganized than I like, so I dedicated a chunk of this morning to cleaning it up. Here’s a photo from midway through the process.

Categories
Artificial Intelligence Humor

The “just by vibe coding” mental model

Categories
Picdump

Saturday picdump for May 24, 2025

It’s Saturday — time for another “picdump!” This is the weekly article where I post the technology- and work-related memes, pictures, and cartoons floating around the internet that I found interesting or relevant this week.

Share and enjoy!