Half a day into my vibe coding class, I found myself teaching participants about APIs, private keys, databases, CRUD, and edge functions — things I’d only normally cover after 6-10 days of intro web.
And everyone did fine directing their LLMs to set up CRUD, incorporate API keys into the back-end, and much more; all without knowing a lick of HTML, CSS, JS, React, or TypeScript.
Which makes me wonder if programming instructors are like driving instructors at a point in the past. We might be at that point where driving instructors saw their learners taking to driving with automatic transmissions, since all they wanted was to get from Point A to Point B, and didn’t feel the need to learn everything about internal combustion and gear shifts and stalling, even as their instructors wanted to teach them the ALL-IMPORTANT FUNDAMENTALS — conceptual knowledge and practical skills which the instructors loved and enjoyed and had gotten really good at.
So the fundamentals as we know them just… aren’t, any more? That’s quite a shift (sorry) to process. I’m sure we’ll continue to have professional programmers — like how we have professional drivers who understand the ins and outs of torque and transmission — but it’s nice too that everyone else is now enabled to just get where they want to go.
The really rather useless slide I use for getting folks started with vibe coding
A former student posted this heartfelt piece about why they’re leaving Singapore, titled “if you meet the singaporean on the road”. It’s a great read, and resonated strongly with their audience on Twitter.
Preview image of blog post at eigenmoomin.substack.com.
I met up with them for lunch yesterday, amidst the throngs of students leaving school early from their Teachers’ Day celebrations, just to catch up and wish them well on their next step. Afterwards, I just sat for a bit and marvelled at how lucky we are as teachers — to get these precious glimpses of young lives growing and becoming themselves.
Happy Teachers’ Day to all who teach and who’ve taught: my family, friends, colleagues, and of course teachers.
(This student will be in the SF Bay Area, and if anyone in my network is happy to lend them any kind of support, let me know; I’m sure they’d appreciate the connection.)
About a month ago, Lex Fridman released a 6-hour (6-hour!!) long interview with DHH (David Heinemeier Hansson), creator of Ruby on Rails and Basecamp. I’d never watched any of Fridman’s interviews before this, and in recent years, I’ve been finding DHH to be a bit too much of a Loud Opinionated Online Figure for my taste, but I ended up watching all 6 hours (6!! hours!!!) of this.
Some choice notes and quotes, which I’m sure I’ll get back to in future posts.
DHH reminisces about the easy feedback loop of PHP, and this reminds me of how well-designed creative AI apps reduce the distance from intention to output:
In many ways I think the pinnacle of web developer ergonomics is late ’90s PHP. You write this script, you FTP it to a server and instantly it’s deployed. Instantly it’s available. You change anything in that file and you reload, boom, it’s right there. There’s no web servers, there’s no setup.
Jump to timestamp.
On the web getting ridiculously complex in the 2010s — something I experienced firsthand when I stepped away from web development for a few years to come back to React and Node and webpack and whatever else is now “standard”:
You had all of this brain power applied to the problem of how to work with the web, and there were some very smart people — with some I’m sure very good ideas — who did not have programmer happiness as their motivation number one. They had other priorities, and those priorities allowed them to discount and even rationalize the complexity they were injecting everywhere. [… They] sliced the development role job into these tiny little niches. ‘I’m a front-end glob pipeline configurator!’ Timestamp.
On why he — and, I believe, some of my students — feels strongly about not wanting to use AI to code for him:
If you don’t have your fingers in the sauce (the source) you are going to lose touch with it. There’s just no other way. I don’t want that because I enjoy it too much. […] When someone who sits down on a guitar and plays Stairway to Heaven, there’s a perfect recording of that, that will last in eternity. You can just put it on Spotify, you don’t actually need to do it. The joy is to command the guitar yourself. The joy of a programmer, of me as a programmer, is to type the code myself. Timestamp.
DHH and Lex on the non-judgmental nature of AI chatbots:
I’m getting smarter every day because of AI, because I’m using AI to have it explain things to me. Even the stupid questions I would be a little embarrassed to even enter into Google, AI is perfectly willing to give me the ELI5 explanation of some Unix command I should have known already. Timestamp.
It’s a great basically search engine into all kinds of nuances of a particular programming language, especially if you don’t know it that well. Or APIs you can load in documentation, it’s just so great for learning. For me personally, I mean, on the happiness scale, it makes me more excited to program. […] And even if I never use the code it generates, I’m already a better programmer. But actually the deeper thing is, for some reason I’m having more fun. That’s a really, really important thing. Timestamp.
And it makes programming fun again, and gives him confidence to try new things:
What it’s made more fun to me is to be a beginner again. It made it more fun to learn Bash successfully for the first time. […] It gave me the confidence that, you know what? If I need to do some iOS programming myself… I haven’t done that in, probably six years was the last time I dabbled in it. I feel highly confident now that I could sit down with AI, I could have something in the App Store by the end of the week. Timestamp.
How to approach learning programming with AI:
There should be more of the time writing from scratch if you are interested in learning how to program. Unfortunately, you’re not going to get fit by watching fitness videos. You’re not going to learn how to play the guitar by watching YouTube guitar videos. You have to actually play yourself. You have to do the sit-ups. Programming, understanding, learning almost anything requires you to do. […] Now, I understand the temptation, and the temptation is there because vibe coding can produce things perhaps in this moment, especially in new domains you’re not familiar with, tools you don’t know perfectly well, that’s better than what you could do, or that you would take much longer to get at. But you’re not going to learn anything. Timestamp.
And, unrelated to all of the above, on being there for your kids:
I think there’s just some ancient honor in the fact that, again, this DNA that’s sitting on this chair traveled 30,000 years to get here, and you’re going to squander all that away just so you can send a few more emails. Timestamp.
I’m not sure I agree with everything said, but it’s certainly food for thought, and it kept me watching for all 6 hours (6!!!?! hours!!?!!).
If, like me, you’re interested in AI, programming, and learning, and/or you’ve been building for the web from the 1990s till now, I highly recommend the interview. Just tell your partner/friends you have a great movie night pick lined up, and settle in for 6 hours of nerdy conversation!
(Disclaimer: I did not actually attempt to make my wife watch this.)
If I tried this without AI, my efforts would probably have stalled fairly early on! I know for sure I wouldn’t have been able to get this done, in my free time, in just 3 days.
That’s what’s been so remarkable about AI-assisted coding for me: the ability to just… type things out, and… have them happen. And so. Quickly. This nonsensically fast feedback loop is extremely addictive, and makes me want to keep tinkering and making.
Pete Steinberger (using Astro too, with the same theme) captures this feeling well in his blog post, “Just One More Prompt”:
Yes, you can just do things. That’s the beauty and the problem. Once you realize how powerful these agents are - this realization that you can finally build everything you ever wanted to build. All these ideas and side projects that you’ve been thinking about for years, but never had the time to do.
Anyway! New blog is at yjsoon.com (in case you’re reading this from the RSS feed, which my AI assures me still works). I’ll be cross-posting on LinkedIn, so you can follow my hand-written em-dashes there if you’d like :)
Now, I just noticed from the link preview on LinkedIn that the OpenGraph image needs replacing, so back to Claude Code it is…
OpenGraph image preview showing the need for replacement
Today, I accidentally brought down our self-hosted instance of Canvas LMS on a Hetzner server, and couldn’t get it running again (and didn’t want to bother Rui Yang, the talented young intern-at-the-time who set it up).
So I sicced the Warp terminal / AI agent on it, telling the AI “Fix this ridiculous thing!!” and, shortly afterwards, “PLEASE DO NOT RUN ANY DB MIGRATIONS!!!!” (because that was in the plan it cooked up), then I went to take a bus to my next appointment.
When I reached my destination, I logged in to check, and 20+ docker compose ups and downs and 200 Warp credits later (less than 1/10 of a US$15 subscription), my LMS was back online. We are truly living in the future.
Me, amazed with Warp
Anyway if you download it with my referral link I get a free… theme? Awesome.