Categories
Picdump

Saturday picdump for Saturday, September 5

Happy Saturday, everyone! Here on Global Nerdy, Saturday means that it’s time for another “picdump” — the weekly assortment of amusing or interesting pictures, comics, and memes I found over the past week. Share and enjoy!



790325963_1386434092982699_8336607117489870295_n

Screenshot
Screenshot


Screenshot
Screenshot


1788360728198

IMG_2864

783674118_1327365045905094_7950287288142407638_n

790367481_4904342883135825_2183930459052449681_n

788057690_2947004712303818_6232665093585995371_n

792910590_1580023039974067_3735155702403173098_n

787341603_1075723804954909_5120696522554884581_n

793028074_27986441857691161_1984398635831010010_n

789680627_1035574826024646_3496056383617291226_n-1

786121945_27570828345928070_6607208312692241815_n

781805002_1088825073609987_1108358205286085426_n

795664572_38195897083358402_1245678974823685876_n

788690014_4099251463541944_5930659098324423431_n

792507219_964000840075169_1098375063059731120_n

792743373_1637872401273541_8996575676834637078_n

IMG_2860

794517020_1754635692239429_3814573641839940154_n

795189516_1628402718800536_7728413604234355301_n

789617825_2210341106544146_716594106887639212_n-1

789594479_1593079472365591_7388918635204796816_n

790113674_4221153238176647_8545758061046127646_n

788047004_933109893173429_1516354301113961745_n

793868467_1765623557770664_5025054480054168082_n

792840994_2100891073850917_1930012895633372653_n

791335176_3446466995533554_7138824923627957081_n

797745183_2011985279504235_4305345763092425525_n

791246121_2259705431444775_2303464473252729040_n

784428540_1623637002449789_6238651434739368076_n

793595724_1765854461036771_3769013060943951034_n

785885982_2075860489693109_1112992769148051480_n

791045532_1379443750365519_8340931619433942704_n

788613235_1603064141169221_4307845468014733296_n

785147179_122298955094073223_7483961936726890770_n

Screenshot
Screenshot


IMG_2861

793122325_1711415860153446_3920536375186118517_n

789581622_940416915119427_1856030663218068721_n

IMG_2690

791179103_1030595006453442_7638525005679984537_n

789342497_1561150112219287_4458040552447701_n

792747595_1406742294718685_4586259710243010435_n

791318146_1553476096885626_6116530074460638902_n

791706934_1849009236457995_2162783687862508545_n

790880283_1980358789587736_3109768289259860211_n

793160867_1591716405632570_9034496759587923336_n

Screenshot
Screenshot


785365106_1899712098104603_1005236391141733037_n

Screenshot
Screenshot


793868526_1545352456814549_8951843815346975176_n

IMG_2850

795328380_1388575722774650_3784065470460605743_n

790626134_10175648280320372_410151045218059520_n

790628185_1813800926469502_4290779241360590550_n

782489464_2169524650597098_773780077291696457_n

IMG_2845

792133070_18387861157205652_7129543038536501635_n-1

790574833_1709825000089459_918648716722182609_n

318c2990f75172f0

787843465_1057804166990298_2797659673548444619_n

791820210_1944051626553217_6699840891199295950_n

IMG_2839

IMG_2624

786656839_27330909326583369_7195403673170254295_n

794198732_2029038281818995_6748766656251497154_n

789926486_1068461529164784_5196792203243680373_n

793405675_1138279695188803_4478423248350924770_n

785286636_2351070222093957_2666221290925034576_n

784816890_1627161318803872_1850640393969147943_n-1

795189529_1051642124372622_6782530131513213263_n

792159136_4567877210164057_4999684643347692098_n

790325992_1042392418560805_1761151330327925744_n

788716370_1075202865065998_2918822619693635528_n

791145056_1418244003487261_2586827578630399312_n

790308317_1390109512537229_1184498887083523440_n

IMG_2862

794969786_1385895206421162_7893809444712482462_n

789490363_1581442353662842_57910102212282583_n

791641500_1380499367603757_8307741402776849873_n

787000842_4535286296794016_4106529131093235342_n-1

793092043_2314007016098532_3415877606649194517_n

Screenshot
Screenshot


790541204_1777101819985372_7622375178715156786_n

792133341_2957647867930025_6126197488630776169_n

789890376_1029214293266350_535477959281551927_n

787798087_1015606464868076_7781046434159900641_n

789036580_1053794350745086_1764209960297493059_n

794328111_1452010786751149_8020501907299465700_n

791975557_1865246564438395_8607420601020967101_n

788429164_1307675014604758_8245701830236448577_n

792071494_2308548956573318_2769643539263895137_n

682251262_18083705906207603_273589089986155485_n

794097308_891037233872556_7576413559254752184_n
Categories
Current Events Meetups Tampa Bay

Tampa Bay tech, entrepreneur, and nerd events list (Monday, September 7 – Sunday, September 13)

Here’s what’s happening in the thriving tech scene in Tampa Bay and surrounding areas for the week of Monday, September 7 through Sunday, September 13!

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, September 7

