Home > Website Development > A tragedy occurs in Ongoing Worlds!

A tragedy occurs in Ongoing Worlds!

The hindenburg

DISASTER STRIKES!!!

Disaster strikes in Ongoing Worlds’ first play-by-post to be created. The game, which was created just a few days ago has had three posts so far, two by the creator; Mike, and one by me, testing out my new character which I created for the game.

Mike spent an hour and a half writing a story post which he claims was awesome. It was a work of literary genius. But unfortunately he spent all that time writing this amazing post in the browser, typing away inside the textfield on the “post” page of his game. When he was finally finished with this piece of artwork, he reached for the submit button… and pressed it.

That was where things went wrong. He’d expected the next page he saw was to say “Your post has been submitted successfully”, but unfortunately what was actually shown was a login prompt saying “You need to be logged in to access this page”.

Disaster strikes! Even logging in successfully here and going back to the post page doesn’t retain the post that Mike spend so much time and effort on.

The next thing I see on MSN client on my phone is “NOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO”, and some later claims that he was in tears from loosing the story post (kidding – don’t kill me Mike!)

The problem

I haven’t yet identified the problem that caused Mike to be logged out. I assume it’s because he spent so long writing the post that the session timed out. Although I was pretty sure the sessions is set to a very long time. If not, it can easily be changed.
I expect people to spend a long time on the “post” screen, and definitely don’t want this to happen again.

The solution

I have no clear idea what the solution for this problem would be.

In the many years I’ve been running Blue Dwarf in a Yahoo! Group, people have complained to me about loosing their posts, either from their browser crashing, or accidentally pressing “backspace” and loosing their post, or just submitting the post but it not appearing on the messageboard. With the Yahoo! Group I had no control over what went wrong and why it went wrong, so what I’ve always recommended is to write the post using MS Word or OpenOffice, that way you’ll always have a regular backup being taken of your post, which means you will get most of it back when you have a computer crash. Then when the post is finished you can copy and paste it into the field on the “post” screen.

But with Ongoing Worlds I’m responsible. I feel so bad for Mike for loosing the work. He did admit straight after that he knew he should have written it in a different text editor and copied it across, or taken a copy just before clicking the button to send it.

Idea 1

So one solution I came up with was to put some warning text on the post page to prevent people from writing their posts straight into the field on the website. It would be a warning that something might go wrong, either with the website or with their browser, or their internet, and not to spend too long writing the post in the field. This is the easiest solution.

Idea 2

I could write a javascript timer which counts how long you’ve had the “post” page open for. After a few minutes it would bring up an alert box warning the user to backup their work. This idea is a bit annoying though because a fast writer might have written many paragraphs before they have noticed the alert box has come up on the screen, stopping them from typing.

Idea 3

When the user clicks the button to submit the post, it saves the entire post into memory, so that if there is an error like the user needs to login again, they can safely login and then the post can be successfully sent from memory, or the original “post” screen can be reloaded with the text loaded into it again.
I think this is something I probably should do anyway, but there is a limit on the amount of text which can be stored into a browser’s memory (called a session), and user’s story posts could potentially be pages and pages long.

I’ll look into a few of these solutions, and see which I can add the quickest.

Advertisements
  1. February 23, 2010 at 12:33 am

    I did cry.
    And then I ate a tub full of neopolitan ice cream. I don’t even like neopolitan ice cream, it all melts together and tastes horrible.

    I like the idea of it saving at least part of the post into memory, even if it doesn’t save the lot, it could still help with keeping some of what users have written. At the end of the day, a simple warning letting people know there is a timer and that they could stand to lose a lot of work by not backing up is the simplest way of avoiding catastrophy. At the end of the day, you’re not there to hold their hands through every step of the way. It takes a certain amount of common sense to participate in a PBeM anyway (which I seem to lack as I just typed all this in the browser!).

    • February 23, 2010 at 7:44 pm

      You’re just a big girl! Okay yes I see what you mean about just warning people, I’ll put a simple warning on the post page. Maybe saying “Please remember to backup your story before pressing ‘Post’ just in the unlikely event of an error.” – how about that? Too formal?

  2. February 23, 2010 at 2:58 pm

    Idea 3
    can’t you just save the post to disk (server side – in db or not) no matter if the session expired or not and just save a reference to the saved post on the client side. Then you can connect post to character/user when the user logs in and completes the form.

    Idea 4
    You can also save the post every X seconds/minutes using ajax/javascript calls. That would help users with crashing browsers too, at least not everything would be lost!

    • February 23, 2010 at 7:42 pm

      Idea 3 is very sensible, but many things could still happen to the post, like the user accidentally closes their browser, their computer crashes etc. Idea 4 where it autosaves via ajax makes loads of sense, I havent done much with Ajax yet but I know this can be done (not sure how much work yet though). I might do this one, but will have to add it to a list of a few other things to do first.

      BTW do you have any tutorials for how to do this in Ajax? That would be really handy

  3. March 1, 2010 at 12:12 am

    Having a computer that crashes on a very regular basis, the idea 4 sounds good. But seeing as I’ve just used cardboard and meccano to make the gubbins inside my computer work free-standing inside a drawer unit, you probably wont be surprised.
    Idea 4 sounds pretty awesome to me, but what about useage (or whatever you computer guys call it when a site takes up too much memory when a lot of people are storing a lot of temporary stuff on a server)? And how long would it stay there for?

  4. March 1, 2010 at 12:15 am

    Oh, and how about “Warning – Back up your posts before submitting them. I might be ace, but I can’t be to blame for your own idiocy.”

  5. March 11, 2010 at 12:04 am

    Okay I’ll work on one of these solutions then. The most realistic is to find a plugin for the text editor I use (TinyMCE) so that it backs up to a database every so often – say every 10 minutes (will that be enough? Or should it be sooner?)

  6. Mikepbellend
    May 25, 2010 at 10:38 am

    Maybe every 5 would be better. A quick typer could punch out loads in ten minutes.

  1. March 10, 2010 at 11:42 pm
  2. March 10, 2010 at 11:57 pm

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s