Author: Matt Croydon

  • Backing Up Flickr Photos with Amazon S3

    I love that I now have an Amazon S3 billing page that reads like a really cheap phone or water bill. I think that they’re silently changing the game (again) without telling anyone else. I really like the implications of this magepiebrain post and decided to start using S3 “for real” myself last night.

    The first ingredient was James Clarke’s flickr.py. Getting a list of my photos is pretty simple:

    import flickr
    me = flickr.people_findByUsername("postneo")
    photos = flickr.people_getPublicPhotos(me.id)

    The second ingredient for getting the job done was a pythonic wrapper around the Amazon example python libraries by Mitch Garnaat called BitBucket. Because it builds on the example libraries, there’s very little error checking, so be careful. Check out Mitch’s site for some example BitBucket usage, it’s pretty slick.

    Once I was familiar with both libraries, I put together a little script that finds all of my photos and uploads the original quality image to S3, using the flickr photo ID as the key. Here’s the complete code for flickrbackup.py, all 25 lines of it.

    After uploading 160 or so photos to Amazon, I owe them about a penny.

    Getting photos back out is really easy too:

    >>> import BitBucket
    >>> bucket = BitBucket.BitBucket("postneo-flickr")
    >>> bucket.keys()
    >>> bits = bucket[u'116201243']
    >>> bits.to_file("photo.jpg")

  • SNAP at Forum Nokia

    A few years ago (mid-2004 I think) I got really excited about SNAP (scalable network application package). I haven’t heard much about it since (not that I had been looking very hard), but I saw it pop up again today at Forum Nokia, and I think it’s worth a fresh look. There’s a flash site explaining the tech, but the really good stuff looks like it just hit Forum Nokia:

    I really wish that I had enough time to read all this stuff, since it’s absolutely fascinating to me. I’ll try to download a couple of these to my 770 and read them when I get a chance. It looks like some really sweet stuff has been done with SNAP while I haven’t been looking. In particular, Nitro Spin Racer reminds me of RC Pro-Am and I so want to play it. There are a couple of other games that look pretty compelling too.

  • Lighty Rocks My PHP/MySQL World

    A few weeks ago I was tasked with moving boards.kusports.com from an old, overloaded XServe to a newly appropriated Xeon box. The boards were notorious for going down after big games and during big news events and usually took other things on the same server down with them.

    Thankfully that is no more. A week or so before the Big 12 and NCAA tournaments we finally bit the bullet and committed some time to move the boards over to their own box with more horesepower and more RAM.

    I put the ubuntu-server version of Breezy Badger on the box and took the opportunity to see if I could get UBB Threads running under lighttpd and php fast-cgi. I’m glad that I took the time, because it’s smoking fast.

    The process was quite painless thanks to the Ubuntu packing system. I had to build lighttpd by hand but everything else was installable with command-line tools (aptitude/apt-get). The changeover process consisted of little more than shutting down the boards on the old box, doing a dump/restore of the database to the new server, updating DNS entries and issuing temporary redirects to get the board users through the day.

    The best thing about the conversion is that lighttpd, mysql, and php-fcgi barely register any load on the server, even at peak usage. While we were scrambling with stom coverage the other weekend, the boards box quietly registered a new high water mark for usage. After a painful first-round loss in the NCAA tournament, the boards registered yet another high water mark (1134 simultaneous users). The server barely flinched with a load anywhere from 0.00 to 0.20 with plenty of resources free. Previously a third of that number could potentially bring the XServe to its knees.

    While we were turbocharging things, I also installed eAccelerator on the box, which was equally painless and yielded about a 20-30% performance increase.

    All in all I’m gaga over lighty, mysql, and php-fastcgi for when the situation warrants it. It really is insanely fast. At the same time I’m really glad that I work in Python all day.

  • Python in Your Pocket: Python for S60

    I’m down in Dallas at PyCon 2006 recovering from a late night slide completing session for the talk I gave today: Python in Your Pocket: Python for S60. I used docutils to transform ReST in to a purdy S5 presentation (ReST source is here).

    I’ll be here through Sunday night so if you’d like to hear more, feel free to find me. I’m also going to whip together a Django lightning talk for tomorrow. While I recover a bit and take some notes, keep an eye on the pycon2006 flickr tag which I’ve been juicing with Meaning metadata.

  • Clickable Bylines

    Clickable bylines are the new black in online journalism according to this post and related comments at Poynter. I have to admit that I thought that this was the norm rather than the exception, since this had been the case at the Journal-World long before I arrived in Lawrence.

    A few days ago Dan asked me how long it would take to whip up per-writer RSS feeds. Thanks to django’s syndication framework the answer was no time at all. Over the next couple of days and with the direction of Dan and David, we tweaked the feeds to include both per-writer and per-photographer feeds. David made it easy to set up search alerts for every time a staff member posted a story. We also updated the staff bio pages to make all of this information easier to get to.

    Here is an example from a recent story by Joel Mathis:

    in-story byline

    If you click on Joel’s name, you’ll be taken to his bio page. If you click on Contact, you’ll be taken directly to his contact form. There’s nothing new there (for us anyway). The new stuff happens on the bio page:

    Joel's bio page

    The very top of every bio page contains more metainformation than you can shake a stick at. First and foremost is Joel’s number and contact form. After that we have an RSS feed of his latest stories. Following that is the search alert form that allows you to be notified every time Joel posts a story. Since Joel is such a converged guy and takes pictures too, you can check out the latest photos he has taken or subscribe to an RSS feed of those photos. You can also subscribe to that feed as a photocast in the latest iPhoto.

    Joel’s bio page also also contains a short biography that makes me want to head up the street to Rudy’s every time I read it. Below the bio and mugshot is a list of recent stories by Joel and a form that lets you quickly search his stories.

    I think these tools go well beyond what other news organizations are just beginning to do. At the same time there is always room for improvement, so don’t be suprised if more information is added to these pages.

  • Mobile Olympics

    I’m a little dissapointed that NBC isn’t featuring their mobile Olympic coverage very well, but once you get there, it’s pretty good. After watching parts of the opening ceremony last night, I hopped on the official NBC Olympics site looking for the mobile coverage that had been hinted at during the broadcast.

    The only mention of mobile on the homepage points you in the direction of the NBC Sports Mobile Store:

    NBC Mobile store blurb

    You have to dodge cheezy ringtones, wallpaper, and j2me games to get to the clearance rack in the back that I call “content.” It turns out that in order to get the secret password that lets you in to the mobile NBC Olympics site, you have to text NBCTV (that’s 62288) the message TORINO. What was that? Oh, the sound of fifty cents being drained from my wallet. I guess that’s not too bad, because they send a carrier-specific link for Sprint and Cingular, and there appears to be a generic default too. I may be a freak, but I would have preferred to type a URL in to my phone than deal with a SMS roundtrip. Oh well.

    Once I made it to the mobile site, I was presented with a simple but useful menu. On the left is the Cingular menu using the built-in browser on my 6682, on the right is the Sprint version using Opera Mini on my 6682:

    NBC Olympics Cingular NBC Olympics Sprint

    It’s interesting to note that the only real difference is the links to the carrier homepage (minor usability bonus points) and the online store link on Cingular. From the front page you can get a list of stories, check the tv schedule, and check up on the medal count. Here are some examples of the interior pages (designed for Sprint) using Opera Mini and the medal count page (designed for Cingular) using the built-in browser on my 6682:

    Sprint Mobile Story List Olympics Story Detail mobile medal count

    While the information presented on the mobile site is pretty useful, it’s a tiny fraction of the information that is on the NBC Olympics desktop site, and almost feels like a thinly veiled excuse to hock ringtones and wallpaper. I really wish that NBC were able to cram some of the in-depth event coverage on to mobile devices. For example, would it be absolutely impossible to slap a mobile template on the live luge coverage?

    NBC Luge Coverage

    To be fair, NBC has set up an email and SMS alert system that lets you receive updates about broad categories all the way down to specific events. They also have an extensive list of RSS feeds, though the few I’ve looked at are not valid and contain partial itunes information as well as thumbnails that my aggregator would pass over because it’s in an ibsys:associatedImage tag.

    I definitely have mixed feelings about the mobile coverage that NBC is doing of the Olympics. On the one hand, mobile design and development isn’t easy, and they do have some content online. On the other hand, they make it pretty hard to get to and it feels like they’re just trying to sell me some vaguely related ringtones while I’m there. I do have to give them some geek props though for using Jakarta Tapestry and its mobile markup capabilities on Gentoo running on AMD64 hardware (see stacktrace).

    If you’d like to check out the mobile NBC Olympics site on your phone (and would rather not shell out for a couple of SMSes), here’s where to go:

    While I wasn’t impressed with the mobile coverage, I was absolutely blown away by the video coverage on Sprint’s Power Vision. If you have a Power Vision phone, check out Sprint TV -> Sprint TV Live -> NBC Mobile Olympics. I checked it out just after NBC finished airing the opening ceremonies in Kansas and they were already covering alpine skiing practice and qualifiers. I can’t put in words how much this blew me away. More on that later.

  • mobile.kusports.com

    Over the past few days I’ve been spending some free time and downtime tweaking mobile.kusports.com and adding a couple of really cool (IMHO) features. We send out a ton of cel phone updates during each game, but I really wanted to bring our awesome live stats to mobile devices.

    The first order of business was to see how the low-tech live stats view looked on the mobile site. Since pretty much all of our templates extend a base template, it looked pretty darn good out of the box (thanks to template inheritance and some great default templates by Wilson and David). Most of the time spent on this template was to condense the stats a little bit to require less scrolling on small devices. Here is the live stats view using Opera Mini on my 6682:

    mobile.kusports.com live stats

    Having the live stats accessable from mobile devices is great, but it’s important to make it extremely easy for someone to get to them if they come to mobile.kusports.com while a game is in progress. The solution was to present the current score on the home page if and only if a game is in progress. This was accomplished by writing a custom template tag (which took literally a few minutes) and a tweak to the home page template:

    KUSports mobile home page

    Now the score and the stats are first and foremost while there’s a game on, but nowhere to be found if there isn’t. The last thing I wanted to do was to make sure that the current score (and a link to the live stats) was available from other interior pages in an unobtrusive way. I figure that if someone is reading a story or viewing photos while a game is on, they probably wouldn’t mind knowing the current score either. I decided to present the information without announcing itself quite as loudly as the score on the home page:

    KUSports mobile interior page

    I hope to do some more tweaking of our mobile sites here and there as free time permits, and I’ll do my best to highlight the changes here if I think they are particularly clever.

  • My Nokia 770 Is On The Way!

    I just got “the email” saying that my Nokia 770 developer device was ready to rock. It’s been ordered up, more when the device arrives!

    Update: It’s here, more later.

  • Ajax In Your Pocket

    Mobile GMaps

    There goes Google, taking it to the next level again. Their latest offering is Google Local for Mobile. What they’ve done is essentially taken the Ajax model for desktop browsers and brought it the phone using J2ME. The idea is to have a fairly lightweight MIDlet (38k for the MIDP2 version) that then grabs all the data neccesary from the network.

    While this isn’t a horribly new idea, I think in this case it’s all about execution. Check out the tour to see everything that they’ve crammed in to this midlet. Your basic search is there, directions are there, simple smooth navigation is there. The interface is clean but at the same time there is a ton of information at your fingertips. They’ve also managed to cram driving directions in there, which is something I miss from MGMaps. To be fair, MGMaps has had a j2me interface to Google Maps for quite some time now and it’s the most used MIDlet on my phone. More than once it has helped me figure out where I am or where I’m trying to go.

    I’m glad to see Google pushing the mobile space like this. At the same time with mobile devices and J2ME you’re going to run in to some glitches. For example, I snagged the JAD by going to google.com/glm with Opera on my phone. It snagged the JAD and started installing it. After downloading it promptly ran out of memory and quit the installer. This isn’t Google’s fault, it’s the 6682’s known lack of a decent amount of memory. What worries me is that if the installation process failed on a rather high end device, I worry about how it would do on a super generic low end flippy. What is even worse is that after downloading and bluetoothing the JAR to my phone, I don’t get any farther than a bunch of “Loading…” on my screen. It looks pretty and fun in the emulator though.

    While there are still some growing pains to get through, Google is definitely on to something. To get around the problem of mobile browsers sucking, why not just get rid of the browser completely?

    I predict that 2006 will be the year of mobile Ajax. While I might be stretching the Ajax term a bit beyond Javascript and XMLHTTPRequest, I expect to see a new breed of apps and services with that Ajax feel to them hitting mobile devices in 2006. Google’s offering is just (as usual) before its time. On the horizon we also see Nokia’s WebCore based browser which will be more than capable of traditional Ajax, more devices shipping with Flash and SVG support, connected tablets (Nokia 770 and the PSP), and more. Trust me, 2006 is going to be a wild ride.

    Update: Thanks for the comments everyone. On Niels‘ suggestion I tried Other -> Nokia -> 6682 and it worked like a charm. Someone needs to fix the Cingular -> Nokia -> 6682 JAD.

  • Several Announcements from Nokia

    Lots of stuff is coming out of Finland via Barcelona today from their Nokia Mobility Conference. Here’s a quick roundup:

    Wow, that’s a lot of stuff to digest, but I’m really excited. Like Ewan, I think the N80’s form factor along with its quad-band dual-WCDMA-ness could just about make it the killer allover worldphone.

  • How Did I Live Without iSync?

    iSync on my Powerbook

    I really don’t know how I ever got along without iSync. It managed to do in just a few minutes what I didn’t have the patience for: synching the contacts between my three Series 60 phones. I had been putting off typing or transfering contacts to my 6682 because I wanted to give iSync a shot, and I’m glad that I did. Now everything is up to date on my 6682 and as a bonus so are my taco and 3650 in case I feel the need to grab them on the way out the door.

    Active Standby Screen

    Another thing that I’m really excited about is the active standby screen on the 6682. I saw a precursor to this on the Sendo X and really liked it. Nokia are definitely on the right track by allowing quick access to as many as 7 apps without having to click the application button. I have access to five apps on the top (Contacts, Messaging, MGMaps, Python, and WirelessIRC) as well as the two softbuttons (Gallery and Opera). The camera app also opens up if the camera cover is opened. That really is quick access to a nice core set of apps for me, with others still available as before.

    The other brilliant thing here is at-a-glance access to your calendar and your todo list. With a single click on either you can pop up those apps, bringing the total number of apps just a few clicks away on your standby screen to 9. I find myself using the calendaring system a lot due to the combination of iCal/iSync and the fact that calendar events from today show up on my standby screen. It’s also great to be able to set up alerts for certain events. I had been using (and absolutely love) Backpack but like the tighter integration of iCal and it also saves me SMSes (since Cingular charges a bit much for them).

    While I’m happy to have access to the todo app on the standby screen, I wish that the message displayed on screen were a little more helpful. If you only have one todo (yeah right, nobody has one todo) your todo text will be displayed on screen. Once you get past one or two todos they get smoshed in to one line that says something like “Slacker, you haven’t done x things yet.” I hope that Nokia takes a look at this in the future, because a soimple change there can improve the experience a ton. I wouldn’t be afraid to have your active standby screen scroll if you have a bunch of appointments or todos as long as the highest priority todos and soonest events are still above the fold or on the main screen. I can see a list of 2-3 todos and a link to “and x more todos” being much more useful than going from one todo to none on the main screen.

    All nitpicking aside, I’m totally in love. The synchronisation is flawless. It Just Works the first time without any glitches (YMMV). What I really love is that I have a vast amount of PIM information available to me on a device that was going to be in my pocket anyway. I’d say that the 6682 does every major function that a PocketPC or Palm based organizer would for me on the PIM side and it’s more than capable of running an array of apps and games. The 6682 really does a good enough job at enough of the functiosn of a PDA that carrying one would be redundant. The only thing I really miss from a PDA is a higher rez screen and Wi-Fi. I think Nokia has that covered in the new E Series though.

    Update: I forgot to mention that there’s an app on the 6682 designed specifically to help you move contacts and information from your old phone to your new phone. It copies a program to your old phone over Bluetooth and then allows you to transfer it over to your shiny new phone. It’s really a one way street, but the guys in #mobitopia tell me that it works perfectly.

  • We’re Moving to Kansas!

    No really, we’re moving to Kansas. I’ve accepted a position at World Online, the online division of the Lawrence Journal-World. I’ll be working on some award winning sites including LJWorld.com, lawrence.com, KUsports.com using my favorite web framework: Django.

    I’m really excited about working with an awesome team of people doing some really cool stuff. And of course I’m completely stoked about working with Django on a daily basis. I’ll talk about what I’m up to when I can but there will be times when I have to keep my lips zipped. I guess now might be a good time to mention that this is my personal weblog and that views/opinions/etc expressed here are mine and do not necessarily reflect those of my employer.

    Needless to say I’ve been a bit busy with getting up to speed at work and planning the move. I’ve been meaning to write this post for some time now and had to delete a completely out of date post that I had half written while in Lawrence. Blogging will probably be light until things settle out, but in the meantime keep an eye on my del.icio.us links.

    Strap in, Toto!

  • MTV Buys iFilm for $49 Million

    CNet:

    The deal could mean a lot more downloadable TV programming for Web users and more online advertising for Viacom. “We’re…excited about the partnership potential with our established brands like MTV, MTV2, MtvU, Comedy Central, SpikeTV and VH1,” an MTV executive said in a statement. Video via the Web got another boost this week when Apple Computer unveiled a new iPod that plays videos. The company also plans to sell TV episodes, music videos and short animation through the iTunes music store.

    Effective immediately, iFilm.com will stop showing online movies. To view movies, you will have to tune in to iFilm2.com. I’m kidding of course. This seems like a pretty big deal and on the surface feels like a knee jerk reaction of “buy it before someone else does.” At the same time, CSI reruns on a video iPod would rule. It seems a bit weird for Apple to have started offering music videos for download from the beginning while MTV feels like a bolt-on.

    “I heard you on my wireless back in ’52…”

  • The Dapper Drake

    Now that Breezy Badger is out the door, I felt the need to find out what Ubuntu Linux 6.04 (the version coming out 6 months from now) had been named. The answer? The Dapper Drake. I’m guessing that the goals for the next release will solidify considerably after UbuntuBelowZero in a week or two.

  • VirtualRadio

    It boggles my mind that with EDGE and the hottest Series 60 phone available in America (I know that’s not saying much) I can’t stream MP3 or Real Audio out of the box. I’ve really been missing the FM feature that the taco has that the 6682 does not. Have no fear though, for a mere 10 bucks you can get streaming audio on your device with VirtualRadio. I was hoping that I would be able to point it to any mp3 stream I could think of but unless I’m missing something that does not look like an option. There is a pretty good list of channels though, and WBUR and WNYC are among them so I can get my Morning Edition and All Things Considered fix if I leave the taco at home. I’m bummed though because both stations air Marketplace at 6:30pm instead of the 6 o’clock time slot that I’m used to.

    I’m bummed about the inability to type in URLs of specific streams if they’re not on the list. I’ve been addicted to WMUC lately for their eclectic mix and local bands. I hear that it doesn’t multitask well (I can’t tell you how much I love playing FIFA to NPR) but it does an impressive job of the streaming thing over EDGE.

    I’m probably going to have to find a new set of popport headphones since teh ones that came with the 6682 are pretty dorky (or I’m just not fashionable enough) and I’ve broken the little connector thing that sits behind your neck and places the microphone in a usable spot in front of you.

    Are there any other apps out there besides Virgin Radio out there that let you stream mp3 or Real? I would kill for an app that let me point it at any stream I wanted. I’ll try Helix again but I wasn’t impressed last time. I’m pretty sure that the built in RealPlayer should in theory be able to stream, but I’ve tried pointing it at a few streams without luck.

  • Unleash the Badger!

    It’s been six months, and without delay, Ubuntu Linux 5.10 (Breezy Badger) is out the door. I’ve been running Breezy for a month or so and aside from a few minor hiccups it’s been treating me quite well.

    Ubuntu 5.10 features lots of goodies including Gnome 2.12.1, OpenOffice.Org 2 beta, Linux kernel 2.6.12.6, GCC 4.0.1, Python 2.4.2, and a ton of others. Check out the release announcement for more information and download links.

  • Nokia E Series

    Nokia E Series

    Nokia has announced a new business line of phones called the E series. These are all Series 60 devices (3rd edition based on Symbian 9.1). The E60 (middle) is a classic but small candybar phone. The E70 is a 6800-style device with a folding keypad. I remember saying that a 6800 running Series 60 would be a killer, so let’s hope I was right. The E61 is blackberry/treo-style quad band UMTS phone and a huge gorgeous screen.

    These are some jaw-dropping phones. I can’t wait to see these get out the door. These phones are planned for Q1 2006 (which roughly translates to 2H 2006).

  • Skipping Startup School

    I managed to get past the hall monitors and was accepted to Startup School but had to skip it due to scheduling. I’ll be keeping an eye on the blogosphere and the notes that come out of the daylong event. I was particularly interested in attending as a guy who is constantly on the edge but doesn’t always realize it until similar products or services come out a year or two down the road. I did moblogging back in 2002 on my POS WAP-only Sprintphone and have worked on countless other small projects. Every once in awhile I reminisce with Russ about that big new thing that he or I had tinkered with but not got off the ground a year or two ago. I was definitely looking forward to peeking behind the curtain a bit, but hopefully some attendees will be kind enough to write up their experiences.

    In other news, you might get an idea of what Aaron and Infogami is up to if you visit the Startup School Wiki

  • IT Conversations Seeks Python Developers

    Doug Kaye is looking for help in putting together an open source podcast uploader program:

    This is an open-source project to create a client-side application for encoding, normalizing and uploading audio files to the Conversations Network content-management system’s FTP server.

    See the requirements doc for more information. Can anyone lend a hand?

  • Mike and Chrissy

    Away and Married

    Congratulations are in order to Mike and Chrissy. Yesterday, as you can see from their away messages above, they got married. I’m so happy for them and I’m so glad that the day went so well. The weather could have been a little nicer, but everything else came together perfectly.

    Congrats you two!