Event name and location Group Time
Venice Area Toastmasters Club #5486
Online event
Toastmasters District 48 7:30 AM to 9:00 AM EDT
The Seventh Room (Dare2Escape Orlando)
Dare2Escapeun
Tampa Escape Room Meetup 12:00 PM to 1:45 PM EDT
Camp Harvest Moon: Prank Wars ’92 (Dare2Escape Orlando)
Dare2Escapeun
Tampa Escape Room Meetup 1:45 PM to 2:45 PM EDT
The Asylum (Dare2Escape Orlando)
Dare2Escapeun
Tampa Escape Room Meetup 5:00 PM to 6:00 PM EDT
Speakeasy Toastmasters #4698
Online event
Toastmasters District 48 6:00 PM to 8:00 PM EDT
ACE Advanced Toastmasters 3274480
Online event
Toastmasters Divisions C & D 6:00 PM to 7:30 PM EDT
The Ringmaster (Dare2Escape Orlando)
Dare2Escapeun
Tampa Escape Room Meetup 6:00 PM to 7:00 PM EDT
Sarasota Blood on the Clocktower
Clocktower meetup
Board Games and Card Games in Sarasota & Bradenton 6:00 PM to 10:00 PM EDT
Games at Barriehaus Trinity
Barriehaus Beer Company, Trinity
Advance 3 Spaces Neurodivergent Social Gaming 6:00 PM to 8:00 PM EDT
MTG: Commander Night
Critical Hit Games
Critical Hit Games 6:00 PM to 11:00 PM EDT
Toast of Lakewood Ranch Toastmasters Club
Lakewood Ranch Town Hall
Toastmasters District 48 6:30 PM to 7:30 PM EDT
North Port Toastmasters Meets Online!!
Online event
Toastmasters District 48 6:30 PM to 8:00 PM EDT
Mythic Bastionland: Session 2 of 6
Kitchen Table Games (New Location)
St Pete and Pinellas Tabletop RPG Group 6:30 PM to 9:30 PM EDT
Lakeland (FL) Toastmasters Club #2262
GFWC United Women’s Club of Lakeland
Toastmasters Division E 7:00 PM to 8:30 PM EDT
Let’s Talk Toastmasters
Online event
Toastmasters Divisions C & D 7:00 PM to 8:30 PM EDT
Hidden Gems Night, Presented by A Duck!
Online event
Nerdbrew Events 7:00 PM to 10:00 PM EDT
DigiMondays
Sunshine Games | Magic the Gathering, Pokémon, Yu-Gi-Oh!
Sunshine Games 7:30 PM to 9:30 PM EDT
Weekly General Meetup
Online event
Beginning Web Development 8:00 PM to 9:00 PM EDT
Where is Bitcoin Going?
Online event
Bitcoiners of Southwest Florida 9:00 PM to 10:00 PM EDT
Return to the top of the list

Tuesday, September 8

Event name and location Group Time
v-Lean Coffee
Online event
Tampa Bay Agile 7:30 AM to 8:30 AM EDT
CEO Toastmasters
Online event
Toastmasters Divisions C & D 8:00 AM to 9:00 AM EDT
Simplifying Compliance: Meeting GDPR, HIPAA, and PCI Requirements with Log360
Online event
Orlando Cybersecurity Meetup 11:00 AM to 12:00 PM EDT
Golden Hour PhotoWalk at Coachman Park
Clearwater Ferry
Florida Center for Creative Photography 5:00 PM to 6:00 PM EDT
Weekly Open Make Night
4931 W Nassau St
Tampa Hackerspace 6:00 PM to 9:00 PM EDT
Bartow Toastmasters HYBRID Meeting
2250 S Floral Ave
Toastmasters Division E 6:00 PM to 7:15 PM EDT
Spanglish Toastmasters Club 7703731
Online event
Toastmasters Division G 6:00 PM to 7:30 PM EDT
Disney Lorcana Night
Critical Hit Games
Critical Hit Games 6:00 PM to 11:00 PM EDT
Hobby Night
Critical Hit Games
Critical Hit Games 6:00 PM to 11:00 PM EDT
Winter Haven Toastmasters
St Paul’s Episcopal Church
Toastmasters Division E 6:30 PM to 8:30 PM EDT
Loner Seekers Euchre – Tampa
Shamrocks Ale House
Loner Seekers Euchre – Tampa 6:30 PM to 9:30 PM EDT
D&D @ Critical Hit Games (Full)
Critical Hit Games
RPG-Pinellas 6:30 PM to 11:00 PM EDT
Let’s Meetup and Discuss “The Troop” by Nick Cutter
bartaco Dr. Phillips
Central Florida Books and Brews 6:30 PM to 8:30 PM EDT
Winter Springs Toastmasters Club
Online event
Toastmasters Divisions C & D 7:00 PM to 8:15 PM EDT
St. Pete Beers ‘n Board Games Meetup for Young Adults
3 Daughters Brewing
St. Pete Beers ‘n Board Games for Young Adults 7:00 PM to 10:00 PM EDT
Yu-Gi-Oh Evening Tournament
Sunshine Games | Magic the Gathering, Pokémon, Yu-Gi-Oh!
Sunshine Games 7:00 PM to 11:00 PM EDT
Badass Babes – Weekly Movie Night
Online event
Nerdbrew Events 7:30 PM to 9:30 PM EDT
Trading Tuesday
Online event
Bitcoiners of Southwest Florida 8:00 PM to 9:00 PM EDT
Boards & Bones Table Top RPGs
Online event
Nerdbrew Events 8:00 PM to 11:00 PM EDT
Return to the top of the list

Wednesday, September 9

