FreebCode 2

Introduction | Create/View Your FreebCode | Suggest Meeting Times | FAQ

Everything you wanted to know about FreebCode but were too embarassed to ask.

faq

What's up with that name? FreebCode?
Where did you get the idea?
How does FreebCode work?
Doesn't this system have inherent disadvantages?
What are the advantages of FreebCode then?
Final Question. What's the story behind your constant usage of the word 'juxtapose' and the meaning of the banner image?


What's up with that name? FreebCode?

The prefix "Freeb" is just a fun sounding amalgam of Free and Busy, which is the foundation of what FreebCode does -- examine and juxtapose when you and your teammates are free and busy. Hopefully the "Code" is readilly apparent.

Where did you get the idea?

A lot of calendaring programs like MS Outlook utilize a similar concept of time resource allocation where individuals publish their "Free/Busy" schedules. Seriously. Open Outlook and you'll find that under all of your appointments you can specify whether you'll be Free, Busy, Tentative, or Out of Office. One of the more advanced functions of Outlook, if coupled with a departmental office e-mail server like MS Exchange allows people to invite each other for meetings and then have Outlook find a good meeting time.

This was the problem: A lot of my classmates don't use Outlook, a Pocket PC, or a Palm.

However, as university students, we have the advantage of having rather static weekly schedules. It was after perhaps after the 4th or 5th ridiculous back and forth scheduling marathon that the idea of FreebCode was born.

How does FreebCode work?

The concept is so simple I'm surprised it hasn't been done before.

An entire week is divided into 30 minute intervals. That works out to be 48 values in the course of one day or 336 values for an entire week. Each interval can have a value ranging from 0 to 3 representing increasing busy-ness.

In reality, a FreebCode in its pure form is just a string of numbers ranging from 0 to 3.

	000000000000000000000000000000000000000000
	000000000000000011113333222200000000000000
	000000000000000000000000000000000000000000
	001113322212232121111111111111111111111111
	111111111333333333333333333333333322222222
	222222222222222000000000000000000000000000
	000000000000000000000000000000000000000000
	000000000000000000000000000000000000000000

But there's no way you could easily copy and paste that around. So we use a bit of compression. We convert that string of numbers from a Base4 representation to a Base64 representation which is composed of letters, numbers, and punctuation which brings the string length down to one third of its original length(112 Chars). Even that compressed string can get a little unweildy, so we use Run-Length Encoding (RLE) to shorten long lengths of repeating characters (most often the letter 'A' because that represents "000" in Base4). The additional meta-information like your name and a closing "END" tag are conceptually borrowed from Genomic Stop Codons (to warn users of inadvertant truncation of a code) and you have your final FreebCode.

Doesn't this system have inherent disadvantages?

Oh definately. I'll list them off:

Limited Time Granularity

PROBLEM: The minimum resolution of time is 30 minutes and meetings can only begin and end on the half-hour. You might find a nice meeting time on the quarter-hour for example.

RESPONSE: I fought with this concept for awhile. I had another program design that would cater to individuals who DID use Outlook, a PocketPC or a Palm whereby they could export their next week's schedule and then their FreebCode would be dynamically updated in their e-mail signature. Ultimately, for the target audience I was shooting for, such a system would have limited who could have used FreebCode as well as been significantly more complicated to create. 30 minute intervals, especially since a majority of our courses begin and end on the half-hour was an effective compromise between simplicity and functionality.

No Mechanism of FreebCode Sharing
PROBLEM: You currently have to labouriously copy and paste your FreebCode to be sent to the team organizer. Isn't there a more effective mechanism for this?

RESPONSE: I entirely sympathize. If I'm going to simplify common tasks with innovative programming, why is the burden of code distribution on the teammate? There are several principles at work here. #1 is that by creating a FreebCode, you can choose exactly what mechanism to distribute it with. More often than not, that becomes e-mail. By keeping things as simple as possible, I don't limit what mechanism you use to get your code to others, akin to a PGP Public Key (one of the inspirations for FreebCode). The second consideration is a respect for privacy. The website DOES NOT STORE your schedule. Everything you see is running client-side with no communication with the server. That way, you choose exactly how and where you want distribute your FreebCode, be it sent personally, or publicly posted.

I currently have plans to create a central database of FreebCodes called fbcDB that users could opt into but scalability and authentication problems still need to be resolved. With the current simple mechanism of e-mail distribution, the barrier to adoption is low and no registration is required.
No Specification of Appointment Names
PROBLEM: You currently cannot type in the specific appointments during each time interval. I wanted to print out my class schedule.

RESPONSE: FreebCode unfortunately is not designed for that purpose. Not only is the specific conflict details labourious to enter in, it may also constitute information that you may not want to distribute. Additionally, encoding that sort of information is even more prohibitive and unweildy than the current code right now.

What are the advantages of FreebCode then?

I designed FreebCode to be immediately accessible and as simplistic as possible to support the comparison of schedules. FreebCode is going to make scheduling teams, especially large ones (7+ members) a lot easier. Even if no 100% ideal time is available, you'll have made a meeting time decision that you know for certain is the best one. The doubt and nagging suspicion that there maybe a better time-slot than the one we came up with bugs me with traditional scheduling. Of course, FreebCode is absurd to use for when you want to get together for dinner with someone. It's the large team meetings that this is designed for.

FreebCode is also inherently democratic. Everyone's schedules are equally represented and balanced against each other. Something I like about Web 2.0 technology philosophy (I know...I'm not using AJAX at all in this).

Finally, FreebCode is a cross-platform webapp. In fact, as long as you running FireFox on PC, Mac, or Linux, you can run FreebCode. It's an instant gratification and universally accessible program -- far more fun to program for than regular apps.

Final Question. What's the story behind your constant usage of the word 'juxtapose' and the meaning of the banner image?

Both excellent questions, if I don't say so myself.

I learnt of juxtaposition from English poetry analysis back in high-school. Look up the definition of juxtapose -- it's relevant. Plus it just sounds cool.

As for the header banner, if you haven't already figured out, it's three schedules stacked upon each other. The thin strips at the top and bottom of the bar are coloured red, orange, yellow, and green depending on the amount of conflict in the schedules. It's all about the symbology.

FreebCode Visualization