10 ms·
Show HN: I made a spaced repetition tool to master coding problems
As you solve LeetCode questions, you can mark them as hard, medium, or easy. The tool will then recommend questions you should review based on (1) how hard the question was for you and (2) how much time has passed since you last reviewed it. I'd recommend normally attempting LeetCode problems and just marking them as hard, medium, or easy for you at first so the tool knows which problems to recommend you review!
Here's the theory behind spaced repetition and learning if interested: https://www.codecademy.com/article/spaced-repetition https://www.codecademy.com/article/spaced-repetition
- cubemaster 2y agoHey guys! I'm Shreya. I recently noticed that many people that solve leetcode style problems to learn programming patterns tend to save links to problems they'd like to try again later on google docs/notes. However, this doesn't help them remember to try these problems again or differentiate between problems that are more urgent to revise. Built this tool to help solve this inefficiency!
- xandrius 2y agoOr just use this public Anki deck as a base and add your own questions to it: https://ankiweb.net/shared/info/1223170466 https://ankiweb.net/shared/info/1223170466
- cubemaster 2y agodo you think it adds friction to go between the anki screen and the leetcode screen?
- rahimnathwani 2y agoThe GitHub repo linked there says it will automatically create cards for your solved (AC) leetcode problems.
- sirobg 2y agoSeems nice, congrats! How does the recommendation algorithm work?
- cubemaster 2y agocurrently recommends 5 problems using a ranking algorithm that calculates a score similar to this: score = ( timeSinceLastAttempt ^ 2 ) * difficulty; Anything else you'd want factored in?
- sirobg 2y agoDefinitely the problem category! But I see it's already been mentioned here in another thread. Do you rank the problems solved by the user only, or all leetcode problems? Because I think that a nice thing would be for your tool to first suggest one pb in each category, and then start recommending the category where you're the weakest.
- SpaceManNabs 2y agohow is this different from sharing an anki deck?
- xandrius 2y agoSo many people coming up with different Anki's. For me Anki is so flexible that I don't think anything will ever easily beat it.
- cubemaster 2y agohow do you use anki for code/technical skills?
- xandrius 2y agoThe anki decks/cards are fully customisable to add any fancy extra feature. Otherwise one can make their own cards (I often use LLMs to convert knowledge into cards and then import them into my account) for just about anything.
- cubemaster 2y agosuper similar - was inspired by anki! this extension shows up directly on the leetcode website as a starting point, but looking to expand to all of ankis-type features soon
- nico 2y agoOff topic: is spaced repetition ever used for training LLMs? Does that even make sense? Thank you
- mpmisko 2y agoTraining for multiple epochs is a bit like that :)
- orsenthil 2y agoWill it stop recommending if you have mastered the problem? Or will it give a new problem to solve ?
- cubemaster 2y agofor now, it will always 5 recommend problems you have attempted before, prioritizing the ones you solved both (1) longest time ago and the ones that were (2) hardest for you. so it will not recommend anything you haven't tried. would you want it to stop recommending a problem once you've mastered it? maybe an indication on the tool so you can mark it as mastered?
- orsenthil 2y agoYeah, may be an indicator in the tool that is mastered.
- xzel 2y agoI'm about to start the leet code grind for interviews coming up and I'll give this a shot. I found your feedback form on your website but would be nice to post it in your post here as well. Cheers.
- cubemaster 2y agoposted! thanks for the advice :)
- reddit_clone 2y agoI keep hearing this. What exactly does 'leetcode grind' mean? I take it you solve puzzles by writing code. How does it help with job interviews really?
- mardef 2y agoMany engineering interviews include literal "solve this problem on leetcode" sections.
- linguae 2y ago“Leetcode grind” means solving Leetcode problems. Interviewing for many software engineering positions in Silicon Valley these days require doing well on Leetcode-style coding exercises where one has a limited amount of time to solve a problem. What makes software engineering interviews a grind these days is that many employers don’t care about your thinking process; they want an optimal solution to the problem within the time limit without errors, since chances are high that an applicant will come up with the optimal solution. In addition, the high compensation for many Silicon Valley employers has made these positions very desirable and thus ultra-competitive. The same type of applicants who grinded for high SAT and AP scores in high school and who grinded in college for 3.7+ GPAs don’t feel discouraged grinding some more for a six-figure job with life-changing amounts of RSUs once vested and other perks. You can grind hard, but chances are high that somebody else spent even more time studying than you. These types of interviews are similar in spirit to the employment exams that some companies have in Japan during job-hunting season for upper-level college students. So, aiming for a FAANG position, as well as software engineering positions at many other companies in Silicon Valley, essentially require studying not unlike preparing for a GRE subject test for graduate school admissions.
- cubemaster 2y agohere's the feedback form from the landing page: https://docs.google.com/forms/d/1Nqq9xj13ZZHlih16xsTp2Nsl4ZcUaeAYOmDfHwy5vRE/edit#responses https://docs.google.com/forms/d/1Nqq9xj13ZZHlih16xsTp2Nsl4Zc...
- aster0id 2y agoJust fyi for the dev - on mobile, the slide in menu that opens on clicking the burger icon on the top right is empty. Cool idea btw. What do you think about incorporating the "patterns" associated with problems into the repetition algorithm? For example, if I find 2 pointer problems hard, then the next 2 pointer problem will be recommended sooner.
- cubemaster 2y agoyes, was thinking of adding this in! will start adding possible features here: https://alpine-aspen-2ab.notion.site/Lanki-da1481129bfa4d3ca68256b0734671f1?pvs=4 https://alpine-aspen-2ab.notion.site/Lanki-da1481129bfa4d3ca...
- aster0id 2y agoI can totally see what you're solving for - the friction of switching between an anki deck and leetcode to achieve the same thing with existing tools. If you want one data point about how I prepare for coding interviews - I just solve Neetcode's list and the blind 75 list (minus the overlap between the two). For reference I got 5 offers in quick succession after being laid off in early 2023.
- thorncorona 2y agoWho memorizes leetcode problems.. this seems like an extension looking for a problem.
- mrg3_2013 2y agoI continue to get puzzled with leetcode type things. Will coding exercises like this become obsolete someday or will the old guards continue to push for such things to be used during interviews? Today coding Copilots can easily replace leetcode "winners"
- DelightOne 2y agoThe problem starts when its a new problem.
- mrg3_2013 2y agoNot sure what you meant. Leetcode type things solves a problem of past. Future will be copilots doing lot of grunt coding work and human value add would be instructing copilots the right way, bringing broader contextual information. Solving binary search tree problems during interviews will eventually go away (once old guards go away)
- DelightOne 2y agoWe agree, solving binary search tree problems do not need solving. That's an old problem. Problem is if you need people to choose and adapt algorithms for a specific new problem, copilot will have a hard time and so you will have a hard time if you don't know how the algorithms work and never adapted one. Because copilots are not good at choosing the correct algorithm and adapting it for new problems, as far as my experience with the competitive programming course I took goes anyway. If you have an old problem, copilot can solve it, true.
- madamelic 2y agoIt's a cyclical problem. The people / companies using it to hire will tend to hire people who studied leetcode. The companies that don't use leetcode / don't use it as a strong signal will continue not using it. In my opinion, leetcode is a poor signal if used as a binary decision ("were they right or wrong?"). The more important thing is communication and how they worked through the problem. I've heard this multiple places and I absolutely agree: attitude over aptitude. You can teach knowledge, you can't teach attitude or ability to problem solve. The companies that use them as a strong signal are the ones that will be absolutely demolished in engineering because they are on a fast track for a staff full of rote memorization rather than strong creative problem solving. They'll be handicapped when it comes to solving problems that aren't covered by leetcode because no one there bothered to learn it.
- tibbar 2y agoJust wanted to say that this is a really beautiful landing page - way nicer than I expected for a product focused on Leetcode ;)
- personjerry 2y agoI feel like spaced repetition is exactly what you shouldn't do. Spaced repetition is great for rote memorization of arbitrary facts but programming is about how to think about and solve problems. If you master the methods and ideas, you should be able to derive the answers on the spot. That's better than memorization because then you can actually deal with real interviewers who 1) Want to hear your train of thought and 2) Will give you random changes or variants to problems. It's not about memorizing solutions, because in reality when are you ever going to reverse a linked list or balance a red-black tree? No, so if you're going to put in the effort anyway, you should learn the concepts and understand when to apply them so your knowledge is actually applicable. This will actually make you a better programmer, and you'll do better with the interviews that are actually good (I speak with experience giving interviews at FB).
- gofreddygo 2y ago> master the methods and ideas > ... > That's better than memorization Bullshit. You can't get to mastery without memorizing (at least) the fundamentals into muscle memory. Can you just "master" the 7 notes and what octaves are and all other theory to be able to play beethoven? Or should you play a few songs repeatedly till they're muscle memory practicing in parts or full and then moving over to other songs? Should you learn that the integral means the area under the graph to "master" integration or do you still need to run through dozens of same/similar problems till you can solve them without an error? You need to memorize but its a fools errand to start and stop at memorizing leetcode problems. You need to get the fundamental problems (binary search, bfs, dfs, sliding window) solve them repeatedly to a point it just flows naturally and then apply it to problems that build on them and still repeat those till they get natural too.
- waprin 2y agoThat’s a fair perspective but consider that spaced-repetition can be an “MVP” of the broader concept of adaptive / personalized learning. You track some state about your knowledge of the world, in this case your performance on a flash card, and optimize the next piece of educational content around it. It feels obvious to me that, in theory, we could do a lot more to leverage your current world knowledge to recommend the next piece of educational content, to optimize not just your understanding but also other things like how engaged you are. For example, a system could throw you an easier question if it helps you focus longer. When I see the state of current interview prep it’s mostly “here’s a big list of questions” , perhaps tagged by difficulty and grouped under related topics such as “graph problems” or “tree problems” but I’m personally convinced a more sophisticated system could serve you the best possible next problem to stretch your brain in the right way. Spaced rep is simply the proven starting point. The rest of adaptive learning has a bit of a troubled past because it was trendy to VCs , but pushed on educators and presented more as an alternative to a teacher rather than something to augment a teacher. I worked for a company that raised 100M+ to work on it but the CEO was great at terms sheets but uninterested in actually building a great education project. But the reason that I joined the company was the high level idea still resonates with me. Surely many HN users have a big list of things they want to learn- perhaps about LLMs. But a typical course will have zero knowledge on where you’re starting as a student . It might bore you with stuff you know already or take for granted key prerequisites and skip them. Anyway, I’m currently building my own adaptive learning platform but focused on helping professional poker players learn game theory . My idea being that it’s an easier ed tech app to bootstrap as the knowledge very directly translates to money. And really the same criticism applies because you can’t truly memorize a game tree , it’s more important that you build a high level conceptual understanding. But , as much as rote memorization deserves to be maligned when done in isolation, it’s not so bad when done as part of a broader learning strategy. For example, you can’t memorize vocab to learn Spanish but certainly knowing 5000 words in Spanish is a very nice starting point compared to not knowing any words. And tools like spaced rep have been proven by research to help with that goal and I view as a pathway to more broad adaptive learning strategies.
- nateburke 2y agoLove it! Technique is memory, those who espouse abstraction have forgotten their own humble beginnings.
- davepeck 2y agoRelated: executeprogram.com is an excellent learning platform that combines spaced repetition with interactive lessons targeted at professional developers.
- sn9 2y ago+1 It's genuinely amazing for what it covers. A fantastic way to quickly get up to speed for JS/TS, SQL, and basic Python.
- AlexErrant 2y agoFYI I made Anki's spaced repetition algorithm, FSRS, run in the browser. Might be useful to you https://github.com/open-spaced-repetition/fsrs-browser https://github.com/open-spaced-repetition/fsrs-browser Edit: I just remembered it takes like 500(?) data points to train the algo... so maybe not.
- jarrett-ye 2y agoIn the latest version, it only needs 64 review logs to full-optimize the model
- AlexErrant 2y agoNice! (Jarrett's the author of fsrs, fyi.)
- AlexErrant 2y agoMore details https://github.com/orgs/open-spaced-repetition/discussions/19 https://github.com/orgs/open-spaced-repetition/discussions/1...
- noog000 2y ago[flagged]
- FailMore 2y agoSaving for later
- lycopodiopsida 2y agoYou've made a SR tool to solve LeetCode problems, not coding problems.
- andrewp123 2y agoI've been working on a more effective leetcode site - https://deriveit.org/coding/roadmap https://deriveit.org/coding/roadmap. The goal of our site is to teach smart people how to quickly master leetcode. We put in a year's worth of thought to make things as simple as possible, and are super proud of our content. Recently, two people used our site to land Amazon. Check it out!
- theusus 2y agoI see the questions aren't in hundred. Is that enough?
- andrewp123 2y agoDeriveIt has ~100 questions and ~40 lessons. It's up to you to decide how much practice you need, but users typically aren't limited by "not enough" practice problems. Not sure if it's worth mentioning, but we made sure to cover all the ideas you learn from the Blind75 and NeetCode150. It's not like you're missing out - we're just: - organized better - higher quality solutions (==> more efficient, hence not thousands of problems)
- theusus 2y agoThis is exactly what I wanted. Thanks man
- greenavocado 2y agoFSRS 4.5 landed in stable Anki release earlier this year for Desktop and modile clients. Strongly recommend you give it a try if you're reading this. It's a per-deck setting near the bottom in the Advanced deck settings (not application settings). You can integrate the FSRS 4.5 scheduler into your software.
- sli 2y agoChrome only? That's a shame.
- humanlion87 2y agoSmall feedback regarding the website and the "Try Lanki for Free" heading. It makes it seem like we need pay after a trial period. But there is no pricing information I could find. Calling out the price would be helpful information
- dustfinger 2y agoSome alternatives not mentioned here that I am aware of are Mnemosyne Proj [1] and org-drill [2]. I have only ever used anki though. I am going to try org-drill because anki has over 40 dependencies I would not need to compile if I just switched to org-drill. The one nice thing about anki is the community cards you can download, but at the same time I feel that an important part of learning is making the cards yourself. [1]: https://mnemosyne-proj.org/features https://mnemosyne-proj.org/features [2]: https://orgmode.org/worg/org-contrib/org-drill.html/ https://orgmode.org/worg/org-contrib/org-drill.html/
- theusus 2y agoWhy do I need to sign in via Google? I don't want to use my Google Id
- cubemaster 2y agoHey everyone - check out the discord here: https://discord.gg/8vhcmyckNw https://discord.gg/8vhcmyckNw
- SiliconGuru 2y agoSeems like a smart tool for enhancing coding skills. Tagging LeetCode problems by difficulty and having a tailored review plan based on spaced repetition is a strategic approach to learning.
- mathforcs 2y agoI can totally see this working. My friend used this to study grad school math.