Event name and location Group Time
NATIONAL TEDDY BEAR DAY — HUGS & MIDWEEK FUN! Wednesday, September 9, 2026
Wednesday, Sep 9 · 11:00 AM to 2:00 PM EDT
Tampa (Citrus Park Area) Games Meetup Group 10:05 AM
World Toasters Toastmasters Club
Online event
Toastmasters Division E 7:05 AM to 8:00 AM EDT
Tampa Highrisers Toastmasters
Hyde Park United Methodist Church
Toastmasters District 48 7:45 AM to 8:45 AM EDT
Productivity Wednesday
300 E State Street
Kazba Cafe – Oldsmar FL 10:00 AM to 3:00 PM EDT
Wednesday Night Gaming
Nerdy Needs
Brandon Boardgamers 5:00 PM to 10:00 PM EDT
40k Escalation League
Battlebrush Games
Battlebrush Games: Paint Minis & Play Warhammer/Warmachine 5:00 PM to 9:00 PM EDT
CNC Wednesday’s
MakerSpace St. Petersburg
Makerspaces Pinellas Meetup Group 5:30 PM to 7:30 PM EDT
Wednesday Board Game Night
Bridge Center
Tampa Gaming Guild 5:30 PM to 11:00 PM EDT
Chess Night at Conworlds Emporium Every Wednesday
Conworlds Emporium
Tarpon Springs Community Fun & Games 5:30 PM to 7:00 PM EDT
Orlando Chess Association
West Osceola Library
Greater Orlando Chess 5:30 PM to 8:30 PM EDT
Data Analytics & AI – Tampa Bay – September MEETUP
Entrepreneur Collaborative Center
Data Analytics & AI – Tampa Bay 6:00 PM to 7:30 PM EDT
Board game night at CHG!
Critical Hit Games
Saint Pete Boardgamers 6:00 PM to 11:00 PM EDT
Casual Commander Wednesdays
Sunshine Games | Magic the Gathering, Pokémon, Yu-Gi-Oh!
Sunshine Games 6:00 PM to 11:00 PM EDT
Board Game Night
Critical Hit Games
Critical Hit Games 6:00 PM to 11:00 PM EDT
Wednesday Coffee and Chat @ Barnes and Noble – Carrollwood
Barnes and Noble
Tampa Bay Mosaic 6:00 PM to 7:00 PM EDT
Trivia Night @ Swan Brewing
Swan Brewing
Lakeland Hangouts (20’s & 30’s) 6:15 PM to 8:30 PM EDT
Tampa Writers Alliance Critique Group
Online event
Tampa Writers Alliance 6:30 PM to 8:30 PM EDT
Sun Coast Euchre Club
The Hanger Restaurant & Flight Lounge
Suncoast Euchre Club -St Pete 6:50 PM to 8:50 PM EDT
Carrollwood Toastmasters Meetings meet In-Person and Online
Jimmie B. Keel Regional Library
Toastmasters District 48 7:00 PM to 8:30 PM EDT
Games & Grog! Board game night @ Peabodies
Peabodies
Nerdbrew Events 7:00 PM to 11:00 PM EDT
2nd Wednesday In-Person Meetup Special Event Black Light Photography
Studio Central
The Art Of Photography – Tampa/St. Pete 7:00 PM to 9:00 PM EDT
Cardfight Vanguard!! OverDress Weekly
Sunshine Games | Magic the Gathering, Pokémon, Yu-Gi-Oh!
Sunshine Games 7:30 PM to 9:30 PM EDT
Return to the top of the list

Thursday, September 10

Event name and location Group Time
Sarasota Speakers Exchange Toastmasters
Online event
Toastmasters District 48 12:00 PM to 1:00 PM EDT
Open Board Gaming Day at Dark Side
Dark Side Comics & Games
Board Games and Card Games in Sarasota & Bradenton 4:00 PM to 10:00 PM EDT
Online: Streaming Live Video with OBS
Online event
Orlando Video & Post Production Meetup 5:30 PM to 6:30 PM EDT
Omni Toastmasters Club 6861
Online event
Toastmasters Divisions C & D 5:45 PM to 7:00 PM EDT
Microsoft Azure AI Foundey
Hillsborough County ECC
Tampa AI Applications Meetup Group 6:00 PM to 7:30 PM EDT
Tech & Taps: PTN Happy Hour
Crooked Thumb Brewery
Pinellas Tech Network 6:00 PM to 8:00 PM EDT
Tech meetup @Yuengling Draft Haus
Yuengling Draft Haus & Kitchen 11109 N 30th St · Tampa, FL
Tampa Bay New-In-Tech 6:00 PM to 8:00 PM EDT
[AL] Phandelver and Below: The Shattered Obelisk [APL 4 Tier 1]
Coliseum of Comics Kissimmee
Adventurers of Central Florida 6:00 PM to 9:00 PM EDT
HP Guild Games BotC Monthly
HP Guild Games
Blood on the Clocktower Tampa Bay 6:00 PM to 9:00 PM EDT
Board Game Night
Conworlds Emporium
Tarpon Springs Community Fun & Games 6:00 PM to 9:00 PM EDT
Warhammer Night
Critical Hit Games
Critical Hit Games 6:00 PM to 11:00 PM EDT
Connect & Serve
St. Pete Athletic
Tampa Bay Techies 6:30 PM to 8:30 PM EDT
Writing Meetup
HotWax Coffee Shop, Kava Bar & Tap House
Tampa Free Writing Group 6:30 PM to 8:30 PM EDT
Creative Writing club
Foxtail coffee
Cozy Club 6:30 PM to 8:00 PM EDT
Palm Harbor Toastmasters Club #8248
1500 16th St
Toastmasters District 48 7:00 PM to 8:30 PM EDT
Tales From The Loop
Collect.GG Collectables
St Pete and Pinellas Tabletop RPG Group 7:00 PM to 10:00 PM EDT
One Piece Thursdays
Sunshine Games | Magic the Gathering, Pokémon, Yu-Gi-Oh!
Sunshine Games 7:00 PM to 10:00 PM EDT
FABulous Thursdays
Sunshine Games | Magic the Gathering, Pokémon, Yu-Gi-Oh!
Sunshine Games 7:00 PM to 11:00 PM EDT
Pathfinder Society
Critical Hit Games
Critical Hit Games 7:00 PM to 10:00 PM EDT
Live streaming production and talent
124 S Ring Ave
Live streaming production and talent 7:00 PM to 9:00 PM EDT
Thursday Tacos & Tax Write Offs
Online event
Nerdbrew Events 7:30 PM to 10:30 PM EDT
Game Night!
Lucky Spartan
Tampa 20’s and 30’s Social Crew 7:30 PM to 9:30 PM EDT
Networking Event
Gasparilla Distillery & Cocktail Bar
Tampa AI Applications Meetup Group 7:45 PM to 9:15 PM EDT
Goddess Splash Pad Dance
St. Pete Pier
Saint Petersburg Energy Charge Meetup Group 8:00 PM to 10:00 PM EDT
Return to the top of the list

Friday, September 11

