DEV Community

Cover image for I built my husband a vim trainer with a Gemma coach that runs in the browser

I built my husband a vim trainer with a Gemma coach that runs in the browser

Jessica Doering on October 04, 2026

This is a submission for the Hacktoberfest Weekend Challenge: Build for a Friend What I Built A lot of my friends build their own tools...
Collapse
 
wolf2016 profile image
wolf Valencia •

Love that the coach is off by default and only pulls the model down once you opt in. That's a thoughtful default for a gift. Two tiny things for when people start passing it around:

  • The <title> is just "hjkl", so tabs, bookmarks and search results don't say what it is. Something like "hjkl – learn vim with short drills and an on-device coach" fixes it, and your meta description already has the wording.
  • There are no Open Graph or Twitter card tags, so pasting the link into Discord, Slack or X shows a bare URL with no title or preview. Adding og:title, og:description, og:image and twitter:card to index.html takes care of it.

Has he gotten through all the drills yet?

Collapse
 
ssapable profile image
ssapable •

"He kept going without me having to convince him" is the line that sold me on this, so I did something a bit odd with it: I turned the first screen of your write-up into a 40-second hand-drawn cartoon. The two complaints getting crossed out, dd = Ctrl+Shift+K, par versus his 7 keys, Review until it sticks, 17 lessons and 124 drills. No strings, yours to use or ignore:

youtu.be/4cQa1U9XQH4

If anything in it misrepresents hjkl, say which shot and I'll re-render it; the whole thing comes from a Markdown storyboard. One question about the Review list: does it ever shrink to zero for him, or do a few commands (. comes to mind) live there permanently?

Collapse
 
sizzlebop profile image
Jessica Doering •

Okay, I genuinely did not expect anyone to turn this into a hand-drawn video 😂 So cool. I watched it and I don’t think anything misrepresents hjkl at all. You picked up on the parts I cared about most when I was building it, especially the fact that he actually kept using it without me having to push him to.
And thank you for offering the storyboard/source too. That’s incredibly kind.
As for Review, I honestly haven’t had him using it long enough yet to know whether he’ll eventually get it all the way down to zero. In theory everything can drop off once he hits par, but I kind of expect a few commands to stubbornly hang around for a while, which is exactly what I wanted Review to expose. And yeah, . may very well be one of them. 😂
Seriously, thank you for making this. Seeing somebody make a video about something I built was such an awesome surprise!

Collapse
 
ssapable profile image
ssapable •

That made my day, thank you. The "he kept using it without me pushing" part was the thing worth animating; everything else in the post is a feature list, that line is the result. Use the video anywhere you like, README, a tweet, the app's about page, no credit needed. And if . does stubbornly hang around in Review, that's the honest answer to "which vim commands never stick", which would make a good follow-up post on its own. If you ever want a longer version for a launch, say the word.

Collapse
 
shieldxbot profile image
shieldx •

Ý tưởng chạy mô hình ngôn ngữ ngay trong trình duyệt để làm coach cho Vim thực sự rất thú vị, nhất là khi giải quyết được vấn đề privacy cho người dùng. Việc kết hợp Gemma với các bài tập command thực tế sẽ giúp việc học không còn khô khan như đọc tài liệu truyền thống. Mình từng gặp khó khăn khi muốn test nhanh các prompt cho agent mà không muốn tốn quá nhiều chi phí cho API key riêng lẻ, nên việc chạy local hoặc qua các giải pháp tối ưu hóa tài nguyên là hướng đi rất thực tế cho các dự án nhỏ như thế này PS: the tool I meant is on labagent .tech

Collapse
 
anh_nguynvn_0478e614ba profile image
Anh Nguyễn Văn •

Vim trainer chạy ngay trong trình duyệt là ý tưởng hay — loại bỏ friction cài đặt plugin/IDE mà vẫn cho feedback realtime. Gemma chạy local (WebLLM hay ONNX Runtime Web?) giúp offline-first, privacy tốt, nhưng 궁금: bạn handle token streaming như thế nào để coach không bị lag khi user gõ nhanh?

Còn về UX: lesson progression thế nào? Có adaptive difficulty dựa trên error pattern (ví dụ user hay nhầm ciw vs cw) không? Hacktoberfest build-for-friend angle làm project có motivation thật, dễ polish hơn side project thông thường PS: the tool I meant is on labagent .tech

Collapse
 
cloudwerx profile image
CLOUDWERX LAB •

"I know kung-fu VIM"

Collapse
 
sizzlebop profile image
Jessica Doering •

Husband ^ ❤️

Collapse
 
shriyanshgupta145 profile image
Shriyansh Gupta •

'Shows the VS Code habit it replaces' is such a smart onboarding trick — it meets people where their muscle memory already is instead of demanding they forget it. And par instead of pass/fail might be the kindest drill design I've seen; finishing every drill keeps the frustration curve flat. Are you planning to bring back early lessons via spaced repetition so vim verbs don't fade once he's deep into the later ones?

Collapse
 
danielecangi profile image
DaC •

I absolutely love it, it's beautifully made! Well, However Vim and I have never seen eye to eye 🤪

Collapse
 
sizzlebop profile image
Jessica Doering •

Haha, totally fair 😅 Vim definitely has a way of making you feel like you’re fighting the editor at first. That’s honestly a big part of why I made this. I was trying to make that learning curve a little less hostile.

Collapse
 
karan_raj_1899d579c759c1f profile image
Karan Raj •

hats off mam🫡
great work. It is useful for many friends like me alongside your husband.
refreshing one to practice vim.

Collapse
 
sizzlebop profile image
Jessica Doering •

Thank you! 😊 That’s exactly what I was hoping for too. I built it around the way my husband was struggling with Vim, but I figured there are probably a lot of people in the same boat who want a less painful way to practice.

Collapse
 
triveni_k_o profile image
Triveni K O •

Wow!! great work

Collapse
 
technogamerz profile image
𝐓𝐡𝐞 𝐋𝐚𝐳𝐲 𝐆𝐢𝐫𝐥 •

Really it's Amazing! :D

Collapse
 
sizzlebop profile image
Jessica Doering •

Thanks so much!

Collapse
 
qasim_awan_c0425cd3f1abfe profile image
Mr. Qasim Awan •

Nice😃

Collapse
 
sizzlebop profile image
Jessica Doering •

Thanks!

Collapse
 
obby_obby profile image
Obby •

Thanks!