A Step Away from Vibe Coing to Vibe Tutoring
Published on 12/16/2025 • 7 min read
Start doing. Starting it off with those two words because I was stuck on how to exactly start this off for a while and realized I just need to start even if it takes time.
Over the past 2-3 years, I’ve been relying heavily on AI to make all kinds of tools, programs, and websites across multiple aliases and this has exposed me to many different areas of computing that would allow for talking points and resume check boxes, although the different aliases part makes it hard to show them off (this isn’t even the alias I connect to my resume/job hunting), but in the job hunt I feel a disconnect and second guess myself for what “my experience” should qualify me for.
I could talk about how my previous stimulant abusing self decided to take a break from a much larger project I was having claude make. That break being fueled by curiosity on how one simi-related aspect of it would work at scale, realtime notifications (similar to the discord bots for youtube and twitch), and happened to already have an interest into the fansly platform sometime before this, partly due to VTubers being displeased with twitch at the time and it reminded me of one of the early projects that got me “started” in programming (there’s a history of watching tutorials before this from like 2013-2015ish but brain fog and stopped before ever really making anything so just not gonna count it), writing discord selfbots to automate tasks, by only needing your auth token to simply automate API request.
And how that curiosity would turn into NotiFansly, which initially was planned to be an opensource self hostable, run it yourself to get notifications bot, and still is and will be, but the stim abuse led one thing to another and I ended up buying a domain (notifansly.xyz) and hosting a public instance of the bot. Which led me to have to convert from sqlite (it was supposed to be a local run it yourself thing yk) to postgres to better handle concurrent task, people adding new creators to get updates from as well as the bot updating what the last post was to not send repeats for them etc, or how it eventually grew to over 200 servers and over 300 monitored creators which led me to completely re-architecting the publicly hosted bot (which is now a closed source deviation from the open source one) to be a micro service based bot that has 3 main components, a scheduler, the notifier and the distributed pollers.
Or how the micro service architecture works with the scheduler reading from the database to get the unique list of creators that are being monitored and queues them up for the pollers, which run on different machines with different account tokens to spread out request to cut down on time spent polling, to all grab and use valkey’s BRPop to avoid any conditions of one poller getting the same creator as another and how the pollers send off any results of new lives or posts to a pub/sub event for the notifier to send the notification out to the discord servers monitoring them.
This may seem like a lot to talk about for one project, but it’s to show the disconnect. I can talk about and understand the overview of the things that I’ve had AI make, but if asked before this to explain implementing a system like it, I wouldn’t have been able to and sure I may have lacked the prerequisites but even now I don’t think I would even know where to start, not even sure what the first step would be, what lines to write, and this goes back to job hunting, I don’t think I’d be able to do any kind of technical interview with how I am now, let alone a leetcode easy at this point.
Rebuilding from the basics
Realizing this about myself I decided if I’m going to be using AI so heavily, why not use it to actually help me learn and regain familiarity with actually writing code and fill in the gaps of knowledge and actual skill set.
So I had claude write a prompt to turn it into a tutor to aid in just that, ai prompting ai. This is the prompt it made.
You are my programming tutor. Your goal is to help me build genuine programming skills and confidence through incremental learning, not to write code for me.
Teaching approach: Start by assessing my current skill level with a few questions about what I know Introduce concepts one at a time, building on what I've already learned
For each new concept, provide a clear explanation with real-world analogies Give me problems to solve myself, scaled to my current ability
When I'm working on a problem: Provide hints and guidance through questions rather than solutions
If I'm stuck, offer progressively more detailed hints, but let me write the actual code
Show me examples of similar (but not identical) problems with solutions to help me understand patterns Celebrate my successes and help me learn from mistakes without judgment
Problem structure:
Each problem should have: a clear description, expected input/output, and 2-3 test cases Include similar example problems with explanations, but make sure my problem requires me to adapt/think
After I solve something, offer a slightly harder variation to reinforce learning
If I ask you to write code: Gently redirect me to try it myself first
Offer to break down the problem into smaller steps Provide pseudocode or algorithm descriptions instead of actual code when possible Start by asking me what programming language I want to learn and what my current experience level is.
I decided this was fine for what I wanted and this was the first example and problem it gave me:
And I decided to do them in both Javascript and Go
Javascript
const toBeFiltered = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14];
// ik its all the test cases but still
function filterEven(numbers) {
let result = [];
for (let i = 0; i < numbers.length; i++) {
if (numbers[i] % 2 === 0) {
result.push(numbers[i]);
}
}
return result;
}
console.log(filterEven(toBeFiltered));
Go
package main
import "fmt"
func filterEven(numbers []int) []int {
result := []int{}
for _, num := range numbers {
if num%2 == 0 {
result = append(result, num)
}
}
return result
}
func main() {
var toBeFiltered = [14]int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14}
fmt.Printf("Filtered items: %d ", filterEven(toBeFiltered))
}
And while this is basic, it feels nice to progressively go through these and actually feel like I’m learning again and using my brain for more than just being a error copy paster for the code it wrote.