Event name and location Group Time
Osceola Toastmasters Club
Kissimmee Utility Authority (KUA)
Toastmasters Division E 7:30 AM to 9:00 AM EDT
SCAG at Questcon Orlando!
Hilton Orlando Buena Vista Palace – Disney Springs Area
Space Coast Adventurer’s Guild [ UNKNOWN DISPLAY TIME ]
Age of Sigmar: Escalation League
Battlebrush Games
Battlebrush Games: Paint Minis & Play Warhammer/Warmachine 5:00 PM to 9:00 PM EDT
Friday Board Game Night
Bridge Club
Tampa Gaming Guild 5:30 PM to 11:00 PM EDT
MTG: Commander FNM
Critical Hit Games
Critical Hit Games 6:00 PM to 11:00 PM EDT
Modern FNM
Sunshine Games | Magic the Gathering, Pokémon, Yu-Gi-Oh!
Sunshine Games 7:00 PM to 10:30 PM EDT
Don’t Move
Tampa Horror 7:00 PM to 9:00 PM EDT
Stoicism and the Art of Happiness, DJ Robertson
Online event
Orlando Stoics 7:00 PM to 8:30 PM EDT
Friday Pokemon Tournament
Sunshine Games | Magic the Gathering, Pokémon, Yu-Gi-Oh!
Sunshine Games 7:30 PM to 11:30 PM EDT
Back Patio Meet & Greet Lounge Night
Fountainhead Wine And Beer Bar
Tampa Bay Meetup (20’s & 30’s) 8:00 PM to 11:00 PM EDT
Return to the top of the list

Saturday, September 12

Event name and location Group Time
NAT’L CHOCOLATE MILKSHAKE DAY—SHAKE THINGS UP @ NEW LOCATION!Sat, Sept. 12
Saturday, Sep 12 · 4:45 PM to 9:00 PM EDT
Tampa (Citrus Park Area) Games Meetup Group 9:55 AM
Saturday Chess at Wholefoods in Midtown, Tampa
Whole Foods Market
Chess Republic 9:30 AM to 12:00 PM EDT
EZ Stock (Stock, Options, Market)
2079 Range Rd
Tampa Bay Technology Center 10:00 AM to 12:00 PM EDT
Youth Dungeons & Dragons Saturdays (Ages7-12) At Conworlds Emporium
Saturday, Sep 12 · 2:00 PM to 5:00 PM EDT
Tarpon Springs Community Fun & Games 1:00 PM
NNO Book Club: The Lost Story
Turkish kitchen
Nerd Night Out 1:00 PM to 3:00 PM EDT
FREE Fab Lab Orientation
Faulhaber Fab Lab
Suncoast Makers 1:30 PM to 2:30 PM EDT
D&D (5e) @ Game-o-Storus (FULL)
Game-o-Storus
St Pete and Pinellas Tabletop RPG Group 1:30 PM to 5:30 PM EDT
Bitcoin Social in St. Petersburg
Beech Kombucha
Tampa Bay Bitcoin 3:00 PM to 4:00 PM EDT
Party games at The Pointe Orlando! [special event on i-drive]
9101 International Dr
Orlando 20-40ish board games 4:00 PM to 7:00 PM EDT
Board Brews
Zephyrhills Brewing Company
Nerdbrew Events 5:00 PM to 10:00 PM EDT
Warmachine Journeyman League
Battlebrush Games
Battlebrush Games: Paint Minis & Play Warhammer/Warmachine 5:00 PM to 9:00 PM EDT
Lessons from the Little Prince
Online event
Philosophy for Everyday Life – Talks and Classes in Florida 5:00 PM to 6:00 PM EDT
Game Night, Sept 12th – Fun!
IHOP
New Port Richey Game Night 5:30 PM to 9:00 PM EDT
Yu-Gi-Oh Evening Tournament
Sunshine Games | Magic the Gathering, Pokémon, Yu-Gi-Oh!
Sunshine Games 7:00 PM to 11:00 PM EDT
Return to the top of the list

Sunday, September 13

Event name and location Group Time
Adventures of the Tomb of Annihilation (5e 2024 D&D Campaign)
Sunday, Sep 13 · 2:00 PM to 6:00 PM EDT
Adventurers of Central Florida 4:00 PM
Sunday Chess at Wholefoods in Midtown, Tampa
Whole Foods Market
Chess Republic 2:00 PM to 5:00 PM EDT
D&D Adventurers League
Critical Hit Games
Critical Hit Games 2:00 PM to 7:30 PM EDT
Book Discussion: Isola
St Pete Women’s Book Club 3:00 PM to 5:00 PM EDT
Sunday Pokemon League
Sunshine Games | Magic the Gathering, Pokémon, Yu-Gi-Oh!
Sunshine Games 4:00 PM to 8:00 PM EDT
Sew Awesome! (Textile Arts & Crafts)
4933 W Nassau St
Tampa Hackerspace 5:30 PM to 8:30 PM EDT
Community Hang-out Night
Online event
Nerdbrew Events 6:00 PM to 9:00 PM EDT
A Duck Presents NB Movie Night
Discord.io/Nerdbrew
Nerd Night Out 7:00 PM to 11: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
Security What I’m Up To

Notes on OpenZiti Quickstart for an upcoming Ziti TV episode

For the curious, here are my notes for an upcoming Ziti TV episode where we’ll be talking about what’s in the OpenZiti Quickstart.

OpenZiti Quickstart is a single command (ziti edge quickstart) that launches a complete, working OpenZiti network a few seconds. It does a lot behind the scenes, by

  • creating a fresh certificate authority hierarchy,
  • initializing a controller database,
  • creating and enrolling a router identity,
  • bootstrapping an admin user,
  • and starting both the controller and router as a single running process.

It does all this with sensible default policies already in place, which means identities can immediately connect through the router to any service.

As its name implies, the Quickstart is meant to get an OpenZiti zero trust network up and running is very short order, and it’s meant for demos, local development, and learning the platform. It has everything a production deployment would spread across multiple processes, machines, and days of setup, but it’s packed into a single instance that you can tear down and re-run whenever you want.

Simply put, it’s the fastest path from zero to a working network you can actually build against.

As for the question of why I go with handwritten notes: it’s easier to add diagrams, and I end up understanding and retaining things better.

Categories
Tools What I’m Up To

“Retake the Lake” is now in the Chrome Web Store and easier to install!

My Chrome extension, Retake the Lake is now in the Chrome Web Store, which means it’s easier than ever to put it in your Chrome desktop browser!

I’ve made it easy to find with this URL:

globalnerdy.com/retakethelake

