Hacker Newsnew | past | comments | ask | show | jobs | submit | victorlf's commentslogin

This is the basic idea behind https://python.cards, the site I'm building to learn Python with spaced repetition.

The hard thing is building the deck. With pre-built decks I expect to greatly reduce the effort required while getting most of the benefits of spaced repetition learning.


Writing effective cards is more of an art than a science, I've found—and seems to work best when you're the one writing the cards for yourself. A good resource for those interested in learning the craft is "How to write good prompts" by Andy Matuschak: https://andymatuschak.org/prompts/

However, he's also shown that cards can be written for a general audience with careful thought, see his & Michael Nielsen's work on http://quantum.country.

I'll be curious to see how python.cards goes!


Anki is unbeatable for acing any test with a bounded number of questions [1]. It's been successfully used by some top TV show contestants to remember thousands of words [2].

I've been using it recently to remember recipes and cooking facts, such as the time it takes to boil X vegetable, or the ingredients for some dish.

Apart from language learning and medicine, there's a lack of pre-built decks that you can use to learn topics. I'm building Python.cards [3] to apply spaced repetition to learn Python with pre-built decks, daily reminders, etc. to make it the most convenient.

[1] https://www.thediligentdeveloper.com/spaced-repetition-reall...

[2] https://www.esquire.com/es/tecnologia/a36913467/pasapalabra-...

[3] https://python.cards


When Anki is the right tool for the job, it is amazing. I used it to study the questions for the FCC radio amateur license. Pre-made decks were available, so I just loaded it and studied on my phone when I had free time. I had around 2 months before the test, so it was very pleasant to slowly go through all the questions.


It seems the tricky part is motivation. Very few people get excited by card-reviewing itself. The method shines when there is external pressure, such as exams.

I think a sense of community can help provide this motivation (like a group of people all learning at the same time), but it's still tricky.


Definitely interested in the Python cards - subscribed


Author here. I created this framework to organize my thoughts and the advice I've given to more junior developers over the years on how to become a better developer.

I'd love to know if you find it useful or miss something.


Author here. I created this framework to organize my thoughts and the advice I've given to more junior developers over the years on how to become a better developer.

I'd love to know if you find it useful or miss something.


Probably not terrible, but serving a different purpose.

I recommend this interview with Duolingo's founder Luis von Ahn: https://www.npr.org/2020/05/22/860884062/recaptcha-and-duoli...


Very interesting. According to the benchmarks, with this algorithm, users can review 20-30% fewer cards than with the classic Anki algorithm.

Just a few days ago, I published a Python implementation of the classic SM-2 algorithm that I use for https://python.cards, but I may switch to FSRS. https://github.com/vlopezferrando/simple-spaced-repetition


Your python.cards looks great. I suggest you add a few examples.

Any chance you are open sourcing the web app? I can see it being a popular way for niches to show flashcards eg. for students to learn X


Thanks! I definitely will add more examples to the landing page, currently I'm working hard on the decks: pathlib in depth, a tour of the stdlib and Norvig's tricks (a collection of tricks from the Pytydes of Peter Norvig).

I believe the hardest part of using spaced repetition to learn programming is creating good decks, it's a ton of work.

About open sourcing the web app, I might do it. It's a Django app, and I've published some videos while coding it (https://www.youtube.com/channel/UCyWUj9r0soytotuuh2JnPrw), so it's no secret.


I forgot to mention in my previous comment that I saw no sign up box for the newsletter.

> I believe the hardest part of using spaced repetition to learn programming is creating good decks, it's a ton of work.

Agreed. To have always been disappointed with the programming decks I have created.

> About open sourcing the web app, I might do it. It's a Django app, and I've published some videos while coding it

I saw the videos, thanks. I think a generic platform would have value, even if there was a paid option with more features (payments etc.)


It's weird you didn't find the sign-up box to the waitlist, this is how it should look like: https://imgur.com/a/0ZIbz4p, I actually got some sign-ups from this comment!

Anyway, I can sign you up manually if you wish.


FYI: I had to turn off uBlock Origin to see the waitlist sign-up box, my guess is that's why teruakohatu didn't see it either.

Anyways, thanks for the project, it looks nice - I'll be happy to grab the decks when they're ready :)


Thanks for the tip! I'll try to fix it.


Shameless plug: I'm building https://python.cards to learn Python with spaced repetition. I've uploaded some videos on Youtube of the process of distilling the information from the Python docs into flashcards, and have plans on trying out LLMs to help in this process.


As someone also building an SRS product, why did you decide on Python as your initial market? I genuinely feel like programming is best learned by _doing_, and thankfully it's pretty easy to practice writing Python. I feel like a better way to learn Python is to introduce a concept/word, and give a playground where the student can play with it.


Many reasons, most of them hypothesis. For one, the book "The programmer's brain" says that spaced repetition is the best way to learn the syntax, idioms, caveats of a programming language, but it's hard to find a product that offers this.

I don't suggest you should learn Python _only_ with python.cards. I assume every python.cards user will be doing some online course, or working with Python, and my decks will just boost their knowledge of the language.

I think a lot of people program in Python but programming in Python is not their main occupation. These people struggle to accumulate knowledge, because they may encounter concepts or APIs only from time to time, and by that time they already forgot.

