The Joys of Seamless Upgrades

Upgrades often is a naughty word in programming and system administration.  When a system admin or programmer starts an upgrade, often it is with clenched teeth and an expectation something will break, explode or spontaneously combust.  So congrats to the WordPress guys for releasing another seamless, non-breaking, and easy to do upgrade.  And yes this blog now runs on the latest greatest WordPress 2.8.6.

Now if only upgrading my Drupal sites could be as simple and trivial.

Review of Ontario Linux Fest 2009

Two weekends ago I went to Ontario Linux Fest 2009, held here in chilly Toronto for the third year in a row. And for such a young conference, it was quite good.  In fact good enough, that longer review of the event is in order:

Morning Keynote - Changes to the GPL

The day started with me rushing out the door in the morning, to catch a morning bus.  I made a bit later, missing the first part of Bradley Kuhn‘s keynote.   I rushed in, grabbed my conference package, put on my name-tag and rushed to hear the second part of the keynote.  Brad discussed the changes between versions 2 and 3 of the GPL (GNU General Public License).  As someone who followed the licenses and uses the GPL in my current project (justCheckers), it was pretty interesting to hear about why behind the changes.  The original GPL2 was quite brief for a software license, but not quite as understandable as the GPL 3.  The GPL 3 helped simplify the license, made it international and got rid of some icky loopholes.  After the keynote, I did a quick swag run even buying a fleece from the Eclipse guys from Redhat.  (And no Nick, I wasn’t there just for the swag I just haven’t gotten around to contributing to Eclipse just yet.)  I then quickly popped quickly back in for the first track of sessions.

Session 1 – Enterprise Content Management (ECM)

Cheryl McKinnon from Nuxeo did a talk on ECM.  I can definitely relate to having to hunt down information in the mess of Office documents and e-mails at the office.  I can just imagine what happens at larger organizations that have less rigorous guidelines to handling documentation.  So I definitely see the need software that handles such data, especially in terms of productivity and maintaining documents for regulatory purposes.  I can’t understand why every organization doesn’t have at least a wiki.  Interesting note that the concepts I learned in a university course on information science, really applies here.  Managing the capture, collaboration, review, publish, archiving and search-ability of information is really a science on to itself.  No wonder open source vendors like Nuxeo, Alfresco and MindTouch that provide ECM solutions in a flexible and low-cost way are such a big hit for enterprises.  There also was a neat discussion on how Nuxeo can do both centralization (bring documents into itself) and management of meta-data (like the locations and “tags” related to scattered documentation).  Really neat.

Session 2 – Ubuntu Moblin & Netbook Remixes

Jorge Castro from Canonical of Ubuntu community fame presented the Ubuntu Moblin and Netbook Remixes.  As with any live demo, the demo technology co-operated with Jorge like any demoed technology or self-conscious prima donna.  Still the Ubuntu Moblin Remix looks gorgeous.  It sports a nice, simple, elegant and understandable user interface.  However this remix qualifies as a tech preview more than something to hit the mass consumer.  Still I think people will be impressed when they change over from Windows to something like Moblin.  It looks a far bit of effort was put into making refactoring the UIs to fit a smaller, wider screen.  The Netbook Remix looks great too, and if you are reading this and running Ubuntu 9.10… switch over to the Netbook UI, you’ll love it even on your main system.

Lunch Chat 1 – Free Software and Its Impact on the Future of the Software Industry

I skipped out on the last session of the morning to pester Brad Kuhn with a few questions.  It started with an innocent question about his opinion about certain companies planning on moving from the GPL to the Apache licenses.  Brad figured out that I had read one of Matt Asay’s blogs on the topic, and went on a mini-rant.  Apparently Matt is one of Brad’s “nemesis” (not that they don’t get along rather their views on software freedom are quite different).  Brad envisions a future where software stops being a “big box” industry of packaged software products to more of a lawyery/consultancy profession.  I have to agree with him on that, and I don’t mind such a future being a consultant by trade.  However I did point out the difficulty one runs into with consumer-level products or projects.  Basically how does one sufficiently fund a project like Inkscape?  One way would be to sell a proprietary product, which defeats the purpose of going open source.  Another way would be to offer a service.  The heart of the problem is how to finance a regular development and enhancements (like usability) on a regular basis… and still get someone to pay for it willingly.  It isn’t an easy problem to solve… A problem that I plan on working on in my semi-stealth project… But Brad tried to convince it wasn’t as big of a deal as I think it is.

Lunch Chat 2 – Decoupling User Interfaces from the Application Backends

Feeling now famished for lack of a breakfast, I went out with Scott from the GTALug for pizza.  Scott is into user interface design both on a hardware and software level.  We both agreed that user interfaces should be loosely coupled to their backends.  In enterprise web application design the concept of different views for different users and environments comes to mind.  Scott introduced me to the concept of a framework that allows for completely decoupling the user interface with the underlying application, called Metisse.  It allows for building UIs at runtime using a widget palette or toolkit… brilliant!  That would let developers concentrate on what they are good at: application development and design.  And HCI/usability/graphics designer concentrate on what they are good at: design kick-ass usable user interfaces.

Session 3 – Building Business Applications Using SugarCRM

