Wednesday, June 3, 2026

From Concept to App in 4 Hours

The test of a work of art is, in the end, our affection for it, not our ability to explain why it is good. - Stanley Kubrick
The "No-Code" revolution has been coming for years, and I have been watching the shifting landscape of development. I’m still of the opinion that hand-crafted, artisanal code written by an expert will outperform AI-generated code. A hand-painted sign by an artist is more beautiful and performs better than a print-and-cut vinyl sign. Today, most signs are print-and-cut vinyl because it’s faster, cheaper, and gets the job done well enough. We have hit the point in development where the difference between hand-crafted code and generated-code doesn’t matter for a huge amount of development. Applications are going to be prompt-and-generate developed because it’s faster, cheaper, and gets the job done well enough.
Person Using Agentic Code to Build Workout App
I had an introductory subscription to a workout app I’ve been using the last few months and really enjoying, but my trial pricing was ending and the subscription was going to triple. The app didn’t seem very complex for personal use, so why not just build one? It’s been five years since I last built an iOS app and almost seven years since my last complex progressive web app. I know I could hand-build this app myself in a couple of weeks, but would I? No, I’d just pay the higher price. I set myself a challenge: use AI to build a functional workout app. I picked Gemini CLI simply because it has a free tier and this project was about cost savings.
I spent the first hour in a prompting conversation with Gemini around what I wanted to build and how I wanted it to be structured. I came in with enough knowledge to have opinions about the technology stack, the user interface, and the structure of the routine I wanted to build. I’d brag that my years of writing product definitions, technical specs, etc., made me excel at this process. But did it? It’s possible an amateur spending more time working through a conversational planning model would come to nearly the same outcome.
After an hour, the plan looked good, my markdown spec looked honed, and I let Gemini rip. I watched it set up structure, build packages, write code, etc. Around 70% quota use for the day and I had a working application running on my local machine. I could see a dozen refinements I wanted to make to how the app worked, but it worked. I used my final bit of quota, under Gemini’s suggestion, to push the app live on GitHub Pages (For free! Thanks Microsoft).
Four hours of work. Zero code written. Zero dollars spent. A perfectly reasonable minimum viable product for free. I’ve been using the app every day and pushing through my quota to make refinements, but after a week, I’m getting to the end of the changes I want to make.
So what does that mean for all of our jobs as product managers, engineers, QA testers, etc.? Does it mean fewer jobs for us all? I would like to think it means MORE opportunity: more people needed to define and test applications, more people capable of pushing development forward, more people to orchestrate the revolution.
We are also in the early days where a lot of the actual costs are being subsidized by venture capital. No one is profitable. It’s a little like when Uber was half the price of a taxi. It wasn’t because Uber cost half as much; it was because VCs were paying the other half. Most estimates show that the frontier models are spending 25x what people and companies are paying them.
Just like it’s always been, employees run the gamut from generating value to detracting from it. AI is making our good employees able to generate even more value, but it makes our moderate or bad employees incredibly capable of generating huge volumes of work at great expense that provide neutral to negative value. Your employee costs are no salary + benefits + tokens. A mediocre employee equipped with AI can be very expensive very fast if you don’t recognize the slop.
Let’s see where we are in five years when the dust settles.

Friday, February 27, 2026

Book I Read and Liked in 2025