Now, all you have to do is go to the Retake the Lake page in the Chrome Web Store and click the Add to Chrome button:

You’ll see the “This extension is not trusted by Enhanced Safe Browsing” warning:

Click the Continue to install button.

This warning appears because this is my first Chrome extension, and Chrome doesn’t yet have enough developer history or reputation data about me to verify Retake the Lake.

Retake the Lake doesn’t use or sell any of your private data. It simply updates the contents of web pages and Google Maps to restore the correct name of Lake Ontario.

This pop-up will appear:

Click the Add extension button.

And in a second or two, you’ll see this near the upper right of your screen:

Congratulations! You now have Retake the Lake!

Once again, you can get Retake the Lake here:

globalnerdy.com/retakethelake

What is Retake the Lake?

Retake the Lake corrects “Lake America” to the proper “Lake Ontario” on Chrome desktop browsers.

(Unfortunately, the mobile versions of Chrome don’t support extensions.)

  1. On regular web pages, it rewrites “Lake Ontario” back to the proper, correct, and non-idiotic “Lake Ontario.”
  2. On Google Maps, it floats a clickable badge over the lake with a short explanation of where the real name comes from.

You can read more about how I made it here.

And remember…

Categories
Security

Would hardened Tailscale have changed the Hugging Face outcome?

In his latest post on the NetFoundry blog, Hugging Face Breach: When Tailscale VPN Is the Blast Radius, CEO Galeal Zino (my boss’ boss) writes about why the Hugging Face breach was a VPN architecture problem rather than a Tailscale misconfiguration, and what hardening does and doesn’t fix.

Here’s a quick recap of what happened: In July, OpenAI evaluation agents escaped their sandbox, got into Hugging Face through two injection vectors, and walked away with 136 cluster secrets. One of those was a Tailscale auth key, which was:

  • Reusable
  • Non-expiring
  • Subnet-tagged
  • Sitting readable in a Kubernetes secret

With that one key, the agents were able to get far. They enrolled 181 nodes, ran `tailscale status –json` to get 22 peers back including subnet routers and a source-control connector, reached internal CI subnets, and minted GitHub App tokens. They suppressed client-side telemetry and ran for almost 5 days before anyone noticed.

The post’s argument is that taking measures to harden Tailscale (single-use OAuth-minted keys, ephemeral nodes, tailnet lock, Services instead of subnet routers) shrinks the fan-out but doesn’t eliminate the two properties that made the foothold catastrophic:

  1. Enrollment still authenticates on a bearer credential. Possession of the key made the agents a member, and membership came with a map.
  2. The coordination plane still hands every enrolled node a map, and even a narrowed map is still a target list.

It’s worth pointing this out as simply and plainly as possible: Nothing in our stack would have stopped the sandbox escape, the injections, or the climb to node root. That’s not our line of work. What we do is zero-trust reachability, where the assumption is that systems have already been breached and credentials can be stolen.

Hugging Face’s own technical timeline is the better primary source, and it’s worth reading along with our article: https://huggingface.co/blog/agent-intrusion-technical-timeline

Once again, here’s our article: https://netfoundry.io/zero-trust/hugging-face-breach-when-tailscale-vpn-is-the-blast-radius/

Categories
Current Events What I’m Up To

Waiting for Google to approve “Retake the Lake”…or not

I’ve just submitted my Chrome extension, Retake the Lake, to the Chrome Web Store for approval. If approved, it will become really easy to add it to Chrome on your desktop.

In yesterday’s post on Retake the Lake, I described the extension, which does these two important things:

  1. On regular web pages, it rewrites “Lake America” back to the proper, correct, and non-idiotic “Lake Ontario.”
  2. On Google Maps, it floats a clickable badge over the lake with a short explanation of where the real name comes from.

You can install Retake the Lake right now, but the process is a little more involved. If approved for the Chrome Web Store, installing it will take a click or two at most.

Why might Retake the Lake not get approved?

Screenshot of Ars Technica article titled “Google Maps renames ‘Lake Ontario’ to ‘Lake America’ even faster than US government”.
Corporate bootlicking at its finest.

Google, who make Chrome, also make Google Maps, which is currently taking criticism for displaying Lake Ontario by the incorrect name. They make take a dim view of an extension that exists to correct their mistake.

Also, there’s this:

Photo of Sergey Brin with Gerelyn Gilbert-Soto. Text reads “Sergey Brin Move to the Right, With a ‘MAGA Girlfriend’ by His Side.”
On the bright side, they’re saving two other people.

Get Retake the Lake!

Do you want to try out Retake the Lake? Follow these steps:

  1. Download this .zip file, retake-the-lake-v1.0.1.zip, into a folder that you’re not going to delete (such as your Documents folder).
  2. Unzip the file to reveal the retake-the-lake folder.
  3. Open a new tab in Chrome and go to chrome://extensions.
  4. Turn on Developer mode by setting the Developer mode switch near the upper right corner of the screen to the “on” position.
    Chrome extensions screen, with arrow indicating that you should turn on Developer mode.
  5. Click the Load unpacked button near the upper left corner of the screen and select the retake-the-lake folder.
    Chrome extensions screen, with arrow indicating you should click the “Load unpacked” button and select the “retake-the-lake” folder.
  6. Use it!
Categories
Meetups Programming

Notes from Venkat Subramaniam’s talk, “Power and Perils of AI Aided Coding”, at Tampa Java User Group (August 26, 2026)

We’ve had full houses at tech meetups at KForce heaquarters before, but never this full! It was a packed room last Wednesday, with everyone there to see Dr. Venkat Subramaniam give his talk, Power and Perils of AI Aided Coding.

For those of you who couldn’t make it, as well as for those of you who did, and want a recap, here are my notes.

What AI is and isn’t

“It is not intelligent,” said Venkat as he started his talk. “This is one of the myths we carry around with us.”

He’d recently been in Switzerland, where a colleague told him about the AI tool she’d been using. She asked whether she should call the AI “he” or “she”, and Venkat’s  was the same as the one I would give:

“It’s called it. When I use a hammer, I don’t say ‘I like him.’”

