Every change saves to data.json in your repo about 2 seconds after you make it. The token stays in this browser only.
Required first. The pattern moves on once all five are solved.
One pattern a day: 5 required, 5 optional. Click Solved when you solve one. The pattern moves on once all 5 required are solved.
Everything you attempt joins the revision list the next day. Solve it again and press +1. 🌱 🌿 🪴 daily for 5 revisions, then 🌳 weekly. Once weekly, Know it cold retires it as ⭐ Perfected.
Skip a due revision 2 days running and it slips: it goes to the top of the list and starts the climb again.
Questions done before the switch count as Solved and join revision after their first +1.
Free path to SWE, ML and AI engineer roles. Core steps are the minimum; a capstone with measured results beats certificates.
Claude Code practice needs a paid Claude plan or API credits. The API course and notebooks make paid API calls, cheap with small models.
DeepLearning.AI videos are free; graded labs and certificates need Pro ($25 to $30 a month). Hugging Face certificates are free. Microsoft samples may need Azure.
Claude Certified Architect exam is paid ($125) and may need a partner organisation. Optional.
On the resume, put agents, RAG, MCP and evals next to measured results, not in a bare skills list. Forward-deployed and solutions engineer roles at AI-native companies fit a full-stack SWE profile.
The Anthropic catalog changes fast. Checked October 2026.
A personal LeetCode practice tracker for Hrishikesh (Rishi) Verma. One HTML file, no server, no framework, no build step. It was written in September 2026 in a conversation with Claude and reworked in October 2026. Rishi owns it. It exists so Rishi can work through a fixed list of LeetCode questions pattern by pattern while preparing for software engineering interviews.
Rishi had already solved about 400 LeetCode problems. The remaining gap was not volume, it was pattern fluency: seeing a new problem and knowing which technique it belongs to, then coding it cleanly. So the tracker is built around patterns. The list is 35 pattern blocks of 10 questions (5 required, 5 optional) plus a mixed block of 40 where the pattern is hidden: 390 questions, none of them in Rishi's solved list at the time they were added.
Before October 2026 there were three labels (Solved, Revisit, Coding issue) and a 2/7/21 day retry cycle. Both were removed. Any old label now reads as Solved. Questions attempted before the switch are listed in v2.legacy and only join daily revision after their first +1, because Rishi had forgotten them. Do not bring the Learned label or the retry cycle back.
sd-tracker-v1. Three tracks (collapsible, with a progress bar each) with a status dropdown per item, summary tiles and an Up next bar on top (the Telusko one-shot video in 10 units, Alex Xu Vol 1 in 16 chapters, Alex Xu Vol 2 in 13 chapters), and a free-text log: Rishi writes what he did, presses Log, and the entry becomes a dated card on a timeline. Nothing in the log is pre-written; gaps between days are shown as gaps. The log is deliberately free text with no tagging.ai-tracker-v1: status (resource id to 0 not started, 1 in progress, 2 completed) and cap (capstone checklist item to true), build (step key to true when its build is done; steps with a build only count as done once it is ticked) and notes (step key to free text). Step keys (k in AI_PATH) are permanent. Hours left come from each step's hrs. Skills, All resources and Good to know start collapsed to keep the page calm; AI_LOW marks low-priority resources. Rishi gave Claude a free hand on this tab's design (October 2026). Sections: Next up (first unfinished step), Learning path (11 steps in AI_PATH, core steps 1, 2, 4, 5, 7, 11; a step is done when its required resources are completed, "a|b" means either, "id?" is optional), Skills employers want (AI_SKILLS: demand tier, free coverage, progress from mapped resources) plus gaps (AI_GAPS), All resources (AI_LIB, grouped by provider), and Good to know. Resource ids are permanent keys; some are old Skilljar slugs whose url now points at academy.claude.com. To add courses later (RAG, other providers), add items to AI_LIB and reference them from steps or skills. Audience-specific Academy courses (educators, students, nonprofits, small business, creative work, Cowork, enterprise rollout) are left out on purpose.Progress is not stored in this file. It is stored in the browser's localStorage under three keys: lc-tracker-v1 for LeetCode, sd-tracker-v1 for System Design and ai-tracker-v1 for AI Fluency. Export and Import handle all three together. Replacing the HTML file with a newer version keeps all progress as long as that key and the data shape survive. Rules for anyone editing this file:
migrate() function that runs on load, so old data is transformed rather than lost.Saved fields. Current: st (question id to status, first attempt date f and last change date), rc (question id to revision count n, dates h, last, climb k, next due, undo stack u, last lapse lap, retired date ret), lapsedOn (date the daily lapse check last ran), rlog (date to revisions that day), log (date to questions first attempted that day), day (today's pattern and question ids), v2 (switch date and legacy ids), notes, guess. Old and kept untouched: labels (read as Solved when no st entry), sched, rv.
Everything is in one script block at the bottom of the file. PATTERNS holds the question list as pattern name plus an array of [id, title, difficulty, optional hidden pattern hint]; in each normal pattern the first 5 are required and the next 5 optional. st() reads status, setStatus() writes it. ensureToday() picks the day's pattern. revUp(), revDown(), lapse(), retire(), inPool() and revDue() run revision. render() redraws everything from state after each change. LeetCode links are generated from the title by slugifying it.
Colorful and friendly, one page, quick to act on. Each pattern has its own hue so tiles are recognisable at a glance. Solved is green, slipped red, revision purple, used consistently everywhere. Keep the page compact. Rishi prefers short text and dislikes being overwhelmed, so avoid adding walls of explanation to the interface itself.