Skip to main content
Welcome guest. | Register | Login | Post

Auto-scheduling tool demo

22 replies [Last post]
Offline
Joined: 2007-09-10

I thought about starting a new forum topic, but I'm too lazy right now. Attached is a webpage with a fake demo showing the most important feature of an availability tool I hope to finish up some time soon. Turned it into a new topic Eye -- libervisco

General comments are very welcomed. An example would be "wtf?" Suggestions of improving it are premature, as I cut many corners to have something to show. It actually should work more or less if I had real data (paging and time are currently completely nonfunctional). Getting real data will be one of the high priorities for another demo hopefully mid week next week.

Basically, when this has real data and when the time at the top is working (even with nothing else added), the user will be able to view the time availabilities for any number of participants (for a particular tournament) at once. Also, the user will be able to see the overlaps in availability (white sections.. though colors may change by next week).

OK. The attached webpage got saved as .txt for some reason, so rename it to remove the last .txt and it should display on firefox.

*************
*************
THIS IS ONLY A DEMO.

It showcases a part of what hopefully will be available to all sometime next week but actually be working. When this works (hopefully next week), the participants will actually be gamefest participants and the availability bar next to the names will accurately represent that participants availability. Then, we can use the group availability to see the overlaps of when chosen participants are available.

There are several features I have in mind but did not have time to implement for the demo. You should be able to pick the timezone and see everything in your timezone. I am thinking of starting off with a time resolution of 15 minutes. This would mean that a week's worth of availability would go off screen; thus, the reason to page it. Also, the resolution and time frame observed should be customizable. Anyway, this is the main features outstanding.

Right now, I think everything would work if it had good data. To that end please help me by posting below links to all pages or specific comments that list some player or teams availability. This will help me gather all that info. Hopefully by next week I will at least have Nexuiz 1-1 and one of the more resent tournaments that still does not have schedules (so that the tool may be used for it).

BTW, the javascript stinks royally. It will be overhauled very quickly. The reason for it is that I had to try and do things as quickly as possible so that I would finish this today (most of the code was done today and two days back.. the rest of the time, I was thinking it through and avoiding coding perhaps.. or busy with other things).

libervisco's picture
Offline
Joined: 2006-05-04
Since it can't be properly

Since it can't be properly ran from the attachement I put it here: http://www.freedomware-gamefest.com/jose-auto-scheduler-demo.html

Seems like it could be a really useful tool. By 2008fest it can be officially used. Smiling

I think so far what it misses most is an input method (perhaps a back end of some sort where availability times can easily be entered) and a full 24 hour scale (so far it goes only to 13th, not sure what "click" there means though). Also the style in which scale displays could be a bit clearer, as in one hour being in one shade of red and another in the other, just to more easily distinguish between hours.

But all in all, this is quite an impressive tool so far. Smiling

Offline
Joined: 2007-09-10
The part of the comment

The part of the comment sayng how the tool looks like it might be useful is what I wanted to hear. Smiling

The rest is a criticism of a broken dog that had to be thrown out onto the net. Have mercy.

BTW, the input method is what I spent the most time thinking about. I might try to get that working for next week, as it would save me a lot of time for entering things. If I am late next week, it likely will be because of that.