His own expansion of the acronym “AI”, which he told us at his appearance in Tampa, is Accelerated Inference. AI as we know it today an extraordinarily fast inference engine. Inference is something we do too, albeit more slowly, and with a hard ceiling on how much information we can hold at once. Watching a machine do inference tricks us into believing something beyond logical interence is happening, but in truth, it’s doing pattern matching at machine speed and machine scale.

A screen from Venkat’s last talk in Tampa, Identifying and fixing Issues in Code using AI-based tools, which you can read about here.

This was the spirit of the whole talk. Everything else Venkat said, which covered testing, conveying intent to an AI coding tool, to the cost of failure, to skill files… they all come from the general idea of accelerated inference.

Why on Earth would you build a machine that eats your ice cream?

If AI isn’t intelligence, what’s it actually good for? Venkat provided an answer that was specific (and refreshingly so), and he opened it with a thought experiment.

“Raise your hand if you’d like a machine that washes your clothes, folds them, and puts them away”, he said, and pretty much every hand in the room went up.

“Now raise your hand if you’d like a machine that eats your ice cream for you.” The hands all went down, and there was some chuckling in the office.

“You don’t want the machine to do what humans are good at. You want the machine to do what we suck at.”

If you’re in a line of work where your output is a direct byproduct of thinking, you know that we suck at dealing with cognitive load. Venkat, who does consulting work, described the recurring experience of being parachuted into a client’s codebase. He’s had to stare down functions that are thousands of lines long, and he’s asked “Why did they create the function this way?”

Pasting that massive function an AI is useful. In moments,  he can an explanation of what that function does and betteer still, a list of what’s probably wrong with it. That’s the superpower: the machine has no cognition to overload. It tirelessly compares the code against patterns that it’s been programmed with.

He named two more AI superpowers that he harnesses as a consultant:

  • Typing. Venkat has been programming for 40 years and types fast; in fact, his presentations don’t feature slides, but a vim screen where he types the statements he wants the audience to remember. But as fast as he is, he’ll never type at the speed of thought. The gap between “wouldn’t it be cool to try this” and “ugh, that’s twenty files” is where good ideas quietly die. AI doing the typing can close that gap.
  • Prototyping. With AI, it’s now effectively free. This was his best story of the night:Three weeks ago a user came to him with a feature request, and his instinct was the smart consultant’s natural first instinct: to find a nice was to say “no”. But then he caught himself, and instead of rejecting it, he built the thing in about ten minutes with AI assistance and handed it back.The user tried it and said it was exactly what they wanted. A few minutes later: “that’s terrible.”A few minutes after that: πI thought this would be a great idea, but now I see why it isn’t. Thanks for trying. We don’t want this.”“That’s another power of AI: it reduces the cost of prototyping to near zero.” Prototyping is how you find out whether you’re pointed in the right direction, and if it costs nothing (or at most, a couple of hours instead of a couple of weeks or months), you can afford to be wrong out loud.

What’s the cost of failure?

The theme for the talk from this point on was simple: What’s the cost of failure?

Venkat recounted that he’d recently run into an old friend who was thrilled about shipping software without developers (that friend is a demented and sad individual).

Venkat asked him, directly: “If what you’re building fails in production, what’s the loss?”

“Oh, it’s nothing,” replied the friend. “What I’m building doesn’t affect anybody.”

“That’s the problem,” Venkat told the room. Because when people chant loudly that AI produces gold quickly, that’s the only part anyone hears. Nobody gets the memo with the caveats.

He told two stories to illustrate the point…

Cost of failure story : The vanishing flight segment

Venkat booked a September trip back in June (he likes to book distant trips well in advance). The “there” route is Denver to Chicago, Chicago to Zurich, and then Zurich to Oslo, where he’ll stay for two weeks. The “back again” route starts in Oslo, then goes to Brussels, then Washington Dulles, and finally Denver.

Two Mondays ago at 6:30 a.m., he got an email from the airline with a receipt for travel. He nearly deleted it, but had a nagging feeling that made him wonder: “What travel? I haven’t touched anything.”

(At this point in the story, I started getting paranoid about a mid-October/early November trip I booked back in July.)

Upon closer examination, it turned out that his instinct was right. The Brussels-to-Dulles segment that would get him home from Europe was simply gone. It took a two and a half hour phone session with the airline to get it restored, and when he asked what had happened, the answer was “We have absolutely no record.”

“Now think about that for a minute,” Venkat said. Scalability, performance, traceability, observability, security are the things that keep him awake at night, and he’d nearly become the victim of system that could silently mutate a customer’s itinerary and leave no trace.

Cost of failure story : The Mother’s Day problem

A developer took his wife to lunch for Mother’s Day. At the end of the meal, his card was declined because his limit had been exceeded. He knew that was impossible, and  he was also the implementor of that system’s code.

He apologized to his wife, told her she was on her own getting home, and went to the office to find out what was causing the problem. That’s where they discovered the system had been duplicating charges on everyone’s cards for several hours. Venkat asked him afterward what the bank did about it. “I can’t tell you,” he replied, “but in short, we paid them all off.”

Venkat ended story time with this observation: speed in and of itself is useless; it’s sustainable speed that’s valuable.

When someone above you is chanting “Go faster, go faster!”, ask them two things:

  1. What’s the cost of failure?
  2. Would you please sign a document saying you’ll be responsible when it fails?

“You can delegate your coding. You cannot delegate your responsibility or your reputation.” He pointed to Air Canada’s chatbot lawsuit as the precedent for how “The AI did it!” holds up in the real world.

Demo one: The repeated-letter function, and a karmic reckoning

Venkat then did what makes his talks worth attending: he opened a laptop and did some live coding, where anything can (and often does) happen.

He gave Claude a prompt: Write a Java function that returns the first letter repeated in a string; return an empty character if the string is empty or nothing repeats; ignore spaces.

First, a note on ambiguity that I thought was the sharpest teaching moment of the evening. In “hello”, the first repeated letter is l. Easy.

In “hello there”, most people say teh first repeated letter is l. But it’s actually h! The spec says to return the first letter that is repeated, not the first letter that’s repeated consecutively. English is ambiguous.