Translation means doing violence upon the original, it means warping and distorting it for foreign, unintended eyes. - Professor Playfair (Babel by R.F. Kuang)
A few years ago, I was gifted a Kindle. That, plus a Libby account tied to my local library, re-opened a world for me. I do my best to keep up with my local book club, but when I can’t, I look at the Hugo/Nebula winners and work through my queue. I read some great books this past year, and here are a few that stood out.
Babel by R.F. Kuang (Nebula 2022) - By a landslide, this was my favorite book of the year. It’s a magical historical fiction centered on linguistic-based magic. The premise? You engrave words from two different languages into silver, and whatever meaning is "lost in translation" manifests as a magical force. I'm sold. While the magic is fascinating, it’s only one layer of the story. The primary theme is imperial exploitation, how children from poorer parts of the world who are fluent in foreign languages become a resource to mined.
Asunder by Kerstin Hall (Nebula Nominated 2024) - I was slow to get into this one at first. It’s set in a semi-modern world where the old gods were cataclysmically destroyed by new ones just before the story begins. The main character has made a deal with a devil for powers and accidentally binds a highborn man into her shadow to save him from an assassination attempt. Now, she has to get it all sorted out. By the halfway point, I was having a blast. It’s a fun, unique magical adventure.
Legends & Lattes by Travis Baldree (Nebula Nominated 2022, Hugo Nominated 2023) - A feel-good book about a battle-hardened orc warrior who is done with the weary road; she just wants to open a coffee shop and be left alone. Of course, she can't be, because the world assumes a battle-hardened orc must have something more sinister afoot. She doesn't. Just let her sell some coffee and have a bard play at open mic night! It’s a wonderfully silly book with very low stakes.
Nothing to See Here by Kevin Wilson (Book Club) - A fast, simple read from the local book club. It’s a story of friendship between two women who haven’t seen each other since college. A senator’s wife reaches out to her old friend for help because the senator has two kids from a previous marriage who spontaneously combust when they get upset. She really needs a nanny. It’s a quirky story that glosses over some complexity, but a quick, fun read is exactly what I needed.
Twenty Thousand Leagues Under the Sea by Jules Verne - Back in 2023, I went on a bender and read a dozen classic sci-fi public domain books, but somehow I missed this one. How could that be? Regardless, this book is a classic for a reason. If you enjoy the foundations of science fiction, you’re going to like this.
The Hobbit by J.R.R. Tolkien - I read this to my kids as a bedtime story last year. While I’m a Tolkien fan, I’m not a "read once a year" fan, more like "once a decade." The kids loved the humor of the book most of all. Their favorite part was when the company arrives at Beorn’s house; Gandalf tells a story while, every ten minutes, another pair of dwarves walks in until the whole group is there. They also got a kick out of how often Tolkien mentions how rotund Bombur is. Afterward, we watched the 1977 animated film. I am aware of no other movies that tell this story.
Ender’s Game by Orson Scott Card (Nebula 1985, Hugo 1986) - My uncle gave me this book when it first came out, and I loved it. I’ve since read almost every book and novella in the Ender/Shadowverse, all the way through The Last Shadow. It was interesting reading it to my kids, who are now older than I was when I first discovered it. It is a brutally violent book, and I’ll admit I had a parental instinct to "edit" as I read aloud, but I refrained. Having so recently finished The Last Shadow, it was striking how much better written I think Ender’s Game remains compared to the latest works. It was, and is, a masterpiece.
To all the authors, thanks for writing.

Sunday, March 30, 2025

Tools Exist to Be Used—AI is No Different

When you get good at fixing things, you worry less about breaking them. - Alex Lindsay
It is the 1980s. I am in grade school. Math consists of memorizing multiplication tables and performing long division. I wonder why I am asked to do this. I have a calculator. My watch is a calculator. It stores up to twenty phone numbers. The teacher informs me this is important because I cannot always depend on having a calculator with me. Yet, even in the 1980s, I already do. It is the 2020s. Everyone carries a far more advanced calculator in their pocket, embedded within a phone. The teacher was wrong.
It is the 1990s. I am in high school. I have a TI-81 graphing calculator, though to me, it is not for graphing. It is for programming. In Pre-Calculus, I write a program that, given three points, determines the equation of the circle that passes through them. I show my teacher. She tells me using it on tests and homework is cheating. I write many more programs. I show her none of them.
The next year, in Physics, I write a program that solves for speed, distance, or time, given two of the three variables. It shows the work. I show my teacher. He is impressed. He tells me using it on tests and homework is cheating. I use it on both. It is not cheating.
It is the day of the AP Calculus exam. I am not allowed to bring my TI-81. I am allowed a basic calculator. I also bring a slide rule. The proctor laughs. I do not know how to use a slide rule. The next year, students are allowed to use graphing calculators; I would have done better the next year.
It is the early 2000s. I am in college. I take courses on cryptography and cryptanalysis. I write programs for the Sieve of Eratosthenes and the Pohlig-Hellman Algorithm on my calculator. I show my professor. Something has changed. He is delighted. He asks for copies. He challenges me to implement the Lenstra-Lenstra-Lovász algorithm.
It is my first job interview. I am given a complex optimization problem and asked to solve it using C++ on a whiteboard in under thirty minutes. I succeed. I am offered the job. I accept. At no point in my job is writing functional C++ on a whiteboard ever required.
Okay, let me step back. For anyone who read those paragraphs and delighted that I was making a reference to the Watchman comic book and how Dr. Manhattan talks while he is experience non-linear time on Mars, you get bonus points. I mean, I wrote it linearly, so not an exact homage, but you if you got, kudos. Here is the real deal, the fact that I was able to use my TI-81 programmable calculator and write programs to solve problems more efficiently and double check my work was not cheating. A professor who considered it cheating was a ludite.
When I interview candidates today (and in the 2010s), I give them a coding problem to complete, send back to me, and discuss in the interview. Back then, the instructions included:
  • “If you are confused about the problem, please ask me for clarification. In this job, you will be allowed to talk to your coworkers.”
  • “Feel free to use Google. In your job, you will have access to the internet to be successful.”