Also, I want to cover some "unorthodox" topics for which spaced repetition may be specially well suited. For example, I'm building a deck called "A tour of the standard library", where you can learn all the modules that are available, just so you know what is out there, without going deep into it.

Another idea is to have decks to learn all the built-in exceptions by heart, or the nomenclature. I think this helps build a mental model of the width and depth of the language so you can better integrate all the knowledge you find while coding, searching online, or reading code.


> the book "The programmer's brain" says that spaced repetition is the best way to learn the syntax, idioms, caveats of a programming language

Unfortunately, hard disagree. The best way to learn a Lisp is to write Lisp. You can look at code all you want, but you won't get used to the syntax/parens until you start writing it. Same applies to non-Lisps.

> I think a lot of people program in Python but programming in Python is not their main occupation. These people struggle to accumulate knowledge, because they may encounter concepts or APIs only from time to time, and by that time they already forgot.

This is a great point. Static typing is great for API discovery, which Python sadly lacks. However, I wonder how much LLMs are eating this "low-code" market. Also, if Python is non-critical to their jobs, I suspect that they won't feel motivated to explicitly study Python over the long term. Doing spaced repetition is famously hard, and non-motivated people will likely give up and just do "JIT learning".

> Also, I want to cover some "unorthodox" topics for which spaced repetition may be specially well suited. For example, I'm building a deck called "A tour of the standard library", where you can learn all the modules that are available, just so you know what is out there, without going deep into it.

FWIW I'm learning Rust, and to "learn what's out there" I've just been binging random Rust videos on Youtube at 2x over lunch. Granted I'm an experienced dev and I have an intuition as to what "should" be out there, so perhaps this story is of limited use.


Python is great for API discovery. `dir()` and `help()` are builtins. Use the REPL.


Sadly, hard disagree. I programmed Clojure professionally for ~2 years, and its REPL is significantly better than Python's. Despite that, nothing compares to "dot" autocomplete and being certain that a method can take a certain object type. Like, I could type dir/help and then the token in question then parse the output with my eyes, remove the help/dir and type in what I wanted... or I can hit dot and scroll the available methods/properties. It's not even close.


You may be interested in rust.cards, which I'm also working on :D


LOL I'll check it out.


SEEKING WORK | Remote | Worldwide

Location: Barcelona, Europe

Remote: Yes

Willing to relocate: No

Technologies: Python, C++, JavaScript, Kubernetes, Machine learning... and more

Résumé/CV: https://www.linkedin.com/in/v%C3%ADctor-l%C3%B3pez-ferrando-...

Website: https://www.thediligentdeveloper.com

Github: https://github.com/vlopezferrando

Email: victor <at> thediligentdeveloper <dot> com

Hello! For 5 years I've been a cofounder and director of software engineering at a startup, growing and leading a team from 0 to 15+ developers. I have a deep understanding of technology and how to apply it to solve business problems. During the last months, I have done contractor work for a couple of companies, building the foundational software for one of them, and helping the other improve their software development processes to deliver a project they were struggling with.

I have a strong educational background (PhD in bioinformatics and machine learning, MSc in mathematics, MSc in computer science), and have worked with a variety of technologies (Python, C++, C, Go, JavaScript).

I've been a software engineer for 15+ years, and so have a wide range of projects I've worked on, both coding from scratch and leading teams of devs. To name a few: I built a multi-modal journey planner in C++ https://www.iomob.net/technology/, a machine learning platform in Python http://mmb.irbbarcelona.org/PMut, a math high school contests site with Django https://www.contrarellotge.cat.

I already linked my Github profile earlier, but if you want to see some code I wrote, here is a video where I explain some Python and C++ code I wrote for the hardest problem of last year's Advent of Code: https://www.youtube.com/watch?v=C8jUMwnBQEU


Location: Barcelona, Europe

Remote: Yes

Willing to relocate: No

Technologies: Python, C++, JavaScript, Kubernetes, Machine learning... and more

Résumé/CV: https://www.linkedin.com/in/v%C3%ADctor-l%C3%B3pez-ferrando-...

Website: https://www.thediligentdeveloper.com

Github: https://github.com/vlopezferrando

Email: victor <at> thediligentdeveloper <dot> com

Hello! For 5 years I've been a cofounder and director of software engineering at a startup, growing and leading a team from 0 to 15+ developers. I have a deep understanding of technology and how to apply it to solve business problems. I'm currently looking for a remote position as a software engineer or engineering manager.

I have a strong educational background (PhD in bioinformatics and machine learning, MSc in mathematics, MSc in computer science), and have worked with a variety of technologies (Python, C++, C, Go, JavaScript).

I've been a software engineer for 15+ years, and so have a wide range of projects I've worked on, both coding from scratch and leading teams of devs. To name a few: I built a multi-modal journey planner in C++ https://www.iomob.net/technology/, a machine learning platform in Python http://mmb.irbbarcelona.org/PMut, a math high school contests site with Django https://www.contrarellotge.cat.

I already linked my Github profile earlier, but if you want to see some code I wrote, here is a video where I explain some Python and C++ code I wrote for the hardest problem of last year's Advent of Code: https://www.youtube.com/watch?v=C8jUMwnBQEU


Catalan has about 10 million speakers.


In total, yes, but only about 4 million _native_ speakers.


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: