Excuse the Dust

I apologize again for the silence earlier this week.  I meant to post a few posts earlier on, but I did not get around to it.

Also you may have noticed that I’m updating this blog.  In fact in general I am updating and cleaning up my “Web” presence in a big way.  Hence I’m working on refreshing the look and feel of this blog.  I’m plan on modifying the current theme into something I built myself.  And I’ll building out my portfolio, something I should of done ages ago.  Hence I’ll try to keep updating this blog frequently, but I might be a bit too busy for daily updates.  Also the e-mail subscriptions ARE going way, please switch to using RSS feeds.

Quick Update

Hmm… unfortunately it seems I can no longer achieve much when pulling an all-nighter, as I did in university.  In fact, I feel I maybe less productive due to the sleepiness that comes with sleep deprivation.  (Talk about pointing out the obvious.)  Anyways this week, I’m trying to catch up on work at home, while learning about Spring MVC at work and trying to push forward my projects.  So far, the effort hasn’t really produced much in terms of progress on my projects.  But I’ll see if I slide them during the day.  Anyways, I’ll keep the post for today short and sweet.  I have a lot of writing to do, and I need to plan and execute a technical demo for a prospective client.  Hopefully today, I can push at least a few things forward.

Java Web 2.0 Niftiness

I must sound like someone who just discovered America, but… Since I got to experiment with Spring, TestNG, serialization, Java6’s support for annotations and ExtJS, I’m enjoying developing web applications. I’m sure the novelty will wear off soon enough. I’ll meet that perfect bug that will drive me crazy and I’ll learn to hate all this Web 2.0 stuff. But in the meantime, I’m happy. Why?

Spring

Spring by itself intrigues me, and looks like an elegantly designed web framework. I’m still learning to use and understand it. Its forcing me to learn about design patterns and different forms of programming that I’m not used to. I know about Visitors, Factories, and other basic patterns from university. I’ve worked with Model-View-Controller (MVC) on previous professional projects. But Dependency Injection and Inversion of Control are totally new beasts for me. That and I need overcome my aversion to trusting a complex system to configure itself.

TestNG

I have not seriously worked in test driven development since university. I’ve done the occasional unit test suite with JUnit. TestNG feels more refined than JUnit and cleaner. What excites me the most is the prospect of working systematically with unit tests. Passing a battery of tests, reassures me that my code works according to my desires and mathematical theory and not to the whims of the rest of the universe.

Annotations

I’m infected with the urge to annotate all my code. The code looks cleaner, even if annotations potentially can introduce phenomenal cross-cutting problems. I don’t know why but there is a satisfying feeling to adding a list of @ annotations to a class. Yes, I know I’m crazy. Whoever introduced annotations to Java, you are awesome!

Ok, I’m doing with my lavish praises. I wish I knew about all these things earlier. Thanks to Nik, my project’s lead dev for introducing me to this new world of web development.

Desktop versus Mobile Computing

Despite my best attempts to avoid the desktop, I can’t seem to completely avoid it.  Not that I can’t in practice.  Rather the desktop proves to be mindbogglingly useful as a productivity platform.  For one, typing with a full ten fingers really gets things done.  Second, screen real estate is cheap and allows for vast expanses for a UI to cover.  I can not understate the joys of working on a widescreen with a large resolution.  The only greater joy is working on multiple HUGE widescreen monitors with massive resolutions.  At work, I envy the graphics folk who get the large screens.  Coding and graphics works becomes a joy.  Third, the desktop or notebook out-competes in terms of sheer computing power.  Thats one aspect that I fear will always plague mobile computing platforms.

The last advantage is *gasp* openness.  Thanks to open source and open standards, I can freely arrange my desktop computing experience as I see fit.  Yes, there is always room for improvement but mostly it comes to avoiding some icky technical limitations.  And most of that is thanks to legacy code.  Ugh.  On the mobile, well… I tried to connect two apps together: a web browser and an office suite.  Fail.  Most likely a Symbian faux pas.

I have great hope that platforms like Android and Maemo along with more powerful and robust smartphones, will make mobile computing be as comfortable as desktop computing.  But for now, hold on to that desktop… you’ll still need it at least as a harness for your mobile gadgets.

A Return to Mobility

As a happy owner of a Nokia 5800 smartphone, I quickly realized the potential of this gadget as a great pocket-sized mobile computer. Unfortunately, for the longest time I relied completely on wireless access points. With the lack of a physical slideout keyboard, this phone felt like a step down from the N810 Internet tablet. On top of that, while the Symbian platform is well supported. I really enjoyed both the UI and multitasking abilities of the N810. While the 5800 XM does allow for multitasking, it feels a bit uncomfortable to use. Now I won’t complain about Symbian because I understand that it is limited by its age and its original intended useage. I’m sure that Nokia and all the other Symbian players are working hard to keep the old workhorse going. But there really is a limit to what you can do with it. Hence my anticipation for the N900. Lets hope it’ll be available for Canadians soon.

