Year: 2005

  • The Wayback Machine Bookmarklet

    While looking for an archived version of a website at The Internet Archive Wayback Machine, I noticed that they had a bookmarklet. I hadn’t noticed it before. I don’t know how long it’s been there, but Phil Gyford wrote it back in 2001.

    It comes in handy every once in awhile and now sits next to the Experimental post to del.icio.us bookmarklet in my bookmarklet bar.

    No mention of The Wayback Machine is complete without a link to an ancient snapshot of Slashdot, Dell’s website circa 1996, or a minimalistic Yahoo.com

  • Python for Series 60 App: QuoteGrab

    Introduction

    I had 15-20 minutes to kill Wednesday night before class, so I wrote the first fully functional version of this little hack/app. It first prompts the user for a stock ticker symbol (like NOK, AAPL, YHOO). For now it expects your stock ticker symbol to be in uppercase. After the input is received, it grabs a .gif image from Yahoo! Finance, then displays the image using appuifw.content_handler. Once you are viewing the image you can zoom in, zoom out, and view the image fullscreen.

    After I got the basic app working, I took a few minutes here and there over the last few days to work in some basic exception handling. I wasn’t able to catch a TypeException error thrown from content_handler, so I have it checking if content was downloaded successfully before launching content_handler.

    Screenshots

    Quotegrab asking for a stock to look up Initial Content_handler view of the downloaded graph Zooming in using the content_handler controls Zoomed all the way in

    The first screenshot is asking for a stock ticker symbol to look up. The second is the initial zoom level when content_handler is called on the downloaded graph. The third screenshot is zoomed in a bit using the content_handler controls. The last screenshot is a fullscreen view of the graph.

    Requirements

    • A Series 60 phone, 3650 or newer (tested on N-Gage and 6630)
    • Python for Series 60
    • GPRS network access (not just WAP access)

    Download

    quotegrab.py

    Installation

    Download quotegrab.py and transfer it to your phone using Bluetooth, IR, email, or other means. When you open in from your inbox, it will prompt you for installation. If you have an MMC card reader or N-Gage, you can place it in /system/apps/python/my on your MMC.

    License

    QuoteGrab is licensed under a BSD-style license.

    TODO

    While a complete running app, this 62 line Python program does one thing, once, and does it pretty well. I would like to widen the scope of this app in the future to allow you to download and view the graph of the stock over 5 days, 3 months, or any other length of time that Yahoo! Finance offers. I would also like to add the ability to download and display basic stock information such as current price, change, and other vital stats. It would also be really awesome to be able to link to Yahoo! mobile for more information.

  • Rapid Python for Series 60 Development

    Right now I’m writing Python for Series 60 apps on my Ubuntu laptop and testing with a Nokia N-Gage (the infamous taco). The taco is an excellent (and inexpensive) development/testing platform for Python for Series 60 because it offers a USB connection that once connected allows you full access to the contents of the MMC. After a few rounds of navigating to the right spot on the MMC and then dragging my .py file using Nautilus, I decided to automate the process a bit. Here’s a little bash script (I call it py2phone) that has made my life quite simple:

    #!/bin/bash
    cp $1 /media/usbdisk/system/apps/python/my
    sudo umount /dev/sda1

    It copies the first command line argument to the correct spot on the MMC and then handles the umount command so that I can immediately disconnect the USB cable and test on the device. I usually copy to the device after running through it using the PDIS Series 60 compatability library, which helps me find stupid syntax errors before copying to the device. The comatability library sits on top of wxPython and implements most of the basic appuifw functions. I would really like to stub out content_handler to acknowledge the call rather than stacktrace, but other than that the compatability library absolutely rocks for debugging before transfering to the device.

    Here’s my development cycle, which when I’m fixing, tweaking or experimenting, can last all of a few seconds:

    1. Edit file.py file (I’m currently using GEdit for syntax highlighting)
    2. run python file.py at the command line to run through the app on the laptop
    3. ./py2phone file.py
    4. Unhook USB cable, test app on device

    The next step is to automate this process further by extending my little bash to handle the test call, ask if everything went okay, and then conditionally copying the file to the phone and unmounting the device.

  • Ubuntu Hoary On Its Way

    The Ubuntu Linux website got a makeover today in preperation for the release of Ubuntu Linux 5.04 (our friend Hoary Hedgehog). The release should hit some time tomorrow. If you were waiting for the release to give Ubuntu or Hoary a go, you should definitely snag it. I’ll probably be updating my /etc/apt/sources.list to point to Breezy Badger, since Hoary has been so good to me over the past few months.

    Congrats to the Ubuntu team and the Debian shoulders that they are standing on for their second excellent release.

    Update: It’s out on the street. Download it here. The release notes also do a great job at explaining what’s new and why Hoary rocks.

  • Useful Python for Series 60 App: Dict2Go

    Over the past few weeks I’ve been on the lookout for pure python modules that run on Python for Series 60. I have managed to make use of a few cryptography modules (including Rijndael, DES, and Blowfish) as well as parse tag soup using BeautifulSoup.

    While I was able to highlight some pure python packages and modules that worked well on Series 60, I really wanted to put together a quick simple app that was actually useful. After searching around for modules and services that would be great to access from a mobile device, I fell in love with John Goerzen’s dictclient.py. The module is a consise and well documented client that speaks the dict protocol.

    Using Goerzen’s module, I have put together a simple GUI using the native widgets provided by appuifw. I was able to knock out the app in a little under an hour or so first by prototyping using the wxPython-based PDIS Series 60 Compatability library on my Linux laptop. From there a few iterations of tweak, test, tweak on my N-Gage (which is great for this type of thing because of the USB cable). Until my GoPhone SIM shows up tomorrow I’m without non-WAP data, so Gustaf was kind enough to test and send me a few stacktraces before I fixed a stupid typo or two in my code.

    Screenshots

    Dict2Go Input Dict2Go Results

    Installation

    To use Dict2Go, you will need Python for Series 60 installed on your phone. If you have a 3650, 3600, N-Gage, or N-Gage QD you will want to snag PythonForSeries60_1stEd_SIS.zip. For newer phones (6600, 6620, 6630, 7610, etc) you are looking for PythonForSeries60_2ndEd_SIS1.0.1.zip. You will also need a way to put the library file dictclient.py in your Python libs directory. Christopher Schmidt sent in a much easier way to install dictclient.py:

    For installing the dictclient.py, you can just send the file to your phone and install it as a Library module using the standard Python installer. There’s no reason to use Fexplorer or an MMC reader for that.

    My way (the Taco way) is still an option, though it’s much harder than it could be. You can copy the files using an MMC card reader (or your N-Gage) or by transfering the file to your phone and using FExplorer. If you have installed Python on your MMC (which you should have), put dictclient.py in E:/System/libs. One the library is in place, you can either place dict2go.py in E:/System/apps/Python/my or just transfer it to your phone and install it from your inbox.

    Download

    Note: this is a quick but functional hack. I think that it’s quite useful in its current form, but I have lots of plans to make it more fault-tolerant and user friendly as well as add more features and functionality. With that out of the way, there are a few ways to download Dict2Go:

    License

    Dict2Go is released under the GPL, version 2 or greater, as is the dictclient.py library that does all of the hard work. A copy of the license can be found in the zip files and tarballs.

    ToDo

    As I’ve said before, this is a quick hack, but I like it. The dict server is currently hardcoded to talk to dict.org, but that can be changed by editing the source if you really want to. Dict2Go also grabs the first definition it finds. I hope to make both of these configurable in the future. I also have lots of plans for UI improvements including a main app loop so that you can look up as many words as you want until you are done. I will do my best to get new stuff out the door as quickly as possible.

  • Nokia Begins Shipping the 6680!

    Nokia 6680

    According to the latest Symbian Community Newsletter, Nokia has begun shipping the 6680:

    Nokia has started deliveries of the Nokia 6680, introduced just one month ago at the 3GSM World Congress in Cannes, France. The Nokia 6680 WCDMA/EDGE imaging phone features Symbian OS v8.0a and Series 60 Platform 2nd Edition, Feature Pack 2.

    Be patient though. Just because they’re shipping doesn’t mean that you can walk in to a shop and pick one up. I’m definitely impressed by how quickly they went from announcement to ship on the 6680. If they easily make the April estimate on the 6680, things are looking good for say an early June release of the 6682 just in time for me to buy a new phone…

  • Podcasting Adoption Rate

    Via Engadget and Scripting News, according to the Pew Internet and Life Project [pdf], 29% of all US digital media player owners (6 million Americans) have listened to a podcast.

    I think “6 million American adults have listened to podcats” is being confused with “6 million Americans can recognize the word ‘podcast’ when used in a sentance.” The 6 million mark was derived from talking to 208 media player owners. This leads to a margin of error of plus or minus 7.5 percentage points. Don’t get me wrong, podcasting is huge and is being adopted quickly, I just think that 29% seems a bit high.

    Perhaps it could be better stated: “About 60 out of 208 Americans who own digital media players and were willing to be surveyed about their media player usage claimed to have listened to a podcast.”

    I’m guessing that a lot of people know what the term podcasting is without having actually participated in the sport themselves. I’ve only ever been able to really get in to IT Conversations and Leo Laporte’s podcasts. I don’t know why, but Dawn and Drew kinda creep me out.

    I’ve never participated in “pure” podcasting though. I’m one of those neadrethals who has to download individual MP3s and burn them to CD so he can listen to them in the car. I’ll get with the program someday though.

  • Net10: Tracfone\’s New Pseudo-MVNO

    Net 10I stumbled upon a new set of boxes in the pay-as-you-go aisle of Target this evening. The new provider on the block is Net10. From the way I’m reading the brocure, it looks like they’re a subsidiary of TracFone rather than an MVNO on top of TracFone’s network. Their schtick is simple: nationwide calling costs 10 cents. They also reward the purchase of larger refill cards by making the minutes last longer. For example, a $30, 300 minute card lasts 30 days, while a $180, 1800 minute card lasts 6 months. They also charge 5 cents a pop for text messages, which is less than what most carriers charge their montly invoiced customers.

    The phone selection isn’t spectacular, but they get the job done. Available phones include the Nokia 1100 (which honestly I think is pretty cute), Nokia 2600, the funky Motorola C155, and the Motorola V171. The phones are relatively cheap without the frills that you might get on GoPhone or Boost Mobile, but the service is obviously aimed at cost-concious consumers who value a bargain over bling.

    TracFone has done a smart thing by targeting a niche that has gone largely untapped. They need to keep on their toes though, bargain hunters don’t have much brand loyalty and the space could get very crowded very quickly.

  • Kicking that Windows Habit

    I realized this afternoon that it’s been a week and a half since I booted Windows at home or on my Laptop. My main desktop machine at home runs Debian testing. I was still tied to Windows on my laptop until last Tuesday when I managed to get NDISWrapper working. I’m running Ubuntu Hoary on the laptop and have been for a month or two. Warty didn’t want to play nice with the laptop hardware, and the bleeding edge is the place to be anyway. The Hoary version of NDISWrapper doesn’t work with the latest kernels, so I grabbed the most recent release from sourceforge and it worked like a champ. I’m not completely sorted out, as connecting to open APs and WEP APs work great but I can’t connect to my WRT54G with WPA. It’s not that big a deal though. I just plug in to an ethernet cable at my desk.

    I managed to get NDISWrapper going just before PyCon and haven’t looked back at Windows since. Hoary handles speedstepping great, and I’ve fallen in love with bleeding edge Gnome, The Ubuntu Way, and Mono apps like F-Spot and Tomboy.

    I’m not completely free from Windows though. I use it quite a bit at work. I try my best to balance it out with my laptop on the right side of my desk connected to the wireless network. I haven’t run in to anything in Photoshop that hasn’t been possible with The Gimp, but I’ve only needed to do simple stuff in it so far. I should really look at how it handles slicing and PSD files with lots of layers.

    I have run in to a bit of a problem with hard drive space though. My now-primary Ubutnu partition is only 5 gigs, and I’ve managed to all but fill it. My Windows partition, gathering mothballs, is a heafty 30 gigs. I really need to boot up the partition, back my stuff up to DVD, and give Ubuntu the space it deserves. I’ll probably keep a small Windows partition handy though, you never know when it might be required.

  • New Phone (Sony Ericsson T237), Leaving T-Mobile

    I ordered a new phone today, a GoPhone from Cingular. It’s a Sony Ericsson T237. It cost me thirty bucks.

    You might wonder what the heck a guy like me is doing with a cheap little pay as you go phone. The short answer is that it’s part of the master plan. The long answer follows.

    You see, my wife’s contract with T-Mobile is up in late May. Mine isn’t up again until October, but we’ve decided to take the early termination fee on one but not both accounts. I love T-Mobile but the only data plan that you can actually use with anything other than WAP is $20 a month. That’s just more than I’m willing to pay for (slow) GPRS. I really do love T-Mobile. They’ve been great to me, their customer support rocks, their in-store employees actually care and try to help. I just really need data.

    On a side note, I’m really unhappy with the recent switch in T-Mobile’s customer support phone setup. They used to have a nice standard menu driven system that let me get the information I needed quickly and easy. Account information, minutes remaining, and other basic stuff was available from the menu. If I had a question that required a human, I chose the right menu option and had a kind and helpful customer support rep right away.

    Now when I dial customer service (*611) I get confronted by an IVR that thinks she’s smarter than me. She probably is, but that’s not the point. After a short greeting she prompted me to ask her a question about anything.

    “I would like to speak to a human please.”
    “I’m sorry.”
    “I would like to speak to a human please.”
    “I’m sorry. Try asking me a question like ‘How many minutes do I have left?’ or ‘When is my bill due?’”
    “I would like to speak to a human please.”
    “I’m sorry.”

    The IVR then listed about 5 or 6 things that I could ask for that sound suspiciously like the old “press 1 for…” list.

    “customer support”
    “Would you like to speak to a customer support representitive?”
    “Yes.”
    “I’m sorry. Did you want to speak to a customer support representitive?”
    “Yes.”
    “One moment.”

    I managed to supress the urge to throw my phone across the room and was actually calm by the time the customer support rep answered. She was kind and helpful as always, and as I inquired about the contract status of the two lines on the family plan, she said that she would be sorry to see us go but understood if we had to. I thanked her very much, told her that she was helpful as always, and registered my complaint with the IVR bouncer at the front door.

    Where was I? Oh right. The master plan. So late May, early June, the plan is to switch both phones over to Cingular. They’re really my only option. I’m a GSM guy, so Sprint-Nextel and Verizion are out. Since I’m leaving T-Mobile, that leaves Cingular. I’m hoping that the Nokia 6682 makes an appearance at Cingular during the 2nd quarter of 2005 as predicted. It looks like the 6680 is poised to hit Europe in April as promised, so I have no reason to doubt that the 6682 isn’t on track for some in May or June. If the 6682 is delayed, I can still get a good price on a 7610 on contract, and honestly if the 7610 is my fallback, things aren’t that bad.

    If we’re planning on making the jump pretty soon, it’d be nice to have a backup phone that speaks 850Mhz. I’ve got a ton of GSM phones, but they’re mostly 900/1800/1900. While these will probably work most of the time on Cingular, it’d be nice to have a “native” 850 phone as a backup. It’s also a good chance to audition the signal levels in our apartment and other places we usually hang out. I have to stand near a window if I want to carry on a conversation on T-Mobile, but I think that Cingular has better reception here.

    Plus, with GoPhone, I can have data again. I can do things like use WirelessIRC or test network-enabled Python apps. It’ll be pretty cool.

    To summarize: I’m leaving T-Mobile for Cingular some time in the next few months. I don’t want to leave, but T-Mobile just doesn’t offer me a data plan that I can live with. Their cheap plans don’t let you deviate from WAPland, and their unlimited plan is just too much for GPRS. I’m going to miss them though. They rock and I can’t say a bad thing about them (data aside). I’m wary of Cingular, since they lead the pack on customer complaints. I’m willing to give them a shot though if it means I can have EDGE and get a decent deal on a new phone on contract.

  • Minor Python For Series 60 2.0 Update

    Sweet! I just saw the release fly by my aggregator and thought I would let everyone know: There’s a new Python for Series 60 release for 2.0SDK phones available at Forum Nokia. This looks like a small update for newer phones (6600, 7610, 6630). The only change in the release notes that I can see involves invoking an install dialog when downloading python files from the web rather that running them directly.

    While this is a minor update, it’s forward progress. Hopefully the enhancements and extensions that have been demoed will work their way through the release process as quickly as possible.

  • Ubuntu April Fools Gag

    Ubuntu April 1 Gag
    Click for full Login Screen Setup image

    This is great. You can imagine how amused I was when I booted Ubuntu Hoary on my laptop this morning. Excellent work and a beautiful April Fools gag! The Login Screen image is a take on the (unneccesarily) controversial Human Circle of Friends login screen that shipped with early Warty releases.

  • UIQ 3.0 SDK Released!

    Wow, it seems like I’ve been waiting for this for years. Oh wait, I have. Today UIQ released an SDK for their new flagship product, UIQ 3.0. The SDK is designed to work with either Metroworks CodeWarrior Development Studio for Symbian or Borland’s C++ BuilderX.

    For more information and to download a trial version of the UIQ 3.0 SDK, visit their web site.

    Yes, this is a lame April Fools joke. I wish it wasn’t though. Jim and I have been excited about the prospects of UIQ3 since it was pre-pre-pre-pre-announced what feels like years ago now. It has the potential to rock the low to mid-range market bringing “real apps” and “a real OS” to those free-to-inexpensive on contract phones. The other thing that rocks about it is that one code base can scale from low-end uniprocessor devices to top notch touchscreen and/or QWERTY devices. It’s really exciting. I just want it to see the light of day.

  • More Python for Series 60 Crypto: Rijndael

    Rijndael on Series 60

    During my search for pure python Nirvana I came across Bram Cohen‘s rijndael.py. It can work with strings of length 16, 24, or 32. Here’s the sample code that ran successfully (albeit slowly) on my Taco:

    # Make sure rijndael.py is in your libs dir
    from rijndael import rijndael
    # key must be 16, 24, 32 characters long
    key = 'sixteencharacter'
    r = rijndael(key, 16)
    # must encode/decode in the chosen blocksize
    print 'Encoding/Decodingnusing Rijndael...'
    plaintext = 'themonkeygoeswoo'
    ciphertext = r.encrypt(plaintext)
    print r.decrypt(ciphertext)

    It took its sweet time to run, but isn’t much more painful than waiting for import urllib, so it’s not the end of the world. It requires copy and string, which I’m not sure are in the Nokia distribution, but it works just fine if you dump the Python 2.2.2 source libraries in to your libs directory.

    Add this one to your mobile cryptography toolbelt.

  • PyCon Day 3: PyBlosxom

    Yes, that’s right. I still have notes from PyCon that need a proper writeup. Ted Leung‘s presentation on PyBlosxom. PyBlosxom is an implementation of Blosxom that is Pythonic while maintaining the original blosxom zen.

    Like any old blosxom variant, you don’t need a database to run PyBlosxom. Posts are stored on the filesystem, and most of the hard work is accomplished by PyBlosxom interacting with the filesystem. You can use whatever editor you feel most comerfortable with to create your posts. A post is stored somewhere in a folder heiarchy that also acts as categorization.

    Most of the base functionality in PyBlosxom is implemented in plugins. There are also a multitude of plugins that can enhance your PyBlosxom weblog, including archives, calendar navigation, xml-rpc interfaces for the Blogger and MetaWeblog API, autopinging, logging, lucene integration, post markup engines, and more.

    Developing PyBlosxom plugins seems to be a breeze too. Plugins are just Python modules that supply callback functions. They’re called by PyBlosxom at specific times, and multiple plugins can be chained together that can be called in alphanumeric or a specific order. Plugins get all of the information they need to work with in dict form. They are given http request information, configuration data, and other data that it may need and need to just manipulate that data to get the job done.

    There are a ton of plugins available already, but Ted would really like to see some more comment plugins, especially with picture challenges and comment moderation.

    Ted’s talk was motivation enough for Erik Smartt (who was sitting next to me in the back of the auditorium leeching power) to switch from his home grown blog software to PyBlosxom. He also converted his wiki markup code in to a PyBlosxom plugin with very little effort. Hopefully he’ll find a solution to multiple categories too.

  • Sun Does XMPP

    Via Jabber News, Yahoo! Finance:

    SANTA CLARA, Calif., March 30 /PRNewswire-FirstCall/ — Sun Microsystems, Inc. (Nasdaq: SUNW – News), today announced the latest version of Sun Java(TM) System Instant Messaging, a key component of Sun Java Communications Suite. With this latest release, Sun is supporting the eXtensible Messaging and Presence Protocol (XMPP), the first protocol to be approved by the Internet Engineering Task Force (IETF) as an Internet standard for instant messaging and presence technologies. In addition, Sun Java System Instant Messaging includes new privacy controls, significant improvements in usability and new partnerships to enhance the offering.

    Rock on Sun! Excellent move! Unfortunately the Sun Java System Instant Messaging page is giving me a really ugly Tomcat 500 error. (Actually, if I had scrolled down to the very bottom rather than searching Google, I would have found a working link. It’s also a bit weird that they’re running Tomcat now that you mention it. Don’t they sell software that does stuff like that?

    All dogfood issues aside, I’m always excited to see XMPP expand its base and make its way in to a new product.

  • Python for Series 60 Crypto: DES

    Pure Python DES module

    Speaking of pure python crypto, it looks like PyDES works perfectly too. This one will probably require bits of the Python 2.2.2 source in order to run though. Specifically it’s looking for binascii and time. All in all it’s quite lightweight and seems more responsive in both import time and encrypt/decrypt time as compared to blowfish.py. It’s still very slow compared to a native implementation, but should be fast enough for inclusion in Python for Series 60 apps.

    DES and 3DES are available from this module. I can’t seem to find a reference to what license it is released under, so you might want to track down the author before writing an application around it.

    Here’s the code for the demo above (taken from an example that ships with PyDES):

    import pyDes
    k = pyDes.des("DESCRYPT", pyDes.CBC, "")
    print "Encrypting/Decrypting DES"
    d = k.encrypt("Please encrypt my string")
    print "Decypted string: " + k.decrypt(d)
    k = pyDes.triple_des("MySecretTripleDesKeyData")
    print "Encrypting/Decrypting 3DES"
    d = k.encrypt("Encrypt this sensitive data", "*")
    print "Decypted string: " + k.decrypt(d, "*")

  • Blowfish in Your Pocket

    Blowfish on Python for Series 60

    After finding out how well BeautifulSoup worked on my N-Gage, I decided to try to find more modules that “just worked” on Python for Series 60. First up is blowfish.py, a project by Michael Gilfix. The file itself is not available directly from the author within the US, but Google cache can help with that.

    The module is pure python, with absolutely no module dependencies. I have only tested it on the MMC with the full Python distribution on it, but this one (in theory) should work on a stock .SIS install without any addition python modules in your libs directory. It’s definitely not fast by any stretch of the imagination, but it may be a good building block if you want to add some crypto to your mobile application.

    Here is the code that is being executed in the screen shot above:

    import blowfish
    key = 'hey, look over there!'
    print 'generating the fish'
    fish = blowfish.Blowfish(key)
    print 'Plaintext:'
    text = 'testtest'
    print text
    print 'Encrypting...'
    crypted = fish.encrypt(text)
    print 'Encrypted.'
    # Printing encrypted chars causes barf
    print 'Decrypting...'
    decrypted = fish.decrypt(crypted)
    print 'Decrypted:'
    print decrypted

    
    

  • PyCon Nugget: shpy

    One of the lightning talks from day 2 of PyCon that wowed me the most was the demo of shpy. I was really bummed when I tried to hop online just to find out that codespeak was down, but the site is back up now.

    Shpy is like a poor man’s (read: non-Mac) SubEthaEdit. The analogy isn’t exact though. Shpy is really a text editor designed for writing Python code that can be edited by multiple people simultaneously with no noticeable lag for each end user. The document is kept in sync on a line-by-line basis so that you only run in to problems when mutliple people are editing the same line at once, which isn’t as rare an occurance as you might think.

    The fun doesn’t stop there though. Shpy also allows for the execution of Python code from within the editor, hence the name. I was really impressed and can’t wait to give it a go. It might even get interesting if I combine shpy with screen over ssh to keep a todo.txt (er todo.py) always (or just a ssh session away anyway) available.

    For more information, check out the shpy documentation.

  • Mobile Screen Scraping with BeautifulSoup and Python for Series 60

    BeautifulSoup 2 BeautifulSoup 3

    I haven’t had enough time to work up a proper hack for this, but I though I would pass along an interesting discovery that I made the other day before heading out to PyCon. After hearing about how great BeautifulSoup is at scraping HTML and making it easy to get little bits from it that you need, I thought I’d have a go at running it on my taco. You know what? It worked. I was expecting it to barf on import, but no, it chugged along just fine.

    Now unfortunately BeautifulSoup won’t work out of the box with the standard .SIS install of Python for Series 60. It relies only on SGMLParser, string, and types, but those three libraries have some dependencies themselves. Here is what BeautifulSoup requires according to modulefinder.py running on my Debian box:

    • array
    • copy_reg
    • markupbase
    • re
    • sgmllib
    • sre
    • sre_compile
    • sre_constraints
    • sre_parse
    • string
    • strop
    • sys
    • types

    These dependencies can be easily taken care of by dropping the python modules from the source distro in the appropriate libs directory on the drive you installed Python on.

    One reason that BeautfulSoup “just works” on Series 60 is that the author strives to keep imports to a minimum and that the author srives to keep BeautifulSoup backwards compatible all the way back to Python 1.5.2. There are probably many modules out there like BeautifulSoup that are designed to be backwards compatible and platform independent that should work just fine on Series 60. As I find them, I will definitely point them out. I also hope to do some hacking on a few screen scraping apps that use BeautifulSoup and appuifw to present web data using native widgets.