11/19/2007

24 hours Web Development on Rails

I'm currently attending the Masters Degree in Informatics and Computing Engineering at FEUP and there's an amazing thing (NOT really now that I think about it again...) that I have to do preferably until the 23th of this month: developing a so called "home page".
I'm going to use the Ruby on Rails' Agile Web Development approach for the time being and I'll try to get everything up until there... if not, then I will use my trump card, which in portuguese language would be called "desenrascanço". I would really like to be able to translate this word but I don't really don't know that... sorry :) I already have something for the web page like the visual design, so... still much work left to do :)
More updates, about my crusade against time dealing with Rails and making a web page in 24 hours, coming soon...

Update at 22:06 (+1 day)
Well, it seems I got something working. One of the challenges was localization support, since I will be supporting 3 languages. I didn't spend too much time looking for rails plugins that provide localization support, but the ad hoc approach looked like a charm :) I pretty much used filters which select the correct language texts based on the current language.
Gotta go! I have a lot of localization still left to do!

11/09/2007

DSAI 2007 - Software Development for Enhancing Accessibility and Fighting Info-exclusion

Today, I had the best experience of my life about being aware of a software quality attribute, often forgotten or not simply taken into account when developing or planning software, called Accessibility. I would even subjectively speculate that, although Accessibility is a subgroup of a larger group called Usability, the former one is so vast and complex that may have a life of its own.

I was invited to participate in the organization of a workshop and its presentation to address the problem of Usability and Accessibility of mobile communication/navigation devices.
Instead of describing in full detail the ideas/issues that came from brainstorming and many of the concepts which I've acquired by participating in this event, I will just present a list of them along with a brief comment for each:
  •  Always consider an inclusive-design approach, i.e., if you consider your software product will have to work with all kinds of people with disabilities (e.g., visual impaired, paraplegic,  etc.), your product will naturally perform superb with all kinds of users, in terms of user interaction and experience;
  • Even people who don't have any kind of disabilities can be often considered temporarily in that situation (e.g., imagine the scenario where you're driving a car: normally you are naturally less able to talk and listen to the other passengers in the car; your vision orientation is often directed to the front;  you cannot often take your feet off the car's brake or accelerator or remove one or two hands from the steering wheel... In this situation, what's the difference between a person without and a person with disabilities? Almost none);
  • Allow the user to "blindly" interact with the navigation device and the reality that is presented to him, without even having to physically touch the device, by using the screen or hardware buttons (e.g., using speech recognition to instruct the device or ask from it information about the reality);
  • When visual interaction is desired, it is of extreme importance to correctly but also easily have a matching between what can be observed from the reality and from the device display;
  • and many other ideas/problems, so I placed the presentation online, for you to enjoy it :)


11/05/2007

The Big World Syndrome


This is actually the worst title I could come up with for my first post in this blog.
Anyway, these past months I've been struggling to develop some decent and acceptable 3D computer graphics for embedded devices such as PDAs and PNAVs (Personal NAVigation devices) to be implemented in automobile navigation systems. Although there are not so many APIs available for this purpose (and even if there were!) there are so many challenges one has to be aware of and address, when developing applications for this kind of devices. For instance, there's no such thing as a FPU (Floating Point Unit) in most of them, which leaves us apparently with only one option, if we are to deal with high precision numbers for calculations: software floating point support. Unless you are OK with extremely low frame refresh rates, actually this is so slow that, in most cases, floating point software support is not an option. Other issues also arise from using this kind of devices, which are not relevant to this post or that I'm not (fortunately) still aware of.
The problem I've been addressing lately is what I like to call it The Big World Syndrome. If you want to get a big picture of this world, I invite you to close your eyes and imagine it for a while. Now open them... or you won't be able to read the rest of this post :) Now, think about this... If you are to represent everything in the world with an acceptable (high) precision, i.e. with an error not easily noticeable by the human eye, using very precision-limited numbers which are enough to represent the whole world but not to accommodate for all the calculations you have to perform until you reach the final result... you will eventually arrive at the same conclusion I did: that the world is to big to represent, using a "naive" approach. I'm still thinking about this issue, and I haven't still arrived at a final solution, but I'm addressing it using a little bit similar approach that has been followed by other projects like GeoVRML. I've been influenced by some of the ideas and came up with different ones. It basically defines a way to declare coordinates for the world, using not only one global coordinate system but many of them using relative coordinates. Assuming the fact that when you're looking closer at a piece of the world map, you want to view it in higher detail, using these local coordinate systems you will get much higher precision.
Of course this is just the tip of the iceberg since we will have to deal with some of the trade-offs involved.