Agents of Change
First post, first project
How it started vs. how it’s going
I’ve dealt with AI's relentless, accelerating, and seemingly existential threat to my career in IoT with grace and composure. At least, that’s what I like to think. In hindsight, it’s clear that my evolving attitude these last few years followed five familiar stages:
Denial: “Oh wow, AI can write a dumb haiku about my cat? Not exactly HAL.”
Anger: “Could there be a bigger waste of time than prompting an AI to tell me things I already know? I’m an expert!”
Bargaining: “Fine, I’ll generate a deep research report using AI when my boss asks for it. Faster than doing it myself.”
Depression: “I should have majored in Computer Science instead of Electrical Engineering. Maybe then I would have known what a perceptron was before it was too late.”
Acceptance: …here we are
The more I use AI—both at work as a product manager at a semiconductor company, and in my off-hours tinkering—the more intrigued I become. Is this hope I’m feeling? Or Stockholm syndrome?
Quick background: I’ve spent twenty years in IoT, nearly all of it at the same company. I started in applications engineering, moved into firmware, and eventually product management, focused on Bluetooth. I liked my job in the pre-AI world the way dinosaurs probably enjoyed sunny weather before the meteorite.
Now I’m writing a series about the projects I’m working on, what I’ve built, and what I’ve learned. I’ve written a number of technical articles, but usually from a place of authority. That won’t be the case here. Like a lot of people reading this, I’m learning as I go. If this helps someone else push through their own stages of career grief—or at least feel less alone in the process—I’ll count that as a win.
Spaghetti/Code
I learn by building. I decided to work on a series of AI-centered projects guided by a few principles:
The projects had to teach me something I didn’t already know about AI
I had to ‘ship it’, whether that meant launching a site or pushing to GitHub
Have fun
When generative AI first went mainstream, I found comfort in how horrific the AI-generated images looked. Back in 2022-2023, Will Smith eating spaghetti looked like a scene from an abandoned Cronenberg film. These grotesque outputs from primitive models were reassuring precisely because they were so obviously artificial.
Now, of course, AI-generated images are much harder to identify. Noses typically appear in the right places and most subjects have the correct number of fingers and arms. Still, we're in an era where these images have certain tells. If you know what to look for, you can spot subtle inconsistencies in lighting, unnatural textures, or peculiar details that just feel wrong. For me, spotting what makes an AI image artificial has become a kind of game. I began wondering if I was better than my friends and family at identifying these AI markers. That's where I got my project idea.
Problem: I didn’t know how to code a website from scratch. I'm an embedded systems guy! I specialize in resource-constrained MCUs, writing machine code, counting cycles, and squeezing data into bits. Javascript is definitely not my native tongue.
I would rather not call it ‘vibe coding’
Before I even started coding the site, I bombarded ChatGPT with basic web development questions that needed expert answers. While I can’t imagine developing any kind of meaningful attachment to AI, it was liberating knowing that I had a judgement-free digital officemate who answered my "Website 101" questions without any eye-rolling.
One of the aspects of a website I understood the least about was how various components of a website were hosted, and how they interact with each other. Using ChatGPT as my patient guide, I settled on Vercel for my frontend running a React app written in TypeScript, Render as my Python-implemented backend exposing endpoints for image retrieval from a Supabase database and image store. For coding, I chose Cursor as my AI assistant.
All these sites were new to me, and without a doubt there are more cost effective platforms to launch sites from, but I went with these because the balance they struck between ease of use and technical visibility helped me learn.
After a few attempts at building with minimal prompts in Cursor that resulted in mangled, half-functional proof of concepts for site components, I learned I needed to be more disciplined. "Garbage in, Garbage Out” is a concept that's alive and well in this AI-prompted coding environment.
I discovered that my product management skills in creating Product Requirements Documents were useful, as AI coding tools respond well to PRDs as structured prompts. After researching "meta prompting" (essentially prompting about how to prompt), I fed my PRD into ChatGPT's canvas. The process felt like a "help me help you" exercise, but I was impressed by the results after a couple of iterations. Learning to communicate effectively with AI taught me several important lessons:
Clear, unambiguous, and detailed descriptions is essential, but:
It’s also important not to hammer out every detail in your head; at least in my experience so far, too much detail can result in a kind of ‘overfitting’ in the generated output
Use an AI-generated PRD template improves structure and drafting efficiency
Don't take it personally when meta prompting tears your own writing apart
That last point was the hardest for me to learn.
When I felt like I had reached a point of diminishing returns with meta prompting, I added the PRD to my project directory. After instructing Cursor to review, it only asked a few questions before creating the project’s codebase step-by-step — literally ‘step by step’, because my PRD prescribed build phases that Cursor followed.
The code generation speed was overwhelming. Instead of watching the code fly by, I focused on Cursor's AI pane that summarized each file and function it created.
One of the first components I built was the title screen:
While most components worked correctly, I struggled with the UI and game's state machine. I spent 90% of my time fine-tuning the core UI feature where players swipe to flip image pairs. This made some intuitive sense, because of the inherently human subjectivity of what I was fine tuning. Then again, maybe I should have spent a little more time on the PRD.
After a few hours of prompting and testing, I had a working React-based frontend with a Python-driven backend pulling dummy data from a database.
One more big problem: the game wouldn’t work without a sizable repo of images, and not just the handful of placeholder images I’d been working with so far.
I scoured the web for free photo repositories but hit a wall when it came to AI-generated images. Where would I find enough AI-generated content to create a game with meaningful variety?
The answer was obvious in retrospect. I'd have to create them myself.
It’s AIs all the way down
My knowledge of image generation matched my website coding expertise: near zero. I turned to ChatGPT with basic questions about finding image models and generating the thousands of images I needed.
Given that my desktop is a modestly equipped Mac mini, I had to take a crash course on server rental that lead me to runpod.io, where I could rent out powerful GPUs by the hour. On one of these pods, which were basically virtual machines, I could run Python scripts that launched ComfyUI, a node-based interface for building and executing image generation workflows.
The first time my script worked, and I opened up a png to find a (nearly) photorealistic middle-aged guy staring back at me. He had soulful eyes, a salt and pepper beard, and skin that looked as plastic as a Funko Pop. Perfect.
Next problem: each prompt generated one image, but I wanted thousands so that the game wouldn’t become immediately boring as images appeared repeatedly.
Living life on the edge without a proper PRD, I prompted Cursor to create a second project just for batch image generation. The script used ChatGPT to generate thousands of prompts that were then fed into the generative image model. Just to see what would happen, I also fed all the resulting image through another model to generate embeddings (multidimensional points in semantic space that ‘describe’ the image in a way that’s searchable based on input prompt similarity….just in case I ever wanted to add that feature to the game). AI generated a script that used AI to prompt and AI to generate images that were then characterized by AI.
I could have spent more time testing sophisticated generative image models beyond SD 1.5, but I deliberately chose not to. I wanted players to have a reasonable chance of scoring well.
After observing my friends and family identify AI-generated images from my repository with at most 90% accuracy, I believe my decision to avoid using leading-edge generative models was justified.
What’s next?
The game is live today at slopornah.com. I could have launched faster, but got sidetracked learning about website security and Google Ad Sense. With those tangents factored in, what should have been a weekend project stretched to three weekends, though it would have taken years to learn and code everything myself.
The deeper I got into this project, the more my fears about AI's impact on my career faded. AI will certainly transform my day-to-day work in profound ways I’m only beginning to grasp. But I work in tech. Did I really expect tradition and security?
I remember older developers in the 90s reminiscing about their "good ol' days" with punch cards and basement mainframes. Their experience was as foreign to me then as coding without AI assistance will seem to future programmers.
As engineers, we are agents of change. We have a responsibility to innovate and ensure our innovations make the world better. Generative AI's transformative potential is both more dangerous and promising than any technological advance in decades. That's why it's crucial for all of us to take responsibility for AI. It’s up to all of us to harness this technology for positive change to create tools and products that make people happier, safer, and more prosperous.
We've evolved from punch cards to machine code to higher-level languages, building more, experimenting further, and occasionally creating technology that genuinely transforms lives. I'm excited about the innovation and efficiency that AI unlocks. Infinitely patient, impressively competent, and occasionally confounding, it's already helping me start my next project.



