Posterous theme by Cory Watilo

Kicked out 1.0

In good fashion, before registration starts, I delievered YACS 1.0. And as the author of a version 1.0 product, it suffers the same product-embarrassment. Ironically, that's a good thing. A couple features I could name off the top of my head as good milestones for version 2.0:

  • Time filtering - To exclude schedules that have sections in specific times (e.g. "I don't want morning classes")
  • Improved Scheduling View - Viewing schedules one at a time is definitely not optimal.

Those would be the two primary features for 2.0, everything else would be secondary. Also, I intend to create screencasts (or a series of written tutorials) about how I designed, developed, and created YACS. It would cover a variety of topics around programming that aren't normally covered in classes: version control, development tools and environments, deploying, design, usability, and programming tricks. It will provide a great insight to how and why code was written. 

It's a bright future. I'll see you at version 2.0

Screen_shot_2011-11-01_at_2

Full Speed Ahead!

Not much to say, but designing takes awhile. I'm using 320-and-up for responsive design, which requires many designs for the same page. Here's some screenshot to illustrate it.

(download)
That's just one page, and that's only 3 of 8 stylesheets. I'll probably have to restrict it to only three stylesheets if I am to complete version 1 before course registration (Nov 7th).

Similarly, here's the schedule listing:

(download)

The Setback

I wasted too much time doing premature optimizations. The computation of schedules takes a small, but noticable amount of time. So I thought I would cache the schedules in the database. But there are two problems after developing initial prototypes:

  • There is no good method of storing schedules as normalized data (since they need to store the list of sections and courses they use.
  • Large number of insertions into the database is slow.

So after wasting a week of time on this optimization feature, which turned out to be slower than the original naive implementation, I reverted back to the schedule generation on the fly. I'm punting the generating until it becomes a problem. I need to focus on the design.

I have some sketches made of some ideas about the UI. But to scope it down, I need to focus entirely on the web UI. But I've attached them here for reference. I've been working on the design and have developed a new colorscheme I'm much more comfortable with.

All the mockups were done on the ipad.

Click here to download:
RCOS.pdf (6.66 MB)
(download)

Minimum Core

Status update!

As of now, the core feature-set is functional which includes:

  • All the database schemas to store the course data.
  • Reading & parsing the SIS xml feed into the database.
  • Creating all possible schedules from a given set of courses.

Now the UIs need to be work upon. But there is an API available (thank's to the easy-to-use django-piston). The current documentation is here, until it's finalized to some point and to transfer it to the wiki.

And since there isn't any user interface yet, there's no screenshots. I'm currently evaluating various frameworks and techniques: ranging from complete JS-based frameworks to progressive enhancement techniques.

Another current issue is web hosting. I still need some location to run the server from, but the requirement of needing a constant background job to raises the cost from traditional variants.

If you like to see a more realtime view of progress and ideas, check out the Trello board.

And So It Begins...

This semester, I'm taking RCOS when involves creating or improving an open source project for the benefit of society. But part of the requirement of RCOS is to post, at least, a weekly blog post so that the professor can keep up-to-date with the latest happenings of the project. 

The Project

The project I'm working on is a generic, web-based course scheduler. Yes, I'm familiar with web development, but it would be good introduction to creating mobile user interfaces, which I have not extensively done since the iPhone was released upon the world - thus, changing the mobile web space forever.

Existing Solutions

Back on topic, my school is in a transitionary period. The widely popular java desktop application, RPI Scheduler, is currently not working at the time of this writing because of RPI's switch from a text-only course output to an XML variant.

This change was implemented to support the new ROCS scheduler. ROCS is a fork of the former, RPI Scheduler, and converted to be a web application. This is more tightly integrated with RPI's other systems, most notable is SIS, or Banner. Right now, the only difference, besides being web-based, between ROCS and the project it forks is the ability to display the number of seats left for a particular section (as part of the new XML course data).

ROCS is designed to support a set of goals motivated by RPI's DotCIO.

  • To integrate with a Java-based portal system (conforming to JSR-168 specification).
  • To have tighter integration with SIS system, including registering courses through the course scheduler interface (sounds sweet to me).
  • To place the code under an open source foundation to accept contributions by other universities.

While nice goals, there is little concern to the users of the software.

 

Besides the less than great design (which is known a problem), it has many goals motivated by DotCIO. Yes, call be a selfish ignorant lazy bum, but Java web dev isn't my cup of tea. And it isn't for many.

Although the possibility of helping a bunch of schools with scheduler is very inticing.

The Alternative

My project would be a python / django based web app for course scheduling. Because of my familiarity of Django, this removes the hurdles of learning a web framework and UI framework while attempting to learn about designing good user interfaces and creating mobile versions.

Because of the poor design of ROCS, many students have avoided using it in preference of the older RPI Scheduler. Of the students that know about ROCS, many avoid it because of the interface alone.

Both RPI Scheduler and ROCS also are void of any sharing of schedulers created in them. Students commonly take screenshots of RPI Scheduler; crop the image; then finally upload it to facebook. A web scheduler should provide this feature for easily sharing schedules to friends. Also providing calendar feeds will make it a snap to add the courses to one's calendar.

The Future

But since this project wouldn't have quite the backing or reach as ROCS does, it would be best to work on ROCS. Hopefully, I could merge the user interface design and feedback back into ROCS. Ideally, this project is a rapid prototype, in user interfaces before possibly integrating it back to ROCS.