The evolution of ONGbots and viewers:
I wanted to ONG a story.
How to do it?
When I asked mscha about t1i**d he said I can use his system.
But I can't.
I want bftf to be discovered and activated by OTTers.
mscha's ONGsystem is not compatible with it.
I have to do something.
I don't want to create a complete viewer.
I don't want to create a newpixbot.
The frames must be viewed somehow.
I need an equivalent of the xkcd.com/1190 page.
So I make a static html page, /ongoing.htm
The only thing in that page will be the latest frame.
How to show the latest frame?
How did GLR do it?
there was a time.png which redirected to the frame.
I create /ongoing.png. It looks like a static png but it's actually a CGI program.
How to implement the different frames?
How did GLR do it?
He used hashes.
I don't want hashes.
I want nice links.
I make /ongframe.png?f=n (n is the frame number)
ongoing.htm is a html page which contains ongoing.png which redirects to ongframe.png with the frame number.
I don't want the frames to be seen too soon.
The actual frames are in a directory inaccessible to the www server.
ongframe.png is the only way to access them. It does not redirect. It actually sends the frame. and if you try a frame from the future, it will show you this
But how will it know which frame is the last?
It has to be remembered.
There will be a file, ongstate. In this file there will be two numbers separated by a space: the state and the frame number.
The state can have 2 values: 0 when the story is still waiting and 1 when the story has beed activated.
There will be a simple ongbot, ong.c. Which will run every 4 hours and increase the frame number if the state is > 0.
Ok, I have a working ONGsystem.
But it needs improvements.
ongframe.png is dynamic. After every page reload the frame has to be sent again.
OTTers will refresh the page to see if a new frame appeared.
I have to reduce that.
There will be a timer that shows the time to the next ONG.
I do it. ongoing.htm is no longer static.
I also make it display the frame number.
One more improvement.
What happens if for some reason my botcastle is inaccessible from outside?
Nobody will see the frames. But it will still ONG.
I don't want that.
It should ONG only if at least one person sees the frame.
How to do this?
I need one more state. It's now:
0 - not started
1 - ONGoing, not seen yet
2 - ONGoing and seen.
It will ONG only if state >1.
Downloading ongframe.png with f equal to the last frame number (or without f) will change the value from 1 to 2.
Ok, it's ready.
Wait for it.
The story starts.
It works correctly.
OTTers are posting frames.
But some would like to be able to link the frame to somewhere but they can't without spoilers.
I make a small change to ongoing.htm.
Now it accepts the f parameter too.
Now you can link to any frame
It's almost like a viewer.
But you have to change the URL to see a different frame.
But this can be improved too.
Under the frame I add links to the next and previous one.
And then I add links to the first and last one.
A real viewer.
If you don't give any value of f you only see the frame and number.
After clicking the frame you see the full viewer.
mscha suggests adding bbcode to the viewer so that otters can copy it to post a frame.
I don't want to do it.
I want the viewer to have as little things as possible.
I don't want <computery stuff> to appear under the frame.
And GLR didn't do this and OTTers were posting the frames.
But then I think that I can do it in such a way that the bbcode will only appear if you want it.
I add a link under the frame: [bbcode]
after clicking it the bbcode appears.
But it's not literally appearing.
The whole page is reloaded with an additional parameter.
there is bbcode of the frame and a link to the viewer.
and another link: [spoiler]
after clicking it a spoiler with the title-text is added to the bbcode.
OTTers like this.
But there is something I don't like.
Every time the newpage is reloaded, all frames on it are sent again.
Botcastle is not happy.
ongframe.png is dynamic. The www server can't send a "not changed".
It would be better if the frame was static.
So I have to implement hashes after all?
Or maybe not.
Sustainabilizer has a good idea.
The ONGbot can copy the frames from a hidden place to an accessible directory.
Then I can use static frames without spoilers.
I do this.
Now the static frame is under /ongoing/bftf-xxxx.png (xxxx is a 4-digit frame number)
ongoing.png doesn't redirect to ongframe.png anymore but directly to the static frame.
Because of this ongoing.png will also accept the f parameter and can change the state from 1 to 2.
ongframe.png, for compatibility, will do the same.
Actually the two URLs launch exactly the same CGI program.
Also, the viewer. shows the static frame now.
But that's a problem.
If the viewer shows the static frame, how can I know if the latest frame was downloaded.
Of course the viewer is still dynamic and it could do this.
But that's wrong.
The frame, not the page should trigger the change.
I can do a trick.
If you view the last frame on the viewer, and it wasn't downloaded yet (state=1), the viewer will show you the dynamic ongoing.png , otherwise it will show you the static frame.
After implementing it, the botcastle is much less loaded and everything still works.
Then, I have another idea.
It should be visible in the viewer if the last frame was seen or not.
How to do it?
How to do it without unnecessary text?
I can make the timer change colors.
it will be blue if state < 2 and brown otherwise.
I do one more thing with the timer.
A clock counts from 4:33 to 0. And then it shows an O:NG.
I can do this too.
At ongtime, my timer will show 00:00:NG.
But what about botposting?
Someone has to see the frame in the viewer to make it possible to ONG.
From the viewer it's very easy to copy the bbcode and post the frame.
So I don't need a bot. OTTers will ONG it.
For many frames this worked and OTTers posted the frames.
But sometimes there was a frame left unposted.
They edited it in later for continuity.
I thought, Maybe it would be better If I made a newpixbot?
I already had a bot that can post, bothasar_p.
bothasar_p didn't have much to do because there was no mustard to do.
So I taught him to post ONGs.
Newpixbot posted a t1iframe 30 minuter after it appeared.
I wanted to give OTTers more time to post.
bothasar_p would post 30 minutes before the next ONG.
Later, I made the distance even shorter.
bothasar_p can post a frame only if nobody posted it yet and it was already downloaded at least once.
He has to check fhe newpages if the frame is already there.
He remembers in a textfile what was the last page he checked so he can start from that page next time.
He also remembers the number of the last frame he posted so he will refuse to do it again.
What about the ONGtext?
How to do that?
There is a tradition to post the frames with some text that has ONG with it.
The bot would have to select some words and filter them for ong.
But I wanted to do something more.
But before that the bot posted just "Ong."
We already had 3 automomes.
From Link, mrob27 and azule.
The one from mrob was the easiest for me to use.
I can use automome to generate some text and then ong it.
On mrob's website I saw that the automome output can be filtered.
I asked mrob if the filtering is done on the page, in PHP or in the automome, in Perl.
So I have to write my own filters.
I do this and now bothasar_p posts ONGmemes.
Additionally, bothasar_p will post exactly at the next frame's ONGtime.
But what if someone wants to have a frame posted but doesn't want to make the post.
I make it possible to ask bothasar_p to post a frame.
after clicking [bbcode] and [spoiler] another link appears: [ONG this for me]
Whan you click it, bothasar_p ONGs a frame.
But it's not a real link.
It's a form with an input that looks like a link.
Otherwise all the bots visiting the page would click it to see where it leads.
I have a complete ONGsystem now!
boom de yada, boom de yada!
t1i is blue.
In some frames.
The frames can be enhanced.
It would be nice to have the enhanced frames in the official viewer.
I mention it in the OTT.
I talk with mscha.
He doesn't have the time to do it.
Or to look how the bluenhancement works.
Ok, I'll wait for it.
maybe I can do it.
I can create a viewer with all the enhancements.
I do it.
I reuse a lot of code from the bftfviewer.
The new viewer has an additional feature,
you can select to see enhanced or unenhanced frames.
It's implemented with links and an additional parameter.
Some frames in bftf can be enhanced.
It would be nice to see the enhancements in the viewer.
I add another feature.
Some frames have an ENHANCE! under them,
after clicking it an enhancement appears.
SilentBot UNGs t1i.
These posts have a loot information about t1i.
There should be a way to blitz the frames together with the posts.
I make a bot that scans SilentTimer's post list for these posts and adds the links to the viewer.
Now under some frames there is a "Did you notice ..." link.
Clicking it takes you to the post.
But not as good as I would want.
The posts should appear IN the viewer.
Similar how the [bbcode] button works.
But how to do it?
Import posts from the OTT?
Make SilentBot post to the viewer?
But the Silent Chronotransponder is a general purpose posting interface.
Make one interface inside another?
And I shouldn't insert the whole
Some part don't belong there. Like the UNGtext.
Or the frame - because it would be too redundant.
What I'm trying to do reminds me of mirroring.
Which is also something I'm trying to do.
I think how to do it.
In the meantime I add the "go to frame: ___" input.
I need something more general.
It will be an independent interface.
And not specific to to the t1i viewer but compatible with any viewer I will ever create.
Posting to is is almost exactly the same as posting to the Silent Chronotransponder.
Except you can only post to your own story.
I make some scripts that import SilentBot's posts and takr only the relevant parts.
Only a few posts need a manual correction.
Now under a t1iframe the "Did you notice ..." link makes the post appear under the frame.
Exactly what I wanted.
But it makes me think,
If I ever need another viewer I will reuse much code and only change some details.
Maybe I can make a more general viewer, that can handle many different stories.
It can be done.
The viewer would need another parameterm the story name,
So we would have /aftertime/viewer?story=t1i.\
I do it.
It has the features of the two viewers and some more.
The previous viewers became redundant.
But I couldn't remove them, because there are posts with links to them.
Instead, they now redirect to the new viewer.
Silentbot still links to the old viewer.
Of course every story is different.
number of frames,
can start from 0 or 1,
may be ONGoing or not,
and so on...
These things can't be hardcoded,
Instead every story has now a file with all these settings
An ongoing story additionally has the ongstate file
The viewer reads the files and knows what to show.
And the new system has not only a universal viewer but also universal ongbots that can ong each story.
the ongbots also read the files and know what to do.
Also, I import all Time and afertime stories to the new viewer.
Additionally, any new story can be added at any time if needed.
So I started with an ONGoing story and somehow I ended with a complete universal ONGsystem.
There will be more posts.
Wait for it.