March 18, 2004

Special Sauce in GTK+ 2.4?

I finally got around to pulling Fedora Core 2 Test 1 last weekend because I'm a good contributing citizen and all that. It looks nice thus far, no problems that I wouldn't expect. Feeling bleeding edge I went ahead and decided to sync up with rawhide, which was also pretty painless. Today I had 50 or so updated packages come down including the just released GTK+ 2.4.0. I restart X and come back to find what seems to be an enormous increase in perceived responsiveness of the entire GNOME environment. I usually run with the stock Bluecurve theme because I really just don't care that much about themes as long as they are tolerable and don't bog the system down. However, on this day, with GNOME acting all balls to the wall, I decide to load up the Milk 2.0 Theme [screenshot].

I've been envying a guy at work who lugs his PowerBook G4 17" into the office everyday--the panther GUI really does have amazing style and polish. I take the scenic route, passing his cube, to the coffee two or three times a day; sometimes, when he's not around, I admit I walk up and rub it softly and promise to come back for her when I have an extra $3,000 laying around.

Milk is pretty heavy on the pixmaps. I tried it for about 10 minutes about a week ago and was just completely disappointed at how much it slowed things down. Not now. I'm back around the same responsiveness I got with Bluecurve under GTK+ 2.2, which wasn't bad by a long shot. It's just kind of amazing how you can get serious system-wide increases by optimizing in sweet spots. We should be looking for more of these.

Posted by Ryan Tomayko at 02:39 AM | Comments (0) | TrackBack

URLGrabber Project Page Up

Michael Stenner and myself have been working on an advanced URL grabbing package for python appropriately named urlgrabber. Michael started the project as part of yum and later decided that it should be split out into its own package. I was lucky enough to be in the right place at the right time with Michael proposing some serious redesign and enhancements to the project and me wanting to write as much python as possible.

I have always been extremely interested in network protocol type stuff for some reason. One of the first apps I cobbled together was a little download utility called Power Download. Yea! This thing was basically a replacement for the stock downloaders you got with the Browsers of the time (Navigator 3.0 and IE 2--various flavors of Mosaic were still fairly popular too). Get this - PowerDownload was written entirely in VB3 (and then ported to VB4). Word to the wise: DO NOT ATTEMPT TO WRITE SOCKET BASED APPLICATIONS IN EARLY VERSIONS OF VISUAL BASIC. Anyway, the reason I wrote the app in the first place was because I wanted pause/resume support on downloads. We were coping with anything from 2400bps to 14.4kbps modems and there are only so many times you wake up to a find a 50MB download would have to be restarted before you either kill yourself or start hacking together a solution. So the nostalgia took over when Michael said, "We need support for byte ranges in HTTP and FTP. Do you know anything about that?"

Back to the point of this entry... URLGrabber is really starting to come together and we hope to announce an early test release in the near future. Michael set up a nice project page on Duke's Linux site that has a significant amount of information, viewcvs, and all the other goodies.

http://linux.duke.edu/projects/urlgrabber/

Here's the list of features ripped from the project page for your convenience.

  • identical behavior for http://, ftp://, and file:// urls
  • http keepalive - faster downloads of many files by using only a single connection
  • byte ranges - fetch only a portion of the file
  • reget - for a urlgrab, resume a partial download
  • progress meters - the ability to report download progress automatically, even when using urlopen!
  • throttling - restrict bandwidth usage
  • batched downloads using threads - download multiple files simultaneously (feature still in progress)
  • retries - automatically retry a download if it fails. The number of retries and failure types are configurable.
  • authenticated server access for http and ftp
  • proxy support - support for authenticated http and ftp proxies
  • mirror groups - treat a list of mirrors as a single source, automatically switching mirrors if there is a failure

Not to shabby. I plan on blogging a bit about some of the cooler things you can do with urlgrabber once we have a clean release out there.

Posted by Ryan Tomayko at 01:12 AM | Comments (0) | TrackBack