Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Show HN: SpacedTime – Remember the important things in your life (spacedtime.com)
143 points by uptownhr on April 20, 2020 | hide | past | favorite | 55 comments


There seems to be an unaddressed need for a well-maintained library implementing spaced repetition algorithms. I have seen implementations for SM15[0] and SM2[1][2] around but nothing that provides multiple implementations and a consistent API on top.

If there was a library like that, a tool like SpacedTime could use it easily (currently it uses fibonacci sequences when determining how soon to recall).

[0] https://github.com/slaypni/SM-15, https://news.ycombinator.com/item?id=9844613

[1] https://github.com/walterscarborough/LibSpacey

[2] https://gist.github.com/doctorpangloss/13ab29abd087dc1927475...


Given that I’ve wanted to make apps for learning languages but always get lost in the weeds of various spaced repetition algorithms - would love this kind of open source resource. If anyones interested in making this kind of thing, I’d love to chip in.

For example I notice it’s really common for spaced repetition algorithms to really easily allow me to shoot myself in the face by learning too much up front and then drowning in reviews; or to destroy myself by missing a few days. Not sure what is out there, but some extensions I’d like as a user is to be “I don’t want to spend more than x time per day doing this, so pace me please”, things like:

- the ability to specify a max “learning load” taking into account projected reviews + new cards

- the ability to “recover” from missed days not by seeing 1000 pending reviews and panicking, but by saying “do an extra 10 cards a day and in two weeks you’ll be caught up”

I’m sure I’m not the first one to think of these things but I don’t know how to research what people have done - and if these kinds of usability things, good documentation with clear comparisons of strategies, flexibility of use in different environments/languages were encapsulated in a library it would be a game changer for me.


What I would like, but cannot set Anki to do is the following:

Max 100 cards per day (I can set the number of reviews, but seeing a card twice counts as 2 reviews)

Max 10 new cards per day (restricted by the above limit)

I’ve found this to be a good pace when manually juggling this, but the thing is, I don’t want to manually do it, especially not on a piece of software like anki.


I can tell you've put some thought into this :)

I'd love to contribute towards a repo to work on this.


If I get started on one I’ll let you know!


FYI I started an empty repo on Github and made some RFC issues to collect ideas for what this can be - would love if you guys have any thoughts!

https://github.com/osdiab/libremember/issues


I recently built a spaced-repetition module in learnawesome.org to help users practice and remember not just from whatever they're reading, but also by taking notes from meetings, conferences, videos etc. Wrote an article about it: https://medium.com/learn-awesome/practice-what-you-learn-usi...

Since learnawesome.org is open-source, if anyone needs a Ruby/Rails implementation of spaced-repetition algorithm, feel free to take code from here: https://github.com/learn-awesome/learn/blob/master/app/model...

Feedback and pull requests are of course welcome :)


Very cool!

Do folks feel like there would be value in a hosted service that provides a backend for spaced-repetition apps? It's a bit niche, but feels like there would be demand for a service that would let folks build memorization apps without having to manage their own spaced repetition implementation.


I think it would be valuable, I've actually had this idea (but not the competence/bandwidth to actually build it, alas).

It could become a platform for courses built around SRS, or learning materials like Michael Nielsen's mnemonic media: https://numinous.productions/ttft/ .


Wow, thanks for that link, that's an amazing essay.


I would consider this greatly valuable


> if anyone needs a Ruby/Rails implementation of spaced-repetition algorithm

I noticed that at the root of the repository the license is specified as Creative Commons, requiring attribution and disallowing commercial use or derivatives, so not really anyone anyone ;)

Doesn’t prevent somebody writing a SRS library in another language from taking your implementation as a good reference point, though. Thank you for sharing!


Great share! Gotta check these out and see if I can take advantage of them :)


Hi Hackernews,

I created Spacedtime because I'm known to have a horrible memory. Maybe people are kidding but I wanted to change that. There are flashcard apps out there but I wanted to create one that is focused on creating cards for my personal memories. My personal goal is to store and recall all that is dear to me.

Given the personal nature, I do plan on spending a lot of my time on protecting the user's information. Today, Spacedtime does not have a server and stores all information locally. The command-line app stores information in a local JSON file and the web app stores into Local Storage. However, I'm not sure what is the best user-friendly way to go about the encryption layer and how it should be applied.

I've posted to Product Hunt, [Lobste.rs](http://lobste.rs) and Indiehackers so far. I've been saving my self from posting to HN till now. It is still an MVP but at least it is not the first version :). I've been pretty aggressive in publishing my work.

I'm looking forward to everyone's feedback!

Best,

-James


How about 3rd party storage through the users own dropbox, gdrive, 1drive. Then it's still sort of self hosted

Also easy to use same data across devices.

Not sure on the syncing strategy/performance


Draw.io does storage federation to OneDrive and others pretty well.


i'll have to look into the drive api. If easy enough, this sounds like a plan.


Here the answer coming from an idiot (me):

I've lost far more data to password or key loss or bugs in an encryption software than I've had someone try to our succeed to access/steal/...