But in recent years, I’ve had to add something new. Can you guess?
  • “Feel free to use an AI assistant to help you write the code. I will still ask you questions, so make sure you understand what it’s doing. In your job, you can use AI to be more productive.”
I’ve spent my career on the bleeding edge of technology, and if there’s one thing that’s always set me apart, it’s using every tool available to be more efficient. We don’t expect builders to construct a house without a power drill. I don’t expect software engineers to write production code on a whiteboard.
Every new technology changes the game:
  • Electric cars replaced most horse caretakers—but not all.
  • Vinyl printers replaced hand-painted signs—but not every sign.
  • 3D printing replaced delicate machining—except where precision still matters.
AI is no different.
In my field, Python is everywhere. And yes, Copilot could generate 80% of the code I see just fine. But then there’s the artisanal software engineer—the one writing high-performance C at the core of the system that AI won’t master anytime soon. Could AI functionally write that code? Yes. Would it be as efficient? Not currently.
Me? I’m a systems integrator. I write glue code in whatever language is required. And with AI, I can now do it 10x faster in languages I’ve barely touched before. This isn’t cheating. This is modern software development.
p.s. Please don’t ask me to write syntactically correct code on a whiteboard unless I will do that in my job.
p.p.s. I can defend my work.

Thursday, April 4, 2024

Should You Offer a Dry Promotion?

Discrimination is no longer about harming people who are different, it is about withholding help. - Mahzarin Banagi
How would you like more work and responsibility for the same pay? The basic concept behind this is called the "dry promotion" and most employees have gone through the experience of this. Unofficially, this naturally happens in every job, because the reward for a task well done is another more difficult task. If an employee is talented at their job and has a good work ethic, responsibilities will grow over time because they will volunteer for them and the company will trust them enough to give them more.
As a manager, I would avoid giving a dry promotion at all costs. The deal you are making with an employee is that in lieu of compensating them what they are worth, you are going to titularly designate they ARE worth a higher value and make them more marketable to find a different organization that is willing to compensate them at that rate. You should expect that within three to six months, they will be actively looking at other opportunities. Don't be upset when they tell they are moving on to another opportunity, because the deal you made with a dry promotion was to encourage them to do exactly that and it is far too late to offer to salary match because you've already established you're willing to underpay them if you can get away with it.
It may make strategic sense in a thin line of circumstances to offer a dry promotion if you are confident you will be able to correct compensation relatively quickly. You have a salary freeze, something I saw a lot during the pandemic, and you can work with your employee to do the dry promotion with the understanding when the freeze lifts, you will make their compensation right. You may need to wait until a round of funding or a rise in revenue to adjust compensation and that could make sense. In all of these scenarios you should acknowledge that you know you need to raise this person's salary and do it as soon as the blocking conditions are removed.
Should you take a dry promotion? If your caree goal is to increase responsibilities and compensation and you're willing to switch companies to do it, than absolutely. In the white collar and technical industry, people who switch jobs every two years see promotions happen faster than people who stay at the same company. So if that's your goal, then take the dry promotion at the company you're at, because it's no skin off that company's back, and then correct it by getting hired into your next company for more compensation. Rinse and repeat.
The other place, which makes me sad, is gender specific. Men are more likely to get promoted on their potential and women are more like to get promoted on their experience. In terms of dry promotions, that means, the benefit women more than men. It allows women to show they can do the work of the next job title and compensation level.
So bosses? Be very, very careful with the dry promotion. Employees? Want to grow your career and willing to switch companies? Go for it.

