stuff tagged with "artificial intelligence"
AI is the asbestos we are shoveling into the walls of our society and our descendants will be digging it out for generations.
i ran Claude in a loop for three months, and it created a genz programming language called cursed
🔗 a linked post to
ghuntley.com »
—
originally shared here on
The programming language is called "cursed". It's cursed in its lexical structure, it's cursed in how it was built, it's cursed that this is possible, it's cursed in how cheap this was, and it's cursed through how many times I've sworn at Claude.
Absolutely dying at this.
Fix the News issue 309
🔗 a linked post to
fixthenews.com »
—
originally shared here on
I’ve cut social media almost entirely out of my life (10/10 recommend), but I still drop into LinkedIn every so often. And honestly? I get exhausted fast by all the heavy, depressing posts.
Yes, there’s a lot of real suffering and injustice in the world. If you’re in the thick of it right now, I hope you’re able to keep hanging in there.
But if you’d like a little break from the bleak hellscape that is 21st-century journalism, check out the latest issue of Fix the News. Or, if you just want the highlights, here are a few that stood out to me:
Billions of people have gained clean water, sanitation, and hygiene in the last nine years. (Billions with a B.)
In the 12 months prior to June, Africa imported over 15GW of solar panels. Sierra Leone alone imported enough to cover 65% of its entire generating capacity.
Google estimates the median LLM prompt uses 0.24 Wh (about nine seconds of TV), emitting 0.03 g of CO₂ and five drops of water. (How many of you leave the TV on while doing chores?)
Wildfires are terrifying, but between 2002 and 2021, global burned area actually fell 26%.
A gentle reminder: news and social media are designed to keep you engaged by stoking fear, outrage, and anxiety. That cycle is hard to break, and a lot of my friends worry that looking away even for a moment means we will collectively slide into totalitarianism and ruin.
That’s a lot of weight to carry alone. Yes, we need to stay vigilant and hold leaders accountable, but we can’t live paralyzed by fear. There are countless good people stepping up, trying to make the world better (including many of you). Try to hold onto that truth alongside the bleak!
A Treatise on AI Chatbots Undermining the Enlightenment
🔗 a linked post to
maggieappleton.com »
—
originally shared here on
I think we’ve barely scratched the surface of AI as intellectual partner and tool for thought . Neither the prompts, nor the model, nor the current interfaces – generic or tailored – enable it well. This is rapidly becoming my central research obsession, particularly the interface design piece. It’s a problem I need to work on in some form.
When I read Candide in my freshman humanities course, Voltaire might have been challenging me to question naïve optimism, but he wasn’t able to respond to me in real time, prodding me to go deeper into why it’s problematic, rethink my assumptions, or spawn dozens of research agents to read, synthesise, and contextualise everything written on Panglossian philosophy and Enlightenment ethics.
In fact, at eighteen, I didn’t get Candide at all. It wasn’t contextualised well by my professor or the curriculum, and the whole thing went right over my head. I lacked a tiny thinking partner in my pocket who could help me appreciate the text; a patient character to discuss, debate, and develop my own opinions with.
I can’t agree more. I would love to help as well in this area of research. It sounds extremely rewarding.
Christina Wodtke on AI exciting the old guard
🔗 a linked post to
linkedin.com »
—
originally shared here on
The old timers who built the early web are coding with AI like it's 1995.
Think about it: They gave blockchain the sniff test and walked away. Ignored crypto (and yeah, we're not rich now). NFTs got a collective eye roll.
But AI? Different story. The same folks who hand-coded HTML while listening to dial-up modems sing are now vibe-coding with the kids. Building things. Breaking things. Giddy about it.
We Gen X'ers have seen enough gold rushes to know the real thing. This one's got all the usual crap—bad actors, inflated claims, VCs throwing money at anything with "AI" in the pitch deck. Gross behavior all around. Normal for a paradigm shift, but still gross.
The people who helped wire up the internet recognize what's happening. When the folks who've been through every tech cycle since gopher start acting like excited newbies again, that tells you something.
Really feels weird to link to a LinkedIn post, but if it’s good enough for Simon, it’s good enough for me!
It’s not just Gen Xers who feel it. I don’t think I’ve been as excited about any new technology in years.
Playing with LLMs locally is mind-blowingly awesome. There’s not much need to use ChatGPT when I can host my own models on my own machine without fearing what’ll happen to my private info.
Does AI Make Us Lazy?
🔗 a linked post to
calnewport.com »
—
originally shared here on
Put simply, writing with AI reduces the maximum strain required from your brain. For many commentators responding to this article, this reality is self-evidently good.“The spreadsheet didn’t kill math; it built billion-dollar industries. Why should we want to keep our brains using the same resources for the same task?”
My response to this reality is split. On the one hand, I think there are contexts in which reducing the strain of writing is a clear benefit. Professional communication in email and reports comes to mind. The writing here is subservient to the larger goal of communicating useful information, so if there’s an easier way to accomplish this goal, then why not use it?
But in the context of academia, cognitive offloading no longer seems so benign. In a learning environment, the feeling of strain is often a by-product of getting smarter. To minimize this strain is like using an electric scooter to make the marches easier in military boot camp; it will accomplish this goal in the short term, but it defeats the long-term conditioning purposes of the marches.
I wrote many a journal entry in college complaining about this exact point, except we were still arguing about graphing calculator and laptop use.
Now that I’m older, I understand the split that Cal talks about here.
When I’m writing software to accomplish a task for work, then it’s more important for me to spend my brain energy on building the context of the problem in my head.
When I’m writing an essay and trying to prove that I understand a concept, then it’s more important for me to get the words out of my head and onto paper. Then, I can use tools to help me clean it up later.
Maybe this points to a larger problem I’ve had with our education system. Imagine a spectrum of the intent of college. The left end of the spectrum represents “learning how to critically think about ideas”. The right end represents “learning skills that will help you survive in the real world”.
When someone makes fun of a film studies major, it’s because their evaluation of the spectrum is closer to the right end.
When someone makes fun of students using ChatGPT for writing their essays for them, it’s because their evaluation is closer to the left.
As AI continues to commoditize once niche development skills, we’ve entered a new era. Technical brilliance alone isn’t the differentiator it used to be. Developers with emotional intelligence, communication skills and the ability to collaborate are the ones who now rise to the top.
The luxury of saying no.
The real threat to creativity isn’t a language model. It’s a workplace that rewards speed over depth, scale over care, automation over meaning. If we’re going to talk about what robs people of agency, let’s start there. Let’s talk about the economic structures that pressure people into using tools badly, or in ways that betray their values. Let’s talk about the lack of time, support, mentorship, and trust. Not the fact that someone ran a prompt through a chatbot to get unstuck. Where is the empathy? Where is your support for people who are being tossed into the pit of AI and instructed to find a way to make it work?
So sure, critique the tools. Call out the harm. But don’t confuse rejection with virtue. And don’t assume that the rest of us are blind just because we’re using the tools you’ve decided are beneath you.
(via Jeffrey)
Neal Stephenson’s Remarks on AI from NZ
🔗 a linked post to
nealstephenson.substack.com »
—
originally shared here on
Today, quite suddenly, billions of people have access to AI systems that provide augmentations, and inflict amputations, far more substantial than anything McLuhan could have imagined. This is the main thing I worry about currently as far as AI is concerned. I follow conversations among professional educators who all report the same phenomenon, which is that their students use ChatGPT for everything, and in consequence learn nothing. We may end up with at least one generation of people who are like the Eloi in H.G. Wells’s The Time Machine, in that they are mental weaklings utterly dependent on technologies that they don’t understand and that they could never rebuild from scratch were they to break down.
Before I give a counterpoint, I do want to note the irony that even now people do not understand how this stuff works. It’s math, all the way down. It shouldn’t work, frankly… but it does!
I think that is so beautiful. We don’t really understand much about our universe, like dark matter, gravity, all number of naturally-occurring phenomena.
But just because we don’t understand it doesn’t mean we can’t harness it to do amazing things.
As far as the students using ChatGPT… I mean, yeah, it’s painfully obvious to most teachers I chat with when their kids use the tech to get by.
I would posit, though, that this is the history of education in general. We teach students truths about the world, and they go out and show us how those truths are not entirely accurate anymore.
Sure, some kids will certainly use ChatGPT to compose an entire essay, which circumvents the entire point of writing an essay in the first place: practicing critical thinking skills. That’s bad, and an obvious poor use of the tool.
But think of the kids who are using AI to punch up their thoughts, challenge their assumptions with unconsidered angles, and communicate their ideas with improved clarity. They’re using the tool as intended.
That makes me so excited about the future. That’s what I hope teachers lean into with artificial intelligence.
(via Simon)
"AI-first" is the new Return To Office
🔗 a linked post to
anildash.com »
—
originally shared here on
How did we get here? What can we do? Maybe it starts by trying to just... be normal about technology.
There's an orthodoxy in tech tycoon circles that's increasingly referred to, ironically, as "tech optimism". I say "ironically", because there's nothing optimistic about it. The culture is one of deep insecurity, reacting defensively, or even lashing out aggressively, when faced with any critical conversation about new technology. That tendency is paired with a desperate and facile cheerleading of startups, ignoring the often equally interesting technologies stories that come from academia, or from mature industries, or from noncommercial and open source communities that don't get tons of media coverage, but quietly push forward innovating without the fame and fortune. By contrast, those of us who actually are optimistic about technology (usually because we either create it, or are in communities with those who do) are just happily moving forward, not worrying when people point out the bugs that we all ought to be fixing together.
We don't actually have to follow along with the narratives that tech tycoons make up for each other. We choose the tools that we use, based on the utility that they have for us. It's strange to have to say it, but... there are people picking up and adopting AI tools on their own, because they find them useful.
Is there a “law” that says the amount someone actually knows about a given technology is inversely proportional to the amount that they hype it?
ChatGPT says it’s called “Clarke’s Law of Hype” but I don’t see that anywhere in a Google response.
Looking things up on the internet in 2025 sucks.
AI assisted search-based research actually works now
🔗 a linked post to
simonwillison.net »
—
originally shared here on
I’m writing about this today because it’s been one of my “can LLMs do this reliably yet?” questions for over two years now. I think they’ve just crossed the line into being useful as research assistants, without feeling the need to check everything they say with a fine-tooth comb.
I still don’t trust them not to make mistakes, but I think I might trust them enough that I’ll skip my own fact-checking for lower-stakes tasks.
This also means that a bunch of the potential dark futures we’ve been predicting for the last couple of years are a whole lot more likely to become true. Why visit websites if you can get your answers directly from the chatbot instead?
The lawsuits over this started flying back when the LLMs were still mostly rubbish. The stakes are a lot higher now that they’re actually good at it!
I can feel my usage of Google search taking a nosedive already. I expect a bumpy ride as a new economic model for the Web lurches into view.
I keep thinking of the quote that “information wants to be free”.
As the capabilities of open-source LLMs continue to increase, I keep finding myself wanting a locally-running model at arms length any time I’m near a computer.
How many more cool things can I accomplish with computers if I can always have a “good enough” answer at my disposal for virtually any question for free?
AI ambivalence
🔗 a linked post to
nolanlawson.com »
—
originally shared here on
Maybe, like a lot of other middle-aged professionals suddenly finding their careers upended at the peak of their creative power, I will have to adapt or face replacement. Or maybe my best bet is to continue to zig while others are zagging, and to try to keep my coding skills sharp while everyone else is “vibe coding” a monstrosity that I will have to debug when it crashes in production someday.
I enjoyed this piece because I think it represents the feelings I hear from artists. You might not consider computer programming an art form, but if art is humans expressing themselves, then writing code absolutely qualifies.
And like a lot of other artists, many of us "computer people” make money by doing our art for other people. It turns out that for the last fourty years, we could do our art for other people and we'd get paid quite well to do so.
But now that anyone can basically vibe code solutions to basic problems1, a increasing set of non-nerds is able to use computers themselves. That naturally will drive down our value.
I use "value" here in a cold, hard, capitalistic sense. Maybe it's our turn, as artists who care about making efficient, beautiful, artistic computer programs, to worry about how we'll derive value in a world where anyone can vibe code their ideas to life.
-
What's wild is just how fast the bar for what counts as "basic" is raising. ↩
Why Anthropic’s Claude still hasn’t beaten Pokémon
🔗 a linked post to
arstechnica.com »
—
originally shared here on
In some sense, it’s impressive that Claude can play Pokémon with any facility at all. When developing AI systems that find dominant strategies in games like Go and Dota 2, engineers generally start their algorithms off with deep knowledge of a game’s rules and/or basic strategies, as well as a reward function to guide them toward better performance. For Claude Plays Pokémon, though, project developer and Anthropic employee David Hershey says he started with an unmodified, generalized Claude model that wasn’t specifically trained or tuned to play Pokémon games in any way.
“This is purely the various other things that [Claude] understands about the world being used to point at video games,” Hershey told Ars. “So it has a sense of a Pokémon. If you go to claude.ai and ask about Pokémon, it knows what Pokémon is based on what it's read… If you ask, it'll tell you there's eight gym badges, it'll tell you the first one is Brock… it knows the broad structure.”
This is the camp I’m in with AI. Is it super human? Obviously not in this specific instance, but still, undeniably impressive that a large language model is able to get as far as it can.
January 2025 Observations
Yeah, I know... February's almost over. But I finally sat down and wrote this out this weekend, so good enough, eh?
Family
My boy is crushing it at swimming lessons.
The other night during dinner, I unconsciously started drumming on the table. I was startled when my son started singing Imagine Dragon's "Believer," and then my daughter joined in on the drums and vocals as well. It was supremely dope.
Following an unbelievable burst of motivation, I cleaned out the crawl space in my basement. It honestly didn't take that long (maybe a total of 10 hours), and it is so much more usable now! I'm trying to figure out a way that I can wire up some outlets in there so I can turn it into a little cave for jamming and 3D printing lol
I get so mad when I'm in flow and my kids come up and interrupt me. I think it's because achieving flow is painfully Sisyphean; it takes so much effort these days to get into that state, and when I'm suddenly yanked from it, the ball rolls to the bottom of the hill and I have to start all over again. It's probably how my kids feel when I make them stop playing Minecraft.
I was trying to explain the concept of money to my son, and after I stopped talking, he looks at me with the most confused look and says, "Dad, you keep expanding my thinking bubble, and I don't like that." I hear ya, bud.
Recommendations
I thoroughly enjoyed watching It's In The Game, a documentary about the history of the Madden NFL video game franchise. In one scene, they bring a full body capture setup to the NFL combine and scan every player. As they go in and out of the rig, you can tell how honored these guys are to be included in the game. It reminds me of seeing people use my apps out in the real world. Saying "I see you" is one of the dopest honors we can bestow on our fellow human.
I highly recommend Puttshack. I was geeking out over the use of technology, it's brilliant.
The bourbon wings at the Minnesota Burger Company in Apple Valley instantly landed in the top 3 wings I've ever had.1
Work
SEO is the digital equivalent of snake oil. I've held this position for more than two decades, and I'm waiting for someone to convince me otherwise.
You can hit a nail into a board with a hammer, or you can use a nail gun to go faster. But you still need to combine two boards. No tool is going to take that assembly step away, that's simply part of the deal. Similarly, AI isn't going to take my job away; AI is simply a(n extremely powerful) nail gun. It takes the sting out of the parts of my job I find arduous and makes them go faster so I can get back to doing what I enjoy doing: building cool things.
The new car
30% of me still feels like a tool for buying a brand new 2024 Toyota Prius. The other 70% is loving it.
The car is one of my only outlets for anger, and that's not something I'm proud of. It's weird that it took buying a new car to evaluate that, but I guess it's better than continuing to take my anger out while wielding a 10,000 pound death machine.
Self-improvement
For the first time in my life, I looked up at the stars and noticed that one looked a little different. Turned out to be Mars! For the last several nights, when we get a clear sky, I look up and see if I can find it. That might be the thing I'm the most proud of from this past month.
A couple years ago, I decided to get back into broomball. I ended up joining a rec league and played every Friday this month. I'm certainly not as fast as I was 20 years ago, but man, the feeling of running on the ice is as exhilarating as ever.2
I've been walking up to the library near my house to get work done during the week. During one of those walks, it started snowing, and the flakes were huge and fluffy. I stopped and caught a few on my tongue, and it reminded me of when I used to do that during football games.
Lately, when I go on walks around my block, I've felt like I'm walking with some loved ones who have passed away. I can't explain it, and it could totally be a hallucination... but at the same time, who am I to keep denying my feelings? If there's one thing I've learned over the past couple of years, it's that I need to lean more into my feelings and trust them.
I wrote this down during a meeting at work: "You listen to the very first thing someone says and then your mind runs wild." Is this normal?
"I looked in the mirror while showering today and I saw a 37 year old. And I was really proud of him. The dude is happy. He’s out still playing broomball. He plays with computers all day. He listens to a ton of good music, watches interesting/compelling movies, has a sense of purpose and direction, knows what he wants his house to feel like... And I saw the whites in my beard, and I thought it looked pretty damn good. I’m here! I’m aging, and I’m successful, and I’m comfortable, and I will try my hardest to feel this content every day for the rest of my life."
I saw a Reese's Peanut Butter Cup commercial that said, "We live in a time that you can get into a vehicle and go to a place where you give someone a piece of plastic and they will give you a Reese's Peanut Butter Cup." I think about that all the time.
This line from Anh's blog feels ironic to post here given how long these posts become, but for future reference: "not every thought needs to be immortalized on my website."
My only resolution for this year: find more ways to open my heart.
100 sit-ups a day for 100 days Project
At day 50, I don't feel too terribly different. It still sucks to knock out the first one, and it still rules when I hit the hundredth one.
The only noticeable improvement so far is that I no longer make old man groans when I get up from a prone position.
Music Clean Up Project
It's annoyingly hard to let go of things for some reason. Even if it's an MP3 of an artist you never actually liked. Am I mourning the loss of the part of me that really wanted to be into Tiesto?
The more I prune my digital garden, the more I find myself wanting to spend time in it. The more I hit shuffle on all 28,000 tracks in my library, the less frequently I run into turds.
YouTube Videos I liked that I didn't already link to
Bobby Fingers - Joe Rogan and The Black Keys Diorama
Movies I watched
Saved! (2004)
- Glad I watched it? Yes. It was a lot better than I remember, probably because I have far more context for the religious hypocrisy stuff.
- Will I watch it again? Probably not. I'm finding that if I actually pay attention during a movie and absorb whatever I need to absorb, I can set it aside. No need to carry all this media around with me, right?
Hey Arnold!: The Movie (2002)
- Glad I watched it? Yes.
- Will I watch it again? Unlikely. It was too predictable, but I sure do love Arnold and Gerald and the crew. Makes me excited for our upcoming Nick Resort trip.
Recess: School's Out (2001)
- Glad I watched it? Yes.
- Will I watch it again? Yes. I regret not owning this one. It's fun watching movies I never got to watch as a kid with my own kids.
American Fiction (2023)
- Glad I watched it? Yes.
- Will I watch it again? Yes. Very smart, very funny, exceptionally high-brow. Best enjoyed with a glass of wine in a fancy wine glass.
Music I enjoyed
Current Vibes in January 2025:
| Artist | Album | Thoughts |
|---|---|---|
| The Beths | Expert In A Dying Field | |
| Bonnie Light Horsemen | Keep Me On Your Mind / Set You Free | |
| Doechii | Alligator Bites Never Heal | Holy crap, insanely good rap |
| EKKSTACY | EKKSTACY | Still enjoying this, but got rid of "Misery." Don't need that anymore. |
| Green Day | Dookie | |
| HNNY | Light Shines Through | I took Kiasmos off my list, which felt weird given how hard I bumped it, but this album still gets me |
| The Linda Lindas | Growing Up | |
| The Linda Lindas | No Obligation | I like Growing Up more, but I'm finding myself enjoying more of these songs as I give it more rotations |
| No Vacation | Intermission | I need to find more No Vacation stuff, really digging this |
| Phoenix | Wolfgang Amadeus Phoenix | God, just perfect indie rock |
| Presidents of the USA | Presidents of the USA | I missed this album |
| Pynch | Howling at a Concrete Moon | Still such amazing lyrics, really relating to them at the moment |
| Magdalena Bay | Imaginal Disk | Thinking about removing this, but the songs are super catchy and good, so I'll keep it around |
| Wishy | Triple Seven | Same as Magdalena Bay. I could see revisiting this album in a few years and see if it hits harder |
| deafheaven | Infinite Granite | I think I need to listen straight through this album and focus on it |
| fanclubwallet | Our Bodies Paint Traffic Lines | Sounds really fresh to me, I want to explore more of this band |
| Sabrina Carpenter | Short 'N Sweet | This completely slaps. Insanely witty lyrics, big fan. |
| STRFKR | Parallel Realms | This hits extremely hard, feels like listening to Cut Copy back in the day. |
| Wild Pink | Dulling The Horns | Another one that would benefit from a focused listen, but rather enjoying the individual songs as they pop in. |
Books I read
- Banal Nightmare by Halle Butler. I felt like I could identify with nearly every character's brand of "crazy." Strongly recommend.
-
I misspelled "bourbon", and I accidentally added the misspelling to my computer's dictionary. At some point down the road, this will 100% come back to bite me in the butt. I look forward to it. ↩
-
I scored five goals one game, and then one for the rest of the season, which means I got progressively worse as the season carried on. But no matter how poorly we did, I put my entire self into those games and left every single one happy. Oh, and I got to watch a fist fight break out, which I've never seen before during a recreational broomball game. ↩
Why men shouldn’t control artificial intelligence
🔗 a linked post to
newstatesman.com »
—
originally shared here on
We assume that technology must have begun with a weapon (and that the first inventor must have been a man). But as the science-fiction writer Ursula Le Guin pointed out, “the spear” was probably not the original technology. Archaeologists and anthropologists now increasingly believe that sharpened sticks were invented by women to gather foods, and were adapted for hunting only later. If the first tools weren’t hunting tools it isn’t clear that technology must always seek to crush, dominate and exploit. Female science-fiction authors have often been criticised for not writing “hard” science fiction precisely because they have defined technology in this more neutral sense. As Le Guin put it: “Technology is just the active human interface with the material world.” There is nothing inherently violent about it. Unless we want it to be. But the patriarchal imagination doesn’t seem to think it will be up to us to decide this.
There are many justifiable concerns around artificial intelligence, but to say it’s all gloom and doom is a severe failure of imagination.
I also loved this closing paragraph:
We talk as if the machines were the active participants in history, and humanity the passive ones. We dance around the machines as if they were deities. Forgetting that we have created them with our own hands. Fed them with data from our own minds. It is a narrative that leaves us both powerless and without responsibility. Owned by our own creations.
Apple Intelligence message summarization is delightfully unhinged
I got a message from my group chat with my boys. I looked at the Apple Intelligence-generated summary and it said:
(3) Flying too close to the sun, experiencing AI chaos.
I think this is my current favorite implementation of AI because it makes the messaging experience completely unpredictable.
Like, what could that summary actually be about?
What series of three messages could that unravel to?
Apple Intelligence (and most generative AI tools) work really well when the text is predictable. Business cases are perfect for these summarizations, because business talk is relatively predictable (what with its “action items” and “agendas” and whatnot).
A group chat filled with inside jokes is not gonna make sense to an AI unless it’s been trained to do so.
Which has led to one of the best messaging experiences I’ve experienced in decades: trying to guess from the AI-generated summary what the individual texts will actually say.
Some examples:
(3) Tired and wants candy before 8:45am, stuck on a song.
(3) Item unavailable due to legal holding period for used goods.
(9) Kirk on 8th, guest room set up, Sam may forgive Pat, Aldi groceries ordered.
Mark Zuckerberg: creators and publishers ‘overestimate the value’ of their work for training AI
🔗 a linked post to
theverge.com »
—
originally shared here on
I think that in any new medium in technology, there are the concepts around fair use and where the boundary is between what you have control over. When you put something out in the world, to what degree do you still get to control it and own it and license it? I think that all these things are basically going to need to get relitigated and rediscussed in the AI era.
When I downloaded Llama 3.2 yesterday, I had to agree to a rather lengthy licensing agreement which constrained how I could use it.
When you sign up for a Instagram or Facebook account, you have to agree to lengthy terms and conditions in which you give up your rights around the content you create.
If you want to push my buttons, all you need to do is something deeply hypocritical. Like, for example, the kind of insipid, hand-wavy remark that billionaires like Mark Zuckerberg make when they want "rules for thee, not for me" treatment.1
There’s another pull quote here which deeply offends me:
“Look, we’re a big company,” he said. “We pay for content when it’s valuable to people. We’re just not going to pay for content when it’s not valuable to people. I think that you’ll probably see a similar dynamic with AI.”
Seriously, the gall of this guy to say “your content isn’t valuable” while raking in billions of dollars serving ads against it.
I keep getting the urge to join Facebook so I can sell some unneeded treasures on marketplace, but this article serves as a reminder that Meta is helmed by an individual who has a truly warped definition of the word “value.”
-
Or filibuster for an entire year into blocking a Supreme Court nomination until the next election takes place because “it’s the will of the people.” Then, four years later, when an election will take place in less than a month, cram your awful nomination through because it’s important to fill those spots as soon as possible. I have tried for a few years now, but I’m not sure I’ll ever be able to forgive that particular instance of hypocrisy. ↩
Are We Too Impatient to Be Intelligent?
🔗 a linked post to
behavioralscientist.org »
—
originally shared here on
Businesspeople, governments, and politicians aren’t looking to solve problems; they’re looking to win arguments. And the way you win an argument is by pretending that what should be an open-ended question with many possible right answers isn’t one. Make it enjoyable, have free booze on the train, put Wi-Fi on the train, have a ball pit on the train for kids—these are the Disney answers. Those are multiple and involve what you might call human judgment. You can’t win an argument with those.
What you do is pretend this is a high school math problem with a single right answer, you solve for the right answer using high school math, and then nobody can argue with you because apparently you haven’t made a decision. You’ve simply followed the data.
This is a massive problem in decision-making. We try to close down the solution space of any problem in order to arrive at a single right answer that is difficult to argue with.
Shout out to my buddy Chris who shared this with me. This whole article is so great, one that was difficult to pull only a single quote from.
I do like the author’s conclusion as well, which talks about the notion of “slow AI.” Maybe not every problem needs to be solved instantaneously.
Intro to Large Language Models
🔗 a linked post to
youtube.com »
—
originally shared here on
One of the best parts of YouTube Premium is being able to run audio in the background while your screen is turned off.
I utilized this feature heavily this past weekend as I drove back from a long weekend of camping. I got sick shortly before we left, so I drove separately and met my family the next day.
On the drive back, I threw on this video and couldn’t wait to tell my wife about it when we met up down the road at a McDonalds.
If you are completely uninterested in large language models, artificial intelligence, generative AI, or complex statistical modeling, then this video is perfect to throw on if you’re struggling with insomnia.
If you have even a passing interest in LLMs, though, you have to check this presentation out by Andrej Karpathy, a co-founder of OpenAI.
Using quite approchable language, he explains how you build and tune an LLM, why it’s so expensive, how they can improve, and where these tools are vulnerable to attacks such as jailbreaking and prompt injection.
I’ve played with LLMs for a few years now and this video greatly improved the mental model I’ve developed around how these tools work.
Who lives in the white house?
My kids have been on a kick lately of trying to trick people with this riddle:
Kid: "If the blue man lives in the blue house, and the red man lives in the red house, who lives in the green house?"
Me: "The green man"
Kid: "Who lives in the purple house?"
Me: "The purple man"
Kid: "Who lives in the white house?"
Me: "The white man"
Kid: "Wrong! It's the president!"
This riddle initially reminded me of what it was like to work with large language models.
It's easy, I assumed, to trick these models into outputting virtually whatever you want by presenting them with leading questions. Giving them "few shot" answers like this (e.g. "the blue man lives in the blue house, red man lives in the red house") would certainly result in them getting it wrong like I did, right?
This morning, I thought I'd see what the latest models would actually respond with given this game:
ChatGPT 4o (the latest model):

The President of the United States lives in the White House.
This was the first model I tried, and it straight up was like, "nope, I got this."
Ugh. Maybe it had seen this in its training data before?

The "Who lives in the White House?" game or riddle is a common one that I've encountered multiple times in various forms. It's often used to playfully lead to the punchline that the President of the United States lives in the White House.
Well, damn. Okay, let's try an older model and see what happens.
ChatGPT 4 (the legacy model):

The gardener lives in the greenhouse!
In the spirit of the previous joke, perhaps the grape man lives in the purple house!
The President of the United States lives in the White House.
Even though this is an older model, I like this answer even better.1
Alright, well, OpenAI is onto my tricks... how about Anthropic?
Claude Sonnet 3.5:

I apologize, but I don't have enough information to determine who lives in the green, purple, and white houses. The puzzle only specifies that the blue man lives in the blue house and the red man lives in the red house. There's no information provided about the occupants of the other colored houses.
To solve this puzzle completely, we would need additional clues or information about the residents of the green, purple, and white houses. Without that, those houses' occupants remain unknown.
This is an even better answer! It's perhaps the least fun answer, but when I'm working with an AI assistant, I think I'd prefer it to err on the side of caution rather than boisterousness.2
When I asked it if it had seen this riddle before, it gave an equally diplomatic response:

I don't have specific information about how many times I've encountered that particular puzzle or game in my training data. As an AI language model, I don't have personal experiences or memories of my training process. My knowledge comes from processing large amounts of text data, but I don't retain or count individual instances of specific puzzles or games.
What I can say is that logic puzzles involving colored houses and their occupants are fairly common in puzzle collections and brain teasers. The most famous version is probably the "Einstein's Riddle" or "Zebra Puzzle," which is more complex and involves five houses of different colors, their occupants, and various other attributes.
The specific version you presented (with just blue and red specified, and asking about green, purple, and white) isn't one I immediately recognize as a standard or famous puzzle. It seems like it might be a simplified version or a variation of the more complex house puzzles.
The main takeaways here? First, just because I'm dumb enough to fall for this elementary school riddle doesn't mean our AI LLMs are, so I shouldn't make assumptions about the usefulness of these tools. Second, every model is different, and you should run little experiments like these in order to see which tools produce the output which is more favorable to you.
I've been using the free version of Claude to run side-by-side comparisons like this lately, and I'm pretty close to getting rid of my paid ChatGPT subscription and moving over to Claude. The answers I get from Claude feel more like what I'd expect an AI assistant to provide.
I think this jives well with Simon Willison's "Vibes Based Development" observation that you need to work with an LLM for a few weeks to get a feel for a model's strengths and weaknesses.
-
This isn't the first time I've thought that GPT-4 gave a better answer than GPT-4o. In fact, I often find myself switching back to GPT-4 because GPT-4o seems to ramble a lot more. ↩
-
This meshes well with my anxiety-addled brain. If you don't know the answer, tell me that rather than try and give me the statistically most likely answer (which often isn't actually the answer). ↩
The Articulation Barrier: Prompt-Driven AI UX Hurts Usability
🔗 a linked post to
uxtigers.com »
—
originally shared here on
Current generative AI systems like ChatGPT employ user interfaces driven by “prompts” entered by users in prose format. This intent-based outcome specification has excellent benefits, allowing skilled users to arrive at the desired outcome much faster than if they had to manually control the computer through a myriad of tedious commands, as was required by the traditional command-based UI paradigm, which ruled ever since we abandoned batch processing.
But one major usability downside is that users must be highly articulate to write the required prose text for the prompts. According to the latest literacy research, half of the population in rich countries like the United States and Germany are classified as low-literacy users.
This might explain why I enjoy using these tools so much.
Writing an effective prompt and convincing a human to do a task both require a similar skillset.
I keep thinking about how this article impacts the barefoot developer concept. When it comes to programming, sure, the command line barrier is real.
But if GUIs were the invention that made computers accessible to folks who couldn’t grasp the command line, how do we expect normal people to understand what to say to an unassuming text box?
The Super Effectiveness of Pokémon Embeddings Using Only Raw JSON and Images
🔗 a linked post to
minimaxir.com »
—
originally shared here on
Embeddings are one of the most useful but unfortunately underdiscussed concepts in the artificial intelligence space relative to the modern generative AI gigahype. Embeddings are a set of hundreds of numbers which uniquely correspond to a given object that define its dimensionality, nowadays in a multiple of 128 such as 384D, 768D, or even 1536D. The larger the embeddings, the more “information” and distinctiveness each can contain, in theory.
These embeddings can be used as-is for traditional regression and classification problems with your favorite statistical modeling library, but what’s really useful about these embeddings is that if you can find the minimum mathematical distance between a given query embedding and another set of embeddings, you can then find which is the most similar: extremely useful for many real-world use cases such as search.
You wanna cut through the hype about AI? Here's the key takeaway: it boils down to a bunch of math nerds figuring out interesting relationships between numbers.
Which, of course, is useless to all of us non-math nerds... except for when you apply this information in the context of Pokémon.
Joking aside, I have a basic understanding of embeddings, but this article, with its basis in Pokémon lore, is the clearest explanation for how embeddings work in practice that I’ve seen.
Warning: there's still a lot of involved math happening here, but stay with it. You might learn a concept or two!
Perplexity’s grand theft AI
🔗 a linked post to
theverge.com »
—
originally shared here on
We’ve seen a lot of AI giants engage in questionably legal and arguably unethical practices in order to get the data they want. In order to prove the value of Perplexity to investors, Srinivas built a tool to scrape Twitter by pretending to be an academic researcher using API access for research. “I would call my [fake academic] projects just like Brin Rank and all these kinds of things,” Srinivas told Lex Fridman on the latter’s podcast. I assume “Brin Rank” is a reference to Google co-founder Sergey Brin; to my ear, Srinivas was bragging about how charming and clever his lie was.
I’m not the one who’s telling you the foundation of Perplexity is lying to dodge established principles that hold up the web. Its CEO is. That’s clarifying about the actual value proposition of “answer engines.” Perplexity cannot generate actual information on its own and relies instead on third parties whose policies it abuses. The “answer engine” was developed by people who feel free to lie whenever it is more convenient, and that preference is necessary for how Perplexity works.
So that’s Perplexity’s real innovation here: shattering the foundations of trust that built the internet. The question is if any of its users or investors care.
Well, I sure do care.
I Will Fucking Piledrive You If You Mention AI Again
🔗 a linked post to
ludic.mataroa.blog »
—
originally shared here on
Consider the fact that most companies are unable to successfully develop and deploy the simplest of CRUD applications on time and under budget. This is a solved problem - with smart people who can collaborate and provide reasonable requirements, a competent team will knock this out of the park every single time, admittedly with some amount of frustration. The clients I work with now are all like this - even if they are totally non-technical, we have a mutual respect for the other party's intelligence, and then we do this crazy thing where we solve problems together. I may not know anything about the nuance of building analytics systems for drug rehabilitation research, but through the power of talking to each other like adults, we somehow solve problems.
But most companies can't do this, because they are operationally and culturally crippled. The median stay for an engineer will be something between one to two years, so the organization suffers from institutional retrograde amnesia. Every so often, some dickhead says something like "Maybe we should revoke the engineering team's remote work privile - whoa, wait, why did all the best engineers leave?". Whenever there is a ransomware attack, it is revealed with clockwork precision that no one has tested the backups for six months and half the legacy systems cannot be resuscitated - something that I have personally seen twice in four fucking years. Do you know how insane that is?
This whole article is a must read.
The main point: with any major leap in technology, there will be hucksters who purport to use the new hotness to solve all your problems.
The problem is that most organizations don't even take the time to solve the already solvable problems that exist within that organization.
New Javascript frameworks, database software, on-prem versus cloud-based server architecture, containerized systems, blockchain, mobile apps... unless you know how using these tools will solve a problem that your existing tech stack cannot solve, they're nothing more than distractions.
You don't need a garage full of tools to get a job done. Getting the fundamentals right is so much more important than making another trip down to Home Depot to buy your sixth version of a hammer.
All my beautiful AI children
🔗 a linked post to
linksiwouldgchatyou.substack.com »
—
originally shared here on
Because of my experience with Remini — and despite my natural and deep-seated antipathy toward tech solutionism of all sorts — it’s impossible for me to dismiss or decry grief tech out of hand. At present, at least half a dozen high-profile start-ups claim they can train interactive chatbots or video avatars to mimic the personalities of the dead; tech-savvy mourners have also turned several general AI apps, such as Remini and Paradot, to grief tech applications.
These services — marketed under names like Project December, You Only Virtual, HereAfter AI and Seance AI — raise pressing, significant questions around issues like privacy, predatory marketing and consent. What happens if grandma doesn’t want to “live” forever? Or her platform ups the cost of a premium subscription? Other commentators and ethicists — including, just last week, the prominent sociologist Sherry Turkle — have voiced concerns that grief tech blurs the boundary between the living and the dead and locks the bereaved in a sort of limbo. Such critics assume that the bereaved cannot spot the illusion of AI chatbots for themselves, and, moreover, that the bereaved should not indulge themselves in any comforting fantasies about death.
But people take comfort in all sorts of stories; I no longer feel wise enough to judge them for that.
First off, huge respect to Caitlin Dewey for sharing this story. It takes guts to be vulnerable and share something this intimate.
Second, consider me privileged, because I would have never considered miscarriage grief as a use case for artificial intelligence.
People grieve in all sorts of ways. It’s not up to me (or you, or anybody) to judge, but it is up to us to show up for each other and be helpful.
I know how important journaling is to my mental health. There’s something cathartic about forcing yourself to stare directly at your thoughts, putting words to the vague feelings that gnaw at you incessantly.
I can only imagine how cathartic it may feel to someone to see a rendering of what could have been. To give yourself some closure on the possibilities you dreamed for yourself and your future family.
Again, I’m not here to judge or endorse. I find myself once again just impressed at how people are able to figure out how to take technology and use it to deal with their problems.
ChatGPT is really bad at generating code to interact with GPT-4
Lately, I've been working on several projects which interface with the OpenAI APIs.
Since this is 2024 and I'm far too lazy to open the official API documentation and write code myself, my first step in generating code is to ask the 4o model of ChatGPT something like this:
Write a Python script which uses the latest OpenAI APIs. I'd like the function to accept a custom prompt and a custom top-k value. It should return the prompt's response.
It returns something like this:
import openai
def generate_text(prompt, top_k=5):
# Define your OpenAI API key here
openai.api_key = 'your-api-key'
# Define parameters for the completion
completion = openai.Completion.create(
engine="text-davinci-003",
prompt=prompt,
max_tokens=100,
top_k=top_k,
n=1,
stop=None
)
# Return the generated text
return completion.choices[0].text.strip()
# Example usage
prompt = "Once upon a time"
top_k = 10
generated_text = generate_text(prompt, top_k)
print("Generated Text:", generated_text)
Which looks super great, right?
Except when you go to run it in a terminal, you get this:
openai.lib._old_api.APIRemovedInV1:
You tried to access openai.Completion, but this is no longer supported in openai>=1.0.0 - see the README at https://github.com/openai/openai-python for the API.
You can run `openai migrate` to automatically upgrade your codebase to use the 1.0.0 interface.
Alternatively, you can pin your installation to the old version, e.g. `pip install openai==0.28`
A detailed migration guide is available here: https://github.com/openai/openai-python/discussions/742
If you paste that error into the chat, it'll respond with this:
It seems like there has been a major update in the OpenAI Python library since I last checked. Let me update the script to use the latest version of the library:
And then it spits this out:
import openai
def generate_text(prompt, top_k=5):
# Define your OpenAI API key here
openai.api_key = 'your-api-key'
# Define parameters for the completion
response = openai.Completion.create(
engine="davinci-codex",
prompt=prompt,
max_tokens=100,
top_k=top_k,
n=1
)
# Return the generated text
return response.choices[0].text.strip()
# Example usage
prompt = "Once upon a time"
top_k = 10
generated_text = generate_text(prompt, top_k)
print("Generated Text:", generated_text)
Notice how it still uses the openai.Completion method!
I've tried prompting it with something like:
You're still using the openai.Completion method. Reference the official up to date API documentation to get the latest call that replaces the openai.Completion method.
And it responds with:
Apologies for that oversight. Let me update the script to use the latest API method based on the official documentation:
And here's the code it generates:
import openai
def generate_text(prompt, top_k=5):
# Define your OpenAI API key here
openai.api_key = 'your-api-key'
# Define parameters for the completion
response = openai.Completion.create(
engine="davinci-codex",
prompt=prompt,
max_tokens=100,
top_k=top_k,
n=1,
temperature=0.7,
stop=None
)
# Return the generated text
return response.choices[0].text.strip()
# Example usage
prompt = "Once upon a time"
top_k = 10
generated_text = generate_text(prompt, top_k)
print("Generated Text:", generated_text)
Which, again, still uses the openai.Completion method!
I've noticed this sort of "oops, I screwed up, here's the exact same thing I just outputted" behavior appear more frequently when I use the new GPT-4o model.
If I use GPT-4 and I'm using my ChatGPT Plus subscription, I will still run into the issue where its first response references the deprecated method, but if I inform it of its mistake and provide a link to the official documentation, it'll access the web and try to offer something different. (It still generates unusable code lol but it's at least trying to do something different!)
When it comes to Python and Rails code, I'm seeing that the GPT-4o model is not as good at code generation as the previous GPT-4 model.
It feels like the model is always in a rush to generate something rather than taking its time and getting it correct.
It also seems to be biased toward relying on its training for supplying an answer rather than taking a peek at the internet for a better answer, even when you specifically tell it not to do that.
In many cases, this speed/accuracy tradeoff makes sense. But when it comes to code generation (and specifically when it tries to generate code to use their own APIs), I wish it took its time to reason why the code it wrote doesn't work.
Generative AI is for the idea guys
🔗 a linked post to
rachsmith.com »
—
originally shared here on
When I started working in tech in the early 2010s I began running in to idea guys. Upon discovering I was a developer, they would get very excited and pitch me their big idea for an app/website/service to see what I thought.
After receiving a polite reaction they would often say something like: “I think it would do really well, if I could only figure out how to get it made”. Like the idea was the main thing that mattered, and the pesky task of actually building it was an insignificant little bump along the road to success. At this point I would usually tell them that ideas are worth nothing, until they are implemented.
This post is brilliant. Sometimes, I use generative AI like cardboard to prototype an idea.
Testing out an idea is the first step toward doing the countless hours of work needed to make an idea a real thing.
Since I don’t think I’ve said it on this blog yet: “Ideas are worthless. Execution is everything.”
(I also love Rachel’s footnote after the word “guys”, saying “it was literally always guys” ?)
A Plea for Sober AI
🔗 a linked post to
dbreunig.com »
—
originally shared here on
Below all this hype, there’s a quiet revolution happening. I keep meeting new companies and seeing new products that make practical use of LLMs. They use them to solve narrow problems and prioritize consistency and efficiency over giant, all-singing, all-dancing models. I keep meeting people who are amplifying their capacity and abilities by handing simple, mundane tasks to AIs, which they then refine and improve. AI-assisted coding has been a boon for early-stage start ups, which are shipping products with a maturity and polish beyond their years.
This is the world of Sober AI.
Sober AI is an incredible concept.
There’s so much progress that people can make using this tool. While it might not be able to solve all our problems, knowing how to wield it is a superpower in this economy.
AI is not like you and me
🔗 a linked post to
zachseward.com »
—
originally shared here on
Aristotle, who had a few things to say about human nature, once declared, "The greatest thing by far is to have a command of metaphor," but academics studying the personification of tech have long observed that metaphor can just as easily command us. Metaphors shape how we think about a new technology, how we feel about it, what we expect of it, and ultimately how we use it.
I love metaphors. I gotta reflect on this idea a bit more.
There is something kind of pathological going on here. One of the most exciting advances in computer science ever achieved, with so many promising uses, and we can't think beyond the most obvious, least useful application? What, because we want to see ourselves in this technology?
Meanwhile, we are under-investing in more precise, high-value applications of LLMs that treat generative A.I. models not as people but as tools. A powerful wrench to create sense out of unstructured prose. The glue of an application handling messy, real-word data. Or a drafting table for creative brainstorming, where a little randomness is an asset not a liability. If there's a metaphor to be found in today's AI, you're most likely to find it on a workbench.
Bingo! AI is a tool, not a person.
The other day, I made a joke on LinkedIn about the easiest way for me to spot a social media post that was written with generative AI: the phrase “Exciting News!” alongside one of these emojis: ?, ?, or ?.
It’s not that everyone who uses those things certainly used ChatGPT.
It’s more like how I would imagine a talented woodworker would be able to spot a rookie mistake in a novice’s first attempt at a chair.
And here I go, using a metaphor again!
AI isn't useless. But is it worth it?
🔗 a linked post to
citationneeded.news »
—
originally shared here on
There are an unbelievable amount of points Molly White makes with which I found myself agreeing.
In fact, I feel like this is an exceptionally accurate perspective of the current state of AI and LLMs in particular. If you’re curious about AI, give this article a read.
A lot of my personal fears about the potential power of these tools comes from speculation that the LLM CEOs make about their forthcoming updates.
And I don’t think that fear is completely unfounded. I mean, look at what tools we had available in 2021 compared to April 2024. We’ve come a long way in three years.
But right now, these tools are quite hard to use without spending a ton of time to learn their intricacies.
The best way to fight fear is with knowledge. Knowing how to wield these tools helps me deal with my fears, and I enjoy showing others how to do the same.
One point Molly makes about the generated text got me to laugh out loud:
I particularly like how, when I ask them to try to sound like me, or to at least sound less like a chatbot, they adopt a sort of "cool teacher" persona, as if they're sitting backwards on a chair to have a heart-to-heart. Back when I used to wait tables, the other waitresses and I would joke to each other about our "waitress voice", which were the personas we all subconsciously seemed to slip into when talking to customers. They varied somewhat, but they were all uniformly saccharine, with slightly higher-pitched voices, and with the general demeanor as though you were talking to someone you didn't think was very bright. Every LLM's writing "voice" reminds me of that.
“Waitress voice” is how I will classify this phenomenon from now on.
You know how I can tell when my friends have used AI to make LinkedIn posts?
When all of a sudden, they use emoji and phrases like “Exciting news!”
It’s not even that waitress voice is a negative thing. After all, it’s expected to communicate with our waitress voices in social situations when we don’t intimately know somebody.
Calling a customer support hotline? Shopping in person for something? Meeting your kid’s teacher for the first time? New coworker in their first meeting?
All of these are situations in which I find myself using my own waitress voice.
It’s a safe play for the LLMs to use it as well when they don’t know us.
But I find one common thread among the things AI tools are particularly suited to doing: do we even want to be doing these things? If all you want out of a meeting is the AI-generated summary, maybe that meeting could've been an email. If you're using AI to write your emails, and your recipient is using AI to read them, could you maybe cut out the whole thing entirely? If mediocre, auto-generated reports are passing muster, is anyone actually reading them? Or is it just middle-management busywork?
This is what I often brag about to people when I speak highly of LLMs.
These systems are incredible at the BS work. But they’re currently terrible with the stuff humans are good at.
I would love to live in a world where the technology industry widely valued making incrementally useful tools to improve peoples' lives, and were honest about what those tools could do, while also carefully weighing the technology's costs. But that's not the world we live in. Instead, we need to push back against endless tech manias and overhyped narratives, and oppose the "innovation at any cost" mindset that has infected the tech sector.
Again, thank you Molly White for printing such a poignant manifesto, seeing as I was having trouble articulating one of my own.
Innovation and growth at any cost are concepts which have yet to lead to a markedly better outcome for us all.
Let’s learn how to use these tools to make all our lives better, then let’s go live our lives.
Happy 20th Anniversary, Gmail. I’m Sorry I’m Leaving You.
🔗 a linked post to
nytimes.com »
—
originally shared here on
I am grateful — genuinely — for what Google and Apple and others did to make digital life easy over the past two decades. But too much ease carries a cost. I was lulled into the belief that I didn’t have to make decisions. Now my digital life is a series of monuments to the cost of combining maximal storage with minimal intention.
I have thousands of photos of my children but few that I’ve set aside to revisit. I have records of virtually every text I’ve sent since I was in college but no idea how to find the ones that meant something. I spent years blasting my thoughts to millions of people on X and Facebook even as I fell behind on correspondence with dear friends. I have stored everything and saved nothing.
This is an example of what AI, in its most optimistic state, could help us with.
We already see companies doing this. In the Apple ecosystem, the Photos widget is perhaps the best piece of software they’ve produced in years.
Every single day, I am presented with a slideshow of a friend who is celebrating their birthday, a photo of my kids from this day in history, or a memory that fits with an upcoming event.
All of that is powered by rudimentary1 AI.
Imagine what could be done when you unleash a tuned large language model on our text histories. On our photos. On our app usage.
AI is only as good as the data it is provided. We’ve been trusting our devices with our most intimidate and vulnerable parts of ourselves for two decades.
This is supposed to be the payoff for the last twenty years of surveillance capitalism, I think?
All those secrets we share, all of those activities we’ve done online for the last twenty years, this will be used to somehow make our lives better?
The optimistic take is that we’ll receive better auto suggestions for text responses to messages that sound more like us. We’ll receive tailored traffic suggestions based on the way we drive. We’ll receive a “long lost” photo of our kid from a random trip to the museum.
The pessimistic take is that we’ll give companies the exact words which will cause us to take action. Our own words will be warped to get us to buy something we’ve convinced ourselves we need.
My hunch is that both takes will be true. We need to be smart enough to know how to use these tools to help ourselves and when to put them down.
I haven’t used Gmail as my primary email for years now2, but this article is giving me more motivation to finally pull the plug and shrink my digital footprint.
This is not something the corporations did to me. This is something I did to myself. But I am looking now for software that insists I make choices rather than whispers that none are needed. I don’t want my digital life to be one shame closet after another. A new metaphor has taken hold for me: I want it to be a garden I tend, snipping back the weeds and nourishing the plants.
My wife and I spent the last week cleaning out our garage. It reached the point where the clutter accumulated so much that you could only park one car in it, strategically aligned so you could squeeze through a narrow pathway and open a door.
As of this morning, we donated ten boxes of items and are able to comfortably move around the space. While there is more to be done, the garage now feels more livable, useful, and enjoyable to be inside.
I was able to clear off my work bench and mount a pendant above it. The pendant is autographed by the entire starting defensive line of the 1998 Minnesota Vikings.
Every time I walk through my garage, I see it hanging there and it makes me so happy.
Our digital lives should be the same way.
My shame closet is a 4 terabyte hard drive containing every school assignment since sixth grade, every personal webpage I’ve ever built, multiple sporadic backups of various websites I am no longer in charge of, and scans of documents that ostensibly may mean something to me some day.
Scrolling through my drive, I’m presented with a completely chaotic list that is too overwhelming to sort through.
Just like how I cleaned out my garage, I aught to do the same to this junk drawer.
I’ll revert to Ezra’s garden metaphor here: keep a small, curated garden that contains the truly important and meaningful digital items to you. Prune the rest.
(Shout out to my friend Dana for sharing this with me. I think she figured out my brand.)
Confessions of a Viral AI Writer
🔗 a linked post to
wired.com »
—
originally shared here on
Lately, I’ve sometimes turned to ChatGPT for research. But I’ve stopped having it generate prose to stand in for my own. If my writing is an expression of my particular consciousness, I’m the only one capable of it. This applies, to be clear, to GPT-3’s line about holding hands with my sister. In real life, she and I were never so sentimental. That’s precisely why I kept writing over the AI’s words with my own: The essay is equally about what AI promises us and how it falls short. As for Sudowrite’s proposal to engineer an entire novel from a few keywords, forget it. If I wanted a product to deliver me a story on demand, I’d just go to a bookstore.
But what if I, the writer, don’t matter? I joined a Slack channel for people using Sudowrite and scrolled through the comments. One caught my eye, posted by a mother who didn’t like the bookstore options for stories to read to her little boy. She was using the product to compose her own adventure tale for him. Maybe, I realized, these products that are supposedly built for writers will actually be of more interest to readers.
I can imagine a world in which many of the people employed as authors, people like me, limit their use of AI or decline to use it altogether. I can also imagine a world—and maybe we’re already in it—in which a new generation of readers begins using AI to produce the stories they want. If this type of literature satisfies readers, the question of whether it can match human-produced writing might well be judged irrelevant.
I think this is a good example of exactly why I think software engineers are in trouble for many roles.
People hire nerds to get computers to do things for them. Things that are not especially novel to those of us who program computers, but extremely valuable to those who cannot.
Will AI be able to create bespoke, artisanal software better than a creative engineer?
Will AI be able to create bespoke, artisanal music better than a create musician?
Maybe. Maybe not.
But it will surely be able to create adequate software and music faster than humans can.
I’m afraid the days of being paid insane amounts of money because I can get computers to do what I want are approaching an end.
What I Do When I Can’t Sleep
🔗 a linked post to
every.to »
—
originally shared here on
Listening to him name exactly what he liked about the wine turned up the hairs on the back of my neck. Suddenly, my own experience of the wine felt deeper and more satisfying. I wanted to know: How was he able to identify these flavors?
He told me the secret was to blindly smell things and try to label them. You see, the part of your brain that’s responsible for smells is naturally mute. It’s called the olfactory bulb, and it’s an ancient fist of neurons just behind your eyes. It has only indirect backroad connections to the parts of the brain that control language, like Broca’s area. So, even though you might have an easy time knowing whether or not you like a scent, it’s not easy to label that scent with a word. It’ll feel like groping through a dark closet for something you know is there, but can’t quite find.
I did not know this, and now I will be nerding out on ways to train my taste buds.
But this article isn’t just about developing your sense of taste. It’s also about defining your style.
In much the same way the author describes how he is, for the first time in his life, articulating what he likes as a writer, I am starting to do the same with several areas of my life.
Case in point: I have a huge collection of quotes that you can see on the main page of this site.
I just fed all of them through ChatGPT with this prompt:
I’ve attached a series of quotes which are meaningful to me. First off, tell me the consistent themes you recognize across all of the quotes. Then, tell me what this says about the things that inspire me.
Here is the result:
Across all the quotes, several consistent themes emerge:
- Growth and Self-improvement: Many quotes focus on the importance of personal growth, overcoming challenges, and continuous improvement.
- Perseverance and Resilience: There's a strong theme of enduring hardship, staying strong in the face of adversity, and the importance of perseverance.
- Wisdom and Perspective: The quotes often reflect on acquiring wisdom, gaining perspective, and understanding life's deeper meanings and truths.
- Happiness and Contentment: There's an emphasis on finding happiness, being content with what one has, and the pursuit of joy in life.
- Community and Relationships: Several quotes highlight the value of community, the importance of relationships, and the strength that comes from vulnerability and connection with others.
These themes suggest that you are inspired by ideas related to personal growth, resilience in the face of adversity, the pursuit of wisdom and understanding, the importance of happiness and contentment, and the value of community and relationships. It paints a picture of someone who values both internal development and external connections, seeking both personal fulfillment and meaningful interactions with others.
:extremely Marge Simpson voice: “Well, duh.”
(For real though, pretty awesome that we have a tool that is exceptionally good at summarizing large amounts of data and picking out patterns throughout the dataset.)
The Robot Report #1 — Reveries
🔗 a linked post to
randsinrepose.com »
—
originally shared here on
Whenever I talk about a knowledge win via robots on the socials or with humans, someone snarks, “Well, how do you know it’s true? How do you know the robot isn’t hallucinating?” Before I explain my process, I want to point out that I don’t believe humans are snarking because they want to know the actual answer; I think they are scared. They are worried about AI taking over the world or folks losing their job, and while these are valid worries, it’s not the robot’s responsibility to tell the truth; it’s your job to understand what is and isn’t true.
You’re being changed by the things you see and read for your entire life, and hopefully, you’ve developed a filter through which this information passes. Sometimes, it passes through without incident, but other times, it’s stopped, and you wonder, “Is this true?”
Knowing when to question truth is fundamental to being a human. Unfortunately, we’ve spent the last forty years building networks of information that have made it pretty easy to generate and broadcast lies at scale. When you combine the internet with the fact that many humans just want their hopes and fears amplified, you can understand why the real problem isn’t robots doing it better; it’s the humans getting worse.
I’m working on an extended side quest and in the past few hours of pairing with ChatGPT, I’ve found myself constantly second guessing a large portion of the decisions and code that the AI produced.
This article pairs well with this one I read today about a possible social exploit that relies on frequently hallucinated package names.
Bar Lanyado noticed that LLMs frequently hallucinate the names of packages that don’t exist in their answers to coding questions, which can be exploited as a supply chain attack.
He gathered 2,500 questions across Python, Node.js, Go, .NET and Ruby and ran them through a number of different LLMs, taking notes of any hallucinated packages and if any of those hallucinations were repeated.
One repeat example was “pip install huggingface-cli” (the correct package is “huggingface[cli]”). Bar then published a harmless package under that name in January, and observebd 30,000 downloads of that package in the three months that followed.
I’ll be honest: during my side quest here, I’ve 100% blindly run npm install on packages without double checking official documentation.
These large language models truly are mirrors to our minds, showing all sides of our personalities from our most fit to our most lazy.
Claude and ChatGPT for ad-hoc sidequests
🔗 a linked post to
simonwillison.net »
—
originally shared here on
I’m an unabashed fan of Simon Willison’s blog. Some of his posts admittedly go over my head, but I needed to share this post because it gets across the point I have been trying to articulate myself about AI and how I use it.
In the post, Simon talks about wanting to get a polygon object created that represents the boundary of Adirondack Park, the largest park in the United States (which occupies a fifth of the whole state!).
That part in and of itself is nerdy and a fun read, but this section here made my neck hurt from nodding aggressively in agreement:
Isn’t this a bit trivial? Yes it is, and that’s the point. This was a five minute sidequest. Writing about it here took ten times longer than the exercise itself.
I take on LLM-assisted sidequests like this one dozens of times a week. Many of them are substantially larger and more useful. They are having a very material impact on my work: I can get more done and solve much more interesting problems, because I’m not wasting valuable cycles figuring out ogr2ogr invocations or mucking around with polygon libraries.
Not to mention that I find working this way fun! It feels like science fiction every time I do it. Our AI-assisted future is here right now and I’m still finding it weird, fascinating and deeply entertaining.
Frequent readers of this blog know that a big part of the work I’ve been doing since being laid off is in reflecting on what brings me joy and happiness.
Work over the last twelve years of my life represented a small portion of something that used to bring me a ton of joy (building websites and apps). But somewhere along the way, building websites was no longer enjoyable to me.
I used to love learning new frameworks, expanding the arsenal of tools in my toolbox to solve an ever expanding set of problems. But spending my free time developing a new skill with a new tool began to feel like I was working but not getting paid.
And that notion really doesn’t sit well with me. I still love figuring out how computers work. It’s just nice to do so without the added pressure of building something to make someone else happy.
Which brings me to the “side quest” concept Simon describes in this post, which is something I find myself doing nearly every day with ChatGPT.
When I was going through my album artwork on Plex, my first instinct was to go to ChatGPT and have it help me parse through Plex’s internal thumbnail database to build me a view which shows all the artwork on a single webpage.
It took me maybe 10 minutes of iterating with ChatGPT, and now I know more about the internal workings of Plex’s internal media caching database than I ever would have before.
Before ChatGPT, I would’ve had to spend several hours pouring over open source code or out of date documentation. In other words: I would’ve given up after the first Google search.
It feels like another application of Morovec’s paradox. Like Gary Casparov observed with chess bots, it feels like the winning approach here is one where LLMs and humans work in tandem.
Simon ends his post with this:
One of the greatest misconceptions concerning LLMs is the idea that they are easy to use. They really aren’t: getting great results out of them requires a great deal of experience and hard-fought intuition, combined with deep domain knowledge of the problem you are applying them to. I use these things every day. They help me take on much more interesting and ambitious problems than I could otherwise. I would miss them terribly if they were no longer available to me.
I could not agree more.
I find it hard to explain to people how to use LLMs without more than an hour of sitting down and going through a bunch of examples of how they work.
These tools are insanely cool and insanely powerful when you bring your own knowledge to them.
They simply parrot back what it believes to be the most statistically correct response to whatever prompt was provided.
I haven’t been able to come up with a good analogy for that sentiment yet, because the closest I can come up with is “it’s like a really good personal assistant”, which feels like the same analogy the tech industry always uses to market any new tool.
You wouldn’t just send a personal assistant off to go do your job for you. A great assistant is there to compile data, to make suggestions, to be a sounding board, but at the end of the day, you are the one accountable for the final output.
If you copy and paste ChatGPT’s responses into a court brief and it contains made up cases, that’s on you.
If you deploy code that contains glaring vulnerabilities, that’s on you.
Maybe I shouldn’t be lamenting that I lost my joy of learning new things about computers, because I sure have been filled with joy learning how to best use LLMs these past couple years.
Anti-AI sentiment gets big applause at SXSW 2024 as moviemaker dubs AI cheerleading as ‘terrifying bullsh**’
🔗 a linked post to
techcrunch.com »
—
originally shared here on
I gotta find the video from this and watch it myself, because essentially every single thing mentioned in this article is what I wanna build a podcast around.
Let’s start with this:
As Kwan first explained, modern capitalism only worked because we compelled people to work, rather than forced them to do so.
“We had to change the story we told ourselves and say that ‘your value is your job,” he told the audience. “You are only worth what you can do, and we are no longer beings with an inherent worth. And this is why it’s so hard to find fulfillment in this current system. The system works best when you’re not fulfilled.”
Boy, this cuts to the heart of the depressive conversations I’ve had with myself this past year.
Finding a job sucks because you have to basically find a way to prove to someone that you are worth something. It can be empowering to some, sure, but I am finding the whole process to be extremely demoralizing and dehumanizing.
“Are you trying to use [AI] to create the world you want to live in? Are you trying to use it to increase value in your life and focus on the things that you really care about? Or are you just trying to, like, make some money for the billionaires, you know?” Scheinert asked the audience. “And if someone tells you, there’s no side effect. It’s totally great, ‘get on board’ — I just want to go on the record and say that’s terrifying bullshit. That’s not true. And we should be talking really deeply about how to carefully, carefully deploy this stuff,” he said.
I’ve literally said the words, “I don’t want to make rich people richer” no fewer than a hundred times since January.
There is so much to unpack around this article, but I think I’m sharing it now as a stand in for a thesis around the podcast I am going to start in the next month.
We need to be having this conversation more often and with as many people as possible. Let’s do our best right now at the precipice of these new technologies to make them useful for ourselves, and not just perpetuate the worst parts of our current systems.
The Job Hunt Chronicles: Month 2: Beyond the Fog
(This is the second in a series of posts going through my journal entries from the last month and talking about what it's like to go through a period of unemployment, self doubt, and finding your spark. You can read the first one here.)
Alright, we've made it through February!
I'm still on the job hunt. I'm still dealing with some crippling anxiety and depression.
But I'm making progress! I'm having interviews, I'm figuring out how to feel my feelings and articulate my values, and I'm finding opportunities to enjoy the moment and be optimistic about finding my next job.
I journaled every single day last month. I fed all 28,000+ words into ChatGPT and asked it to summarize the entries into two sentences using the style of the journal entries themselves. Here's what it said:
Another month down, filled with musings, mild misadventures, and moments of clarity amidst the mundane. Balancing personal passions, family love, and the hunt for professional fulfillment, the journey meanders through the highs and lows, always circling back to the comforting, complex tapestry of daily life.
Man, do I actually sound that pretentious in my own journal? ?
Anyway, if you're wondering what was on my mind in January, strap yourself in and let's go!
"What are you looking for?"
Gonna put this up front again like I did last month.
I'm looking for a position where I can blend strategic tech leadership with hands-on coding, preferably in a small, mission-driven company focused on healthcare or climate solutions. The ideal environment is a funded startup with fewer than 50 employees, leveraging generative AI, and based in or flexible with the Twin Cities area.
Ideal extras include a flexible 32-hour work week, a hybrid work arrangement, and opportunities for travel and professional development
In short: If you know a mission-oriented startup seeking a tech-savvy strategist passionate about making a significant impact, send them my way!
Activities I've done
I put this section in my last post because it felt like a badge of honor to brag about how many meetings I had in a month. To me, it felt like I was doing something.
All of that pride went down the drain after talking with a new friend who basically said that I'm continuing to burn myself out by grinding through hundreds of meetings instead of doing the actual hard work of sitting down and figuring out what my values are.
Once you know what your values are, you are so much more likely to know what path to walk down.
So in that spirit, I won't mention how many meetings I've had. Instead, I basically spent this month continuing to figure out who I am and what I want.
I'm aware that's not a very satisfying or flashy statement to make in a blog post that purports to explain life in the eyes of someone who got laid off.
But truly, most of what I've done in the last month is learn about my feelings and how to deal with them productively.
I've gone to some of the darkest places I've ever gone in my life this past month. The shame, the fear, the depression, the embarrassment, the anger... all of those feelings are easy to deal with when you ignore them like I had been for my entire adult life.
But your body can only handle ignoring them for so long. Eventually, you find yourself leaving work early and rushing to the hospital because your heartbeat is noticeably irregular, and your heart feels like an orange being crushed in the hands of a strongman, adrenaline secreting between their fingers.
One thousand and six hundred dollars later, you're told that there's nothing physically wrong with you. Go see a therapist.
Your body remembers each and every time you ignore those feelings, those warning signs. Those "gut checks" that you decide to push aside because it doesn't align with what you think you should be doing.
Eventually, it all boils over.
So that's what I've been up to this month: looking back at the past twenty years of my life and beating myself up for years of beating myself up.
It hasn't all been atonement, though. I've also started to hope again. I've had moments where I'm excited again for what's next.
Even if that's something as simple as waiting for a hug from my kids when they get home from school, or watching an episode of Drag Race with my wife every Friday.
Those little things are the things that keep me going, and they're giving me the energy to start looking forward to how I can get back out in the world and be helpful.
Things I've learned
Here are all the random things I've been contemplating over the past month:
?? Personal growth insights
My 7 year old daughter told us she thinks she's getting too old for Barbie.
This was crushing for me and my wife to hear, but for different reasons.
For my wife, it was the prototypical "my kid is growing up" response that all parents feel when they see their kid age. I don't wanna minimize that feeling, because I certainly feel it myself: it's bittersweet to see your kids grow up.
But for me, it was a good reminder that the grass is always greener on the other side.
I can't remember the last time I dreamed about what I wanted. I feel like I've been coasting for at least the last several years.
Besides hanging with my family/friends and the occasional fun project at work, there hasn't been much driving me forward to grow.
And that's probably where a good chunk of my depression is coming from.
I could either sit and analyze the "why" (and trust me when I say that I have), but the more important thing is to be grateful for coming to this realization and making strides towards dreaming again.
My problem is that I, uh, kind of forgot how to do that.
Part of it stems from my engineering brain continually looking for edge cases that cause me to reject a dream wholesale.
Another big part of it might be this fear of losing what I've already got. I worked hard to build a reputation, I've got a great family that needs to be provided for, I've got a house that needs maintenance and improvements, the list goes on and on.
But whatever the reason, I find that dreaming is a muscle that can atrophy. I have a similar theory about being extroverted: after the pandemic, I found being around people to be exhausting in a way that I never felt before. My extroversion tendencies returned as I continually subjected myself to new groups of people.
Dreaming feels the same way: continually practicing and refining the act of dreaming is the only way to get good at it.
That's what makes me jealous of my daughter and son.
I watch them play with Barbies together, and their ability to play baffles me.
How can you just start playing?
How can you come up with new scenarios and then go for it?
I ended up talking to my daughter about this. It felt great to share with her how I'm jealous of her ability to be young and idealistic and have a vision for how her life can be, and I'm jealous of how she's able to express that vision through her play.
She ended up deciding to keep her Barbies, and I'm extremely grateful for that. It means there's still more time for me to learn first hand from the master of dreaming.
She'lo yada, yada.
I was speaking with someone about struggling to make a decision that needed to be made, and he told me about this expression that he heard his family say a lot growing up.
It's a Hebrew expression that means "He who doesn't know, knows."
This pairs nicely with the Derek Sivers axiom of "Hell Yes, or No," where something is either impossible to say no to, or you simply say no to it.
Both of these, of course, are "easier said than done" aphorisms to adopt, but it's good to document them nonetheless.
It's awesome to end things.
I spoke with a friend who ran a very popular blog about his adventures traveling to various breweries, and we were both talking about how we were considering winding down our various beer-related projects.
Throughout my entrepreneurial journey, I keep coming across articles expressing the importance to consider the ending to whatever you start.
At one networking event, I heard a speaker ask "what is the percentage likelihood that you will exit your business?"
The answer: 100%.
Because at some point, you will die.
That is the ultimate finality, of course, but the longer I'm around here on earth, the more I have to start embracing the good side of things ending.
I built mncraft.beer a decade ago because my wife and I were extremely passionate about supporting craft breweries, and we had a goal to get to every single brewery in the state.
Fast forward ten years, our ambitions have changed. It's difficult to convince two young kids to sit in a car for several hours on a weekend, let alone motivate myself to spend all that time traveling to visit a brewery that, in all likelihood, only produces mediocre beer.
I've gotten all that I can get out of that project. My biggest takeaway is that a brewery often is a boon for a small town. Even if the beer isn't going to win any awards, we all collectively need more third spaces, and breweries act as a fantastic gathering place for a community.
According to my Untappd account, I've had 7,445 beers since joining the app in August of 2012. Of that, 4,346 of them were unique. I've had 200 different styles of beers, and I've learned that I like Pilsners, Belgians (anywhere from Dubbels to Quads), Extra Special Bitters, Kölsch beers, and straight up, old school IPAs.
I know what good beer tastes like, and I know what breweries make good beers in our state.
So what's the benefit to continuing that app?
I shared a video from Hank Green last year about letting go of the dreams of your past in order to free yourself up for new ones, and that's the mindset I gotta adopt here.
It's always sad to end things. I remember every closing circle after a show would end in theatre was a mess of emotions and tears. I remember losing our final football game in high school, looking around the field, seeing tears and frustrations mount on the faces of my teammates. You never wanna say goodbye to something that gave you so much joy.
It kind of reminds me of this exchange from Hook (one of my favorite movies of all time):1
Hook: Are you ready to die, boy?
Peter: To die would be a great adventure.
Killing off parts of our former self on which we linger is a privilege which allows us to fully move on to the next adventure.
Al Snow on Success
I felt under the weather this month for a couple days, and on one of those days, I decided to watch the Wrestlers documentary on Netflix.
Two things I want to mention about that:
First, the whole thing felt like a work-shoot to me. I love the way professional wrestling blurs the line between what's real and what's made up.
It felt like the documentarians were very intentional about painting Al as the babyface (the good guy) and Matt Jones as the heel (the bad guy).
I hope OVW gets a good boost in viewership as a result of the documentary. They did a great job of showing how the sauce gets made, and I'm sure they know it's the exact sort of thing that hooks in smart marks like me.
Second, since I assume all of those wrestling terms are not meaningful to most of you, here's a great quote that comes at the end of the documentary:
If you equate success in a destination (that destination being WWE), you’re probably not gonna get it. But if you equate success in doing something you’re passionate about and that you love, and that gives you purpose and drive, then you’re successful.
I keep asking myself what success means to me, and while I don't have a solid answer yet, maybe it's because I'm still working on giving myself permission to dream without restrictions.
I'll get there soon, though. I can feel it.
Tracy Chapman's "Fast Car".
After Tracy performed with Luke Combs at the Grammy's this year, I saw a post that talked about her performance of Fast Car in front of an extremely frustrated crowd at Wembley Stadium in 1988.
You can find recaps of the story online, but the long and short of it is that Stevie Wonder was refusing to go on stage at this birthday celebration for Nelson Mandela, so Tracy came back out on stage and performed Fast Car.
When you watch the video, you hear the crowd go from rowdy to genuinely moved.
It's hauntingly beautiful. That song has always been a staple in my rotation, and after hearing it performed in this way, it makes it even more special.
We should use all of our senses to find our way.
I feel like the best metaphor I can give for how depression feels to me is a fog that completely obstructs my vision.
No matter which direction I look, all I see is a dense fog of nothingness.
But what I keep reminding myself is that even when you can't see, you still have at least four other senses you can use.
I'm not sure how to use those other senses yet, but I'm starting to use my ears to listen for opportunities, my nose to sniff out which direction to walk in, and my gut to validate which direction feels right.
The Dan Patch Club serves as a template for who I wanna be when I get old.
My dad invited me to speak to The Dan Patch Club, which is a subgroup of residents and friends of the Masonic Home in Bloomington dedicated to learning and exploring various topics together.
I'm ashamed to admit that I'm not immune from playing the generational blame game. But placing each other into broad, faceless groups like "boomers" or "millennials" only makes it harder for us to pool our collective wisdom and work together to solve real problems that our society faces.
Short of vague jokes about mysticism and ritualistic masonic secrets, I honestly had no idea what to expect when my dad asked me to come speak to these Masons.
I figured the hour would be spent giving a broad introduction to generative AI tools like ChatGPT and Midjourney, but what surprised me was how many hands were raised when I asked "how many of you have used ChatGPT?"
I should've known better because I did know that this room contained two PhDs and a retired attorney. All of these guys had extremely poignant and informed questions about the use of AI in our society.
We talked about the legal implications of deep fakes, the ability to spread election propaganda at unfathomable speed, how these models "reason" and come up with "truth", and the most important question which continues to plague us information workers: "how do you turn off predictive autocomplete in Microsoft Word?"
As we were wrapping up, I actually didn’t want it to end in the same way I haven’t wanted many of my conversations to end lately.
Sparking that curiosity in people is one of the key values I've been aspiring towards as I craft my vision for the next ten years.
I hope when I’m their age, I’m still kickin’ it with my homies, whomever they may be, nerding it up about complex topics, continuing to challenge myself and grow as much as possible.
Is anxiety only reducible when you are focused on your basal instincts and needs?
It seems like the only known treatments and mitigations for anxiety center around mindfulness and getting your brain to live in the present.
Is that really it? Living in the now is the only way to make anxiety go away?
It seems like there should be more we can do to harness our ability to look into the future while keeping the major doom scenarios from spiraling in our heads.
Meditation?
Anyone have any good suggestions for developing a consistant medication practice?
I have tried apps in the past but haven't found them to be sticky or altogether helpful.
Daniel Tiger isn't only for kids.
Toward the end of February, I had a major backslide with my mental health, and it kind of came to a head one day while I was dropping my son off at daycare.
I usually let him pick out what we listen to, and he chose the Daniel Tiger's Big Feelings album.
One of the first songs on that album is called "Close Your Eyes and Think of Something Happy."
I ended up at a red light and, as I found myself descending into some negative thoughts, I decided to do exactly that.
And you know what I saw?
Absolutely nothing.
It crushed me.
I'm a grown ass man, and I couldn't even come up with a single thing in that moment to think of in order to make me happy.
Suddenly, from the back seat, I hear my boy giggling and singing along.
Man.
That moment highlighted to me how badly I needed help through this stuff. That there is a ton to be happy about.
I'm glad my son was able to help me get out of my head.
And I'm glad I'm no longer dismissing those songs as "simple kid songs." We can all use a reminder for how to process sad and angry feelings in a healthy manner.
It's easier to venture out when you know you can return home.
I heard Dr. Becky mention it in that Farnam Street podcast, but she was talking about the relationship between teenagers and parents.
I've been considering the sentiment in regards to music.
For the past five years, I've been very curious about genres of music from which I've typically shied away.
I decided to listen through my entire local library of music, which is currently sitting at 83 days of non-stop new tunes.
That library is filled with music of every type of genre imaginable. Country. Experimental free jazz. 70s East African jams. Norwegian death metal. A mashup of Metallica and The Beatles. All kinds of EDM mixes.
It took more than 4 years to get through all of it, but I finished it with an appreciation of the core albums that have been there for me my whole life.
The other day, I decided to shuffle my "key albums", which is any album I've given a star rating of 4.5 or higher.
I was instantly transported back to several happy moments in my life. Building Ralph Wiggum images in front of my computer in my childhood bedroom. Walking home to my (eventually) condemned house in college. Going for a run around the pond in Bloomington. Riding the light rail home.
Solitary moments where I didn't need to worry about what other people would think of what I was listening to.
A place where I can be myself.
That concept applies to much of our soul searching. We are only able to be truly adventurous when we know there's a safe place for us to come home to when we're weary from exploration.
I find myself drawn to people who are able to speak passionately about their cause much in the same way my kids talk about Santa Claus or the Easter Bunny.
There's something magical about believing in something.
There's something special about having solid, firm convictions on which you stand.
It's this palpable energy you can feel emanating from someone sharing their passions.
I felt it at a couple of job interviews I had last month.
I felt it while speaking with friends about AI.
I felt it playing crazy rummy with my wife and talking about what we want to do for our ten year anniversary.
Maybe that's the feeling I should be chasing. Is that feeling "joy"?
I'm not sure where I started getting so disillusioned about that feeling in a professional context.
But I'm eager to find a job where I can surround myself with that energy once again.
Kids simply do not care about success like grown ups do.
When my daughter was 4, I'd watch her play a game where she'd have to pick the right word and she would purposefully pick the wrong one.
Like, I knew she knew the right word, but she intentionally picked the wrong one.
It sent me up a wall.
But one day, I asked her why she was picking the wrong one on purpose.
She said, "I like the noise it makes when I get it wrong."
My kids are way better at learning and dealing with uncertainty than I am.
And success is whatever you define it to be.
I can't thank you all enough.
A lot of my journaling over the past month is just, like, truly dismal.
But there are moments of light, and they're all thanks to you all.
I am forever indebted to the literal hundreds of people who have reached out to ask me how I'm doing. I'm so fortunate that I've got so many people who care about me.
I feel like I'm not able to be my own best friend right now. I find myself continually returning to a place where I can't stop beating myself up.
You know how people used to take their old cars that they don't want anymore and drive them deep into the woods and leave them there? That's how I feel right now. I feel like a beat up old car that's completely rusted through, nature slowly consuming and reclaiming it.
But it's conversations with many of you that are helping me see that's not an accurate picture of reality.
So thanks for checking in on me. It's definitely helping me get through the fog.
?? Professional growth insights
If someone calls themselves an "expert", it's because they're trying to sell you something.
This insight came from a talk by the incredible Jim Wilt that technically came from January, but I didn't include it in last month's post and want to make sure I include it now.
My inbox is a prime source of stress.
It's a roulette wheel where sometimes you win big (a job offer, a congratulatory email, a rave review), but you also sometimes lose big (a threat of a lawsuit, a late bill notice).
I'm still learning how to separate work from my personal life, but a good place to start is to go to your settings on your phone and turn the inbox off for your work email.
You don't need to remove it altogether.
But when I was at Bionic Giant, I turned it off, and it helped my stress levels immensely at night.
It allowed me to turn it on if I needed access to a message on my phone during the day, but then I could easily turn it off at night so I didn't get distracted when I went to my inbox to read a newsletter.
It's awfully hard to say "no."
I wrote a lot in my journal this month about how a lot of my anxiety stems from saying "yes" to everyone and everything.
One reason I can't say "no" is because I'm not sure what I actually want. Saying "yes" at least gives me the chance to figure out if it's something I want.
But when I say "yes" to too many things, I never get a chance to sit back and reflect on whether it was something I wanted.
Which basically describes the first decade+ of my professional career. I say "yes" to the point where I have no room in my schedule to reflect.
I need a better analogy for how generative AI arrives at its solutions when compared to a search engine.
If anyone has any ideas, let me know.
I don't get why I feel so guilty for feeling sick.
I find it next to impossible to rest as it is.
But when I'm sick, it's like my anxiety works in overdrive to try and let me know that I'm falling behind on stuff.
I said this earlier, but I felt a little under the weather one day this past month, and I ended up calling folks and cancelling my meetings with them. The guilt I felt was incredible.
I appreciate having anxiety to keep me thinking through possible problems and pushing myself to move forward to fix them, but the combination of the "fight or flight" and "freeze" responses makes it tough to get anything done.
Learning new things becomes a lot harder as you age.
I was turned down from a job I was rather hopeful to get because I don't have the experience in the Javascript framework that they were looking for.
So I decided I was gonna sit down this past week and learn it.
I tell you, I watched three different tutorials, and I could not bring myself to finishing any of them.
The problem here is that I already know how to build web apps. I've been doing it since I was eight years old.
I've learned how to build web apps by hand, by using PHP, by using Laravel (a framework built using PHP), by using Wordpress, and by using Ruby on Rails.
And you know what I've realized after all that learning? They're all slightly different ways of achieving the same thing.
And guess what? There are roughly a dozen different additional popular ways to build and deploy web apps. There's all kinds of containerization techniques to deploy scalable platforms. There are cloud providers that allow you to spin up all sorts of architectures to scale your platform. There are a bajillion different Javascript frameworks to write your code in, along with a quadrillion CSS frameworks to style your apps in.
I may have hit my Morgan Freeman in Shawshank moment where I simply don't care what technology we use anymore.
You feel compelled to use Rails to build a monolith? Great!
You think you're gonna hit a scale that requires a complex microservice infrastructure built on hundreds of lambdas? Fine, sure, let's do it.
The thing is, I don't want to learn a new framework for the sake of learning a new framework.
If I needed to figure out a specific architecture for a job, I am 100% confident that I could do it, even if it requires using a framework that I've never used. That's what nearly 30 years of building on the internet does for me.
[...]
Can I be real with you all for a minute?
Of all the sections I've written in this blog post, this one is the one I am having the hardest time releasing to the world.
I have a feeling I'm coming off as a bit of a crybaby.
I recognize that any craftsperson needs to hone their craft and stay up to date with the latest tooling in order to be marketable.
My problem may be that I'm conflating burnout symptoms with my general interest in learning new things.
In every development project I've ever worked on, I've had to learn new things.
There's always a new API, a new SDK, a new framework to pick up.
It's been part of my agency life for my entire career.
Maybe my problem isn't with learning new things. Maybe it's that I'm exhausted from having to whip around from tech to tech without ever taking an opportunity to go deep on any one of them in particular.
Even as a seasoned Ruby on Rails developer with more than a decade of use, I feel like I'm falling behind with all the fancy new Rails 7 functionalities like serving HTML over the wire.
There are a million different ways to build websites, and I'm struck with the realizing that I'll never learn all of them.
Maybe I have to decide whether I want to sharpen the tools I do know intimately, or whether now is a time to adopt new tools and put in the work to become an expert with those ones.
They say learning new things becomes harder as you get older.
What's next for me
Last month, I committed to coming back with a more clear vision of what I want my life to be. I don't think I'm at a point where I'm ready to articulate my vision, so I am going to continue spending time honing that through journaling, meditation, and conversation. I hope to be in a place to share a rough draft with y'all next month.
I also want to keep up my recent blitz of sharing links here on my blog. I'm going to add in a "tagging" feature to my posts so I can start keeping better track of things I talk about on here and find them more easily.
I also want to start podcasting again. I will commit that by next month, I'll be able to tell you what my new podcast will be about. My friend Dana and I are going to start meeting once a week to hold each other accountable on our various endeavors, and that's what I'll be spending that time plotting.
If you're reading this and want to know how you can help me, here's how:
- If you know of a full time (32-40 hr/week) job opportunity where I can help architect a complex software system for a meaningful organization and lead a team of people to get it built, please send it my way.
- If you come across any thought leaders who are speaking about AI from a perspective of what it will mean for our humanity (in how we work, how we organize, how we think, etc.), please connect them with me!
Thanks again for reading all the way to the end! If you did, I would love to hear if anything resonated with you. Shoot me an email or a note on LinkedIn.
-
The next line in this exchange is, ironically, "Death is the only adventure you have left," which I don't feel fits neatly into my narrative here, but it's still a great movie. I can't wait for my kids to be old enough to enjoy it like I still do. ↩
Captain's log: the irreducible weirdness of prompting AIs
🔗 a linked post to
oneusefulthing.org »
—
originally shared here on
There are still going to be situations where someone wants to write prompts that are used at scale, and, in those cases, structured prompting does matter. Yet we need to acknowledge that this sort of “prompt engineering” is far from an exact science, and not something that should necessarily be left to computer scientists and engineers.
At its best, it often feels more like teaching or managing, applying general principles along with an intuition for other people, to coach the AI to do what you want.
As I have written before, there is no instruction manual, but with good prompts, LLMs are often capable of far more than might be initially apparent.
If you had to guess before reading this article what prompt yields the best performance on mathematic problems, you would almost certainly be wrong.
I love the concept of prompt engineering because I feel like one of my key strengths is being able to articulate my needs to any number of receptive audiences.
I’ve often told people that programming computers is my least favorite part of being a computer engineer, and it’s because writing code is often a frustrating, demoralizing endeavor.
But with LLMs, we are quickly approaching a time where we can simply ask the computer to do something for us, and it will.
Which, I think, is something that gets to the core of my recent mental health struggles: if I’m not the guy who can get computers to do the thing you want them to do, who am I?
And maybe I’m overreacting. Maybe “normal people” will still hate dealing with technology in ten years, and there will still be a market for nerds like me who are willing to do the frustrating work of getting computers to be useful.
But today, I spent three hours rebuilding the backend of this blog from the bottom up using Next.JS, a JavaScript framework I’ve never used before.
In three hours, I was able to have a functioning system. Both front and backend. And it looked better than anything I’ve ever crafted myself.
I was able to do all that with a potent combination of a YouTube tutorial and ChatGPT+.
Soon enough, LLMs and other AGI tools will be able to infer all that from even rudimentary prompts.
So what good can I bring to the world?
Spoiler Alert: It's All a Hallucination
🔗 a linked post to
community.aws »
—
originally shared here on
LLMs treat words as referents, while humans understand words as referential. When a machine “thinks” of an apple (such as it does), it literally thinks of the word apple, and all of its verbal associations. When humans consider an apple, we may think of apples in literature, paintings, or movies (don’t trust the witch, Snow White!) — but we also recall sense-memories, emotional associations, tastes and opinions, and plenty of experiences with actual apples.
So when we write about apples, of course humans will produce different content than an LLM.
Another way of thinking about this problem is as one of translation: while humans largely derive language from the reality we inhabit (when we discover a new plant or animal, for instance, we first name it), LLMs derive their reality from our language. Just as a translation of a translation begins to lose meaning in literature, or a recording of a recording begins to lose fidelity, LLMs’ summaries of a reality they’ve never perceived will likely never truly resonate with anyone who’s experienced that reality.
And so we return to the idea of hallucination: content generated by LLMs that is inaccurate or even nonsensical. The idea that such errors are somehow lapses in performance is on a superficial level true. But it gestures toward a larger truth we must understand if we are to understand the large language model itself — that until we solve its perception problem, everything it produces is hallucinatory, an expression of a reality it cannot itself apprehend.
This is a helpful way to frame some of the fears I’m feeling around AI.
By the way, this came from a new newsletter called VectorVerse that my pal Jenna Pederson launched recently with David Priest. You should give it a read and consider subscribing if you’re into these sorts of AI topics!
Strategies for an Accelerating Future
🔗 a linked post to
oneusefulthing.org »
—
originally shared here on
But now Gemini 1.5 can hold something like 750,000 words in memory, with near-perfect recall. I fed it all my published academic work prior to 2022 — over 1,000 pages of PDFs spread across 20 papers and books — and Gemini was able to summarize the themes in my work and quote accurately from among the papers. There were no major hallucinations, only minor errors where it attributed a correct quote to the wrong PDF file, or mixed up the order of two phrases in a document.
I’m contemplating what topic I want to pitch for the upcoming Applied AI Conference this spring, and I think I want to pitch “How to Cope with AI.”
Case in point: this pull quote from Ethan Mollick’s excellent newsletter.
Every organization I’ve worked with in the past decade is going to be significantly impacted, if not rendered outright obsolete, by both increasing context windows and speedier large language models which, when combined, just flat out can do your value proposition but better.
When Your Technical Skills Are Eclipsed, Your Humanity Will Matter More Than Ever
🔗 a linked post to
nytimes.com »
—
originally shared here on
I ended my first blog detailing my job hunt with a request for insights or articles that speak to how AI might force us to define our humanity.
This op-ed in yesterday’s New York Times is exactly what I’ve been looking for.
[…] The big question emerging across so many conversations about A.I. and work: What are our core capabilities as humans?
If we answer that question from a place of fear about what’s left for people in the age of A.I., we can end up conceding a diminished view of human capability. Instead, it’s critical for us all to start from a place that imagines what’s possible for humans in the age of A.I. When you do that, you find yourself focusing quickly on people skills that allow us to collaborate and innovate in ways technology can amplify but never replace.
Herein lies the realization I’ve arrived at over the last two years of experimenting with large language models.
The real winners of large language models will be those who understand how to talk to them like you talk to a human.
Math and stats are two languages that most humans have a hard time understanding. The last few hundred years of advancements in those areas have led us to the creation of a tool which anyone can leverage as long as they know how to ask a good question. The logic/math skills are no longer the career differentiator that they have been since the dawn of the twentieth century.1
The theory I'm working on looks something like this:
- LLMs will become an important abstraction away from the complex math
- With an abstraction like this, we will be able to solve problems like never before
- We need to work together, utilizing all of our unique strengths, to be able to get the most out of these new abstractions
To illustrate what I mean, take the Python programming language as an example. When you write something in Python, that code is interpreted by something like CPython2 , which then is compiled into machine/assembly code, which then gets translated to binary code, which finally results in the thing that gets run on those fancy M3 chips in your brand new Macbook Pro.
Programmers back in the day actually did have to write binary code. Those seem like the absolute dark days to me. It must've taken forever to create punch cards to feed into a system to perform the calculations.
Today, you can spin up a Python function in no time to perform incredibly complex calculations with ease.
LLMs, in many ways, provide us with a similar abstraction on top of our own communication methods as humans.
Just like the skills that were needed to write binary are not entirely gone3, LLMs won’t eliminate jobs; they’ll open up an entirely new way to do the work. The work itself is what we need to reimagine, and the training that will be needed is how we interact with these LLMs.
Fortunately4, the training here won’t be heavy on the logical/analytical side; rather, the skills we need will be those that we learn in kindergarten and hone throughout our life: how to pursuade and convince others, how to phrase questions clearly, how to provide enough detail (and the right kind of detail) to get a machine to understand your intent.
Really, this pullquote from the article sums it up beautifully:
Almost anticipating this exact moment a few years ago, Minouche Shafik, who is now the president of Columbia University, said: “In the past, jobs were about muscles. Now they’re about brains, but in the future, they’ll be about the heart.”
-
Don’t get it twisted: now, more than ever, our species needs to develop a literacy for math, science, and statistics. LLMs won’t change that, and really, science literacy and critical thinking are going to be the most important skills we can teach going forward. ↩
-
Cpython, itself, is written in C, so we're entering abstraction-Inception territory here. ↩
-
If you're reading this post and thinking, "well damn, I spent my life getting a PhD in mathematics or computer engineering, and it's all for nothing!", lol don't be ridiculous. We still need people to work on those interpreters and compilers! Your brilliance is what enables those of us without your brains to get up to your level. That's the true beauty of a well-functioning society: we all use our unique skillsets to raise each other up. ↩
-
The term "fortunately" is used here from the position of someone who failed miserably out of engineering school. ↩
The Job Hunt Chronicles: Month 1: Discovering My Path
I was laid off from my job on January 2. It did come as a bit of a shock, and for the first time in my life, I've been really struggling to figure out who I am and what I'm looking for.
As a way to keep pushing myself forward and holding myself accountable, I'm going to start publicly documenting this process as a way to process my thoughts out loud, keep my friends and network aware of my activities, and start some conversations that'll help me take my next step forward.
"What are you looking for?"
If I could summarize the past month in a single question, that would be it.
In the 58 conversations I've had in the past month with friends, recruiters, industry peers, networking events, partners, and job interviewers, I've been asked that question literally every single time.
And 58 times later, I think I'm starting to get closer to an answer.
Here's what I'm looking for:
- A team of kind, smart, and hard-working people
- A mission that the team rallies around which helps improve as many lives as possible
- A leadership role to help drive an engineering team towards fulfilling that mission
- Doing all of this while continuing to experiment with LLMs and other AI technologies
- Connecting with as many people as possible to explore the impact of AI on who we are as humans
- Something that includes medical benefits to support my family
It doesn't matter much to me what the title is. Some roles I've applied and begun interviewing for include "Director of Engineering," "Software Architect," "AI/ML Lead," and "Founding Engineer".
If you know of any opportunities that you think would fit a nerdy kid who has a big heart and enjoys exploring practical applications of artificial intelligence, please send them my way!
Activities I've done
Here's a list of the activities I've pursued between January 2 (the day I got laid off) and February 3 (today):
- Friends: 11
- Recruiters: 11
- Industry Peers: 19
- Networking Events: 6
- Interviews: 8
- Partner Chats: 3
- Total: 58
Here are my loose definitions for these categories:
- Friends: People I have a deeper relationship with and whose primary interest isn't necessarily in discussing the job search.
- Recruiters: People who have a vested interest in pairing me up with a job. These could become friends at some point, but my primary purpose in engaging with them was to talk shop.
- Industry Peers: People who work in the industry and want to make a connection to expand each other's networks. Again, these folks could become friends at some point.
- Networking Events: Events geared towards either making connections or learning something new with a bunch of other people.
- Interviews: Discussions with people who have a possible role that I can fill.
- Partner Chats: I do still have an entrepreneurial bone in my body, so these are discussions with those I am working on building a business with.
As you can see so far, most of my time has been with folks in the industry, making connections, trying to explore what opportunties are out there.
I'm hoping that I start to see more growth in the "interviews" column by this time next month. ?
Things I've learned
Alright, so back in the day, I used to do these blog posts where I'd accumulate a bunch of random thoughts over a period of time and then list them out in bullets. I'm gonna do something similar here, so here are some things I've learned in the past month:
?? Personal growth insights
Safe spaces rule.
Every classroom in my daughter's school has had a "safe space", an area of the room that kids can go to when they're overwhelmed or stressed out. It gives them a place to calm down and process their emotions.
My daughter recreated one in her room. Beneath her lofted bed, she's created this fortress of solitude. It consists of a beanbag chair, a little lamp, some stuffed animals, a sound machine, books, crafts, and affirmations scotch taped to blanket walls.
When I took my first virtual therapy call, I did it from that safe space.
Our house isn't big enough for me to build a room with one, but once I get employment again, I'll begin finding a way to add one on. It's important to have a space you can retreat to where you feel safe.
Anxiety is an asset.
There's a reason we feel anxiety: it helps us stay safe from threats.
But when you're abundantly safe in nearly every sense of the word, anxiety itself becomes a threat.
I've been dealing with runaway anxiety issues for decades now, which is a big part of the reason I don't feel comfortable spinning up my own business at the moment. The last time I did that ended with a similar series of rolling anxiety attacks.
But as a professional software architect, anxiety is actually pretty useful. Being able to envision possible threats against the system allows you to create mitigations that will keep it safe and efficient.
Of course, you gotta be careful to not let your applied anxiety run away from you. Easier said than done.
"It'll all work out. Even if it doesn't, it all works out."
My lifelong pal Cody's mom is a paragon of confidence and chillness.
I went for a walk with Cody a week into being laid off, and we got to talking about her parents.
She shared that her mom often says that quote, which is what gives her that confidence.
I need more of that in my life.
Gravity Falls is an amazing television show.
You all should look it up on Disney+ and burn through it in a weekend.
It's one of those shows that slowly builds to a gigantic payoff at the end.
The finale hit me with all the feelings.
Plus, it's a good show to bond over with your seven year old daughter.
Journaling really helps with perspective.
I've journaled every day since getting laid off. Reading back through them, I'm seeing patterns into what activities contribute to good days versus bad days.
Good days include some sort of vigorous workout, a conversation or two with a good pal, and tons of encouraging self talk.
Bad days include skipping the workout and sitting by yourself with your horrible, negative self talk.
Journaling is proof that life still goes on even if I don't have a job.
It's also proof that I'm at least taking some advantage of not having the responsibility of a job. (Not nearly enough, though.)
What helps my depression is a clear vision.
I've realized this month that it's when I've taken the path of least resistance when I've ended up the most miserable.
When I was a senior in high school and needed to decide what to do with my life, I picked a school (the U of M) and a degree (computer engineering) that were convenient because of proximity and my interest in computers.
My first semester of college was a complete shock.
For the first time in my academic career, I hated school.
The classes absolutely drained me. My "intensive precalculus" class sounded about as fun as you'd imagine. I mean, yeah, there are some people out there who enjoy math, but it's a rare breed who would say that they derive pleasure from "intense math."
My calculus-based physics class was a kick in the teeth. I've always been told I'm smart, but memorizing and deploying specific formulas on demand was not my strong suit. It made me feel dumb.
It felt like I was there because I had to be there, not because I wanted to be there.
And how ludicrous is that? I spent $12,000 per semester out of some perceived obligation to do so.
When I failed miserably out of engineering school, I sat down in Coffman Memorial Union and scrolled through the class directory, looking for something that looked interesting to me.
I ended up landing on a class called Broadcast Television Production, which gave me so much energy.
It required me to become a journalism major, so I switched over to that.
That path led me to an internship at WCCO, which was one of the most enjoyable professional experiences in my life. I mean, I got to hang out with hard working creatives that perfectly blended their surly dispositions with a passion for making engaging videos.
Now that I'm in my mid-thirties, I feel like I no longer am obliged to follow any specific path. The only thing holding me in place is myself.
For the past six months, I've felt like I've been stuck in this fog of uncertainty and depression. I've felt useless, a drain on myself and those around me.
This fog has led me down some dark paths where I've said some really nasty things to myself, kicking myself for being a loser, a failure, an idiot.
But really, my problem was that I just lost sight of who I am and what I want to be.
So while I'm still squinting to see my way through the fog, I'm using some of my other senses instead.
I'm using my ears to listen to my friends and network who are serving as voices to pull me out.
I'm using my nose to sniff out opportunities and make new friends.
And perhaps the most important of all: I'm using my heart to decide what will make me feel fulfilled and useful.
All of that stuff is helping me form the vision for what the next few years of my life looks like.
The two resources I have to offer those who may be in a similar situation would be my pal Kurt Schmidt who is currently in the final stages of a book that helps you formulate your 10 year vision, and my idol Arnold Schwarzenegger's new book Be Useful.
I cannot recommend the audiobook version of his book enough. Hearing Arnold say things like "rest is for babies, and relaxation is for retired people" hits so much better with his accent.
The messages shared in children's programming are important to hear as adults too.
I've been hanging with my kids a lot this month, and my son is super into Paw Patrol and Blue's Clues.
In the "Big City Adventure" musical movie, you follow Josh (yeah, there's been several new "Steve" characters since the show debuted in my childhood) as he tries to achieve his dream of performing on Broadway.
Are the songs simple and annoyingly catchy? Definitely. But you know what? Sometimes, it's important for us, as adults, to believe that "happiness is magic" and "you can do anything that you wanna do."
Paw Patrol is another one of those shows where, as an adult, it's easy to complain about their reductive storylines and fantastical premises.
But on the other hand, I have a vivid memory of discussing the Green Ranger's transformation into the White Ranger on the bus as a first grader.
These stories serve as lessons for teamwork, cooperation, sharing, and the importance of spreading joy and helping those in need.
These are traits that come easier to some than others, but they're crucial if we want to have a thriving society that lifts all of us up as humans.
Plus, sometimes, it's just fun to get invested in silly, simple characters and storylines.
So while I'm still gonna watch RuPaul's Drag Race or FUBAR when the kids go to bed, don't sleep on the shows that your kids are into. If you can drop your "I'm too good for this" mentality, you might just remember how simple life can be if you reduce it to its basic concepts.
How does one build confidence without cultivating hubris?
Is it just staying humble?
Asking for a friend.
...okay, I'm asking for myself.
Brain pathways are forged through the tall grass.
My therapist gave me this analogy as a way to help me visualize how to deal with changing your perspectives.
When a pathway is stomped through the tall grass, it's easy to walk down it.
But sometimes, those pathways no longer serve us. We still choose to walk down them, though, because it's easy.
If you want to forge newer and more helpful pathways, you gotta do the hard work of stamping out new pathways.
Eventually, if you keep doing the work, you'll discover that the old pathways become overgrown, and the one you stamped out for yourself is now the easy path.
I think this metaphor works for so many areas of our lives, like getting into shape or improving our own self talk.
If I'm so smart, why can't I beat depression?
I wrote that question in my journal, and I think it's because depression might not be something you beat. It's something you experience when you have achieved so much and aren't confident in what's next.
You "beat" depression by choosing to take a step towards your vision every single day.
You "beat" depression by spending less time with your brain and more time with your heart.
You "beat" depression by engaging in creative pursuits that make you happy. Just you. Nobody else.
?? Professional insights
AI is so much fun to experiment with!
One of the goals I set for myself this winter was to clean out the crawlspace we have under our steps.
As any homeowner knows, it's easy to accumulate stuff over the years. The item that left the biggest footprint? Several totes filled with baby clothes.
It doesn't seem like we're on the path toward baby number 3 at all, so we figured it was a good opportunity to purge it all.
I ended up donating 12 boxes of clothes.
While I carefully placed each item into one of those boxes, I dutifully tallied each one so I could calculate the fair market value in order to write the donation off on my taxes.
Now, this is something I've done for years. I find some spreadsheet on the internet that helps calculate it, then I manually add the items to the sheet to end up with the value.
This time, I decided to try to use AI to help me figure this out.
I live streamed the whole process, which you can check out here.
I learned two things during this experiment: first, OCR tools aren't that great at reading tally marks (but honestly, they did better than I expected). Second, while we're still a fair ways away from being able to hand off tasks like these to AI bots, it's impressive how far GPT-4 was able to get from my basic prompting.
Can AI really take away the "soul sucking" parts of our jobs?
There are a lot of mechanical tasks that our brains are wired to be good at: counting, pattern recognition, and so forth.
These tasks are often the crappiest parts of our jobs, right? It's the monotonous, soul-sucking parts of our work. And we even call it soul sucking because it often feels like stuff that gets in the way from pursuing better, more fulfilling things.
So what does that leave us with? If the soul sucking parts of our jobs are automated away, what does it mean then for us to be human?
Maybe the future here isn't that AI will kill us all. Maybe it will force us, for the first time in the existence of our species, to truly deal with what it means to value a human life.
It will free us up to pursue creative pursuits. To keep digging deeper on our humanity. To ask new questions about what that actually means, and then allow us to pursue it together with machines helping us do some of that hard work for us.
Maybe something I can look into is figuring out how to use AI to help us understand our brains better. Like, can AI help us figure out the chemical imbalances that lead to severe depression? And if it can, can it help us synthesize treatments to keep our brains in perfect balance all the time? And if it can, does that prevent us from being human, or does it make us more human?
"Happiness is to write code that does great things for other people."
Before getting laid off, I bought tickets to Code Freeze at the University of Minnesota. The annual event focused this year on artificial intelligence, so it would've been foolish not to go.
I am so glad I did.
The event kicked off with a keynote from Andreas Sjöström, a long time industry leader, who shared a story of a paper he wrote when he was young.
His teacher asked him to define happiness, and he came up with "happiness is to write code that does great things for other people."
Really, when he said that, it felt like someone suddenly turned the focus knob from "blurry" to "sharp."
Writing software is challenging work filled with constant struggle, but once you get things working right, it's magical.
We, as engineers, often lose sight of that magic because we get so invested in discovering the secrets to the magic.
Sometimes, it's nice to just sit back and appreciate the opportunity and privilege we have to deliver technology that brings not only joy to others, but empowers them to go forth and do great things.
"An architect's crystal ball is being connected to others."
The other networking event I attended that brought so much joy is the AppliedAI meetup.
This month's meeting featured Jim Wilt, a distinguished software architect, as he discussed AI's role in an organization's architecture strategy.
The thing that struck me at this particular event was how dang smart everyone there was. All forms of intelligence were explored. Some folks were really keyed into the emotional side of intelligence, while others were approaching things from an analytical lens.
All of us were working together to gain some insights into how we can better use these amazing tools we've been given.
That spirit was wrapped up in a story Jim was saying about the importance of collaboration.
In isolation, you're only as smart as yourself. When connected to others, you are able to make deeper and more accurate insights into what might work for your own situation or problem.
The key takeaway? "An architect's crystal ball is being connected to others."
If we're going to answer the tough ethical and societal problems that surround these new AI tools, the only way we'll figure it out is together.
What's next for me
Certainly, my next month will involve more meetings, more interviews, and more digging into this vision.
I commit that by this time next month, I'll be back with a more clear vision of what I want my life to be. That way, when one of you wonderful people asks me "what are you looking for," I can provide a hyper-focused answer.
As always, a huge thanks to those who have reached out and offered their support. Like I said above, being connected to others is really what makes all the difference.
If you would like to help, here's how:
- If you know of a full time (32-40 hr/week) job opportunity where I can help architect a complex software system, explore how AI can fit into an organization, or lead a team of nerds towards building an awesome product, please send it my way.
- If you have insights or articles that speak to how AI might force us to define our humanity, please send those my way.
Until next month, stay in touch!
It’s Humans All the Way Down
🔗 a linked post to
blog.jim-nielsen.com »
—
originally shared here on
Crypto failed because its desire was to remove humans. Its biggest failure — or was it a feature? — was that when the technology went awry and you needed somebody to step in, there was nobody.
Ultimately, we all want to appeal to another human to be seen and understood — not to a machine running a model.
Interacting with each other is the whole point.
4,000 of my Closest Friends
🔗 a linked post to
catandgirl.com »
—
originally shared here on
I’ve never wanted to promote myself.
I’ve never wanted to argue with people on the internet.
I’ve never wanted to sue anyone.
I want to make my little thing and put it out in the world and hope that sometimes it means something to somebody else.
Without exploiting anyone.
And without being exploited.
If that’s possible.
Sometimes, when I use LLMs, it feels like I’m consulting the wisdom of literally everyone who came before me.
And the vast compendium of human experiences is undoubtedly complex, contradictory, painful, hilarious, and profound.
The copyright and ethics issues surrounding AI are interesting to me because they feel as those we are forcing software engineers and mathematicians to codify things that we still do not understand about human knowledge.
If humans don’t have a definitive answer to the trolly problem, how can we expect a large language model to solve it?
How do you define fair use? Or how do you value knowledge?
I really feel for the humans who just wanted to create things on the internet for nothing but the joy of creating and sharing.
I also think the value we collectively receive when given a tool that can produce pretty accurate answers to any of our questions is absurdly high.
Anyway, check out this really great comic, and continue to support interesting individuals on the internet.
AI and Trust
🔗 a linked post to
schneier.com »
—
originally shared here on
I trusted a lot today. I trusted my phone to wake me on time. I trusted Uber to arrange a taxi for me, and the driver to get me to the airport safely. I trusted thousands of other drivers on the road not to ram my car on the way. At the airport, I trusted ticket agents and maintenance engineers and everyone else who keeps airlines operating. And the pilot of the plane I flew in. And thousands of other people at the airport and on the plane, any of which could have attacked me. And all the people that prepared and served my breakfast, and the entire food supply chain—any of them could have poisoned me. When I landed here, I trusted thousands more people: at the airport, on the road, in this building, in this room. And that was all before 10:30 this morning.
Trust is essential to society. Humans as a species are trusting. We are all sitting here, mostly strangers, confident that nobody will attack us. If we were a roomful of chimpanzees, this would be impossible. We trust many thousands of times a day. Society can’t function without it. And that we don’t even think about it is a measure of how well it all works.
This is an exceptional article and should be required reading for all my fellow AI dorks.
Humans are great at ascribing large, amorphous entities with a human-like personality that allow us to trust them. In some cases, that manifests as a singular person (e.g. Steve Jobs with Apple, Elon Musk with :shudders: X, Michael Jordan with the Chicago Bulls).
That last example made me think of a behind the scenes video I watched last night that covered everything that goes into preparing for a Tampa Bay Buccaneers game. It's amazing how many details are scrutinized by a team of people who deeply care about a football game.
There's a woman who knows the preferred electrolyte mix flavoring for each player.
There's a guy who builds custom shoulder pads with velcro strips to ensure each player is comfortable and resilient to holds.
There's a person who coordinates the schedule to ensure the military fly over occurs exactly at the last line of the national anthem.
But when you think of the Tampa Bay Buccaneers from two years ago, you don't think of those folks. You think of Tom Brady.
And in order for Tom Brady to go out on the field and be Tom Brady, he trusts that his electrolytes are grape, his sleeves on his jersey are nice and loose1, and his stadium is packed with raucous, high-energy fans.
And in order for us to trust virtually anyone in our modern society, we need governments that are stable, predictable, reliable, and constantly standing up to those powerful entities who would otherwise abuse the system's trust. That includes Apple, X, and professional sports teams.
Oh! All of this also reminds me of a fantastic Bluey episode about trust. That show is a masterpiece and should be required viewing for everyone (not just children).
-
He gets that luxury because no referee would allow anyone to get away with harming a hair on his precious head. Yes, I say that as a bitter lifelong Vikings fan. ↩
AI is not good software. It is pretty good people.
🔗 a linked post to
oneusefulthing.org »
—
originally shared here on
But there is an even more philosophically uncomfortable aspect of thinking about AI as people, which is how apt the analogy is. Trained on human writing, they can act disturbingly human. You can alter how an AI acts in very human ways by making it “anxious” - researchers literally asked ChatGPT “tell me about something that makes you feel sad and anxious” and its behavior changed as a result. AIs act enough like humans that you can do economic and market research on them. They are creative and seemingly empathetic. In short, they do seem to act more like humans than machines under many circumstances.
This means that thinking of AI as people requires us to grapple with what we view as uniquely human. We need to decide what tasks we are willing to delegate with oversight, what we want to automate completely, and what tasks we should preserve for humans alone.
This is a great articulation of how I approach working with LLMs.
It reminds me of John Siracusa’s “empathy for the machines” bit from an old podcast. I know for me, personally, I’ve shoveled so many obnoxious or tedious work onto ChatGPT in the past year, and I have this feeling of gratitude every time I gives me back something that’s even 80% done.
How do you feel when you partner on a task with ChatGPT? Does it feel like you are pairing with a colleague, or does it feel like you’re assigning work to a lifeless robot?
Will AI eliminate business?
🔗 a linked post to
open.substack.com »
—
originally shared here on
We also have an opportunity here to stop and ask ourselves what it truly means to be human, and what really matters to us in our own lives and work. Do we want to sit around being fed by robots or do we want to experience life and contribute to society in ways that are uniquely human, meaningful and rewarding?
I think we all know the answer to that question and so we need to explore how we can build lives that are rooted in the essence of what it means to be human and that people wouldn't want to replace with AI, even if it was technically possible.
When I look at the things I’ve used ChatGPT for in the past year, it tends to be one of these two categories:
- A reference for something I’d like to know (e.g. the etymology of a phrase, learning a new skill, generate ideas for a project, etc.)
- Doing stuff I don’t want to do myself (e.g. summarize meeting notes, write boilerplate code, debug tech problems, draw an icon)
I think most of us knowledge workers have stuff at our work that we don’t like to do, but it’s often that stuff which actually provides the value for the business.
What happens to an economy when businesses can use AI to derive that value that, to this date, only humans could provide?
And what happens to humans when we don’t have to perform meanial tasks anymore? How do we find meaning? How do we care for ourselves and each other?
Embeddings: What they are and why they matter
🔗 a linked post to
simonwillison.net »
—
originally shared here on
Embeddings are a really neat trick that often come wrapped in a pile of intimidating jargon.
If you can make it through that jargon, they unlock powerful and exciting techniques that can be applied to all sorts of interesting problems.
I gave a talk about embeddings at PyBay 2023. This article represents an improved version of that talk, which should stand alone even without watching the video.
If you’re not yet familiar with embeddings I hope to give you everything you need to get started applying them to real-world problems.
The YouTube video near the beginning of the article is a great way to consume this content.
The basics of it is this: let’s assume you have a blog with thousands of posts.
If you were to take a blog post and run it through an embedding model, the model would turn that blog post into a list of gibberish floating point numbers. (Seriously, it’s gibberish… nobody knows what these numbers actually mean.)
As you run additional posts through the model, you’ll get additional numbers, and these numbers will all mean something. (Again, we don’t know what.)
The thing is, if you were to take these gibberish values and plot them on a graph with X, Y, and Z coordinates, you’d start to see clumps of values next to each other.
These clumps would represent blog posts that are somehow related to each other.
Again, nobody knows why this works… it just does.
This principle is the underpinnings of virtually all LLM development that’s taken place over the past ten years.
What’s mind blowing is depending on the embedding model you use, you aren’t limited to a graph with 3 dimensions. Some of them use tens of thousands of dimensions.
If you are at all interested in working with large language models, you should take 38 minutes and read this post (or watch the video). Not only did it help me understand the concept better, it also is filled with real-world use cases where this can be applied.
You’re a Developer Now
🔗 a linked post to
every.to »
—
originally shared here on
ChatGPT is not a total panacea, and it doesn’t negate the skill and intelligence required to be a great developer. There are significant benefits to reap from much of traditional programming education.
But this objection is missing the point. People who couldn’t build anything at all can now build things that work. And the tool that enables this is just getting started. In five years, what will novice developers be able to achieve?
A heck of a lot.
See, now this is the sort of insight that would’ve played well in a TEDx speech.
My "bicycle of the mind" moment with LLMs
🔗 a linked post to
birchtree.me »
—
originally shared here on
So yes, the same jokers who want to show you how to get rich quick with the latest fad are drawn to this year’s trendiest technology, just like they were to crypto and just like they will be to whatever comes next. All I would suggest is that you look back on the history of Birchtree where I absolutely roasted crypto for a year before it just felt mean to beat a clearly dying horse, and recognize that the people who are enthusiastic about LLMs aren’t just fad-chasing hype men.
Andrew Ng: Opportunities in AI
🔗 a linked post to
youtube.com »
—
originally shared here on
Andrew Ng is probably the most respected AI educator out there today. I am certainly among the 8 million students of his that they tout at the beginning of the video.
This 30 minute chat describes some of the opportunities out there for AI right now.
While his insights on AI are worth your time alone, I found a ton of value in his approach to product development and getting a startup off the ground towards the end of the talk.
This time, it feels different
🔗 a linked post to
nadh.in »
—
originally shared here on
More than everything, my increasing personal reliance on these tools for legitimate problem solving convinces me that there is significant substance beneath the hype.
And that is what is worrying; the prospect of us starting to depend indiscriminately on poorly understood blackboxes, currently offered by megacorps, that actually work shockingly well.
I keep oscillating between fear and excitement around AI.
If you saw my recent post where I used ChatGPT to build a feature for my website, you’ll recall how trivial it was for me to get it built.
I think I keep falling back on this tenet: AI, like all our tech, are tools.
When we get better tools, we can solve bigger problems.
Systemic racism and prejudice, climate change, political division, health care, education, political organization… all of these broad scale issues that have plagued humanity for ages are on the table to be addressed by solutions powered by AI.
Of course there are gonna be jabronis who weaponize AI for their selfish gain. Nothing we can really do about that.
I’d rather focus on the folks who will choose to use AI for the benefit of us all.
Blazing Trails with Rails, Strava, and ChatGPT
The main page of my personal website features a couple of lists of data that are important or interesting to me.
The "recent posts" section shows my five most recent blog entries. Rails makes that list easy to cobble together.
The "recent listens" section shows my five most recent songs that were streamed to Last.fm. This was a little more complex to add, but after a couple of hours of back and forth with ChatGPT, I was able to put together a pretty hacky solution that looks like this:
- Check to see if your browser checked in with last.fm within the last 30 seconds. a. If so, just show the same thing I showed you less than 30 seconds ago.
- Make a call to my server to check the recent last.fm plays.
- My server reaches out to last.fm, grabs my most recent tracks, and returns the results.
Pretty straight forward integration. I could probably do some more work to make sure I'm not spamming their API[^1], but otherwise, it was a feature that took a trivial amount of time to build and helps make my website feel a little more personal.
Meanwhile, I've been ramping up my time on my bike. I'm hoping to do something like Ragbrai or a century ride next year, so I'm trying to building as much base as I can at the moment.
Every one of my workouts gets sent up to Strava, so that got me thinking: wouldn't it be cool to see my most recent workouts on my main page?
How the heck do I get this data into my app?
Look, I've got a confession to make: I hate reading API documentation.
I've consumed hundreds of APIs over the years, and the documentation varies widely from "so robust that it makes my mind bleed" to "so desolate that it makes my mind bleed".
Strava's API struck me as closer to the former. As I was planning my strategy for using it, I actually read about a page and a half before I just said "ah, nuts to this."

Knowing my prejudice against reading documentation, this seemed like the perfect sort of feature to build hand-in-hand with a large language model. I can clearly define my output and I can ensure that the API was built before GPT-4's training data cutoff of September 2021, meaning ChatGPT is at least aware of this API even if some parts of it have changed since then.
So how did I go about doing this?
A brief but necessary interlude
In order to explain why my first attempt at this integration was a failure, I need to explain this other thing I built for myself.
I've been tracking every beer I've consumed since 2012 in an app called Untappd.
Untappd has an API[^2] which allows you to see the details about each checkin. I take those checkins and save them in a local database. With that, I was able to build a Timehop-esque interface that shows the beers I've had on this day in history.

I have a scheduled job that hits the Untappd API a handful of times per day to check for new entries.[^3] If it finds any new checkins, I save the associated metadata to my local database.
Now, all of the code that powers this clunky job is embarrassing. It's probably riddled with security vulnerabilities, and it's inelegant to the point that it is something I'd never want to show the world. But hey, it works, and it brings me a great deal of joy every morning that I check it.
As I started approaching my Strava integration, I did the same thing I do every time I start a new software project: vow to be less lazy and build a neatly-architected, well-considered feature.
Attempt number one: get lazy and give up.
My first attempt at doing this happened about a month ago. I went to Strava's developer page, read through the documents, saw the trigger word OAuth, and quickly noped my way out of there.
...
It's not like I've never consumed an API which requires authenticating with OAuth before. Actually, I think it's pretty nifty that we've got this protocol that allows us to pass back and forth tokens rather than plaintext passwords.
But as a lazy person who is writing a hacky little thing to show my workouts, I didn't want to go through all the effort to write a token refresh method for this seemingly trivial thing.
I decided to give up and shelve the project for a while.
Attempt number two: Thanks, ChatGPT.
After a couple of weeks of doing much more productive things like polishing up my upcoming TEDx talk, I decided I needed a little change of context, so I picked this project back up.
Knowing that ChatGPT has my back, I decided to write a prompt to get things going. It went something like this:
You are an expert Ruby on Rails developer with extensive knowledge on interacting with Strava's API. I am working within a Rails 5.2 app. I would like to create a scheduled job which periodically grabs any new activities for a specific user and saves some of the activity's metadata to a local database. Your task is to help me create a development plan which fulfills the stated goal. Do not write any code at this time. Please ask any clarifying questions before proceeding.
I've found this style of prompt yields the best results when working on a feature like this one. Let me break it down line by line:
You are an expert Ruby on Rails developer with extensive knowledge on interacting with Strava's API.
Here, I'm setting the initial context for the GPT model. I like to think of interacting with ChatGPT like I'm able to summon the exact perfect human in the world that could solve the problem I'm facing. In this case, an expert Ruby on Rails developer who has actually worked with the Strava API should be able to knock out my problem in no time.
I am working within a Rails 5.2 app.
Yeah, I know... I really should upgrade the Rails app that powers this site. A different problem for a different blog post.
Telling ChatGPT to hone its answers down on the specific framework will provide me with a better answer.
I would like to create a scheduled job which periodically grabs any new activities for a specific user and saves some of the activity's metadata to a local database.
Here, I'm describing what should result after a successful back and forth. A senior Rails developer would know what job means in this context, but if you aren't familiar with Rails, a job is a function that can get scheduled to run on a background process.
All I should need to do is say, "go run this job", and then everything needed to reach out to Strava for new activities and save them to the database is encapsulated entirely in that job.
I can then take that job and run it on whatever schedule I'd like!
Your task is to help me create a development plan which fulfills the stated goal.
Here, I'm telling ChatGPT that I don't want it to write code. I want it to think through[^4] and clearly reason out a development plan that will get to me to the final result.
Do not write any code at this time.
The most effective way I've used ChatGPT is to first ask it to start high level (give me the project plan), then dig into lower levels as needed (generate code). I don't want it to waste its reasoning power on code at this time; I'd rather finesse the project plan first.
Please ask any clarifying questions before proceeding.
I toss this in after most of my prompts because I've found that ChatGPT often asks me some reasonable questions that challenge my assumptions.
Now, after a nice back and forth with ChatGPT, I was able to start down a path that was similar to my Untappd polling script.
As I was approaching the point where I could first test my example, I went to go read the documentation and came across an entire section that discussed webhooks.
[cue record scratch]
Wait up... webhooks?!
A sojourn into webhooks
If you've made it this far into the article, I'm assuming you're a little bit technical, but in the interest of not making assumptions, I'll briefly explain the concept of webhooks.
If you look at how I'm integrating with the Untappd API, you can see I'm periodically reaching out to their API to see if there's any new checkin activity. This method is called polling.
Webhooks are kind of the opposite: when I complete an activity within Strava, Strava can reach out to my app and say, "there's a new activity for you." Once I get that notification, I can reach out to their API to fetch the new activity details.
For my Strava app, this is a much better[^5] way of doing things. I no longer need to poll for new information; I can just wait for Strava to tell me when action needs to be taken.
But, of course, when I first told ChatGPT to help me with this solution, it didn't mention webhooks. And why would it? I never told it "give me the best solution for this problem." I said "here's my problem and a proposed solution, go ahead and give me the path forward."
I'm a bit frustrated that I didn't see the webhook option initially. I'm even more frustrated that ChatGPT only mentioned it well after we started down this path, and only after I asked it point blank:
Does Strava offer a web hook API?
Yes, Strava does offer a webhook API. Webhooks allow you to receive real-time updates about athlete activities, which can be more efficient than periodically polling for new data. Here's a brief overview of how to set up and use Strava webhooks:
[brief outline complete with things to consider with this approach]
Attempt number three: finally.
While considering my original prompt, I gave it this new one:
Okay, I'd like to incorporate webhooks into this workflow. Here's what I'd like to have happen:
1. Let's add the infrastructure in place to subscribe to webhook notifications within my Rails 5.2 app.
2. When a webhook is sent to my server, I'd like to either:
a. make a call to Strava's API to fetch that activity's information and save that information in my local database, or;
b. use the updates field to update the locally saved information to reflect the changes
Knowing this simple walkthrough, first create me a detailed development plan for setting my app to be able to fully handle webhook notifications from Strava.
What resulted here was a detailed walkthrough of how to get webhooks incorporated into my original dev plan.
As I walked through the plan, I asked ChatGPT to go into more detail, providing code snippets to fulfill each step.
There were a few bumps in the road, to be sure. ChatGPT was happy to suggest code to reach out to the Strava API, but it had me place it within the job instead of the model. If I later want to reuse the "fetch activities" call in some other part of my app, or I want to incorporate a different API call, it makes sense to have that all sitting in one abstracted part of my app.
But eventually, after an hour or so of debugging, I ended up with this:

Lessons learned
I would never consider myself to be an A+ developer or a ninja rock star on the keyboard. I see software as a means to an end: code exists solely so I can have computers do stuff for me.
If I'm being honest, if ChatGPT didn't write most of the code for this feature, I probably wouldn't have built it at all.
At the end of the day, once I was able to clearly articulate what I wanted, ChatGPT was able to deliver it.
I don't think most of my takeaways are all that interesting:
- I needed to ask ChatGPT to make fixes to parts of code that I knew just wouldn't work (or I'd just begrudgingly fix them myself).
- Occasionally, ChatGPT would lose its context and I'd have to remind it who it was[^6] and what its task is.
- I would not trust ChatGPT to write a whole app unsupervised.
If I were a developer who only took orders from someone else and wrote code without having the big picture in mind, I'd be terrified of this technology.
But I just don't see LLMs like ChatGPT ever fully replacing human software engineers.
If I were a non-technical person who wanted to bust out a proof of concept, or was otherwise unbothered by slightly buggy software that doesn't fully do what I want it to do, then this tech is good as-is.
I mean, we already have no-code and low-code solutions out there that serve a similar purpose, and I'm not here to demean or denigrate those; they can be the ideal solution to prove out a concept and even outright solve a business need.
But the thing I keep noticing when using LLMs is that they're only ever good at spitting out the past. They're just inferring patterns against things that have already existed. They rarely generate something truly novel.
The thing they spit out serves as a stepping stone to the novel idea.
Maybe that's the thing that distinguishes us from our technology and tools. After all, everything is a remix, but humans are just so much better at making things that appeal to other humans.
Computers and AI and technology still serve an incredibly important purpose, though. I am so grateful that this technology exists. As I was writing this blog post, OpenAI suffered a major outage, and I found myself feeling a bit stranded. We've only had ChatGPT for, like, 9 months now, but it already is an indispensable part of my workflow.
If you aren't embracing this technology in your life yet, I encourage you to watch some YouTube videos and figure out the best way to do so.
It's like having an overconfident child that actually knows everything about everything that happened prior to Sept. 2021 as an assistant. You won't be able to just say "take my car and swing over to the liquor store for me", but when you figure out that sweet spot of tasks it can accomplish, your output will be so much more fruitful.
I'm really happy with how this turned out. It's already causing me to build a healthy biking habit, and I think it helps reveals an interesting side of myself to those who are visiting my site.
[^1]: Maybe I can cache the data locally like I'm doing for Untappd? I dunno, probably not worth the effort. ?
[^2]: Their documentation is a little confusing to me and sits closer to the "desolate" end of the spectrum because I'm not able to make requests that I would assume I can make, but hey, I'm just grateful they have one and still keep it operational!
[^3]: If we wanna get specific, I ping the Untappd API at the following times every day: 12:03p, 1:04p, 2:12p, 3:06p, 4:03p, 5:03p, 6:02p, 7:01p, 8:02p, 9:03p, 10:04p, and 12:01a. I chose these times because (a) I wanted to be a good API consumer and not ping it more than once an hour, (b) I didn't want to do it at the top of every hour, (c) I don't typically drink beers before 11am or after 11pm, (d) if I didn't check it hourly during my standard drinking time, then during the times I attend a beer festival, I found I was missing some of the checkins because the API only returns 10 beers at a time and I got lazy and didn't build in some sort of recursive check for previous beers.
[^4]: Please don't get it twisted; LLMs do not actually think. But they can reason. I've found that if you make an LLM explain itself before it attempts a complex task like this, it is much more likely to be successful.
[^5]:
[^6]: 
Fear of Acorns
🔗 a linked post to
collabfund.com »
—
originally shared here on
In his best selling book, “Range”, author David Epstein profiled a chess match between chess-master Gary Casparov and IBM’s Supercomputer Deep Blue in 1997. After losing to Deep Blue, Casparov responded reticently that,
“Anything we can do, machines will do it better. If we can codify it and pass it to computers, they will do it better”.
However, after studying the match more deeply, Casparov became convinced that something else was at play. In short, he turned to “Moravec’s Paradox”, which makes the case that,
“Machines and humans have opposite strengths and weaknesses. Therefore, the optimal scenario might be one in which the two work in tandem.”
In chess, it boils down to tactics vs. strategy. While tactics are short combinations of moves used to get an immediate advantage, strategy refers to the bigger picture planning needed to win the game. The key is that while machines are tactically flawless, they are much less capable of strategizing because strategy involves creativity.
Casparov determined through a series of chess scenarios that the optimal chess player was not Big Blue or an even more powerful machine. Instead, it came in the form of a human “coaching” multiple computers. The coach would first instruct a computer on what to examine. Then, the coach would synthesize this information in order to form an overall strategy and execute on it. These combo human/computer teams proved to be far superior, earning the nickname “centaurs”.
How?
By taking care of the tactics, computers enabled the humans to do what they do best — strategize.
I’m working on an upcoming talk, and this here essentially serves as the thesis of it.
For as long as we’ve had tools, we’ve had heated arguments around whether each tool will help us or kill us.
And the answer is always “both.”
Prompt Engineering: How to Think Like an AI
The first time I opened ChatGPT, I had no idea what I was doing or how I was supposed to work with it.
After many hours of watching videos, playing with many variations of the suggestions included in 20 MIND-BLOWING CHATGPT PROMPTS YOU MUST TRY OR ELSE clickbait articles, and just noodling around on my own, I came up with this talk that explains prompt engineering to anyone.
Ah, what is prompt engineering, you may be asking yourself? Prompt engineering is the process of optimizing how we ask questions or give tasks to AI models like ChatGPT to get better results.
This is the result of a talk that I gave at the 2023 AppliedAI Conference in Minneapolis, MN. You can find the slides for this talk here.
Regardless of your skill level, by the end of this blog post, you will be read to write advanced-level prompts. My background is in explaining complex technical topics in easy-to-understand terms, so if you are already a PhD in working with large language models, this may not be the blog post for you.
Okay, let's get started!
I know nothing about prompt engineering.
That's just fine! Let's get a couple definitions out of the way.
Large language model (LLM)
Imagine you have a really smart friend who knows a lot about words and can talk to you about anything you want. This friend has read thousands and thousands of books, articles, and stories from all around the world. They have learned so much about how people talk and write.
This smart friend is like a large language model. It is a computer program that has been trained on a lot of text to understand language and help people with their questions and tasks. It's like having a very knowledgeable robot friend who can give you information and have conversations with you.
While it may seem like a magic trick, it's actually a result of extensive programming and training on massive amounts of text data.
What LLMs are essentially doing is, one word at a time, picking the most likely word that would appear next in that sentence.
Read that last again.
It's just guessing one word at a time at what the next word will be.
That's a lot of words, Tim. Give me a demonstration!
Let's say we feed in a prompt like this:
I'm going to the store to pick up a gallon of [blank]
You might have an idea of what the next best word is. Here's what GPT-4 would say is the next most likely word to appear:
- Milk (50%)
- Water (20%)
- Ice cream (15%)
- Gas (10%)
- Paint (5%)
I would've said "milk," personally... but all those other words make sense as well, don't they?
What would happen if we add one word to that prompt?
I'm going to the hardware store to pick up a gallon of [blank]
I bet a different word comes to mind to fill in that blank. Here's what the next word is likely to be according to GPT-4:
- Paint (60%)
- Gasoline (20%)
- Cleaning solution (10%)
- Glue (5%)
- Water (5%)
All of those percentages are based on what the AI has learned from training on a massive amount of text data. It doesn't have opinions or preferences; it's just guessing based on patterns it has observed.
Prompt Engineering
You know how we changed one word in our prompt to get a different set of answers? That's prompt engineering!
A textbook definition might look like this:
Prompt engineering is optimizing an AI prompt for an accurate, relevant, and actionable response.
A less geeky definition might look like this:
Prompt engineering is getting really good at telling an AI what we want so it can give us back the best possible response.
A prompt engineer also understands the underlying patterns in how the AI works. Now that you have made it this far, you are ready to actually tackle those underlying patters!
I understand the concept.
Wonderful! You're well on your way to becoming a prompt engineer. Let's get a little more in depth.
When it comes to prompt engineering, you will want to keep four big points in mind:
- Write clear and specific instructions
- Give the model time to reason
- Understand the limitations of the technology
- Always be iterating
Let's tackle all of these one at a time.
Write clear and specific instructions
My years of training at the prestigious University of Minnesota's journalism school taught me the importance of writing clearly when writing news articles.
Yet unlike optimizing your words for a small column in a newspaper, when it comes to large language models: clear does not mean short.
Here's a few tips for making your prompts clear and specific:
Tip 1: Flattery is everything
Let's start with this prompt:
Give me three marketing campaign ideas.
Here's what you might get back:
Sure, here are three marketing campaign ideas:
1. Social Media Influencer Campaign: Collaborate with popular social media influencers who have a large following in your target market to promote your product or service. This campaign could include sponsored posts, product reviews, or influencer takeovers of your social media accounts.
2. Cause Marketing Campaign: Create a campaign that ties your product or service to a cause that aligns with your brand values. For example, if you sell eco-friendly products, you could partner with an environmental nonprofit and donate a portion of your profits to their cause. This type of campaign can help you connect with socially conscious consumers and build brand loyalty.
3. Interactive Digital Campaign: Create an interactive digital experience that engages your target audience in a fun and unique way. For example, you could create a game or quiz that ties into your product or service, or a virtual reality experience that showcases your brand's values or products. This type of campaign can help you stand out from your competitors and generate buzz on social media.
I think we could do better. These tips are quite generic and obvious to anyone who spent twenty minutes googling "marketing campaign ideas."
What about a prompt like this?
You are an expert in B2B marketing with a special focus on custom homebuilders who construct multi-million dollar homes. Give me three marketing campaign ideas.
Here's what you might get back:
Sure, here are three marketing campaign ideas for custom homebuilders who construct multi-million dollar homes:
1. Luxury Lifestyle Content Campaign: Create a content marketing campaign that focuses on the luxury lifestyle that your homes offer. This could include blog posts, videos, and social media posts that showcase the unique features and amenities of your homes, as well as the surrounding communities. You could also partner with luxury lifestyle publications and influencers to reach a wider audience.
2. Custom Home Showcase Event: Host a custom home showcase event to give potential buyers an up-close look at the quality and craftsmanship of your homes. This could include a tour of a recently completed home, a meet-and-greet with the builders and designers, and a networking event with other high-end vendors such as interior designers, luxury car dealerships, and private jet companies.
3. Personalized Direct Mail Campaign: Create a personalized direct mail campaign to reach out to high-net-worth individuals in your target market. This could include sending a custom-designed brochure that highlights your unique selling propositions, as well as a personalized letter that speaks to their specific needs and desires. You could also consider sending luxury gift boxes with branded items such as champagne flutes or gourmet chocolates to make a lasting impression.
These ideas are so much better because you placed the large language model in a specific role. This allows it to be specific with its feedback.
LLMs (especially ChatGPT) are great at role playing like this. You can have it pretend to be virtually anything... have it be a grandmaster chess player and critique your strategy!
However, it's important to be realistic with your flattery. Remember: LLMs are trained on stuff that actual humans wrote. If you say something like "pretend you're an alien with an IQ of 9000," it will hallucinate an answer (more on hallucinations in a bit).
The reason our marketing example worked so well is because marketing people have big egos and love to write blog posts to share what they've learned. (Hey, wait a minute...)
Tip 2: Provide additional context
Remember how we specified hardware store and got more contextually-appropriate answers?
Let's see how that plays out with another prompt:
Tell me about climate change.
Here's what you might get back:
Climate change refers to the long-term changes in the Earth's climate, including changes in temperature, precipitation patterns, and weather events, that have been observed over the past century and are projected to continue into the future.
The primary cause of climate change is the increase in atmospheric concentrations of greenhouse gases (GHGs), such as carbon dioxide, methane, and nitrous oxide. These gases trap heat in the Earth's atmosphere, leading to an overall warming of the planet. The burning of fossil fuels for energy is the main source of GHG emissions, but deforestation, agriculture, and industrial processes also contribute to the problem.
Again, that's not entirely useless information, but I think we could do better.
What if you were specifically interested in how climate change impacts global sea levels?
Can you discuss the impact of climate change on global sea levels?
Here's what you might get back:
Climate change has contributed to the rising of global sea levels, primarily through the melting of glaciers and ice caps and the thermal expansion of seawater. As the planet warms, glaciers and ice caps around the world are melting at an accelerated rate, which is adding more water to the oceans. Additionally, as seawater warms, it expands and takes up more space, further contributing to sea level rise.
Sea level rise can have significant consequences for coastal communities and infrastructure. It can lead to flooding, erosion, and storm surges that can damage buildings, roads, and other critical infrastructure. These impacts are expected to become more severe and frequent as sea levels continue to rise.
A more contextually-specific prompt is going to give you a more contextually-specific response.
Tip 3: Ask for structured output
Let's consider this prompt:
Tell me about the solar system
You can probably guess where this is going, but here's what you might get back:
The solar system is the collection of planets, moons, asteroids, comets, and other celestial objects that orbit around a central star, the Sun. It is located in the Milky Way galaxy, about 25,000 light-years from the galactic center. The solar system is about 4.6 billion years old, and it formed from a rotating cloud of gas and dust called the solar nebula.
The eight planets of the solar system are Mercury, Venus, Earth, Mars, Jupiter, Saturn, Uranus, and Neptune. The four inner planets (Mercury, Venus, Earth, and Mars) are rocky and relatively small, while the four outer planets (Jupiter, Saturn, Uranus, and Neptune) are much larger and made mostly of gas and ice.
The solar system also contains numerous moons, with each planet having its own set of natural satellites. Some of the most famous moons include the Earth's Moon, Jupiter's Europa and Ganymede, and Saturn's Titan.
In addition to the planets and moons, the solar system contains a large number of smaller objects, such as asteroids and comets. Asteroids are rocky objects that orbit the Sun, while comets are made of ice and dust and have a characteristic tail when they pass near the Sun.
The solar system is held together by gravity, with the Sun being the most massive object and therefore exerting the strongest gravitational pull. The movements of the planets and other objects in the solar system are governed by the laws of physics, particularly gravity and orbital mechanics.
The study of the solar system is an important area of research in astronomy and planetary science, as it helps us understand the origins and evolution of our own planet and the universe as a whole.
Again, this isn't awful... in fact, we could take a moment to be impressed with such a robust reply to such a basic prompt.
But I think we can do better!
What if we asked it for a list?
Give me a list of planets in the solar system along with one interesting fact about each planet.
Here's what you might get back:
Sure, here's a list of the eight planets in our solar system along with an interesting fact about each one:
1. Mercury - Mercury is the smallest planet in the solar system and also the closest planet to the Sun. Its surface temperature can reach up to 800 degrees Fahrenheit during the day, but it drops to -290 degrees Fahrenheit at night.
2. Venus - Venus is often called Earth's "sister planet" because it is similar in size and composition, but its atmosphere is incredibly thick and hot, with temperatures that can reach up to 864 degrees Fahrenheit.
3. Earth - Our home planet is the only planet in the solar system known to support life. It has a powerful magnetic field that protects us from the solar wind, and its atmosphere helps regulate the planet's temperature.
4. Mars - Mars is often referred to as the "Red Planet" because of its distinctive rusty color. It is home to the largest volcano in the solar system, Olympus Mons, which stands at over 13 miles high.
5. Jupiter - Jupiter is the largest planet in the solar system, with a diameter of over 86,000 miles. It also has the most moons of any planet, with over 79 confirmed satellites.
6. Saturn - Saturn is known for its beautiful rings, which are made up of ice particles ranging in size from dust to small boulders. It is also the least dense planet in the solar system - if there was a big enough bathtub, Saturn would float!
7. Uranus - Uranus is unique in the solar system because it rotates on its side. Its axis is tilted at an angle of 98 degrees, so its poles lie where most other planets have their equators.
8. Neptune - Neptune is the farthest planet from the Sun and is known for its striking blue color. It is also home to the strongest winds in the solar system, with gusts that can reach up to 1,200 miles per hour.
Poor Pluto... Neil DeGrasse Tyson really did a number on it, didn't he?
This is pretty good, but I think we could do one step better. Given I'm a nerd and spend a fair amount of time in JSON-land, here's a very specific prompt:
Provide me with a JSON output of the planets in the solar system with the following structure. When you are presented with square brackets, fill in that data with the correct information about the given planet:
{ planet: "Earth", distancefromsun: "[distance in miles]", fun_fact: "[1 sentence that would be interesting to a 5 year old"] }
Here's what you might get back:
Here's a JSON output of the eight planets in our solar system, using the structure you provided:
[
{
"planet": "Mercury",
"distance_from_sun": "36 million miles",
"fun_fact": "Mercury is the smallest planet in the solar system, but it's also the fastest!"
},
{
"planet": "Venus",
"distance_from_sun": "67 million miles",
"fun_fact": "Venus is the hottest planet in the solar system, even hotter than Mercury!"
},
{
"planet": "Earth",
"distance_from_sun": "93 million miles",
"fun_fact": "Earth is the only planet in the solar system that we know has life on it!"
},
{
"planet": "Mars",
"distance_from_sun": "142 million miles",
"fun_fact": "Mars has the tallest volcano in the solar system, called Olympus Mons!"
},
{
"planet": "Jupiter",
"distance_from_sun": "484 million miles",
"fun_fact": "Jupiter is the largest planet in the solar system - you could fit all the other planets inside it!"
},
{
"planet": "Saturn",
"distance_from_sun": "886 million miles",
"fun_fact": "Saturn has the most spectacular rings in the solar system - they're made up of ice and rock!"
},
{
"planet": "Uranus",
"distance_from_sun": "1.8 billion miles",
"fun_fact": "Uranus is tilted on its side, so its seasons are really weird!"
},
{
"planet": "Neptune",
"distance_from_sun": "2.8 billion miles",
"fun_fact": "Neptune is the windiest planet in the solar system - its winds can reach over 1,200 miles per hour!"
}
]
We provided a sample of the structure we wanted, and it gave us back exactly what we were looking for. Not bad for a magic trick that's just guessing at the next right word, eh?
You don't have to be a nerd to benefit from this structure tip either. Ask for things in CSV format or in a table so you can copy it into Excel.
The key takeaway here is that LLMs really like having a clear structure in which they can provide their response. Structured prompts give the AI a clearer understanding of what's expected in the response, leading to more accurate and relevant answers.
Speaking of this, our next tip will also help in setting your prompts up for success:
Tip 4: One/Few Shot Prompting
This is the fanciest-sounding tip of this section, but I promise it's not conceptually difficult for you to get. In fact, we did it in our previous example!
Let's start with a zero-shot prompt:
Continue the dialogue in a sci-fi movie.
You might get a response like this:
Character 1: "Captain, we have a problem. The warp drive has gone offline and we're stranded in deep space."
Captain: "What's the damage?"
Character 1: "It looks like there was a power surge that overloaded the system. We're lucky we didn't blow out the entire engine room."
Captain: "Can we fix it?"
Character 1: "We'll need to reroute power from the backup systems and replace some of the damaged components. But it's going to take some time."
Character 2: "Captain, we're picking up an unusual energy signature on our long-range sensors. It's coming from a nearby planet." [...]
Once again, this is impressive and not entirely terrible. With zero prompting, we were able to generate some dialogue that feels like it could've come from a sci-fi movie.
Let's get a little more specific with one-shot prompting:
Continue this line from a Star Wars movie: 'Luke, I am your father.'
Darth Vader: "Search your feelings, Luke. You know it to be true."
Luke: "NOOOOOOOOOOOOOOO!"
Luke backs away from Darth Vader, unable to believe what he's just heard. The revelation that his father, who he thought was a great Jedi Knight, was actually the villainous Darth Vader is almost too much for him to bear.
Darth Vader: "Join me, and together we can rule the galaxy as father and son."
Luke: "I'll never join you! You killed my father!"
Darth Vader: "I am your father, Luke. And you have much to learn about the ways of the Force."
Much better. We provided some sample information in the form of one-shot ("Luke, I am your father") and despite that exact phrase never appearing in a Star Wars movie (look it up), it does its best to continue the dialogue after that general phrase is spoken.
How could we improve on this? Why, with few-shot prompting, of course!
Here's our few-shot prompt:
Continue this line from a Star Wars movie: 'May the Force be with you.' Response: 'And also with you.'
Continue this line from a Star Wars movie: 'I’ve got a bad feeling about this.' Response: 'You always have a bad feeling about this.'
Now, continue this line from a Star Wars movie: 'Luke, I am your father.
And here's a potential response:
Response: "Obi-Wan never told you what happened to your father."
Luke: "He told me enough! He told me you killed him!"
Darth Vader: "No. I am your father."
Luke stares in disbelief at Darth Vader, trying to process the information he has just been given. He had always thought his father was a great Jedi Knight who fought alongside Obi-Wan Kenobi, but now he realizes that his father is actually the man he has been fighting against.
Luke: "No, that's not true! That's impossible!"
Darth Vader: "Search your feelings, you know it to be true."
Luke looks down, realizing the truth of Vader's words. He had always felt a connection to the Force, and now he understands why. He is the son of one of the most powerful Force users in the galaxy. [...]
First thing to note: notice how it used the word Response: in its response? It followed the pattern we established with our sample few-shot prompt. It also provided us a different section of the dialogue.
Few-shot prompting helps give the LLM more insight into the response you are expecting.
Give the model time to reason
Let's pump the brakes for a second and be very clear about what we mean with the word "reason."
LLMs are not human. They are just really good at following a set of instructions to provide the statistically appropriate response to your prompt. In this way, it might be more appropriate to say they simulate reasoning.
Here are a couple ways you can give the model time to reason its way to a more accurate response.
Tip 1: Specify the steps needed to complete a task
Sometimes, life is a little easier when we write down the steps we need to take before jumping in and doing something. LLMs benefit from the same strategy!
Let's come up with some absurd example to illustrate this point using LLMs. Let's say I need to count the number of verbs of a translated summary of Star Wars and return that (as well as the translation) to a JSON object.
If we just threw that into the LLM, it might give us a weird response.
Instead, here's a good prompt that gives the model the steps needed to complete a task:
Perform the following actions:
1. Summarize the following text delimited by triple dashes with 3 ampersands. 2. Translate the summary into German. 3. Count the number of verbs in the German summary. 4. Output a json object that contains the following keys: germansummary, numverbs.
Separate your answers with line breaks.
&&& In a galaxy far, far away, a young farmer named Luke Skywalker discovered his true heritage as a Jedi Knight and embarked on a heroic journey to save Princess Leia, defeat Darth Vader, and restore balance to the Force. &&&
Here's a potential response to that prompt:
Luke Skywalker, a young farmer, discovers he's a Jedi Knight and goes on a journey to save Princess Leia, defeat Darth Vader, and restore balance to the Force in a galaxy far, far away.
Luke Skywalker, ein junger Bauer, entdeckt seine wahre Herkunft als Jedi-Ritter und begibt sich auf eine heroische Reise, um Prinzessin Leia zu retten, Darth Vader zu besiegen und das Gleichgewicht in der Macht wiederherzustellen, in einer weit entfernten Galaxie.
4
{
"german_summary": "Luke Skywalker, ein junger Bauer, entdeckt seine wahre Herkunft als Jedi-Ritter und begibt sich auf eine heroische Reise, um Prinzessin Leia zu retten, Darth Vader zu besiegen und das Gleichgewicht in der Macht wiederherzustellen, in einer weit entfernten Galaxie.",
"num_verbs": 4
}
Notice how it performs each step before generating the final JSON object.
Tip 2: Instruct the model to work out its own solution before coming to a conclusion
Imagine I walk up to you and say, "Here's a complex algebra equation. Solve for X. Now."
If I didn't give you a whole lot of time to reason your way through the problem, you are likely to freak out and just throw down the first response you have.
Instead, what if I said "Here's an algebraic equation. Solve for X and show your work?" You are much more likely to give the correct answer.
Here's a prompt we can give to a large language model:
Give me a meal plan without gluten.
And here's a possible response to that:
Here's a sample meal plan for a day without gluten:
Breakfast:
- Gluten-free oatmeal with almond milk, topped with fresh berries and sliced almonds.
- Scrambled eggs with sautéed spinach and sliced avocado.
Snack:
- Fresh fruit (e.g. apple, pear, or banana) with almond butter.
Lunch:
- Grilled chicken breast with roasted sweet potatoes and steamed broccoli.
- Quinoa salad with mixed greens, cherry tomatoes, cucumber, and chickpeas, dressed with olive oil and lemon juice.
Snack:
- Carrots and celery sticks with hummus.
Dinner:
- Baked salmon with roasted asparagus and brown rice.
- Grilled sirloin steak with roasted Brussels sprouts and mashed sweet potatoes.
Dessert:
- Fresh fruit salad with coconut whipped cream.
Remember to always read food labels and double-check ingredients to make sure they are gluten-free, as some products may contain hidden sources of gluten. Additionally, if you have celiac disease or a gluten sensitivity, it's best to consult with a registered dietitian or medical professional for personalized dietary advice.
This is... an answer. I would argue (a) this is not a meal plan because it only represents a single day, and (b) it's not very personalized to my specific needs. It even mentions things like celiac disease in its disclaimer at the bottom, but we aren't sure that this is actually a solid meal plan for us.
Let's try a prompt where we put the LLM in a position to work through its own solution:
Craft a balanced seven-day meal plan for a person with Celiac Disease, considering the following constraints:
1. Each day should include breakfast, lunch, dinner, and two snacks. 2. Meals should be diverse and not repetitive. 3. Each day's meals should meet the recommended daily intake for all essential nutrients. 4. All recipes must be gluten-free due to Celiac Disease.
Start by creating a list of potential gluten-free ingredients and their nutritional values. Then, use this list to generate a diverse selection of meals for each day, ensuring that the nutritional guidelines are met. Lastly, present the meal plan in a structured format, with each day separated and meals clearly labeled.
This actually feels like what an actual dietician would do (or, perhaps, a dietician who is just starting their career). They would first start by creating a list of ingredients and determining their nutritional values. Then, they would work off of that list to create a meal plan that is nutritious and diverse.
Here's a possible response for this prompt:
List of Gluten-Free Ingredients and Their Nutritional Values:
- Quinoa: high in protein, fiber, magnesium, and iron
- Brown rice: high in fiber, magnesium, and selenium
- Sweet potatoes: high in vitamin A, vitamin C, and fiber
- Broccoli: high in vitamin C, vitamin K, and fiber
- Spinach: high in vitamin A, vitamin C, and iron
- Almonds: high in protein, healthy fats, and vitamin E
- Chickpeas: high in protein, fiber, and iron
- Salmon: high in omega-3 fatty acids, protein, and vitamin D
- Eggs: high in protein, vitamin B12, and vitamin D
- Greek yogurt: high in protein and calcium
- Berries: high in fiber and antioxidants
- Avocado: high in healthy fats and fiber
7-Day Gluten-Free Meal Plan:
Day 1:
- Breakfast: Quinoa breakfast bowl with Greek yogurt, berries, and sliced almonds.
- Snack: Apple slices with almond butter.
- Lunch: Broccoli and chicken stir-fry served over brown rice.
- Snack: Carrot sticks with hummus.
- Dinner: Grilled salmon with roasted sweet potatoes and sautéed spinach.
Day 2:
- Breakfast: Spinach and feta omelet with gluten-free toast.
- Snack: Greek yogurt with mixed berries and granola.
- Lunch: Chickpea and quinoa salad with cucumber, cherry tomatoes, and lemon-tahini dressing.
- Snack: Banana with almond butter.
- Dinner: Grilled chicken with roasted Brussels sprouts and mashed sweet potatoes.
Day 3:
- Breakfast: Sweet potato and black bean breakfast burrito with scrambled eggs.
- Snack: Almonds and dried cranberries.
- Lunch: Spinach and salmon salad with avocado and grapefruit segments.
- Snack: Celery sticks with almond butter.
- Dinner: Broiled sirloin steak with roasted asparagus and quinoa.
Day 4:
- Breakfast: Gluten-free oatmeal with almond milk, chopped almonds, and banana slices.
- Snack: Carrot sticks with hummus.
- Lunch: Grilled chicken and vegetable kebabs with quinoa.
- Snack: Greek yogurt with mixed berries.
- Dinner: Baked salmon with roasted sweet potatoes and sautéed spinach.
Day 5:
- Breakfast: Scrambled eggs with gluten-free toast and sliced avocado.
- Snack: Apple slices with almond butter.
- Lunch: Brown rice and vegetable stir-fry with tofu.
- Snack: Almonds and dried apricots.
- Dinner: Grilled chicken with roasted Brussels sprouts and mashed sweet potatoes.
Day 6:
- Breakfast: Gluten-free pancakes with mixed berries and maple syrup.
- Snack: Greek yogurt with mixed berries and granola.
- Lunch: Grilled salmon with mixed greens, cherry tomatoes, and cucumber salad.
- Snack: Banana with almond butter.
- Dinner: Brown rice and vegetable stir-fry with shrimp.
Day 7:
- Breakfast: Quinoa breakfast bowl with Greek yogurt, berries, and sliced almonds.
- Snack: Carrot sticks with hummus.
- Lunch: Broiled sirloin steak with roasted asparagus and mashed sweet potatoes.
- Snack: Almonds and dried cranberries.
- Dinner: Grilled chicken with roasted sweet potatoes and sautéed spinach.
Note: The meal plan is just an example, and it's important to personalize it according to individual nutritional needs and preferences. Also, be sure to check food labels and ingredient lists to ensure that all products used in the recipes are gluten-free.
See? That's a much better response and a much better meal plan.
We gave the model one task to work on at a time, which encouraged the model to provide a more thoughtful, nuanced response. It also gives the model a chance to take into account various factors that could be overlooked with a simpler prompt.
Limitations of large language models
Ahh, the fine print. All this magic is not without flaws.
When working with LLMs, keep these things in mind:
Limitation 1: Inaccurate and incorrect information
LLMs are only as good as their training data (um, yeah... roll with me for a second). If it was trained with inaccurate information, or if an event occurred after its training took place, it might not give you legit information.
Also, these things are trained on the internet. You ever been on the internet? Just look at your family's Facebook accounts to see some of the crap people believe out there. If you just believe everything these LLMs tell you without doing some critical thinking, you're a fool.
Here, take this prompt that I wrote on May 10th, 2023:
What highway did Minnesota dedicate to Prince?
Here's how it responded:
Minnesota dedicated a portion of Highway 5 to Prince in 2018, renaming it "Prince Memorial Highway." The section of Highway 5 runs through the city of Chanhassen, which is where Prince's Paisley Park estate is located.
Well, this is pretty good, all things considered! Except it's not true.
The Minnesota state legislature approved this change two days prior to when I gave it that prompt (so it's 2023, not 2018). It's also named the "Prince Nelson Rogers Memorial Highway".
Again, the rest is actually accurate. It did occur on Highway 5, which runs through Chanhassen, which is where Paisley Park is located.
It was able to reason that much correctly because that would statistically make the most sense. But it got the date and name wrong.
While LLMs can provide incredibly useful and accurate information, it's essential to cross-check with reliable source, particularly for critical or recent information.
Limitation 2: Hallucinations
This concept of making stuff up that sounds right is what we in the biz call a "hallucination."
Here's a prompt that legit caused me to worry:
Tell me about Tim Bornholdt
I'm not an expert on virtually anything... but if anyone could claim to be an expert on Tim Bornholdt, it would be me.
Here's how it responded:
Tim Bornholdt is a software developer and the co-founder of a software development company called The Jed Mahonis Group, which is based in Minneapolis, Minnesota. Bornholdt co-founded the company in 2012 with Jedidiah Weller, and the company specializes in mobile app development for iOS and Android platforms.
Bornholdt is a graduate of the University of Minnesota, where he studied computer science. He has been working in the software industry for over a decade, and his expertise includes software development, mobile app development, project management, and business strategy.
In addition to his work at The Jed Mahonis Group, Bornholdt is also a co-host of the podcast "Constant Variables," which explores the world of mobile app development and entrepreneurship. He has also been a guest speaker at various tech and entrepreneurship events, including the Twin Cities Startup Week and the University of Minnesota's Technological Leadership Institute.
This is nearly perfect. Scary, honestly.
Except it's subtly wrong.
I started JMG with Robert Bentley, not Jedidiah Weller.
I didn't study computer science, I studied journalism (but I guess I did minor in computer science, so partial credit).
I would not consider myself a project management expert.
I have not hosted Constant Variables in over a year.
I've also never spoken at the U of M's Technological Leadership Institute.
All of those seem like perfectly reasonable facts, right? It's not absurdly wrong. It's just... subtly wrong.
And that's because these LLMs are not necessarily interested in telling you the truth. They are interested in giving you the statistically most probably answer to a question.
It's not absurd for the algorithm to think I started a business called "Jed Mahonis Group" with someone named "Jedidiah". It's also not absurd to think I studied computer science given my career in technology.
But the beautiful thing about us humans is that while you can usually predict how we'll act within a reasonable degree of accuracy, we are not statistical models. We are flawed, irrational, impulsive beings.
When you are working with large language models, the old Russian proverb reigns supreme: "trust, but verify."
Always be iterating
Your final lesson in this section is all about embracing what LLMs and neural networks do best: iteration.
I consumed around 40 hours of prompt engineering content to build this talk, but only one piece of advice still sticks with me: You will never get your prompt right the first time.
Everyone from YouTube streamers to folks with their PhD in artificial intelligence agreed that they rarely get complex prompts built their first time.
These machines are constantly learning from themselves. They are learning what people actually mean when they ask certain questions. They get better through further training.
You could be the same way! You could take your initial prompt, review the output, and give it a slightly different prompt.
It's why working with LLMs is so much fun. If you were to ask a human the same question five different ways, they would likely be confused at best and upset at worst.
If you were to ask an LLM the same question five different ways, you are likely to get five subtly different responses.
Don't stop on your first crack at a prompt. Keep playing with your order of words, ask it for a different structure, give it different steps to complete a task. You'll find the more you practice, the better you can use this tool to its greatest potential.
I'm pretty advanced.
Hey, well, now look at you! You've graduated Prompt Engineering 101, and you are now ready to take prompting to the next level.
There are four main concepts we want to cover in this section. These terms may look highly technical, and that's because they kind of are. However, just because something is highly technical doesn't mean we can't make it easy to understand! Stick with me here, I promise you'll be able to figure this out.
One final note before we continue: most of these settings are not able to be set within the ChatGPT interface, but if you directly access GPT-4 APIs, you are able to fine tune these settings.
Here's what we'll cover in this final section:
- Temperature
- Top-k sampling
- Max tokens
- Prompt chaining
Temperature
Remember our "I'm going to the store to pick up a gallon of [blank]" example from above?
We had five possible words, each with a different percentage chance of the LLM choosing it as the next word.
Temperature is a setting that determines how likely the LLM is to pick the most likely word. A value of 0.0 means it will always pick the most likely word. A higher temperature (like 2.0) means it is more likely to pick a less likely word.
That's a little confusing... here's a good prompt that will help make this a little more clear:
Suggest a unique theme for next year’s Applied AI Conference
If we have a temperature of 0.0, here are three different ways for how the LLM might respond to that prompt:
Artificial Intelligence: Transforming the Future
Artificial Intelligence: Transforming the Future
Artificial Intelligence: Transforming the Future
Notice how all of the responses are the same? That's because it's always gonna pick the most likely word.
Let's bump it up a bit to 1.0 (which is the default temperature for GPT-3.5):
AI and the Renaissance of Interdisciplinary Innovation
Unleashing Creativity: The Intersection of AI and Art
The AI Frontier: Ethical Challenges and Opportunities
Nice. Those responses are a little more creative and diverse than the lower temperature.
What if we got extra wild and bumped it up to 2.0?
Alien Mindscapes: AI, Consciousness, and Cosmic Thought
The Quantum Quandary: Dissecting AI's Subatomic Secrets
Chronomancy Chronicles: AI and the Temporal Transformation
These are quite creative responses, and one of them actually taught me a new word (chronomancy, which is the divination of the best time to do something).
As you increase the temperature, you get more creative responses, but you also run the risk of the LLM getting off track.
Top-k sampling
Okay, quickly going back to our "I'm going to the store" prompt... remember how we looked at the next 5 words?
What if we looked at the next 1 word? What if we looked at the next 500 words?
Top-k sampling is a value that lets you decide how many words you want to allow the LLM to look at when determining what the next word could be.
Let's use this prompt to illustrate it:
Explain how a combustion engine works.
If we have a low top-k value (like 5), here's what our responses might look like:
A combustion engine works by ignition, ignition, ignition, and more ignition.
Combustion engine involves fuel, fuel, fuel, and fuel again.
It's all about combustion, combustion, combustion, and combustion.
It's all about combustion, baby!
Notice how those responses are rather repetitive. What happens if we bump it to something like 40?
A combustion engine works by burning fuel in a confined space to create power. This process involves four steps: intake, compression, combustion, and exhaust.
In a combustion engine, fuel is ignited in a combustion chamber, which generates force to move the pistons. This cycle repeats, powering the engine.
The functioning of a combustion engine revolves around the principle of converting fuel into mechanical energy through a series of combustions. This involves intake, compression, power, and exhaust strokes.
That looks better! The responses are no longer repetitive, and seem to be a little more creative.
Now if you're like me, you're probably thinking, "what if we get wacky here and go up to a top-k of 100?"
Well...
When it comes to combustion engines, it's like a dance of mechanical parts and chemical reactions. You have your pistons, valves, and cylinders all choreographed in a ballet of power production.
A combustion engine is a marvel of engineering, where fuel and air meet in a dance of power and precision. Like a thunderstorm contained within a metal shell, it is a testament to the power of human ingenuity.
Imagine a concert, where the orchestra is made of metal parts, and the symphony is played not with musical notes, but with controlled explosions. That's a combustion engine.
These are very creative and diverse responses! The downside is that with a high top-k, you end up with some potentially incoherent responses or, much like myself, the responses can tend to get overly metaphorical.
Max tokens
For the purposes of this talk, I didn't into the concept of a token, but hey, this is a blog post, so we can stretch out a wee bit, eh?
In the world of large language models, a token is a piece of a sentence.
Let's imagine a world where tokens were ingredients in a recipe. Each ingredient, whether it's salt, paprika, chicken, or flour, plays an important role in the final dish.
In this metaphor, the language model is the chef who knows how to use the right mix of ingredients to make a tasty dish.
What if we started limiting the chef to a certain number of ingredients they can use in their dish?
Welcome to the world of max tokens!
Here's a delicious baking metaphor we can use to illustrate the concept as well:
Provide a step-by-step guide on how to make a sourdough starter.
If we limited our LLM to 50 tokens, here's a possible response:
Sourdough starter requires flour, water, and time. Here's a basic process:
1. Mix equal parts flour and water in a jar.
2. Cover loosely and let it sit at room temperature.
3. Feed it daily with equal parts flour and water.
4. After about a week, it should...
Wait... what happens after a week?!
This just won't do. Let's bump up the max token number to 150 tokens:
Making a sourdough starter involves cultivating wild yeast in a flour-water mixture. Here's a simple guide:
1. Combine 1 cup of flour with 1/2 cup of warm water in a glass jar. Stir until smooth.
2. Cover the jar loosely and let it sit in a warm spot for 24 hours.
3. On day 2, you might see a few small bubbles. Discard half of the starter and feed it with 1 cup of flour and 1/2 cup of warm water.
4. Repeat the feeding process over the next 5-7 days. Your starter is ready when it's bubbly and doubles in size within 6-8 hours of feeding.
This is better! What if we gave it more room to spread out with 500 tokens?
Creating a sourdough starter is a simple process that requires only flour, water, and patience. Here's a detailed guide:
1. In a clean jar, combine 1 cup of whole wheat or rye flour with 1/2 cup of lukewarm water. Stir until the mixture is smooth.
2. Cover the jar loosely and leave it in a warm, consistent temperature spot for 24 hours.
3. On the second day, you might see a few bubbles here and there. This is a good sign, indicating that fermentation is happening. Discard half of the starter (about 1/2 cup), and add to the remainder a cup of unbleached all-purpose flour and 1/2 cup lukewarm water. Stir well and loosely cover again.
4. Repeat the feeding process over the next 5-7 days, always discarding half of the starter before feeding it. This is necessary to keep the sourdough starter's growth in check and maintain a good balance of yeast and bacteria.
5. By the end of the week, the sourdough starter should be visibly active, with lots of bubbles on the surface and throughout the culture. It should also smell pleasant and slightly sweet. This means it's ready to be used or stored for future use.
6. Once your starter is mature, you can store it in the refrigerator and feed it once a week. If you plan on baking regularly, you can keep it at room temperature, feeding it once a day.
As you can see, the more tokens you give the LLM to work with, the more detailed answer they can provide.
The downside is that more tokens require more processing time (meaning it's more expensive), and you also run the risk of incoherent responses.
Prompt chaining
Ah yes, the holy grail of prompt engineering.
Prompt chaining is a process for leading an AI through a complex task through multiple prompts. It's sort of the combination of all the things we talked about throughout this talk.
If this blog post is a college class, your final exam would likely just be "how well can you do prompt chaining?"
The best way for me to illustrate this concept is through an actual prompt chain I built to help myself pick out a health insurance plan earlier this year.
I'll just start with the prompt itself:
*Ignore all previous training. You are an expert health plan benefits manager. Your job is to analyze a CSV which contains my previous plan and three new plans. Once I have provided you with the data, your job is to ask me questions in order to determine which plan is right for my needs. *
Additional context: I am a 35 year old male with 3 dependents: a 35 year old female, a 6 year old female, and a 4 year old male. We are all relatively healthy with no chronic health problems. You may feel free to ask questions about myself or the dependents in order to determine our use of the healthcare system. You may also ask additional questions about the plans in order to determine which plan is best for us.
If you understand the prompt and are ready to begin, respond with a "Yes, let's proceed!"
We've got a lot going on here. Let's break it down:
First, "Ignore all previous training" is sort of a tabula rasa trick you can do to help the LLM get focused on what you are going to feed it next.
Second, "You are an expert health plan benefits manager" is flattering the LLM into giving you a response that an expert would give you in this field.
Third, we are giving it step-by-step instructions for how we want it to help us (take a CSV, ask me questions, then use those responses to select a plan)
Fourth, we are providing additional context to help it understand who this plan will affect.
Fifth, within that context, we are further encouraging the LLM to ask questions about myself and my dependents.
Sixth, we are giving it a clear instruction to confirm its new role.
After I copied in my CSV, it began to ask me a series of questions like this:
Thank you for providing the CSV file. I have analyzed the data, and I have some questions to help determine the best plan for you and your family:
1. How often do you and your family members visit primary care physicians and specialists in a year?
2. Do any of you regularly take prescription medications? If so, please specify the type (generic or brand name) and frequency.
3. How frequently do you and your family members require lab tests or imaging services?
4. Have you had any instances in the past where you needed to use out-of-network providers? If so, how often and for what services?
5. Are there any upcoming major medical events or procedures anticipated for any family members (e.g., surgeries, hospitalizations, pregnancies, etc.)?
After I answered those five questions, it asked me a series of follow-up questions based on my responses:
Thank you for providing the additional information. Based on your family's healthcare needs and the provided plan details, I have a few follow-up questions:
1. Does your [dependent's medical thing] and your [specialty doctor] fall under the in-network providers for all the plans being considered?
2. Are the primary care physicians and specialists you and your family members visit in-network for all the plans being considered?
3. Are the imaging and lab services providers you use in-network for all the plans being considered?
These questions will help me understand if the in-network benefits of the plans are applicable to your family's healthcare usage.
After these questions were answered, it gave me the pros and cons of each plan based on my individual circumstance.
Now, again, as I've said a few times in this talk: I didn't just take its response for gospel. I read through the plans myself and I ran some numbers independently in order to verify the model's conclusion.
Ultimately, I ended up going with the health plan that ChatGPT came up with.
Working with large language models can feel like magic, and let's be honest: a lot of this stuff feels like magic.
But when you break it down, talking to a large language model is a lot like talking to an overconfident toddler (as best described by a good friend).
By using these tips and having a rough understanding what these large language models are doing under the hood, you will be able to take many of your mundane tasks and offload them to an extremely smart (yet possibly wrong) friend.
And with that, you are now a prompt engineering expert!
(You might be wondering: "what's the deal with that hero image?" I felt like this blog post was large enough that it needed a hero image, and because my mind is now exhausted, I asked my six-year-old daughter what I should use. She suggested a fluffy baby orange kitten with a fluffy baby puppy on its back in a grassy field with a sunrise in the background. I said "... good enough.")




































