A tutor inside VS Code · not an autocomplete
Build the real thing
Actually learn the language
Midnight Oil lives in VS Code and won't just write the code for you. You build your real project, and it explains the new bits by comparing them to a language you already know, then makes you type them yourself. It also keeps score.
- Teach: the next step, at whatever help level you can stomach
- Bridge: new idioms explained in a language you already speak
- Master: it tracks what's actually sticking, concept by concept
Coming to the VS Code Marketplace · sign in, pick a plan, start learning
The unoccupied middle
Every tool picks a side, and both fail the experienced dev
Cursor & Copilot
They write the code for you. You ship faster and learn nothing. Congratulations, you're a faster typist.
Boot.dev & Exercism
They do teach, but on toy problems you'll forget by lunch. Your real project, and its real mess, never show up.
Build the real thing
You build the thing you actually want, right in VS Code. It bridges from what you know, and makes you do the work.
Transfer-teaching
It teaches you from the language you already speak
You already know what you want to write, you just don't know how this language spells it. Same idea, new syntax. It hands you the familiar scaffolding and blanks out the parts that are actually new to you.
- The bridge: “In Ruby you'd mutate in place, TypeScript declares types inline.”
- You fill in the blanks yourself, it won't do it for you
- A hint when you're close, never the answer
JS → Go · Java → Rust · Ruby → TypeScript · or no source at all
The signature feature
The assist-dial: turn down the help, turn up the learning
One knob, four settings. It changes how much you're shown, but never who's doing the typing. Crank it up for the borrow checker while it's still witchcraft, turn it down for the stuff you've already got.
Full idiomatic code
A copy-pasteable block, only for boilerplate you already understand.
Fill in the blank
Scaffolding filled in, the new-language idioms blanked for you to type. The heart of it.
A nudge
“Something here won't compile the way you think. Want a hint?” You have to ask. That's the point.
Pure reviewer
Write freely, it critiques after. For when you just want to be spot-checked.
Inside your editor
We didn't build an editor, it lives in the one you've got
Midnight Oil is a VS Code extension. Everything you already use stays put: files, search, git, your LSP, your runners. It just adds the teaching, which is the part nobody else bothers to build.
Select code, hit Ctrl/⌘ + Alt + E, and it diagnoses and scaffolds the next step at your level.
Ctrl/⌘ + Alt + L cycles High → Medium → Low → Off. A status-bar item + a clickable dial.
The lesson shown in place: ghost text, a highlighted line, or a fill-in marker on the target.
Ctrl/⌘ + Alt + X gives you the what, the why, and the gotchas, with citations to real lines in your code.
Track your mastery
Every concept gets a rank, and yes there's a test
It tracks how well you actually know each concept, per language. Four tiers, and you don't grind your way up, you pass a gate test the AI grades. Get good enough across a language and it hands you a title, like a video game with worse graphics.
- Gate tests unlock the next tier · practice earns reps
- Craft titles: Novice → Journeyman → Craftsman → Master
- One overall Level across every language
How a session works
Three ways in, one loop
Plan-first
“Teach me Rust by building a CLI todo app.” It drafts teachable milestones, you execute them one at a time.
Bring your own project
Open an existing repo. It finds teachable moments as you work, no lesson plan, just your code.
Goal-first
“Teach me X by building Y.” It scaffolds a path from your goal to a real, working thing.
Stop autocompleting, start actually learning it
Great for side projects and the “I should really learn this properly” itch. Less great two hours before a deadline, when you'll cave and let the robot do it, and honestly, fair enough.