Tuesday, March 12, 2024

If You Build It, You Need to Send it Out

I suggest you gentlemen invent a way to put a square peg in a round hole. Rapidly. - Gene Kranz (Apollo 13)
I have been a systems integrator for a quarter of a century. I spend my time staring at one product's square peg and another product's round hole and trying to decide what to do. There is the amazing scene in the movie Apollo 13 where the literally need to put a square CO2 scrubber into a round receptacle. I love the engineer, "we've got a find a way to make this, fit into the hole for this, using nothing but that." That, right there, that has been my career.
This week, sort of out of the blue, I realized that over that my twenty-five year career there has been a philosophy change in how systems integration should work. Protocol technology has marched forward from Remote Method Invocation (RMI) to SOAP to REST with JSON, but there has been a large philosophical difference. In the beginning of days of systems integration, the philosophy was "if I build it, they will come." Everyone believed that inter-operability meant that you needed a robust way for others to access you data. This might be an API to access your data or it might even be having reports available via an SFTP server. In the 2000s, your responsibility as a product company was to make your data available. The company that wanted your data? It was their responsibility to get it.
This was a lucrative time as a systems integrator. I can write a proposal to connect a square peg to a round hole, and write a batch job to make it happen. Maybe it was ETL. Maybe it was Java/SOAP. I've got your back, and I will move data from this system to that system.
Now, in the mid 21st century, having a robust polling API is legacy. Putting reports onto an SFTP server or S3 bucket for others to pickup, that's a dying philosophy. It's table stakes and it doesn't demonstrate a modern company. PointCast (deep cut) had it right in the mid-nineties. Modern system integration philosophy is about push. If your product generates the data, it's your products responsibility to push that data to other systems in the way they can receive it. This could be via a webhook through RESTful JSON or it may even being pushing a file over SFTP. But ultimately, he who generates the data MUST send it outward. The concept of "I have an API others can call into to get data" marks you as a legacy company with a legacy philosophy. The world has moved on.
This doesn't solve the square peg / round hole problem. If your software pushes out a webhook, what format is it? It's square. Almost certainly the company receiving it doesn't have a square hold to accept it. So now what? An industry has formed around this as a "customer data platform" whose business is to transform square JSON pegs into round JSON holes. Good for them.
The real concept different in the past two decades is that your product has to own pushing your data into the ecosystem. Tally-ho.

Sunday, December 17, 2023

Artisanal Code by Software Artists

The problem with schools are that they are run by people who WERE good at things. - Alex Lindsay
I'm in AI now. Aren't we all? If you're not, you should start using LLMs quickly, because someone who knows AI is going to be hired to the job you are slogging at. As part of my self-education processed in AI, I worked to developed a Python engine that could play cribbage. I wanted to put the engine into a re-enforced learning system.
DALL·E - robot painting a sign in the style of Pixar.png
I tried the traditional way of writing Python, using Google and StackOverflow to search for the answers to my coding questions. Then the tipping point came for me when I hit a wall. I could not find examples in Google or StackOverflow of using OpenAI Gymnasium to do my simple problem. There were plenty of code examples for Gymnasium of landing spacecraft and controlling Atari games. There were no examples of my fairly simple problem. What if, what if, instead of using traditional tools to learn how to program AI, I used AI to learn how to program AI? What if I used ChatGPT and Github Co-Pilot? HOLY COW!
These tools wrote code. These tools wrote code that did what I wanted. These tools wrote code that solved the problem. Did the tools write good code? I honestly don't know. Did they write code that a seasons Python developer would approve of? I honestly don't know. What I do know is that they wrote code that solved the problem I had and I thought, "coder" as a job has a limited shelf-life.
In the late 90's I worked at a sign shop and about half the signs we made were hand-painted and the other half came off the vinyl printer. I wanted to learn to use the computer, not how to hand-paint signs. I watched a documentary this year called "Sign Painters" which is all about the art of hand-painted signs. The documentary is good, and in the documentary there are a lot of sign painters who are in the fifties and older talking about the "lost" art of sign painting. These days, the vast majority of signs are "printed" onto vinyl in a combination of ink and automatic cutting. The sign-making job is about peeling and sticking the vinyl onto the display material. Is a hand-painted sign better than a printed sign? If the sign artist is good, then 100% of the time the hand-painted sign is better. If the sign-artist is average, than maybe not. This pointless mediocre skillset is where the "coding" aspect of software development is going.
Will a highly experienced artisanal software developer, who crafts code typing letter-by-letter on the keyboard produce a better results the "printing" out code from LLM? Yeah, probably. Are the majority of people working today as "software developers" that person? No, absolutely not.
In the next decade the non-union job of laying down code each day is going to be replaced by a machine and I predict the title of "Software Artist" will replace the title "Software Developer" for the artisanal work that they do. Heck, I'm going to upload my employment profile right now...