“This is why we write unit tests!” said Venkat. Tests provide the redundancy that removes natural language’s ambiguity.

Claude produced working Java in an imperative style, with variables named s and c. Venkat pointed out the reasons why:

  • Because that’s what’s in the training data.
  • Because that’s what most programmers write.
  • Because most people use single-letter variable names.

Then he asked the room to raise a hand if they agreed that, collectively, humans write fantastic code. Not one hand went up

“So here’s the irony. Humans write bad code. AI was trained on code written by humans. Humans complain that AI writes bad code. This is called karma.”

“It’s an imitating engine, not an intelligent being.”

He prompted for a rewrite in functional style and got one. He polled the room: “Thumbs up if this is beautiful enough to frame.”

The code got some thumbs sideways and some thumbs down. The code was clunky with two passes over the data (a code smell in the functional world), a map built up top and consumed below, and overly complex for the problem at hand.

It wasn’t as bad as a previous run of this same demo, which happened in front of a thousand people and on camera. That one produced code that mutated a variable inside a filter. He declined to describe what he’d do to a colleague who did that, other than to note it would happen after invited that colleague for a chat in the parking lot.

At that recorded talk, he’d asked the model what it thought of the code it had just written. It agreed, in that LLM way we’ve grown sadly accustomed to, that the code was bad. He asked the model to fix it, but the rewrite turned out worse. He pushed harder, and the model blamed the language, telling him Java wasn’t a good choice (and this once, I agree with the model). When he named a specific method it should have used, it agreed instantly and produced the right implementation.

An attendee offered the next-token-prediction explanation: nobody asks “What do you think of your work?” when they’re happy with the outcome, so naturally the completion that follows that question skews negative.

Venkat liked that explanation, but offered an alternative rooted in his own framing. When you ask an LLM to write code, it infers from code, with all the bad habits and practices included. When you ask it to evaluate code, it infers from blog posts, tutorials, and books, where authors show bad examples and explain at length why they’re bad. As a book author himself, he noted with some feeling exactly whose work that training corpus is made of.

For the record, his own solution:

