Building the Framework
At a wedding last summer I was seated next to a gentleman who sells motorcycles for a living. He asked me about computer programming, “It’s all ones and zeroes, and a lot of math isn’t it?” It was an interesting question because, yes, ultimately everything in the computer is just ones and zeroes, but programmers don’t often work on that level. Having seen more than a few episodes of Orange County Choppers, I came back with what I thought was a fair analogy. When building a motorcycle he uses parts that other people have already designed and built like the engine, the carbeurator, and wheels. Similarly, I don’t work in ones and zeroes, I use tools created by others to build a complete machine. I guess my analogy wasn’t strong enough because he soon dropped the conversation to focus more intently on his meal.
In any case, here are the pieces I’m planning to use for the OSIMS motorcycle.
Open Source and Web Based
Open Source software provides a cost effective starting point for any project. Thousands of people world wide are able to collaborate on software for the mutual benefit of everyone. From games to email to image processing to whole operating systems, virtually anything that needs to be done can be done well if not better with Open Source software.
For the educational environment which can require collaboration on hundred of data points around students which move between classrooms, web based delivery is a must.
With that in mind, I’m using the popular LAMP setup as the basis for this project:
- Linux – The operating system of choice for the web
- Apache – The webserver of choice
- Mysql – a popular database system
- Php – a web scripting language
In truth, only the last two will be critical for this program. Mysql and Php can be run on many operating systems and webservers. Linux and Apache are well supported and free, so I’m going to use them for cost reasons.
Application Framework
Xaraya
I’ve been using Xaraya for years to develop web applications. Billed as a Content Management System it does much more than just deliver blog posts. The system is well designed to allow programmers to create modules which then benefit from a fine-grained user permission system, comprehensive templating system, and the features of any other module. Perhaps the most impressive feature is the concept of Dynamic Data. In this program we’ll be able to create a simple student object containing only the student’s name and then, through no additional programming and at the whim of the administrative user, be able to append fields to allow the entry of the student’s birthdate, gender, nationality, fees due to the school, or even the student’s school photo.
ExtJS
Five years ago I designed web applications to specifically avoid javascript. At the time it was generally used only for decorative flourish, and was often implemented poorly and inconsistently across web browsers. Then, one day, Google introduced “live search” and suddenly the playing field changed. Now, the functionality of Asychronous Javascript And XML (AJAX) is all but expected in web development. By responding to user interactions in real time we’re able to create a much richer end user experience.
ExtJS provides a lot of excellent functionality with a very well documented API. With very few lines of code, we’re able to create things like sortable, filterable, and groupable tables of data. I intend to make extensive use of the ExtJS framework to create an elegant interface for users to interact with the assessment data. I’ve definitely got more than a few dreams which I believe can be realized though this framework.
The Xaraya framework was built in the time before AJAX but thanks to it’s well designed module structure, I’ve been able to create a module to incorporate ExtJS into the project. We’ll have the user functionality of ExtJS with the security and data abstraction features of Xaraya. At this point my biggest concern is that I may loose many of the theme and accessibility features of Xaraya. But hopefully with some effort I’ll be able to restore those down the road.
ChartDirector
If a picture is worth a thousand words than a graph is worth a thousand tables of data. Finding effective ways to convey information through graphs and charts has become something of a past time for me. Surprisingly, I find many of the available graphing APIs to be sub-par.
Ideally I would like to have a purely javascript solution, but those available seem to be extremely limited in their capabilities. The most recent version of ExtJS has a chart module, but it too seems limited at this time and it requires flash on the client computer. I would like to keep the requirements for the clients as simple as possible, so I’d like to avoid browser plugins.
Chart Director is one I’ve been using for years. It can create very pretty graphs featuring multiple data sets. It generates a high quality image along with an image map to go with it. My current plan is to capture this image map and use it to provide some javascript functionality to the standard Chart Director graph.
Chart Director isn’t ideal. It’s distributed as a PHP module which requires some very specific server setup which can be a hurdle to some folks, it’s also not Open Source. There is a licensing fee though it’s very economical for the benefits it provides. I’ve got a $100 developer license, and it’s conceivable that we could get a $500 redistribute license for this project.
In Conclusion
There are the pieces that will make up my motorcycle. Right now they’re just a bunch of parts in a box, but soon we’ll begin tooling the end machine.
[...] building OSIMS as a series of Xaraya modules enhanced with ExtJS. Xaraya does a great job at returning whole webpages of information, but that may be more than I [...]