So encryption for something that is on your local machine from my perspective wouldn't need to be a priority.


Great point. I've been battling this in my head but definitely not an immediate goal to encrypt. However, I personally want to make sure I do not have access to your data. As I start to work on providing functionality around syncing across devices I'll be keeping this in mind.


It's cool app, but I'll definitely rewrite it, using as inspiration.

Why rewrite you ask?

npm install gives: added 509 packages from 307 contributors and audited 258096 packages in 11.65s

509 packages WTF?!????????????? Javascript ecosystem is a mess.

I did not believe it, but looks like it's true: `npm ls |grep -v deduped |wc`

    512    3359   24956
wait for more: `du -sh node_modules`

56M !?!?!?!?

and final check: `find node_modules -type f|wc `

   6745    6745  303596

Verdict: NO, THANK YOU BUT NO.

p.s. among them 6 warnings about using sth deprecated. You can guess how many of 500 of them just dont give a shi^H^H^Hwarning.

npm WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142

npm WARN deprecated resolve-url@0.2.1: https://github.com/lydell/resolve-url#deprecated

npm WARN deprecated urix@0.1.0: Please see https://github.com/lydell/urix#deprecated npm notice created a lockfile as package-lock.json. You should commit this file.

npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@^2.1.2 (node_modules/jest-haste-map/node_modules/fsevents):

npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@2.1.2: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})


Anki flash cards (floss) do use spaced time learning algorithms that are also easily adjustable to personal preference. Anki has native mobile/desktop, cli and web clients. The big community also provides shared decks and vast plugin ecosystem like auto text-to-speech and imagery.

I haven't seen any of these tools doing anything that anki doesn't — why not contribute to it instead?

https://github.com/ankitects/anki


I've actually been a long time user of Anki and definitely thought about contributing to them. However, I'm personally unfamiliar with their stack and given the simplicity of a flashcard app, it was easier to start here.

However it probably is worth considering an import of Anki cards in the future. For now though, I'm focused on cards with answers you'd only know.


Because Anki's UI could do with a lot of improvement, and it is probably eaiser to separate out the algorithms, the data and the UI.


I'd disagree with you; writing up new UI for anki would be far easier then reinventing the whole wheel. You'd also get anki card support which already is a huge dataset of various flash cards.

If anything new Anki UI project would be more impressive and clearly in demand compared to yet another flash card web app.


> I haven't seen any of these tools doing anything that anki doesn't — why not contribute to it instead?

For the same reason that your area likely has more than 1 pizza restaurant. Other people want to take a stab at their own vision of a thing and that's awesome. Personally, I find Anki to be pretty uninviting to the general public.

Fluent-Forever.com is an example of an application of spaced time learning applied specifically to languages and their app is pretty great.

We may disagree philosophically, and that's ok, but I tend not to buy into the perspective that if X already exists and Y is like X then Y should not exist.


You are comparing apples to oranges here. Starting up a whole new "study group" community is not the same as opening up a pizza restaurant.

I don't mean to be harsh or mean but OP is treating this as a product rather than a hobby projects with producthunt submissions etc. when in reality it's a barebones clone of a standard application that already exists.

Open communities benefit from numbers. Another developer to Anki even if you'd just wrap around nice web ui around it would be significantly more efficient and valuable then reimplementing the same spaced learning logic and starting everything from 0.

The whole point of Anki is to standardize this field - it's libre software made for the medium not for profit.


This is such an odd opinion. The open source world is filled with different implementations of the same idea and while there is a lot of duplication, a lot of good also comes out of it. I'm not sure why somebody making another flashcard program is such an offense to you. I'm not sure why you wouldn't be more supportive of somebody trying his own thing. Competition isn't bad. It's generally a good thing.


Anki is a very big and complex project. From what I've heard and seen, it's a mess and the only person who groks it is the main developer. I get why most people are unwilling to contribute to Anki. I've thought about it myself and I decided against it, preferring to tinker on my own personal flashcard project.

It's also a very old project where it's hard to enact change that you might want. So if you have a different vision, there's no way to realistically implement that.


> Anki is a very big and complex project

But it's not. Just look at the source code for card[1]. It's modern, fully type hinted python3 code, you don't even need to know python to understand big chunk of it.

1 - https://github.com/ankitects/anki/blob/master/pylib/anki/car...


In what way is the Anki project a mess?


I used Anki extensively a few years ago when studying a new language at uni and it helped me a lot, but I just installed it again and not much has changed. It was clunky then and its flaws are showing even more now. Correct me if I’m wrong here, but even something as simple as loading an image from a URL, even though it uses a webview for the cards anyway, simply doesn’t work. Why not take advantage of the web technologies it’s using?

Also, the web client is very bare-bones, unfortunately.


Anki has so many new addon compare couple of years ago and it get updates every week if you test the beta version of the project.


Hi there!

A couple of notes :)

* It seemed to me that the cli and the web app would be related. I had to come read your comment to realize the cli doesn't read from the web app (I also had to come here to realize it was stored locally).