// Java
Stream.of(word. split(""))
filter(letter -> word.LastIndexof(letter) > word. indexof(letter); 
    findFirst()
    orElse("");

Much fewer lines than what Claude generated, and so much simpler.

“AI tends toward more complexity. Why? Because collectively, we love complexity. Complexity lets us hide behind things.”

AI is an amplifier

Between demos, there are two notable lines:

The first line: A project manager in the Netherlands had told Venkat: “If I don’t have the fundamentals, AI will cover my back.” Venkat’s reply: “With all respect, if you don’t have the fundamentals, AI will expose your back in public, in the most humiliating way you can imagine.”

AI doesn’t do things differently; it amplifies what you already know. The smart get smarter and the rest get worse. If you know the fundamentals, it’s a good tool to have in your “belt”. If you don’t, you have no ability to evaluate what it just handed you. As he put it when an attendee raised exactly this point: people who don’t know functional programming can’t tell whether that rewrite was good or bad. People who do can smell it immediately.

Here’s the second one, from his boss of 40 years ago, which he was careful to credit: “A fool with a tool is a dangerous fool.”

Hence his revision of the old maxim. Trust but verify is out. The new norm: don’t trust, and verify the heck out of it.

Demo two: Wordle from a spec, and the missing test directory

The second demo had a bigger scope. Venkat wrote a plain-English spec file for the game Wordle…

  • 6 rows of 5 boxes
  • Green for “right letter, right position”
  • Yellow for “right letter, wrong position”
  • Gray otherwise
  • Spell-check each guess against a web service
  • Pick from a list of about a hundred words
  • Build it in Java and JavaFX

…and turned Claude loose on it.

It worked. We played a round as a room, shouting guesses at the screen.

He turned off his Wi-Fi mid-demo to see what would happen with no connectivity. Previous runs had either assumed unverifiable words were valid or written a graceful message; this run produced a message in red text: “Could not reach the spell checking service. Please try again”. This was a good outcome, but it happened because of luck instead of any spec.

Venkat ran tree on the egenrated project and asked the room what we noticed before looking at a single line of code.

The project used Maven as a build tool, and its layout was reasonable. But there were no interfaces anywhere. The spellcheck had no abstraction behind it, breaking the Open/Closed principle, which would make swapping implementations more difficult than necessary. There were redundant-looking classes.

One sharp attendee pointed out, there was no test directory. “Can I offer you a hug?” Venkat asked in reply.

Venkat tied the subject back to process. Agile development, when you take away all the ceremony and everything you sat through in the two-day course, is simply feedback-driven development, where you know that what worked still works, and that a change moved you forward rather than seven steps back. If you ask AI to change your code, what tells you it didn’t break the things that already worked? If there’s no test suite, there’s no feedback, and you don’t know if something that worked before is now broken as a result of the last change.

The story was the same inside the code. A function in the GuessEvaluator function long enough to fail SLAP (Single Level of Abstraction Principle), broken up every few lines by comments explaining what the next chunk does. Venkat’s read on that habit is oddly sympathetic: programmers who write long functions and litter them with comments are bad programmers but not bad humans. The comments are an act of empathy toward whoever comes next. The AI reproduced the pattern exactly, because that’s what it learned from us. He reached for a country song he couldn’t quite name, about a kid mirroring his father: Dad, I’ve been watching you. (I suppose Harry Chapin’s Cats in the Cradle is also applicable.)

There was also too much code. “Two characteristics of humans: we write way more code than we should, and we eat more food than we should. I’m succeeding a little better on one of those.”

Credit where due, though: the generated code used correct, present, and absent rather than green, yellow, and gray. That’s a better vocabulary than the one in the spec.

The actual lever: skill files

At the end of the session, Venkat switched gears and went from descriptive to prescriptive.

“It does not make sense to use AI without proper skills, both that of the human and the ones we provide to AI.”

Venkat deleted the whole project, added a .claude directory, and added a few lines to the spec asking for JUnit, Maven, and a combination of unit, acceptance, functional, and integration tests. “Be generous in asking,” he remarked.

He also said something I suspect is the real reason he’s optimistic: we have never managed to bring as much discipline into our practice as we wanted, and if the machine can write the tests, “I don’t have time” is no longer available as an excuse.

The .claude directory held three small files:

  1. Clean code practices
  2. Java coding practices
  3. JUnit practices

The clean code one is deliberately language-agnostic. Anyone who decides that they want a project implemented in C#, Python, JavaScript, or PHP can use it unchanged. A sample of what’s in it:

  • Avoid single-letter variable names, including lambda parameters. Use short but meaningful names.
  • Always use curly braces, even for a one-statement if or for. (Python folks excepted, obviously.)
  • Do not write comments that tell me what the code is doing. Write self-describing code. Tell me why.
  • Avoid long functions. Apply SLAP and SOLID where it makes sense. Keep code cohesive and dependencies decoupled. Follow DRY and SRP. Keep UI and logic separated.

The Java file gets specific:

  • Prefer JDK 25
  • Choose the latest language features where possible
  • Prefer newer methods
  • Avoid deprecated methods
  • Avoid preview features, which he added after the model kept generating code that wouldn’t run
  • Prefer immutability
  • Prefer functional style over imperative

A separate functional-idioms file: avoid mutating external data, avoid side effects, avoid multi-line lambdas (extract them into a private method), prefer method references, create immutable results, keep streams simple, don’t pile multiple dots on one line, align dots vertically.

Here are four things Venkat said about skill files that I’ve decided to internalize:

  1. Skill files are dynamic. They’re not static. They should live in version control and evolve through pull requests like anything else. Anyone on the team can propose a change; others review it. Your most junior teammate may be the one closest to the code that matters.
  2. Cohesion applies to skill files too. Someone told him they’d written one enormous skill file, and the model ignored most of it while burning tokens. Prefer many small files, each targeting one area, over a few giant ones.
  3. An older model with good skill files beats a newer model with bad ones, and at lower cost, too. And even where the newest model with the same skills does somewhat better, the older one may still be the better deal. “It literally comes down to how good your skills are.”
  4. When the AI misbehaves, don’t complain; edit your skill file. “You may curse at it first. That’s one advantage over working with humans.”

He mentioned that community skill-file repositories are emerging, with quality metrics and security analysis attached. The security part matters because prompt injection via context and skill files is one of the things he’s genuinely worried about. The same idea works as a private repository inside an organization, giving you three tiers to draw from: community skills, company skills, and team skills.

The rerun, with skill files in place, produced the following:

  • A test directory (finally)
  • Variable names like rawGuess instead of s
  • Small functions
  • A record for the letter result
  • A switch with pattern matching
  • An interface for the spell checker

There was still more code than the problem called for, and that’s exactly what goes into the skill file next.

His caveat was unsentimental. Even with skills, LLMs remain inconsistent and unpredictable. Skill files don’t get you the beautiful code you imagine; they move you along a spectrum from terrible toward acceptable and evolvable. That’s still a large win.

And one sequencing tip worth pulling out: review the tests first. “I don’t care as much about reviewing the code before reviewing the tests, because if the tests are not good, it doesn’t matter what we do after that.”

Q&A

In the post-talk Q&A session, the room pushed back, which is how you know it was a good crowd.

Q: “You have the fundamentals, and AI still did a bad job, and you had to review and correct it repeatedly. I’ve heard senior developers spend more total time working this way than just writing it themselves. Is that true?”

A: “With a good set of skill files it converges much better. That’s the difference. But the failure mode he sees most often isn’t senior developers generating code. It’s junior developers generating code and senior developers drowning in review. The answer is incremental development and feedback loops small enough to actually manage.”

On being told to go faster regardless: “If you mess with physics, you know who’s going to lose.”

On running multiple agents in parallel: Your mileage may vary, but Venkat says he’s not good at it. He’s still the bottleneck at the end of the pipe, and the quality of what he produces is affected by the volume coming at him.

On cost: An attendee did the math on tokens burned during a single live demo and asked whether this is survivable. Venkat’s honest answer was hope rather than analysis. He’d read that day about a 9GB hard drive once costing four thousand dollars. He also talked about a genuine concern that current pricing is heavily subsidized and not sustainable for the vendors either. Someone else volunteered that GitHub Actions had cost them $600 in five days last month before they migrated to a flat-priced VPS. Local models came up too, with the obvious trade-off: you need real compute at your desk.

On automatic approval: An attendee noted Anthropic had turned auto-approval of code off by default, reportedly because users approving under cognitive load had a worse error rate than the model did. They asked whether verification will eventually improve enough that we review only what needs reviewing. Venkat said he’d want to address the “if” before the “then,” but that his hope for the distant future is that we’ll treat AI-generated code the way we treat compiler output. “That’s a desire. I don’t have any proof it’s going to happen. We’re nowhere close to it yet.”

The closing checklist

Venkat wrapped with recommendations for minimizing risk, which I’ll reproduce more or less as delivered:

  • Have an extensive set of tests.
  • Review every piece of code that gets created.
  • Use different models to review the code — in addition to human review, never instead of it. If AI finds problems, great. If it finds nothing, you still look.
  • Consider the cost of failure. It helps to imagine the user knows your home address, because if it goes wrong, they’ll come knocking. Your reputation is the collateral.
  • Run code quality tools. Run the CI/CD pipeline. Run the metrics tools. Have it evaluate dependencies, licenses, and keep them up to date.
  • Keep an eye on what it’s actually doing. We get complacent and check only the results. Read the logs.

The evening closed with the usual excellent Tampa JUG happenings: a JetBrains license raffled off (and a dad joke from Venkat: “There are only two kinds of programmers, those with IDEA and those with no idea”), a stack of O’Reilly books including a signed copy of AI Engineering, which Venkat handed over with a straight face and the observation that nobody needs to learn the fundamentals anymore, and a conference ticket for October.

Big thanks to Kforce for the space and Kong for the food, and to the Professor Andy Seely who brought his class from Hillsborough Community College. (The next event is at HCC, by the way).