Saturday, November 18, 2023

AI: The Mediocre Solution

"Looks for what's there. Not what you want to be there. You will see the truth soon enough." - Sherlock Holmes (Enola Holmes)
It’s decades ago, and young me is in a theology class where the teacher explained essay writing by saying, “your opening paragraph should contain your thesis statement. I have found a good way to do this is to say, ‘the thesis of this essay is…’” My heart sank. I wrote excellent essays in school. I honed my craft by reading exceptional essays, by reading about exceptional essays, and by asking exceptional people to review my essays. Including a sentence in your opening paragraph stating the thesis is not how an exceptional essay is written. If you do that, you have done something immensely gross and wrong. The thesis of this essay is to explain how AI writes truly unexceptional essays.
Robot Writing a Resume at a computer in the style of Disney as pixel art
I was recently searching for work, finding openings, applying, and I used the experience as an opportunity to figure out how AI could help me along in this process. The first step to getting a job is the resume. I tried two AI approaches. First, I fed my resume into OpenAI and asked, “Make my resume more compelling.” Second, I fed my resume into a few of the dedicated resume AI tools. The result of both of these approached was the AI attempting to make my resume 10x more generic. AIs removed my voice and replaced it with generic resume BS. Of all the changes that it made, I incorporated about 10% of it back into the resume I was providing. Yet, here’s the thing. I’ve hired a lot of people. I have read A LOT of resumes. I have read A LOT of truly BAD resumes. If your resume presentation is bad, AI is going to make your resume mediocre. Maybe that’s what you need. Give it a shot and if you think, “wow, way better” than it probably is.
Next came the dreaded cover letters. Look, when I hire people, I don’t ask for a cover letter. Let your resume stand on its own and let your objective be your cover letter. If you say, “I am seeking a job where…” your objective is mediocre; punch it up. Or don’t, I’ve hired people with mediocre resumes. I’m not hiring people to write resumes, I accept that might not be their best skill set. I get 100+ resumes and I understand that I make horribly arbitrary and somewhat random decisions about which ten people I am going to phone screen. I miss good people. I may not hire the best person for the job. I’m sorry if you were one of those truly great people I failed to screen and hire, truly. I don’t put a lot of value in a cover letter, because I’m not hiring people to write cover letters, but a lot of job applications require them. What to do? Prompt ChatGPT, “create a cover letter for the BLAH position at the BLOOP company” and it will pump out a one page cover letter.
These cover letters are incredibly mediocre. Incredibly. “I am writing to express my enthusiastic interest in the [Role] at [Company], as advertised on [Where You Found the Job Posting].” I realize that 80% of cover letters start like this but please never start a cover letter like that. This is garbage text. I especially appreciated when the AI would “hallucinate” text, “with my distinguished history in medical regulatory policy…” I have no history in medicine in my resume, let alone a distinguished one, yet ChatGPT really wanted to let employers know that I had distinguished qualifications for jobs I had no business applying for.
For every job that required a cover letter, I had ChatGPT generate one, and then I would aggressively edit the result to include my personal style and to ensure it included basis in reality. This process was less stressful and less time consuming than writing all of them myself, so, win?
As I have learned is a good way to end an essay, I will now summarize a conclusion to my thesis that AI writes truly unexceptional essays. The resume updates from AI bleached my personality out of my resume into absolute generic boredom. The cover letters produced by AI were offensively generic and often hallucinated skills or history I didn’t have. YET, all in all, I think using AI cover letters made my life better allowing me to let go of artisinally crafting each letter and instead letting the starting template be crafted for me. I got very good at editing the cover letter and “punching it up” to be more inline with my brilliant and insightful writing. So give it go, why not?