This post is a series of seven disjointed but mostly sequential items.
Artificial intelligence has always seemed inaccessible and cultish to me. I don’t have a traditional background in computer science or engineering. The only person I know who makes a living producing artificial intelligence applications has a PhD in linguistics. Most of my exposure to the field of artificial intelligence has come from podcasts, where people over promise and under deliver, whether they’re promising benefits or doom.
Thus, my initial inclination was to be dismissive of ChatGPT, but it felt like there was an onslaught of hype that I couldn’t ignore. It seemed like every podcast I listened to, technical or not, was releasing multiple episodes on ChatGPT and artificial intelligence, and I would regularly get in discussions with real, actual people about using ChatGPT for work and what it means for the future of humans.
Three pieces of content by three different “techfluencers” capture skeptical concepts that I like.
I like this Twitter/X thread by Andre Staltz. In particular:
Next time you're hyped about something, try to imagine the world will adopt only 30% of its potential, wrapped in a boring and mundane use case.— André Staltz (@andrestaltz) May 4, 2023
We hyped robots. In the end, we just got some industrial automation.— André Staltz (@andrestaltz) May 4, 2023
We hyped space exploration. In the end, we just have some satellites orbiting Earth.— André Staltz (@andrestaltz) May 4, 2023
We hyped "Quantified Self". In the end, we just got fitness trackers.— André Staltz (@andrestaltz) May 4, 2023
We hyped the Metaverse. In the end, we just got non-game 3D worlds.— André Staltz (@andrestaltz) May 4, 2023
We hyped NFTs. In the end, we just got boring apes.— André Staltz (@andrestaltz) May 4, 2023
In this video, Stefan Mischook uses an article on a dramatic decrease in the accuracy of ChatGPT in solving math problems to touch on a few concepts.
He asserts that “most people freaking out about ChatGPT generating code aren’t professional developers,” and discusses the “plateauing effect.” Namely, “that whenever a new technology hits the scene, it’s just hit a plateau. The company has been working on the technology for a long time, and didn’t release until it could cause a scene.” He says that his friend still uses an iPhone 1 from 2007, and is able to do most of the things he does with his new iPhone. The “big leap” was just the initial release of smartphones, and subsequent improvements have been relatively minor.
Mischook relates that, per his admittedly limited understanding, a key element of developing an artificial intelligence model is the underlying data supplied, and that the relationship between the data and effectiveness of the model is a “black art.” He states, “when something is an art, you don’t understand all the dynamics within that which you do.” Thus, progress is not inevitable.
At around 7:30 in the video, The Primeagen talks about his experience using ChatGPT in recent Python projects for his work (at Netflix). He says that using ChatGPT results in him taking longer to complete certain tasks than he otherwise would by his typical process of thinking through the problem, reading documentation, etc.
He also states that he feels reluctant to change code written by ChatGPT since he doesn’t understand how it works. He’s more likely to just ask ChatGPT to rewrite code that it previously generated, rather than refactor it himself.
The Primeagen asserts that code might be cheaper to generate with ChatGPT, but is more expensive to maintain. He touches on the poor code quality of ChatGPT’s output, and says that upgrading any application with significant pieces of code written by ChatGPT would effectively take a full rewrite.
He says that, “AI is effectively in crypto hype cycle, NFT. It’s at like 3 weeks into the NFT side.”
Over the summer, I used a 30 day free trial for GitHub Copilot. Copilot can be installed in your editor (I use Neovim), and provides autocomplete suggestions as you type. My understanding is that Copilot uses the OpenAI API, as Microsoft owns both GitHub and a material percentage of OpenAI. It costs $10 per month.
I cancelled my subscription at the end of the trial. Copilot was OK at completing common, repetitive code, one line at a time. However, Copilot misdirected me in the situations where I wanted to use it the most. The project I was working on used libraries I was unfamiliar with, and executed code of certain languages in atypical environments (it was an Ionic React mobile application using SQLite with TypeORM and a Capacitor plug-in I wrote in Kotlin). Copilot was not useful in situations where I wasn’t sure if what needed to be done was technically possible, in situations that involved significant business logic, or even situations where I was just configuring less popular libraries. If I was uncertain on what to do, Copilot was uncertain on what to do.
I would still call Copilot impressive, except for the amount of hype around everything AI. In the context of the hype, I found it disappointing. Even when it was not useful, it could still be a fun experience to code with as a novelty. I found myself hitting “enter” and then waiting to see if the autocomplete suggestion could guess what I was going to type, rather than just typing it. Sometimes Copilot would suggest more than one line of code at a time and I’d just accept it and say to myself, “It’s buckle up time.”
And yet, in December, I reactivated my Copilot account, now paying them money. The hype hasn’t died. I feel like I need to keep checking in on the tools and learning a bit about AI to try not to fall too far behind.
ChatGPT brought together two major tech hype cycles: 1) new product technologies and 2) new ways to code. If you know nothing about coding, one of the things you don’t know is that you can’t just learn a programming language and be set for the rest of your career. Non-technical people recognize how quickly product technology changes, but to me it feels like the way software for that technology is created changes even more frequently (sometimes with no actual benefit to either the end user or the original programmer, sometimes at a big expense to the original programmer a year or so later). I picture it as waves in the ocean. A big wave you can surf might be a new product technology, but there’s an unceasing barrage of smaller waves of new ways to code, of new languages and libraries and frameworks and philosophies to learn.
Many software developers complain that they feel like they’re constantly assessing what new skills to acquire, and that they feel like imposters because they don’t really know that much about “subject X,” yet. If you just come into the office each day and do your job, you’re falling behind. There’s a never-ending list of things you need to learn just enough about to decide whether you need to learn more about them. OpenAI is benefitting from hitting on both hype cycles in the software development community, particularly on the fear of developers that their skills could soon be obsolete.
I recently completed two tutorial courses about integrating the OpenAI API into web applications, First Look: ChatGPT API for Web Developers and Build an AI-Powered Fullstack Next.js App, v3 from Frontend Masters. Both are focused on how to use the OpenAI API in an application, rather than the fundamentals of artificial intelligence or machine learning. The official code repository of the First Look: ChatGPT API for Web Developers is available here, and Build an AI-Powered Fullstack Net.js App, v3 is here.
The OpenAI API presents a challenge of a different kind of black box — of not knowing the form of its response, rather than just not knowing how it works. As a programmer writing a typical user interface that interacts with an API, you would collect information from a user in a structured format, send it off to the API for some transformation or action, and then receive data back in a predictable format (the agreed upon structure in the hand-off is the key element of the name “application programming interface”). Programmatically parsing and using the response from the OpenAI API (or effectively of ChatGPT) can be more difficult for an application than a human, given that you’re mostly just getting back a bunch of text. From your application’s perspective, you were just given back a black box.
What Build an AI-Powered Fullstack Next.js App, v3 demonstrated for me is the process of “prompt engineering.” That is, how a request can be made so that a response from OpenAI can be relatively reliably parsed (in this case, with LangChain and Zod). The example application in the course was a journaling application that used the OpenAI API to analyze the mood of the author of the journal entries.
In 1998, Paul Krugman, an economist and columnist for the New York Times, wrote:
The growth of the Internet will slow drastically, as the flaw in ‘Metcalfe’s law’—which states that the number of potential connections in a network is proportional to the square of the number of participants—becomes apparent: most people have nothing to say to each other! By 2005 or so, it will become clear that the Internet’s impact on the economy has been no greater than the fax machine’s.
I don’t want to be Paul Krugman.
I don’t actually have any idea of what will happen with artificial intelligence in the future. I think that as of right now, ChatGPT and large language model driven products seem to underperform expectations in situations where precision or correctness matters, such as with most application coding projects and math and research, but perform quite well with creative and open-ended tasks. I’m intrigued by tools that enable easier prompt engineering, but I seem to still lack a vision for good projects and products for which artificial intelligence should be applied, other than like, the NSA or CIA using artificial intelligence to sift through all of the data they’ve illegally collected on US citizens throughout the years to select the identities of undesirables to pass on to YouTube and Facebook to be shadow banned (no brainer!).
My qualms stem from the black box nature of how the algorithms are developed, work, and the manner of output. I’m not convinced that significant progress is inevitable and/or coming soon, or that AI will be everywhere. But it could.
From ChatGPT (this was its second attempt, after asking it to keep the conclusion to a single paragraph):
In navigating the labyrinth of artificial intelligence, from the early skepticism fueled by a finance professor’s cautionary tales to the recent immersion in ChatGPT, GitHub Copilot, and the OpenAI API, my journey has been marked by twists of doubt, moments of disappointment, and a perpetual curiosity. As tech influencers like Andre Staltz cast a sobering light on the potential pitfalls of unbridled enthusiasm, and figures like Stefan Mischook and The Primeagen bring practical insights into the limitations and challenges posed by these AI tools, a nuanced perspective emerges. GitHub Copilot, with its autocomplete prowess, presented both awe and frustration, embodying the dual nature of AI’s promises. The convergence of the hype cycles surrounding new product technologies and coding methodologies encapsulates the relentless waves of change in the software development realm. As I delved into integrating the OpenAI API into web applications, the black box shifted from algorithmic opacity to grappling with unpredictable response formats. Just as Paul Krugman’s skeptical forecast about the internet proved drastically wrong, I find myself hesitant to make definitive judgments about the trajectory of AI. The journey into the realm of artificial intelligence, characterized by skepticism, exploration, and an evermore learning mindset, mirrors the dynamic and evolving nature of the technology itself. I am reminded that, much like the unpredictability of the internet’s impact, the full extent of AI’s influence remains an unfolding narrative, and I choose not to be confined by premature conclusions.