RECENT TOPICS » View all
Is there anyway we can have a offline system? I know you have been working hard on the site, but offline would be balls to the walls awesome, something like gmail offline where it takes note of changes and just updates when you reconnect.
I ask because sometimes I have a spotty internet connection, and it would be nice if I could use RTK when that happens. Also I am going to flying for... eight hours this weekend (not to mention driving for an additional six) and it would be so cool if in the future I could add like 50,000 cards offline.
Just a thought.
You could try moving your progress to an srs system like Anki. Although I'm not how sure the import plugin works for Anki since I've never used it. It's worth a shot. You could even put it onto an Iphone or Ipod Touch so you can review on the go. There are some versions for the phone also, although I don't know how successful those were.
There is no "offline" capability planned.
There is an export script with which you can grab your flashcards, and do some extra reviews during the day, on your cellphone or other. Some users do that. The export script was broken in the last update and will be back up very soon.
You can not re-import your SRS status though, this is more of a way to do extra reviews outside of the site.
Would you be open to me coding something that works with google gears?
Thank you isharabash. That's a kind offer, but I don't know how that would work out. To be quite blunt, I don't have a SVN setup, and I am not prepared to try to correspond over mail or chat, to try to merge code, discuss and agree on how it should be implemented UI wise. I don't want someone else to be dependent on my roller coaster development cycles, and motivation ups and downs. So I say this out of respect: I would'nt want to engage someone on a project and then let them down.
Making a website offline could also be a lot more work than you may expect. For something like GMail to run offline they must have architectured the code with that in mind right from the beginning. They probably have a layer to abstract the database so that it stores on mysqlLite locally and otherwise with the real servers, all invisible to the main app logic.
What do you think about AIR?
I'm not too keen on the offline system integrated in the browser. It just seems strange to me. You select an option to turn a given page offline right? Or it will go online/offline and synch when needed by itself.
With Google apps this seems natural, because the one page that you're looking at IS the app, the whole thing. GMail is a prime example. But when you have a website with various pages with varying degrees on functionality on those, which page should be offline-able and which not? I find this rather confusing.
You can make the whole site in offline mode, but that seems quite messy to maintain. Everytime you create a new page you have to ask yourself, should this work offline or not, how will the user know?
With a separate AIR app, it seems like you have twice as much development. However you can create a subset of the online functionality. You can reuse also a lot of css, javascript, and html.
And what kind of features would you expect to have offline? Did you have in mind just the flashcard reviews or the story saving as well?
Ok, not to look stupid, but here's what's my idea on it.
First of all using Air, or Google Gears shouldn't be that much of a differnce, after all Air is just a standalone Webkit+JS+some extra api calls for system interaction. Gears offers us just a database back end to store and retrieve data from.
Here's what I think would be requried for an offline RevTK version.
RevTK API:
- retrieve all card information of the boxes (in bulk, selectable, e.g. give me all boxes up to box 3 or 4 or ... only study cards)
- retrieve stories for the cards (bulk, e.g. given a set of RTK numbers, return the user's stories for those in a batch)
- ability to tell the server which card has been successfully reviewed. E.g. (set card K's box to N)
- ability to update a cards story
Now the roundtrip looks like this:
First we fetch all "interesting cards" with stories.
[at this point we know the tuple (card, story, N_box)]
review goes like review on RevTK (just with no server interaction. right now, evertyhing is stored locally to the browser (read: Gears, HTML5).
On Sync (either make this a push button, e.g. sync now, or do some network discovery, which might be somewhat hard to do in a nice fashion), we basically iteratate over all cards (or bulk update) and tell the server, which card should now be in wich box, and how many additional fails/success have happend to the card. Tuples of the form (RTK_num, N_box, N_success_diff, N_fail_diff). As well as card updates for cards, with a changes story.
This bears some additional questions: Do we want to do the fail/success to be diffs or absolute values. Absolutes would mean, the client knows the exact fail counts. Diffs would reduce the payload on Server->Client transfer.
Updating the story, and retrieven should already be in place (see S shortcut on the review page).
Last thing. What's the best primary key that should be used? RTK Number seems feasable, except we want to do RevHZ, or Non-RTK Kanjis too. Unique should be the Unicode point, though that might get confused with RevHZ. So we would at least need
(JP, unicode code-point), (HZ/CN, unicode point).
Just my ideas on the issue.
I'm more for a gears/html5 solution as that would allow an Iphone version too. (as Apple had planned before the released the SDK due to high demand, but this seems a perfectly feasible problem to the non-SDK solution and should work with normal browsers too, as well as on other mobile devices.)
PS: This is how iAnki works.
ファブリス, what if you just made a JSON/XML interface for syncing the deck (both ways)? Then someone else can develop an offline application/bookmarklet/Firefox extension/Anki plugin/whatever on their own, without you needing to be involved in it.
Last edited by humpolec (2009 November 17, 3:30 pm)
I'd take JSON over XML any time. Smaller, easier to read on the client, etc.
I would propose the followings steps:
1. What endpoints do already exist?
2. What endpoints wound we like to have?
3. Which endpoint can be realized?
4. Implementaition and testing of the endpoints.
@humpolec: very interesting idea.
I think humpolec has a good idea. The only reason I left this site for anki was for the offline. I still visit this site daily for story ideas and forum stuff. If there was anki plug in or other off line possibilites, more people would likely stay then switch to anki I believe.
After a night sleep, I realize now that most of the needed api is already in place.
a) We can bulk get all the cards (incl. Box info and next schedules review time) from the export data
b) We can obtain the users story data from the server using a JSON(i think).
So a one way RevTK => Anki Deck should be feasable already. If I find some time tonight I might write up a prototype.
The other way => RevTK, which IMHO is the more interesting and required for syncing. If possible now, though only through a pretty stupid hack and is extremely resource intensive on the server. If we would basically emulate the review process with a webclient library. and kept track on the cards, we could probably make sure the right cards from from box to box. Though this requires some logic on how to deal with cards that should just stay in the box they are, if you proceed with the whole review process. [Though I _guess_ one could force a certain card to be reviewed]
buttom line is this: While it may be possible to *hack* RevTK to be syncable, I'm not in favor for it, and I'm quite certain ファブリス is neither. After all we should, if we do something, do it with his consent and support.
angerman wrote:
If we would basically emulate the review process with a webclient library. and kept track on the cards, we could probably make sure the right cards from from box to box.
You can't hack it into the current site without proper API. The flashcard review page uses the principle of "least information": it doesn't know what box a card is in, it doesn't choose what box a card goes to. If you look at the ajax calls in Firebug you will see that all it does is request for card contents with "get" and sends the review answers as flashcard ids and answer (yes/no/easy). It is the server that takes the current card schedule and updates it.
For synching the lastedit (stories) or lastreview (flashcards) timestamps can be used. Easiest would be to overwrite online with offline data where timestamp is more recent.
The next step is more complex. Timestamps from synched cards/stories need to match the ones in the database. DST can affect timestamps and mess everything.
Ideally not extra timestamps would be required, lastreview/lastedits would be sufficient. I don't know if that's possible, I'll have to think this through when I can look at it. Only way it would be implemented sooner than many other features on the todo list is some kind of generic synching algorithm in a similar setting that I can base myself on.
ファブリス wrote:
You can't hack it into the current site without proper API. The flashcard review page uses the principle of "least information": it doesn't know what box a card is in, it doesn't choose what box a card goes to. If you look at the ajax calls in Firebug you will see that all it does is request for card contents with "get" and sends the review answers as flashcard ids and answer (yes/no/easy). It is the server that takes the current card schedule and updates it.
That's pretty much what I ment, from the exported cards I'd know it's (current box), and fail/succeed the item as needed to transfer it to the "updated" box. That would for sure mess up the timestamps. That's for sure.
The above could even be archived without messing with the boxes. if one would just track the F/S/E states, in a sequence. They could be replayed to the server. And one could compute the card's box, based on the sequence and the last known state (export).
The biggest issue would arise if one was to use an external (offline) system to review the cards. Review the cards on RevTK, and sync later in which case there would be a severe race condition and the whole learning process screwed up. So basically the user has to make sure his deck was synced before he starts to review on either the website or his offline app.
Yes, timezones need to be handled with great care, for not screwing the review system.
I suppose the most interesting usecase is the (due and study cards) anyway. E.g. you know your going on the road/train,... and want to review your (todays) due and study cards. If you play your changes back the same day (as described above) that shouldn't pose SUCH a big issue, you'd still mess with the modification timestamps and get artificial timestamps. How much that impacts the review schedule I don't know.
Anyway, these are just my thoughts on how that issue(?) might be tackled. I don't intend to impose anything here.
Ok, writing a RevTK -> Anki export with stories and stroke count isn't that hard.
But it would incure quite a bit of traffic for ファブリス, and I don't consider that such a great idea. Best would be if we could just get the stories and stroke count int he export skript too, as one could import that into a fitting Anki model straight away. Still, syncing between RevTK and Anki makes little sense as the two SRS use different approaches. But if one was to switch over from RevTK to Anki for a while as one knows one is going to have no network for quite a few days, it might make sense.
People have already exported their review status to Anki before, someone made a a script before to translate the review delays where applicable. Search the previous "export" topics. If you want to write another one, you have all the data at your disposal with the two export functions available on the website.
Hi ... coming to this thread a bit late, but am wondering if there is a way to make stories viewable offline using Google Gears (or anything else)?
I often study in places with no power connection and would be able to make my battery last much longer if I could turn the wifi connection off ...
arigato
Not yet
Your best bet right now would be to export your stories from "My Stories" and view it comfortably in a spreadsheet program while you're on the go.

