The Humble Geek

Stuff I write.

Keyword - freedom

Entries feed - Comments feed

Developing Openly on Proprietary Land

My programming adventures continue. Nokia's experiment into Linux with Maemo is very alluring and since I've applied myself into a few Linux projects, I felt it would be worth looking into what Nokia has put together.

The Maemo SDK runs under Scratchbox, a virtual environment created in part by Nokia. The Scratchbox toolkit can run under any Linux distribution, and it requires it. If you wish to run the SDK under Windows, your only option is to use a virtual machine. Once your SDK is running, it is nearly identical to a running Maemo device. In order to use the SDK, basic knowledge of Linux goes a long way, but since Maemo is derived from Debian there are some distribution specific programs. I've been using Red Hat based distributions for years, so it took some time to get used to using dpkg and apt-get to handle packages. After a few months of using my N900, creating and handling packages takes less work under an RPM system, but it's adequate.

Since Maemo is Linux, any Linux application has a chance of life. This makes building new applications or porting existing Linux applications a walk in the park. You can literally compile any Linux program for ARM and run it, however, the necessary screen space and physical size of a N900 can make it difficult to use a large application such as Open Office, which has dozens of menus and toolbars. This is where Maemo ports come in. A finger-friendly UI can be designed and added, even sent to the upstream authors, and makes the app you port usable everyday on your device.

I started with building a brand new application. A stopwatch seemed like an easy first project. I noticed several stopwatch applications already existed, however they were written in Python or were not maintained in a long time. The Maemo Garage is a center for Maemo projects, so I created my own project page and began work. I decided to write in C, the native language of many Linux core libraries, and use GTK for the UI, a cross-platform, and the native toolkit for Maemo 5. During the programming process, I learned the Hildon additions to GTK made by Nokia, and the dbus methods to activate and listen for accelerator changes to allow my applications to turn into portrait mode when the user turns their N900. Here's the first incarnation: Stopish 0.9.0

Other programming projects are endless. I wanted to look at fixing a few usability issues. One was the RSS reader, which used a slider that was too thin for a finger. I submitted a patch to Nokia and it will be included in the next major firmware update. The second was the lack of FLAC tags in the media player. I now enjoy FLAC as my music format of choice, and it's possible to use since the Maemo media player uses gstreamer for media codecs and tracker for tags. In order to add FLAC tags, I had to extend the tracker program to be able to read them. Someone had already created such a plugin for vorbis, and so using it as a template, I made one for FLAC.

There are two Maemo repositories for projects, Maemo Devel and Maemo Extras. Finalized applications live in Maemo Extras, while developers can play with new applications in Maemo Devel Adding my projects to Maemo's repositories was a breeze. Just create a Maemo account and request upload access. I can use scp (SSH CoPy) to send my source code to the Maemo build server and it will package my projects and makes them available on the Maemo Devel repository. From this repository a developer can choose to promote it to Maemo Extras. During this promotion, other Maemo users vote on the application and if enough positive votes are made the project is automatically pushed into Maemo Extras.

Although most of Maemo is open source and source provided through gitorious, there's still a lot left closed - such as the phone, contact, and media player. Nokia's plans include more open source goodness in Maemo 6. The future of Maemo definitely looks bright even if they are forcing Qt down everyone's collective throats.

New Face, Same Blood

Hi there. You may remember me from such blogs as The Humble Geek. Due to a recent Blogger change, I've had to set up shop using server-side software. I looked at three different projects and ended up with Dotclear. I'll break down my selection pro/con list:

  • Wordpress

The big man in town. Unfortunately it uses MySQL for a backend and my server is PostgreSQL territory. Poor security is another minus. A Wordpress blog has probably been defaced by the time you've read this sentence.

  • blosxom

I saw this recommended as an alternative to Wordpress. It's Perl based and writes to flat files. Not very flexible for my taste.

  • Dotclear

Written in PHP, supporting PostgreSQL, themeable, plugable, and more. I couldn't ask for anything better. I have customized my own theme and added some plugins. The built-in functionality also allows me to add the Geek Tip as a widget. I don't have to manually edit the template as I had to with Blogger.

I may write about my Maemo programming shenanigans next, but don't hold your breath.

Just Say No

... to Government healthcare. I should not have to even take this time to write a post about this subject, but leave it to the powers of Government wanting more power to force my hand. If I dare write another sentence (positive or negative) it will just fortify and aid the power grab of the 2008-2012 American Government. Do yourself a favor and write your congressman, senator, and the President of the United States and tell them you are a voter and you will not re-elect them if they pass a healthcare bill.

P.S. I'm a healthcare software programmer by trade. I have an eye inside of the system.

Chug, chug, chug, chug...

How on earth does the world use Vista? Yes, Microsoft Windows Vista. Backstory: I received a new laptop two days ago. An ASUS N80Vn-X5. It came with Vista Home Premium 64-bit. This is my first copy of Vista as I run Linux on all my machines. I did have a copy of XP but I stopped using that a few years ago. Why did I stop using XP? Because I wanted something more out of my computer. XP is fine and all, but I can accomplish more with Linux - not just because it is free.

Unpacking:
I unpack it from its box and I plug in the AC adapter and boot the thing. Vista starts to load - and load - and load. 10 minutes later I get to the desktop. Why on earth did it take that long to get to my desktop? Wait a minute... the hard drive is still chugging. Why?

Configuring:
The first thing I do is kill the hideous sidebar that takes an extra 5 minutes to load on startup. Gone. The second thing I do is disable automatic updates. Now, I realize some readers will think better of themselves and call me an idiot, but I rarely use Windows and I know how to update it so I'm quite OK running updates when I should instead of having Windows do it for me.

Updating:
It came with SP1 so I figured it should be pretty harmless. Where to update this thing? Hm, I don't see anything. Ah, I'll just use IE's "Windows Update" link. Oh what's this? There's an update to Windows Update. Oh! It requires a reboot. *Reboot* Ah, that was a nice 10 minute reboot. Windows update has about 30 updates for me. Fine. Downloading/updating takes about 15 minutes thanks to the attrociously large 100 meg .NET update. I'm on 20 megabit Internet mind you. Rebooting again. Seems that I'm up to date now, or am I?

Playing:
The only thing loaded on this thing is about 5 ASUS utilities for the fingerprint reader, webcam, and some software that looks like it encrypts files. Grand total of hard disk space in use? 20 gigabytes. That alone is enough for me to be offended permenently because what does that 20 gigabytes net me? A video player, picture viewer, a web browser, and a movie maker. The features don't match the disk space requirements. It's also using 1 gig of RAM with no programs running. Yes, I uninstalled the Office 2007 trial.

Why would I be offended? Example: My default Fedora install cost me 4.5gigs. What did I get besides the stuff already in Vista? Full office suite, photo manipulation, SELinux, bittorent, GPS mapping, SIP phone, Pidgin, GCC, and a few other of my programming utilities, not to mention Wine, which will allow me to run Windows apps.

Time to reboot just to see that reboot time again. *clicks Restart* "Configuring updates stage 2 of 3..." What's this? WHAT'S THIS? I have updates turned *OFF* and Windows is installing updates. Stealth updates - w00t. The little trust I had with Microsoft is completely gone at this point.

I let it reboot and go back into Vista just to find that after I log in the hard drive is chugging - and chugging - and chugging. 10 minutes later it finally quiets down and I decide to reboot to get into Fedora. *Clicks Restart* "Configuring updates stage 2 of 3..." Yeah. I'm done with Microsoft.

Recreational Programming

Usually the best products come about when someone is fed up with the current process of operation. Something like that happened when I was fed up using the command line interface for "uvcdynctrl," which is a tool to manipulate the settings for my Logitech QuickCam 9000 Pro. Fortunately Logitech was kind enough to provide a developer for building an open source library called "libwebcam" that would allow me to build my own interface using GTK+2. Here's the result:

Download: uvcdynctrl-gtk-0.1

I used the git source code management tool for this project so you can grab the latest source (LGPL'd) from my gitweb interface. You will need libwebcam, GTK+2, and gstreamer development libraries and headers to build it.

Please feel free to add any feedback. I also have RPM spec files for Fedora to build libwebcam and my program if you want them. Thanks should really be given to the GTK, gstreamer, and Logitech folks for making this possible.

- page 1 of 2