Sticking to only wireless LANs has the downside of being offline most of the time. Plus it means using the office WLAN when at work. And I’d prefer not to for the obvious reason of wanting to maintain the separation of work and my personal life. So eventually, I bit the bullet and added a data plan from Fido. Everything seemed perfect, until I checked my phone bill. Apparently the data plan didn’t appear, and the bill was a lot larger than expected. Dismayed I contacted Fido, and stopped using data to avoid an even larger bill. You can imagine my elation, when a rep from Fido called me today, withdrew the charges and reinstated my data plan. Yes! So I’m back online in the mobile space, enjoying the Internet everywhere.

A Mobile Internet for a Frantic Lifestyle

Yesterday was Thanksgiving Day, and I hope everyone not had a great holiday but also found a myriad of reasons to be thankful for. I know I did.

But now I’m going to hijack that thought. I’m thankful that I subscribed to that data plan. Well, we’ll see how thankful I’ll be with the inflated cellphone bill. Thankfully I’m young, foolish, employed and single so don’t need to rationalize such purchases. Having the Internet in your pocket can be terribly convenient. There can be downsides though. Most sites scale down too well, onto a small screen that is. Thats where something like Nokia’s WRT can really shine. Consider it like a website thats been turned into an application. Its been done before for desktop browsers. But still a desktop with its fast connection, ample screen size and comfortable standard input allows for developers to sweep a good many UI and workflow decisions under the rug. Developing for a mobile device is far more demanding. Demanding not only terms of computing and engineering. But also demanding in terms of usability. And also the problem of handling offline and caching comes to mind. Fortunately for all you mere mortals out there, there are nuts like me who dream about the next big thing and how to make it actually useful. Hmm… Though I should do something about it. And not just write about these things. I have a few ideas, that I plan on putting into practice. In the meantime, I wish there was a WRT widget or decent S60 app for blogging…

Web Play Made Fun with ExtJS

At work I’ve started working with ExtJS for the user interface for the web application I’m helping develop.  I’ve always had reservations about using Javascript.  Or rather I’ve always hated dealing with inconsistencies in DOM handling in browsers.  Whenever I deal with CSS, I always hate dealing with cross-browser checking.  Fortunately with increased popularity of Gecko-based browsers (Mozilla Firefox) and Webkit-based browsers (Google Chrome), I have to deal with headaches of a browser incompatibilities less often.  However writing pure Javascript can be a bit daunting, and a library like JQuery or ExtJS comes in handy.  So I’m still not sold on the concept of building everything in a RIA (Rich Internet Application) context.  However using a Javascript library sure makes my website coding-hacking more palatable.

Drupal Dreams

I love my WordPress powered blog.  For a blogging site, WordPress is the way to go.  However there are site that require me to step beyond the paradigms of a blog.

Back in the day, I used to hardcode all my sites using XHTML & PHP.  I’d make them elegant, minimalistic and W3C compliant.  I also wasted a good deal of time doing so.  So now…  when I need to set up a site, I reach for Drupal.  Now thats a fun application to work with.  By no means is Drupal “simple”.  It is a freaking CMS for crying out loud.  Simple and CMS don’t go together.  And it does have its weaknesses.  Getting an image gallery set up in Drupal 6 is non-trivial.  But once you know where things are and how the components work, then you are all set.

The Chrome and the Cloud

Google today announced their Chrome OS project.  The details are sketchy for this announcement.  This Chrome OS apparently stems from the Chrome web browser that Google released last year.  A sort of instant-on netbook operating system, that meshes the hardware with the Internet cloud.  Google claims the OS project differs from the Android stack that runs on cellphones.  And thats all we essentially know about this Chrome OS.

So left me put on my futurist hat and predict what Chrome OS will be.  If I were building something like Chrome OS, I would grab an existing OS (say Linux).  I would then strip out all the unnecessary extra services and applications.  Then I would modify the desktop shell to essentially run a web browser (Chrome) connected to the web.  I would include an internal web caching application (Google Gears anyone?) to handle the off-line situation.  So there you go, netbook running Chrome OS would essentially act as a smart thin client (dummy terminal for you readers who remember the 70’s).  And the server would live on the Internet cloud.

Wonder how such a device would feel like?  Grab a Nokia N810 or N800 and you’ll have a closer feel to a mobile cloud computing device.  Congratulations to Google to helping bring true heterogeneous cloud computing and its advantages to the common man.