Month: May 2005

  • More Maemo Madness

    Calcoo, an RPN and algebraic calculator
    Gnuboy 3x zoom
    Gnuboy, zoomed 3x using xgnuboy.
    VTE terminal emulator.

    More successful builds on Maemo x86 today. I’m still in the information gathering stage, trying to find projects that are worth spending more time on doing “proper” hildonization to. All of the above screenshots were derived from downloading a source tarball and running ./configure and make, nothing more. VTE was exciting because it didn’t fail out on dependencies that I can’t easily provide and with the soft keyboard just popped up. Having a decent usable terminal emulator is going to be a key item for a physical 770 device. The error-free build is encouraging.

    When I have some more time I would like to package some of the apps that I have been tinkering with up in .debs for distribution, but I’d like to stress that everything I’ve posted in the last few days builds on x86 with little or no modification. They’re far from well integrated Maemo apps and I’ve only tested a handful on an ARM target (I’m waiting for the next scratchbox/qemu release to do any real testing), but it’s definitely a start.

  • More Maemo Success

    I managed to get a few more things compiled and running on Maemo (mostly on x86) over the weekend. Proper Maemo ports are also starting to come in from new sources. This CPU/Memory usage meter is hildonized and designed to fit in the top statusbar. Great little hack! There are a bunch of gnome-applet style things that would do great in that status bar.

    Two of the best places for fully-featured Maemo apps are INDT’s Maemo Apps pageand the Kernel Concepts Maemo page.

    With that said, on to some more low-hanging fruit of apps that compiled with little or no modification (on most of these ./configure and make “just worked”):

    MPlayer playing Rocketboom in a window
    MPlayer windowed playing the intro to Rocketboom
    Fullscreen MPlayer
    MPlayer fullscreen, zoomed 2x.
    GView: A very lightweight image viewer.
    Glock: an analog clock.

    The smaller apps, GView and Glock could really rock if they were ported with a basic hildonized interface. Over the weekend I also got XChat built and running on x86 (here’s a screenshot) with everything but in-channel text input working perfectly. I still think that a properly ported Gaim would be the best graphical IRC interface for Maemo right now.

    The weekend is over but I hope to do some proper maemo hacking during my downtime this week.

    Update: MPlayer chewed up a lot of CPU and as such is probably not going to run very well on the device itself, especially since so much time and effort has been put in to tweaking GStreamer for the platform. I’ve grown accustomed to the “throw anything at MPlyaer” approach to Linux multimedia, so I had to try…

  • Maemo Emulation

    For those of you looking to kick it oldskool when the Nokia 770 comes out, there might be a few open source projects that fit the bill. Frodo 4.1b, a Commodore 64 emulator, and Atari800 built and ran without modification on the x86 Maemo development environment. Frodo chewed through almost all of the CPU on my Athlon XP 2500+, so getting that to run on the actual device might be a bit iffy. I saw some .asm files in the Atari800 source, which may be the downfall of Atari800 on Arm.

    We’ll see though. I tried a few more modern emulators (gameboy, nes, snes, etc) but nothing looked like it was going to be easy to get work at first glance. Here are a few screenshots of what I was able to get running this evening:

    Atari800 on Maemo x86
    Atari800 on Maemo x86
    Frodo C64 Emulator on Maemo x86
    Frodo (C64 emulator) on Maemo x86

  • GKrellM on Maemo!

    GKrellM running in Maemo

    This totally rocks! I’ve been tinkering around with Maemo this evening and I’ve been hunting around for apps to run on it. After a few misses I decided to try GKrellM. I was amazed when it “just worked,” compiled and ran in my Maemo x86 scratchbox! If you’d like to play for yourself, grab the source (I used 2.2.7), unpack it, run make, then go to the src dir and run ./gkrellm

    I haven’t set up an Arm environment using QEMU yet to test it there, but that’s next.

    Update: Here are some more screenshots showing how maemo handles the configuration dialogs.

    GKrellM Config: right click
    When you right click on the top of the GKrellM window.
    GKrellM Config: main config menu
    The main configuration menu.
    GKrellM Config: license dialog
    License dialog.

    Update: GKrellM isn’t quite as happy running on ARM under QEMU:

    GKrellM on Arm: not so happy
    Not so happy.
    GKrellM on Arm: menus
    No fonts in the menus.
    GKrellM on Arm: after restarting
    After running restart.

    I’m told that changing to the ARM target while still running the X session is just asking for trouble. Oops! I’m not sure if the display issue is due to QEMU or if it will be a problem on an actual device. If anyone gets a chance to run it on a real live device I’d love to hear how it goes. Here’s the error I get over and over when running GKrellM on SDK_ARM using QEMU 0.6.1:

    (gkrellm:4068): Pango-CRITICAL **: pango_context_load_font: assertion `pango_font_description_get_size (desc) != 0' failed

  • Agile Web Development with Rails

    Loud Thinking:

    Dave has released the Agile Web Development with Rails for beta consumption. The demand within the first hour has already been huge, so if your download takes a little longer than the 5 minutes, that’s why. I’m really proud to see this happen. Many thanks to Dave and the people who’ve contributed. End of brief transmission from Brazil.

    My beta book/dead tree combo pack has been ordered and little elves are preparing my PDF as we speak. Beta books rock! I have a copy of Thinking in C# that I picked up when it was being offered as a $5 PDF download. Good thing too, since it never made it to print.

    I have no problem paying cover price for a book if I can get near-instant access to it in beta form. Sure I could have waited till July and snagged it for $35 from Amazon, but what’s the fun in that? Kudos to the PragProg folk and the authors of the book for getting this Beta Book thing together.

  • Hello, Maemo!

    Hello, Maemo!

    Woohoo! After some help from the fine folks in #maemo on (special thanks to czr), I’m up and running the Maemo SDK. The biggest gotcha is that Maemo is expecting a 16 bit color depth and dies a horrible death if you try to run Xnest in 24 bit mode. This can be rectified by editing /etc/X11/xorg.conf (if you’re running XOrg) and changing DefaultDepth to 16 under the Screen section. If you’re feeling adventurous, Xephyr allows you to run a 16 bit window in a 24 bit environment.

    Maemo still complains a bit when I run start, but clicking on the title bar actually does stuff rather than crash. Next step is to get one of the sample apps to compile. Thanks again to the crew in #maemo for helping me out!

  • The Nokia 770 and Maemo: Totally Amazed

    There’s been tons of coverage of the Nokia 770 and the open source Linux platform Maemo that goes with it. Everyone is excited, with reason, but I don’t think that the significance of the 770 and the platform have sunk in yet.

    We’re talking about a Linux based tablet with good resolution (800×480) running a custom GTK-based UI similar to Series 90 on a device with Wi-Fi and Bluetooth, 64 megs of ram, 128 megs of flash memory, and about a 3 hours battery life. The size is right too. Nokia have also been working with open source developers to adapt gstreamer for their uses, and the development environment is right there for you, enjoy.

    I’m really excited by this page detailing porting gaim to maemo. The port isn’t trivial, but it’s not far from it looks like a lot of the effort went in to making it look and behave better rather than getting it to actually run. Here’s a screenshot that just knocked my socks off:

    Gaim on Maemo

    I have been (sort of) following these instructions and now have a (sort of) working maemo environment up and running. I’m psyched to see Python (2.3.3) as well as Perl (5.8.4) in the development environment. I hope that both of these end up on the device or at least installable as an option. I’d also really like to see Mono or Java running on this little thing.

    I’m going to go tinker a bit more with the development environment (which uses scratchbox) and see if I can’t figure out what I’ve done wrong on the X side of things. It also looks like you can use QEMU to run apps compiled for ARM.

    Related reading:

    I get some nasty messages when I run start and end up with the following almost (but not quite) working environment:

    Almost Maemo

    I used and then followed the installation instructions from there. I used this tarball as the rootstrap since I couldn’t find the file mentioned in the docs. I’ve got a shell, which is better than nothing, but I’m still working on a working X session…

  • Tab Clutter Dump (Using Ruby)

    In honor of cleaning out the tab clutter brought on by Crash Recovery, here is a dump of a bunch of tabs that I posted and cleared out this evening:

    I used Rubylicious to download and display the links. I’m a Pythonic kinda guy, so Ruby synax still throws me, but I’m excited that I can throw together a list of links in just a few lines of (ugly) Ruby:

    # a hack that loads the gem path stuff correctly on my Ubuntu box
    require 'rubygems'
    require 'rubilicious'
    r ='your_username', 'your_password')
    puts '<ul>'
    # Get 40 entries and write them as an unordered list
    recent_links = r.recent(nil, 40).map { |post| puts '<li><a href="' +
    post['href'] + '">' + post['description'] + '</a>: ' +
    post['extended'] + '</li>'}
    puts '</ul>'

    I still have a lot of Ruby syntax to learn, but aside from syntax errors in my head, Ruby has been awesome. I’ve still only done some basic tinkering with Ruby and Rails, but I hope to have time to do more in the future.

  • Things I can\’t Live Without: Firefox Crash Recovery

    I really don’t know what I did before I discovered the Firefox extension that changed my life: Crash Recovery. I started using it after mplayer-plugin made Firefox on Ubuntu Hoary a bit, er, unstable. Shortly after installing it I discovered that it is far more useful than its intended use (you know, recovering from crashes and all).

    I quite literally haven’t quit firefox properly in weeks. Crash Recovery allows me to save my browser state in a way that I’ve never been able to before. On Linux I’ll just issue a shutdown command, which will kill Firefox in the process. When I boot up and start Firefox again, I’m exactly where I was when I shut down, after Firefox eats my processor and sucks bandwidth for a minute or two. If I need to restart in a hurry (perhaps after installing an extension), I can just find out the PID and kill it from the command line.

    I also have Crash Recovery running on my desktop at work so I can get a jump on whatever was in my browser while I download email and fire up a bunch of shells. Same thing goes there, I have Windows kill it at the end of the day or if I need it dead quick I find the “end process” button.

    Of course after a few weeks of this I tend to end up with tab clutter that I just can’t seem to get rid of. The first half of my tabs are things that I’ve been meaning to read for a few days or more but just haven’t had time to check out. I’m hoping that this extension might make bookmarking stuff a little easier, as the process of using the experimental bookmarklet just takes more time than I’d like if I have tabs running a foot to the right of the end of my computer screen.

    Tab clutter aside this plugin has really changed the way I do things across platforms. I would strongly suggest that anyone interested in a) something that can let you recover from a crash or b) save your browser state in a wicked way should check this puppy out.

  • Gratuitous Use of Technology

    John Resig:

    If all you have is a hammer, everything looks like a nail.

    That’s exactly what I’ve been thinking for a day or two since I read Rael’s radar post. I’ve been screaming to myself “there has to be a better way!” While the end product is pretty and polished, the public data isn’t easily human readable and isn’t easily machine readable. It’s sort of nothing at all really.

    At the same time, I’m not sure what the best solution is. Would this be a good use of RDF? Would one construct a DOAB (Description of a Book) file or possibly add DOAB information to a FOAF file? Would the information best be stored in an XML document with a custom schema? RSS? Atom? Something completely different? What’s the best way to attack this? My spidey sense tells me that the answer is not a Backpack list with a particular syntax, but I’m clueless as to what the right answer is.

  • Breezy Badger

    Distrowatch brings good tidings: Ubuntu 5.10 (Breezy Badger) has its first development release. I’m burning the ISO now so I can check it out, but it appears to still render a system useless if you try to apt-get update to it.

    I really miss being on the bleeding edge, so as soon as I can I will try to switch to Breezy fulltime. It looks like there are lots of great things that might be part of Breezy including a GCC 3.4 to 4.0 migration, tighter Mono integration (and hopefully Beagle!), OpenOffice 2.0 and a plethora of other goodies.

    Most users should of course wait until its “done” but I for one can’t wait to take it for a spin.

    Update: Breezy installed on a testbed just fine, but most everything I manage to do from saving a file in OpenOffice.Org2 to running a search in Beagle seems to crash. I did take time to fill out the hardware information survey and generally poke around a bit before powering down.

    Breezy should be even easier for novice users. Once the graphical installer is in that should reduce the “freak out” factor for new users. There is also a user friendly Add/Remove software menu option under Applications that allows for one click install/uninstall of some core apps. The selection isn’t huge, but it’s there. If you click on Advanced, you are taken to the powerful Synaptic package manager (which rocks).

    If you are curious what all is going in to Breezy, check out BreezyGoals, which will soon be migrated from the Ubuntu Down Under section to the main Breezy Badget wiki page.

  • Google Buys Dodgeball

    Thanks to and the guys at O’Reilly Radar, I saw the fact that Google snagged Dodgeball fly by my aggregator this morning.

    It’s always exciting to see a small company that you know a smidgen about get snagged by one of the big companies out there. At the same time I’ve got to say that I’ve always been a bit dissapointed with the commercialized version of Dodgeball.

    I saw a presentation on Dodgeball a couple of years ago at the O’Reilly Emerging Technology conference. It was still in a research phase but sounded very cool. By the time Dodgeball came to market it was a lot less event and a lot more emphasis had been put on social networking during the social networking bubble.

    While I’m no longer excited about Dodgeball as I was years ago, it’s good to see a research project make it to commercial launch and then get picked up by as big a name as Google. If they got plucked by the big G, they have to be doing something right.