* Once I started creating questions, there was no way to "log out" to get back to the splash page. So that means I couldn't see the npm install command

Good luck!


Thanks for the feedback. I will be adding a api connected version in the future but will work on making that clear.

There isn’t a login so I technically cannot log you out right now. Either way a menu in the app would be helpful to direct users back to the homepage.


It looks like Anki cards. I also value spaced repetition to help me store valuable facts in my long term memory.

I personally use my Todoist for that (Project called "Anki" where every todo is a question and the answer is in the comments. And I can manage intervals by using the task scheduling feature to have them appear later (depending on the ease to remind the answer).

But I like the simplicity of your app and the logo is kinda cool also. +1 for the command line interface. Good idea.


Awesome idea. I did have a chrome extension as a future feature I wanted to work on.


Nice, and thanks for making the CLI version, because for such personal info (some of which might be security questions for a bank!) I'd rather not use the web site.

On the website however it seems to make it impossible to go back. Clinking the browser back button gets stuck in a loop after you click "Start Remembering Now"


Thank you. Will take a look and fix.


With computers, which excel at memorization, why not off-load out faulty memory there? And use time, and brain capacity, for things that we are still better at, or at least at fun or fulfilling? For each prompt, my first thought was "yeah, I have it in Evernote/1Password/Google Calendar" followed by that it makes my life easier. So basically, let's embrace our extended phenotype!

I am sure that there are people around that can flawlessly remember hundreds of complex passwords and numbers, even ones they have used in a decade. Also, knowing something does not guarantee that we can use that. For example, I guess a lot of you had:

A: Honey, when is our anniversary?

B: April 20th, obviously.

A: And which date is today?

B: April 21st... oh f-.


The ability to quickly google a piece of information != knowing, understanding, or being able to use it in any meaningful sense.

The notion that memorization is useless or somehow not integral to the learning process is wrong. When you intuitively know an idea, you can build upon it and combine it with other ideas in a subconscious and long-term way. This isn't possible if you externalize your memory to a computer.


I bet you know this, quite old, quotation on memory:

"They will cease to exercise memory because they rely on that which is written, calling things to remembrance no longer from within themselves, but by means of external marks."

> The notion that memorization is useless or somehow not integral to the learning process is wrong. When you intuitively know an idea, you can build upon it and combine it with other ideas in a subconscious and long-term way.

There is a profound difference between memorizing sequences of characters (passwords, ids, phone numbers, surnames, dates, particular APIs) and memorizing concepts (which may, but not need to, use these characters as a component).


Sure, that quote is from Socrates about books. I don’t think he’s actually wrong: the average person today probably is less mentally capable than ~2,500 years ago. Books are more useful as a storage device, to be sure, but externalization does have downsides when it comes to mental cognition itself.

Don’t disagree with on the sequences of characters point, though. Unfortunately most people don’t make that distinction and lump everything into the ‘not worth memorizing’ camp.


I was thinking on the same line, to dump all the personal memories into cloud not just anniversaries and birthdays but also what I promised to others and what I observed or any decision at work so that later I can back myself up with data. Its like a personal journal in case my memory becomes weak. There are things like evernote but they are more of a active notes which you open sometimes infront of others or while screensharing. I wanted something like Date wise or tag wise. It will be great if this can have a timeline. I also thought of making private facebook posts but for obvious reasons its not a good idea.


Ah, promises are something I didn't think about but a great one!

Can you elaborate on the time-line? What do you mean by it?


By time-line I meant any content that is put be it promises or decisions or even imp events like meeting someone new must be stored with a timestamp and can be viewed in a chronological order. Something like facebook timeline, I can jump right back to Jun 2015 with a couple of click and see what was I thinking that time. Something we used to do in a Diary which had a page for a day. This may also help reminding us important recurring event like Birthday's anniversary, insurance premium without having to explicitly look for them


I like the commandline interface a lot! It's really clean and I like the formatting. I definitely plan on using this daily. Seems easy to interop casually while in coding sessions.

I don't forsee using this for remembering my security questions. But I will definitely use this for remembering little bits of knowledge and trivia that I want to become second nature.

I'm a big fan of the `spacedtime list` command by the way. Looks good! Preview here: https://i.imgur.com/5BZygbE.png


Thanks for the compliment :)


Although a cool project, I can't help to think of this as a honeypot for bad actors.


Grrr... started browsing and it took control of the back button!!! (Mobile safari iOS)


It would be a shame if someone were to misuse all the data you're collecting about people's first grade teachers and mother's birthdays. Better keep that data safe! :)


Until I have security/privacy and encryption down. I am actually not storing any data. All the data is stored locally on your machine.


Oh cool, there could still be vulnerabilities there so maybe some kind of client-side encryption is in order? I don't have too much client-side storage experience.


Nice, I like the website. What did you use to create it? Currently evaluating new framework/tools to speed up my side project quality/workflow.


it's like a JS port of Anki, nice!


I love that this was posted on 4/20




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

Search: