[note – there is some detailed computer science jargon – feel free to skip that if you’d like]
Vibe coding is one of these new trends where people who know nothing about computer programming are able to code up websites and applications. It is really quite an impressive thing to do for people who don’t have any training.
Can you imagine this happening in other fields? What if I went to a dental office for the first time to clean teeth and had a magic tool in my hand that could do it without any knowledge of the field, but was still able to adequately clean teeth?
For a long time, computer science was a boring field. You would have these new software architecture patterns and paradigms every 5-10 years, but now it is like someone mega dosed computer science with an IV drip of coffee and an infusion of chocolate.
Now with AI, things are absolutely insane. Every 3-4 weeks there is some new breakthrough or pattern that makes software development easier. To give you an idea how life used to be, coders use Integrated Development Environments (IDEs), to code. You would have to type code by hand, and it is not so different than learning a foreign language.
In fact, computer languages are like spoken languages but with a much more constrained and detailed set of grammar and rules. We write code to do something, and then compile and execute to test it. The code you write must fit the rules defined, or else it will not run.
When we were stuck with a problem we didn’t know how to solve, we would usually Google, “how do I do x… stack overflow”, or read documentation. However now in IDEs, there is a chatbot window on the right hand side similar to ChatGPT.
This magical window is like a genie that can grant any of your wishes such as explaining the codebase, or generating new code.
These tools have existed for the past 2 years, but only recently have they gotten really good. I would even say the tooling can make an engineer 20x more productive. So the amount of work that used to take 1.5 years, could now take about a month.
At work, there is this weird illustration that comes to mind. Fredrick P Brooks wrote this book called the “Mythical Man Month”, which was about his experience and why software projects fail. Here is a quote from the book:
“When a task cannot be partitioned because of sequential constraints, the application of more effort has no effort on the schedule. The bearing of a child takes nine months, so no matter how many women are assigned. Many software tasks have this characteristic because of the sequential nature of debugging.”
When doing project estimation exercises with staff, they might tell me this feature would take 2 months, and I would agree with their assessments based on the premise Brooks wrote. It takes time to write software, just like a woman takes nine months to have a child—you can’t have 9 women produce a baby in 1 month. My staff would mostly laugh about this whenever I mentioned it.
But with AI, all the rules are broken, and in this world, women can have a child in 1 month—or even 1 week. Basically, the premise Brooks wrote no longer feels valid.
I say I half vibe code, because I do understand computer science and programming, so I mostly understand what is going on. But with this half vibe coding, I have been creating my own projects. Here are some examples of things I have done on my own time.
Personal Finance Ledger
I used to use You Need a Budget (YNAB—which is still around). The site lets you add transactions as line items so you can keep track of your finances. I found it kind of a pain to manually enter everything, but automatic syncs didn’t exist back then.
I’ve asked a lot of friends how they manage their financial records, and I’ve heard a wide range of approaches—from doing something similar to what I have done, to just casually browsing their credit card statements, to paying the bills at end of the month without auditing anything.
Even though it is annoying and time-consuming, I have found that reviewing every transaction is helpful. I’ve caught fraud quite a few times (for some reason, it always happens when going to Mexico), and it also helps me spot trends in my spending.
These finance applications like Mint and YNAB now have automatic syncs with your credit card companies to pull in transactions so you don’t have to enter them. However, me being cheap—and a bit paranoid about having any software company connect to my bank account—I downloaded an open-source version called Financier which was a clone of YNAB and ran it in a Docker image.
It kind of worked, but was still annoying to use since the docker image was very old. With AI, I completely rewrote it in Ruby on Rails (a programming framework) and added some features where I could upload my credit card statements to automatically create all of the transactions. This would have taken me 6 months to do previously, but I did it in about 2 weeks with AI.
Tennis Court Availability Checker
In the winter in Vancouver, it is hard to play tennis outdoors because of the rain. There are indoor courts you can book at the University of British Columbia, with two options.
You can pay $400 a quarter for a special pass that lets you book ahead of other people, or you can book 24 hours in advance. So if you wanted to play at 8am on Sunday, you would book right at 8am on Saturday.
The problem is that to check availability, you would have to look at each court one by one, and it would take 5–10 minutes just to see all the 8am availabilities.
Instead, I wrote a website where when you click the button “check availability,” it scans all 13 courts and aggregates the availability.
Technically, it is a static website hosted on Amazon S3 with website hosting enabled. When the button is clicked, it launches a Lambda which calls an API I found on the site with AI. Because Lambdas have a 30-second timeout, I asked Claude to refactor the code to run everything in parallel, and I got it working in roughly 7 seconds. Now for future checks, I can see availability in one shot.
.
Gmail Sync
Like many of you, I find myself bombarded with emails and find it nearly impossible to get to inbox zero. What I did was write a website that runs locally on my computer where I download all of my unread Gmail, grouping it by category and sender. From there, I use keyboard shortcuts to quickly mark groups of emails as “read” or “trash,” and I am able to get through about 1,000 emails in roughly 15 minutes.
What I realized is that a lot of the emails I get are from the same businesses, so when grouped, I can go through them quickly.
Technically, I created Google service credentials and had it download everything into a local DuckDB database. I created models for emails and threads and used DuckDB WASM so Chrome could access it natively. A bit overkill, I know—but I originally had 30,000 unread emails, and I actually got through them in about 3 hours after writing this program.
Personal Newspaper Website
As part of the Vancouver Public Library, you get access to free newspapers via PressReader. This is a newspaper app, and I usually read the Wall Street Journal and Vancouver Sun daily.
One thing I don’t love about the app is that there is often a comment count next to articles, and there is always a temptation to click and read the comments. When I lose that battle of willpower, I click—and feel a little part of me dies inside reading the inane arguments people are making.
The other problem is that it visually mimics a newspaper, so you have to scroll up and down constantly, which makes browsing a bit clunky.
What I did was write a script that downloaded the newspaper as an EPUB, then converted it to a JSON file. From there, I rendered my own personal static website in React so I could read the newspaper more easily without distractions, and turn pages using the left and right arrow keys.
Technically, I used an MCP with Playwright to remotely control a Chrome browser to understand the PressReader login, then wrote a headless script to log in and download the EPUB to Amazon S3. From there, I triggered a process to convert the EPUB to JSON and exposed it via a Lambda API.
Next, I wrote a React frontend that calls the API, returns the JSON, and renders the HTML. Later, PressReader removed the “download EPUB” button, but I found that the API still existed. I parsed my old logs to figure out how it worked and asked the AI to work around it. It did some complex things like inspecting cookies and local storage to extract UIDs—but somehow it all worked.
The interesting thing about this exercise is I don’t know anything about React, and Python isn’t my primary language so I was surprised to get most things working. I also was reviewing the code in the beginning, but eventually gave up because of the volume it was creating and just trusted that it worked.
Computer science is approaching a scary point where we might be creating systems without any human audit in the future.