Right after lunch, I went to a more practical session by John Mertic, a developer at SugarCRM.  The session was naturally about developing applications using SugarCRM.  It looks a very nice application, and CRMs apparently can solve a lot of problems centred around customers.  Even just using SugarCRM to manage a client’s organizational contacts would save a lot of my time at work.  However since I work in Java and not PHP, thats not really an option.  But it looks like a neat application, the latest version SugarCRM 5 being all built in PHP and using the YUI (used to use ExtJS).  There is a vibrant community forge and marketplace around the application.  Neat.  Also neat that John just published an Apress book called: The Definitive Guide to SugarCRM.  See a pattern, yet? ;-)

Session 4 – World Domination, Documentation and Ponies

OK, I admit it as a writer masquerading as a software developer,  (Or is it the other way around?) I actually enjoy writing documentation.  Some would even say, I enjoy writing documentation too much.  So I jumped at the opportunity of hear Emma Jane Hogbin talk about world domination through good documentation.  Actually I was disappointed by the lack of talk on world domination.  But there was much talk of ponies… oh and documentation.  I swear I’ve never heard anyone comparing documentation to wearing high heels.  I guess the analogy of it being sexy and painful makes sense.  But then again I’ve never (or do I ever plan to) worn high heels, so I’ll trust the ladies on this one.  Still it was an awesome and enlightening talk.  I’ve never consider all the various audiences (devs, users, marketing) and types of documentation.  I must agree with Emma’s statement, that if you are doing a lot of work documenting how to use your program… maybe reconsidering how the UI is done is in order.  The concept of automating documentation and using an XML source is new to me.  But I will have to look into technologies like pywebdoc, Mallard and DocBook.  Emma went through the Capture, Organize, Translate, Output, Review and Revise cycle, using the Status.net documentation efforts.  (Emma’s project on writing open source documentation.)

Session 5 – The Look at Introducing FLOSS into Education

Karlie Robinson of On-Disk did a talk about her experiences with connecting the OLPC, Fedora and RIT together.

Afternoon Keynote – How Linux is Like Music

The conference wrapped up with Joe ‘Zonker’ Brockmeier‘s afternoon keynote.  Zonker is an incredible speaker, and he also threw plush penguins at the crowd which instantly made the keynote awesome.  Alas I didn’t have any thing worthy to add to the conversation so I didn’t get another plush penguin. :(   But I’m getting ahead of myself…  Zonker talked about how we should move away from the tired analogy of choosing operating systems like cars.  Rather he suggested how choice of OSes and Linuxes should be compared to bands and musicians:

  • Fedora -> Frank Zappa
  • SuSE -> The Who
  • Ubuntu -> Duran Duran (Hurrah, I mean huh?!?)
  • Gentoo -> Write your own sungs in your own built studio (Damn right!  Sorry, ecstatic ex-Gentooer here.)

A bit zany, but with a nickname of Zonker… :-P Ok, I’ll stop teasing.  But he did go into the problem of widespread Linux adoption: better self-marketing, pre-installed PCs (we are getting there slowly), market shift to the cloud and mobile (at least we have that one covered to a degree) and  the in-fighting that the F/OSS community seem to love (welcome to the new face of anarchy and things to come?).

The Pre-After Party

At this point most of the participants went out to either go home or wait out the time for the reception.  Having come alone, I felt like I’d love to mingle at the afterparty but I needed to do something while I waited.  Fortunately, the KDE 4 guys (Troy Unrau, Shawn Starr and Eugene Trounev) were quite welcoming and let me tag along with them.  Troy was pulled into the speaker’s dinner so I didn’t get to talk to him much.  But Shawn, Eugene and I chatted for a bit, grabbed a quick bite to eat at Burger King and came back to chill at the venue.  Shawn works on developing plasma, while Eugene makes graphics for KDE Games.  Actually if you count myself and Troy in, we each represent a different aspect of the KDE  project: Shawn – developers, Eugene – artists, Troy – marketing and myself – the humble user/wannabe contributer.

When Eugene found out about my semi-stealth project, he suggested I should join the KDE Games and look into the Gluon project.  I’m planning on getting involved, once I’ve hacked around with Qt, something I started on recently.

The After Party

The conference wrapped up with a reception sponsored by Google.  Actually I got a good amount of useful swag from Google, and the free booze was much appreciated.  At the reception I got to mingle with the presenters, organizers and participants of the conference.  I got to discuss the finer points of revision control systems (CVS, Subversion and Bazaar) with a Bazaar/Launchpad developer, Aaron Bentley from Canonical.  Also got to watch Brad Kuhn and Jorge Castro get into a heated but amicable debate about Mono, software patents and why Canonical should stop releasing and supporting proprietary software.  And I got to chill and talk about Apache Qpid (a reliable message queueing system, think something like IBM’s MQ) with Redhat’s Rajith Attapattu.

I left the reception really, really late.  And I got home around 2 in the morning, which just goes to show how awesome of a conference OLF2009 was.  After the conference I felt a lot smarter, enlightened and inspired to contribute back to the Linux and libre software community.  I’m almost sure I’ll be at OLF2010 whenever that comes around.

Links to what others had to say about OLF2009:

  • Troy Unrau [http://troy-at-kde.livejournal.com/23041.html]
  • Eugene Trounev [http://my.opera.com/it-s/blog/show.dml/4455292]

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.