Here is a sample of notation I am considering (you can't really tell by one sample string but it gives flavor):
"UserSupreme: -5 Avail mon 13:50-2:50 tue-thu 10:40-0:40 wed all sun 3-4 fri sat 4-3 Unavai tue ... Av weekday ... U wkends ..."

There are a number of rules and many things to consider (eg, what if in the future users/clans/etc want to use ":" in the name). Basically, you specify availability or unavailability any number of times and the specs coming after overwrite the earlier. In this way you can easily first paint with a broad brush then subtract a few sections here or there. Otherwise, you may have to specify too many time segments .. but of course, you always can if you want.

I want to primarily (but not exclusively) find a very convenient notation for text entry. Then deal with getting it to work (I'm doing both in parallel, but a great implementation of a bad notation stinks).

Naturally, I want a gui to data entry too, but a parser allowing for text input is very useful. It makes things easy many times, and it makes it easy to do many players at once and maybe even copy/paste in rapid succession. Many players can also be done with gui if they overlap in time specs, but .. well.. think of scripting in linux and how that sometimes leaves gui data entry in the dust.

Anyway, I am experimenting with data entry but stopped in order to throw a dog out (more like to give you people a bone).

Another possibility for next week is to centralize other data and generate simple tables showing point totals, averages, win/loss, etc, per tournament and overall. Eventually, people will need to go through the demos harvesting stats (the most obvious being frags), so we can put many types of stats up. Also due at some point in time are interesting formulas based on stats (an example would be some measure that takes into account frags and the quality of the opponent.. so frags against a player with a good winning percentage would give more points that frags against a player with a weak perc or low ranking).

Question: why did the upload add the .txt? That is not how it was named on disk.

Offline
Joined: 2007-09-10
We can start logging the

We can start logging the availabilities right now. On paper, precisely define the availab in a notation you think is the most convenient. Fill up a text page for example with un/avail data. Then maybe next week that will be ready to go along with the parser. Well, if you are serious I will work on the parser the very day you give me a sample file (eg, a full tournament.. one that has already been done).

A sample file might look like this:
player2: -2
A everyday 0-10 14-0 mon 12-23
U 20071225 allday
player98: +4
A mon 4-19:40
A tue thu-mon 1pm-10pm
Av wed allday
U 11:30-2pm
BigGuy::; +10 U 13:10-15 U 20071215

The first entry means:
username "player2" is in timezone UTC-2 (thus all times that follow will be based on user's timezone). player is available every day of week from midnight to 10 am and 2pm to midnight (the next day). Also monday is available from 12pm to 11pm (this overlaps with the earlier spec but that doesn't matter). Also, regardless of what came before, the player is unavailable the entire day of december25.

The second entry means:
..basically what you would expect. In the second line, the 4 is not ambiguous if we make a rule that if any part of the time spec has hour > 12 then the whole timespec must be in that form. The third line specifies the time for tuesday thursday friday saturday sunday and monday (notice the wrap around). The monday hours overlap with the prior timespec but that is ok. Now we know that monday the player is available from 4am to 10pm. Note that "Av" was used in the fourth line instead of "A" or anything else. The last line removes the lunch hours from everyday regardless of what was specified prior.

The third entry means:
Here what is new is that it is all on one line and we have "::;" which means that "::" is part of the username and ";" was used as the separator (ie, the user name is "BigGuy::"). Also no time is given for the 15th of decem meaning all day. Also, unavailability was specified at the beginning. The first two entries started with availability. Originally, I was going to assume that "U everyday allday" or "A everyday allday" was implicit. But I think what I'll do is to assume that "unsure" is the initial condition for all times. Thus if you want to say, "never available except monday ..." then say explicitly, "U everyday allday A monday ...."

This **hypothetical** set of specification rules is very flexible. This means that code to implement it would be more difficult. I would prefer easy over difficult but foremost I want a spec that is comfortable to use for entering data (because data gets entered for life but the code need only be implemented once by one person). For example, requiring 1 space between items is easier to implement than arbitrary spaces (or arbitrary whitespace), but it's easy to add an extra space by accident when entering data or to want to use spaces or tabs for formatting. Also, I could insist on "A" or "U" for "available" or "unavailable", but some might prefer the long or short form since the short is quicker but the long makes the text file clearer (and some prefer lowercase to uppercase or vice-versa). Another issue would be the time "15-2". This spills over into the next day, but that might be how the participant described it and the easiest way to specify it. Example, "mon tues 15-2" is easier to type and to understand than "mon 15-24 tues 0-2 15-24 wed 0-2" even though they would be the same time range.

In the above examples, you would have to make sure that times were in the person's time zone. If the person specified the times in UTC but is in another time zone (eg, +2) then there should be a way to enter that. You might specify +2 to indicate the players time zone and then specify that time specification following is in UTC [we might put a "!" after the +2 to specify this].

**********

Whatever you find convenient that is not too difficult use it, and let me know (give me a sample file). The examples and explanations above were only hypothetical based on some though I had put into this before. Keep in mind that a strict format is easier to decipher but is more likely to lead to mistakes or to long notations when something else might be quicker (eg, weekday is short for monday tuesday.. friday.. also, the user might prefer "," to " " for separating some of the elements of the spec.. etc.)

So to repeat, the above is an example of what I had in mind. Use something like that or make up your own. If you do and let me know (hopefully with a sample line or lines of real gamefest data) then I will try to get the parsing working quickly so that we can use this tool for whatever is left of the tournament (and players can also use it to easily figure out when they might schedule practices with each other). Note, that you probably prefer multiple lines for multiple players or multiple parts of the availability spec, but it may very well be possible to put everything on one line without ambiguity issues. If that is what is comfortable than go for it.

Offline
Joined: 2007-09-10
>> Well, if you are serious

>> Well, if you are serious I will work on the parser the very day you give me a sample file (eg, a full tournament.. one that has already been done).

Just wanted to clarify that my intent is to help make the rest of the fest easier for admins and for end users if possible. I don't want to appear pushy. It's your choice if you want a tool quickly or not. Also, instead of old data, you may want to instead do what you have available that is of a tournament whose schedule has not yet been done. This might improve the odds of getting the tool to help out with the scheduling that has yet to be done (well, most people have not found times for most matches even for tournaments that started a while ago).

Another enhancement might be to have the tool suggest teams based on some specification, eg, maximize (or minimize) the availability overlaps.

Hope you don't get a headache reading the above posts. Anything that sounds crazy or that requires many braincells, just skip.

If you don't reply with data, I'll just continue along as planned prior to this conversation. Yes, I very much have data entry in mind, but I just am not sure yet how or when I will implement it (I might soon though).

Offline
Joined: 2007-09-10
This is a great idea. I

This is a great idea. Smiling
I also thought about something:
An IRC bot notifying you when somebody is online. (I couldn't find anything in xchat doing this.)

Even better would be a bot capable of storing all the match ups and sending a notification to all concerned players if they are all on IRC at the same time.

Here is a bot that shouldn't be too hard to modify to do this:
http://inamidst.com/phenny/

I already played around with it once and it's quite easy to use. It's written in python.

libervisco's picture
Offline
Joined: 2006-05-04
Jose wrote: Another
Jose wrote:

Another possibility for next week is to centralize other data and generate simple tables showing point totals, averages, win/loss, etc, per tournament and overall. Eventually, people will need to go through the demos harvesting stats (the most obvious being frags), so we can put many types of stats up.

While this would be useful it seems like a separate project to auto-scheduling so maybe focus should be put on what may be finished sooner.. Just a thought. I'm not a programmer and it could be that the latter is actually much easier to do than the auto scheduling thing.

Jose wrote:

Question: why did the upload add the .txt? That is not how it was named on disk.

Probably because it doesn't support .html uploads. Otherwise I'm not sure. Either way, just removing .txt from the file name does the trick.

libervisco's picture
Offline
Joined: 2006-05-04
Jose, I'll go through the

Jose, I'll go through the scheduling threads and try to put up the availability list. All you have to do is ask. You made your points. Sticking out tongue

Jose wrote:

Hope you don't get a headache reading the above posts. Anything that sounds crazy or that requires many braincells, just skip.

Yeah, really, thanks for the compliment man. Lol.

Cheers

Edit: Btw, and feel free to consider this just a wish report, would be nice for the tool to allow players to specify availability themselves. Then we only have to enter what they currently specified in forums and then for everything further (if any) instruct them to put the data into the actual system..

libervisco's picture
Offline
Joined: 2006-05-04
Hm now that I actually

Hm now that I actually started making the list based on your (syntax-like) instructions above it didn't take much before I encountered availability posts that say player will be available at this and that time until next week after which it would change, that a player has a flexible schedule etc... it all just starts getting more complex and I'm not sure how to convert this to the text file that you wish to parse.. I made a couple of short examples in which I made quite a few assumptions.

For example, if a player says he's available all the time between this and that hour I assume it's "allweek". If he says that he's available every evening I take evening as 18-22.

I'm not sure how would all this work out. These availability posts are just a basic reference to help us and players see when a particular match could be played. It's not strict, nor was a particular strictness required.

So maybe it would be best to first come up with an input system that will force a bit of a form to it and then just fill those up. Also maybe it can be done in a grid fashion where we have a week-greed divided into days and in each day slots of 2 hours or so and just put everyone who we do have data for into slots that match their availability. Slots would be in GMT, but could perhaps be converted into any other time zone if necessary.

Then this grid could serve as an input to the script that then determines the approximate match of availabilities between players.

Offline
Joined: 2007-11-23
You can stick me for the

You can stick me for the same availability under Tremulous as OA1v1.

Offline
Joined: 2007-09-10
What I currently have in

What I currently have in mind (but details not finalized) is to have a default availability or some sort of categorizing of availability so that the "most likely" backup candidate is chosen. The best default choices I think would be one where the player makes it clear it is a default. Another way to default would be to use the most recent availability mentioned (eg, if you last specified it for tournament X then that would apply to any new tournaments unless you respecify).

There are many ways to handle this and most people likely only want one availability perhaps with the occasional update or limitation for this or that tournament.

Offline
Joined: 2007-09-10
>> I'll go through the

>> I'll go through the scheduling threads and try to put up the availability list. All you have to do is ask. You made your points.

Sorry. I was wired after a small marathon of working coding up that page (and a few weeks of coming back to this topic to work on design or experiment/study). I sounded pushy at first, but it's because I was trying to point out what I would really find helpful at the moment to try and get a working version up. I always had intentions of doing something like what I suggested you do but thought you might be willing and able to do a good fast job.

>> Hope you don't get a headache reading the above posts. Anything that sounds crazy or that requires many braincells, just skip.
>> Yeah, really, thanks for the compliment man. Lol.

That was just my way of saying that I hoped I didn't go overboard with another post. I had a few hours before my free time ended for the next day and a half so was trying to get any last words on my part out the door along with the sample web page without wanting to spend too much time to rework explanations.

I don't like using too many braincells at once on material of dubious value.. but _you_ "have to read everyone's comments on this site." Smiling

>> and feel free to consider this just a wish report

Sorry for the bit of aggressive tone before. I have been a perfectionist in the "past" Smiling and felt slightly vulnerable having posted what wasn't anything horrible but, especially with the javascript, was a rushed job taking shortcuts and throwing away planned strategies. Also, there is a considerable amount more of design I had spent a while thinking through but which was not going to show. So basically I had forced myself to submit the work not in its final state and a bit of pride was getting back at me.

If a project is hashed online, then this is not as much an issue, but if you think something through for a while, you sort of want to get everything out first before being distracted too much by incompatible suggestions to what you already have planned.

Oh, the times along the top.. that was comparable to pasting a transparent sticker showing a fake time on an lcd clock for packaging and presentation purposes. I was going to leave it blank but decided at the last minute that putting hours up there would better convey the planned and mandatory but unimplemented feature.

At some later point, I hope to clean things up and describe the javascript/css/html/etc to some degree for any that are interested. It would serve as some sort of developer docs for this project. Some parts of these docs would be useful to someone building a different website. The docs would also help for any that want to maintain the page in the future. [As I build/design the page, I experiment and reference the online documentation. I see on reason to let this work go to waste.]

>> would be nice for the tool to allow players to specify availability themselves.

I had been thinking that we want to scale things out, eg just in this way, but to have these user-contributed updates be mere suggestions. It would be like if the admin/organizer(s) would receive patches from the community. Once verified for sanity, it would be "activated" (made official and viewable on the official portion of the website).

Now, a technical situation needs to be mentioned. The way the page works is that it is not attached to any server. No modifications can persist once you close the page/browser. The best I thought of doing when a player uses the system would be to have the page present some javascript code to be pasted back onto the web page. The admin could gather all of these contributions from players and put them inside a local copy of the webpage. That local copy would be uploaded to the website and would have all the submitted changes. [Eventually, this can be integrated with an official backend database (eg through php/drupal) though I do like the stand alone ability and don't plan to abandon that design choice (ie, I think I will design/implement a page that works stand alone and then we can port if desired).]

>> Then we only have to enter what they currently specified in forums and then for everything further (if any) instruct them to put the data into the actual system..

I see. You have ideas about using this tool soon to help out with *this* gamefest. Are you nutz!!

J/K

Offline
Joined: 2007-09-10
I think your suggestion

I think your suggestion would be more useful to this discussion
http://www.nuxified.org/topic/looking_for_utility_to_install_and_run_gamefest_demo_files_on_nix_systems#comment-11570

*****
EDIT:
The reason is that you would probably want a specialized client running on your machine to serve up the notifications. [Or maybe a plugin for the browser would do?]

... also, I guess this could be done with AJAX techniques. For example, the gamefest site or nuxified would run the checks in the background. Javascript code on each nuxified/gamefest page could periodically check the server for this information and then alert you if your wish came true and if you were browsing the site. An alert box would grab your attention maybe. Maybe have the javascript load up a sound file (music maybe) to really grab your attention.

A local client is more flexible than the AJAX method described since it might be set to run at all times even if you were not browsing this site and you would have greater access to the local machine. I'm not sure if a browser plugin (eg, for firefox) could do everything a specialized client could. It would depend on what the browser allows plugins to do.

Offline
Joined: 2007-09-10
I'll look these over and

I'll look these over and try to get *something* that would be useful for these specific tournaments.

Offline
Joined: 2007-09-10
>> While this would be

>> While this would be useful it seems like a separate project to auto-scheduling so maybe focus should be put on what may be finished sooner.

I agree. The other was/is a fall-back plan if I don't think the avail tool will work soon.

I am going to continue focusing on the avail tool, especially since you seem interested and provided useful data.

>> Just a thought. I'm not a programmer and it could be that the latter is actually much easier to do than the auto scheduling thing.

For simple needs, it could be easy. The main thing at first would be to centralize the data so that users could see point totals from one page for all tournaments. If you like that idea, you could consolidate onto a single page just the same. The only real new feature (in a simple initial version) would be to have the total points for the fest be summed up automatically from the points of the individual tournaments. Also, I'd throw in averages and a detail here or there. These features would all fall under the category, "easier to do than the availability tool."

... and I got the impression from being on IRC for a few minutes some time ago that you know drupal decently. "Programmer" is a relative term. In the case of the page I uploaded, javascript, css, and html are the main skills. I do have "general" developer understanding of a number of things, so in some areas I can wing things with online docs easier than someone with less experience. Maybe that is what you were getting at.

.. And didn't you hear the news from Microsoft? We are all programmers because we use Linux (lol).

Anyway, this stuff is interesting. I think a lot of people would (like myself) find it neat to know how to do some things with js/css/html, so later on I'll try and highlight some of "tricks" I found to be among the more interesting ...once the code is cleaned up more and after the tool is doing something besides smiling (not even that) pretty.

libervisco's picture
Offline
Joined: 2006-05-04
I understand.I think you

I understand.

I think you should do whatever you planned as best. Suggestions are just suggestions, and don't necessarily have to affect the final thing if you decide so for a particular suggestion.

Jose wrote:

I see. You have ideas about using this tool soon to help out with *this* gamefest. Are you nutz!!

No.. Actually, I don't think we need another change in the way things are done.. I'm just hoping to pull this years fest through and then have it as a reference for the next one.. So tools developed now can really get most chance to shine on the next fest.

Offline
Joined: 2007-09-10
The "J/K" is what I use to

The "J/K" is what I use to mean "just kidding" (I don't know what is the universally understood standard Internet shortcut for this).

Certainly I hope this tool can be put into shape asap to help out with scheduling.

libervisco's picture
Offline
Joined: 2006-05-04
Ah right. I actually know

Ah right. I actually know what J/K means, but I somehow missed it when I was replying.. Hmm yeah, well if it's in a good shape to be used for this one then sure.. We'll see.

But certainly the cleanest possible implementation will be when we organize the (next) gamefest with such tools in mind from the start.. so no converting after the data has already been collected one way (on the forum) is necessary.

Offline
Joined: 2007-09-10
I uploaded the

I uploaded the OA1v1_availability.txt file with comments. The comments are a preview to the new format which I should describe better in the near future. I think basically all details have been finalized, and it is very flexible. The next planned upload is of a file with many samples to help explain the new planned format that the tool will parse/understand.

libervisco's picture
Offline
Joined: 2006-05-04
Thanks.In the sample file

Thanks.

In the sample file comments you mention copy pasting. I think copy pasting is not so much of an issue as scouring forums for existing availability data and then basically converting it roughly into a syntax. That's why I already expressed some reservations about using this for the current gamefest since we've already started doing things one way (perhaps crude, but it sort of works for now). If we are to use a different method, ideally it would be used from the start.

But we'll see until it's done. I'm not saying neither that we'll use it for this one nor that we wont, but for the 2008 at least I think it should be a sure thing. Smiling

In short, basically I can't yet commit 100% to using something which is so early on development, especially when the fest is already proceeding on its way and scheduling is already being done.

Offline
Joined: 2007-09-10
I delayed posting in case I

I delayed posting in case I got inspired. No dice. I guess my head is resting. I haven't been able to start coding. What I did was to nail down some code organizational items (a plan of attack and where I will store data etc), but I did most of it in my head about a week ago. You could say I have writer's block right now. Anyway, I have this project at the top of my to do list, so hopefully some day soon I'll feel comfortable enough to start writing code.

libervisco's picture
Offline
Joined: 2006-05-04
This is an interesting tool

This is an interesting tool that seems to be doing exactly what was aimed for here: http://doodle.ch/main.html

Example Jubuntu made for Valherus vs. Team 3: http://doodle.ch/participation.html?pollId=s7qvtwdvxsbd4sym

Offline
Joined: 2007-09-10
Hey, that link works for

Hey, that link works for me.

I have decided when I attack the avail project again to do it for educational purposes. I will try to document the code sections well hopefully in a way where others without a lot of experience with how a web page works can easily get the main ideas and pursue details by clicking "deeper" into the code. I haven't convinced myself that the distraction to code it strictly for gamefest use it will have a worthwhile payoff for me, or I would have done it by now.

The doodle page might be missing a few things I had in mind for this project. Entering the info with shorthand (and extending into the future way beyond 1 week). Being able to toggle the times to your timezone. A way to scale or get different perspective views. This is not necessary for looking at a few days' worth per hour, but if you do 15 minute resolution and want to look at a month or more, "zooming out" becomes very useful. Also it would be nice to have integration with the rest of the site. Eg, left click almost anywhere (eg, within a forum comment over normal text or background) and a contex