Ted Leung on the air
Ted Leung on the air: Open Source, Java, Python, and ...
Sat, 30 Apr 2005
Tiger update

Paul Thurrott is best known for his Windows sites, and his critical position on Apple. But Paul is a Mac person, and he's doing a great Tiger Feature of the Day series on his blog.

Anand over at AnandTech has also done an interesting review -- that's where I learned about Spotlight comments in the Finder (I almost never Get Info). I wonder if you can script modification of the Spotlight comments data.

Here's the morning update on Tiger. Thanks to readers and this MacOSXHint, I got my mail folders in the right place now. I also managed to get GNU Emacs up and running by grabbing the latest from CVS.

I've done a little exploring -- I added a bunch of Dashboard widgets (Earth to Apple - RSS feeds for the Dashboard, Spotlight, and Automator download pages). Things like weather, stock tickers, package trackers, known wireless points, etc. There's been a lot said about Dashboard, and a lot of people think that it's hype. From reading James' article on Dashboard, it looks to me like these Widgets are a very similar to "AJAX" based webapps.

Another thing that I've noticed is that things feel much snappier, at least in some applications. NetNewsWire seems much snappier and I was also running a fink source build in the background. But that might also be due to the memory upgrade that I did yesterday (and yes, I did the upgrade after I discovered the problems with the DVD-ROM).

Things I'm still having trouble with:

  • Keyboard shortcuts to Mail.app AppleScripts - I have a few scripts that I used to trigger via keyboard shortcuts. In Tiger, it looks like all the mail scripts have moved to ~/Library/Scripts/Applications/Mail. My scripts show up in the Script Menu, but the keyboard shortcuts don't work, and that's a big workflow interruption

Time for us all to get on Jabber and get off AIM. My jabber id is twl@jabber.org (no 150 user limit on Jabber)

I've done a little more playing with Spotlight, and I'm reasonably impressed. When you start to do AND/OR queries it slows down a bit, but it's finding all kinds of stuff. I'm realizing that I need to think hard about how tell Spotlight what *not* to index. There's a whole realm here for additional metadata oriented searching stuff. One thing that would help when you get lots of results is some way of previewing matching items.

More after the Bainbridge Bloggers Bash...

[22:43] | [computers/operating_systems/macosx] | # | TB | F | G | 4 Comments | Other blogs commenting on this post
Tiger is in the house

Fedex left a Tiger upgrade late this morning. What I expected to be a normal upgrade (decent chance of pain) turned into a royal pain.

First, the Carbon Copy Cloner job that I left running overnight interacted badly with SSHKeychain, which caused CCC to stop in the middle. So I had to force quit it, blow away the backup partition and start over.

The major hangup turned out to be the fact that the DVD drive in the Powerbook is no longer accepting optical media of any sort. I put the media in, and I can't even get it in all the way. The spring loaded resistance starts, and you just can't push the media all the way back into the drive. I used the drive last night to book from my PowerBook software DVD so that I could repair the various disks that I'd be using today. But this afternoon, the drive was kaput. I spent a bunch of time at the Apple web site looking for a number to call, but I was apparently too smart for my own good. I finally called 1-800-MY-APPLE and got connected to a Powerbook specialist.

The verdict: send the machine to Apple for a minimum $350 swap of the drive, and go without the machine for as long as 10 days. The specialist suggested that I go to an authorized Apple service center. More Googling and a phone call yielded a $400 repair, but it could be done in a few days, modulo a pair of $13 ferry trips.

Resigned to a busted drive, I then set about trying to find a way to get Tiger installed. I IM'ed a friend, hoping he would have an external firewire DVD ROM. No such luck. He did point out that Other World Computing had a replacement internal SuperDrive for $179, $100 less than the authorized service center. So maybe it looks like I order that and then trot over to the service center for a $99/hr repair. I still am not brave enough to open an Aluminum Powerbook by myself, even though I have the service manual. Odd, since I worked in a computer repair shop in high school. But I digress.

The solution to Tiger install turned out to be tearing the Pioneer 106S out of my old Windows box, opening up my external firewire drive, and creating an ill-fitting external firewire DVD drive.

After that, I finally got to do the Tiger install that I expected. So far, it hasn't been too bad. Since I have had so much cruft accumulating, I decided to Archive and Install. I chose not to preserve any personal data, so I'm gluing the archive back into the new system, a bit at a time.

So far, I think things are going well. I'll write more about Spotlight and Dashboard some other time, but some of those tiny other 200 features are turning out to be nice surprises. I normally use a Microsoft Natural Keyboard when I'm stationary. I was using a combination of uControl and Microsoft's keyboard driver to keep the various modifier keys arranged in a sane order. Unfortunately, both uControl and Microsoft's driver are broken under Tiger. But the Tiger Keyboard preference panel lets you map modifer keys around, so everything is fine, and I didn't need any preference panels to make it work.

Even more happily, Tiger found all the buttons on my Intellimouse Explorer, and the Expose preference panel support chorded (modifer key plus mouse button) mouse clicks for activating Expose -- that kills off the need for some other preference panels.

So far the only two casualties from my frequently used applications are GNU Emacs and the Red Pill screensaver. I compiled GNU Emacs for Aqua by hand, and the precompiled binary doesn't work. The sources that I used don't compile under Tiger either (haven't had time to dig further). The Red Pill looks completely wrong.

Oh, and the new Mail.app wants to stick all of the mail folders in my OSAF account inside the inbox folder. If someone knows/remembers how to fix that, help would be appreciated.

More later.

[00:14] | [computers/operating_systems/macosx] | # | TB | F | G | 4 Comments | Other blogs commenting on this post
Fri, 29 Apr 2005
Tiger Reviews

If you are interested in end user oriented review of Tiger, you have your pick:

  • Walt Mossberg's review at the WSJ
  • David Pogue's review at the New York TImes
  • Ed Baig's review at USAToday

But if you are a hacker, then you'll want to go straight to John Siracusa's review at Ars Techica, where you'll find technical details about Tiger's metadata story, Quartz 2D Extreme, and more.

[00:13] | [computers/operating_systems/macosx] | # | TB | F | G | 1 Comments | Other blogs commenting on this post
Thu, 28 Apr 2005
TigerMania

It will be interesting to see if and how Tiger upgraders make use of social software tomorrow. The net is already revving up for the upgrade. Here are some resources that I'll be watching (yes, my upgrade has shipped from Apple):

  • There's the TigerWiki, another MediaWiki with awesome RSS feeds.
  • Jonas Luster is starting a Tigerready Technorati tag
  • There's also a just plain Tiger tag as well.
[00:32] | [computers/operating_systems/macosx] | # | TB | F | G | 1 Comments | Other blogs commenting on this post
Wed, 27 Apr 2005
Things I never knew about zsh

I've been using the Z Shell since I was a graduate student many years ago. Zsh has so many features that I'm always discovering something new. This week I discovered that you can run a substitution on the value of a parameter. To do this, you use

${PARAMETERNAME/pattern/replacement}

I guess I need to try and read the whole zsh manual again...

[00:18] | [computers/programming] | # | TB | F | G | 3 Comments | Other blogs commenting on this post
Tue, 26 Apr 2005
Parents grow up, too

The Saturday before last, Abigail was in her first dance recital. Julie has already written her account of the recital, so I won't repeat the details here. We'd spent the weeks preceding with some extra rehearsals, and the week before had a dress rehearsal, which is the first time that the dancers themselves got to see what the recital would be like. I missed all of these because they took place during regular work hours. Although I could have taken off the time from work, I wanted to be surprised with the results, and Abigail seemed happy enough with that.

When Saturday night arrived, I felt a little bit like things had snuck up on me. As I was easing into my seat in the theater, I remembered performances of various kinds that I was involved in throughout the years. I've been to plenty of performances in my life, so it wasn't an unfamiliar feeling. But this was the first time one of my kids was going to be on stage, and I was both nervous and curious at the same time. I'd been to the end of session classes and seen what Abigail's class had been up to. So I thought that I would have a pretty good idea of what I'd be seeing.

Turns out I was wrong. Abigail and her class were out in the middle of the dance floor all by themselves, and they were doing thing that were more sophisticated than what I had seen in class. They turned, they spun, and they moved across the stage without any adult supervision. Abigail's class was the youngest in the recital, and there was plenty of "cute" factor involved. But they did a very good job and looked like they were genuinely having a good time, which is the most important thing as far as I am concerned.

It was a special moment -- there she was; in costume, all made up, and very independently executing her dance moves. This was a milestone for her, and for Julie and I as parents. Her growing up is helping us to grow up as well, preparing us for the day when she will leave us and make her way into the world.

[22:01] | [family] | # | TB | F | G | 0 Comments | Other blogs commenting on this post
More gas mowers

This weekend I discovered another drawback of gas mowers: The engine block gets hot. While checking to see if mulch was clogging the mower, I accidentally touched the engine block, leaving a nice burn on my arm:

Image(279)

[12:12] | [misc] | # | TB | F | G | 3 Comments | Other blogs commenting on this post
Mon, 25 Apr 2005
So much for Nikon...

A few weeks back, news of the Nikon D50 digital SLR leaked onto Engadget and Gizmodo. I was moderately interested in this, because someday I hope to get back into photography, and SLR's are of interest. Last week it was discovered that Nikon is encrypting the white balance data in the RAW files generated by their high end D2X and D2H SLR's. Apparently this is causing problems with Photoshop support. Nikon has since tried to clarify their position on this. but unfortunately it doesn't look like they are going to change their position. The tone of their response is quite condescending, since you need to be a "bona fide software developer" (whatever that is) in order to have a dialogue with the company..

The encryption problem doesn't affect the D50, but when you buy an SLR, you are buying into the ecosystem of lenses, flashes, battery packs, etc. The body is not the only cost, and people do occasionally upgrade bodies. Features from high end bodies find their way into lower end bodies over time. The last thing I want to do is get locked into the Nikon ecosystem and then wake up one morning and find out that all new generation Nikon bodies are encrypting parts of my photos. Nikon already has plenty of lockin via the lenses and other peripherals. Trying to get lockin on my data (the photos) is over the line.

Fortunately, I have a choice. We've been a Canon household, and while I was impressed by some reviews that I read about the D70, the encryption episode has pretty much guaranteed that I'll be steering far away from Nikon products for the foreseeable future.

[00:05] | [gadgets] | # | TB | F | G | 3 Comments | Other blogs commenting on this post
Sun, 24 Apr 2005
Cool Exposé trick

Mark Lentczner left a really cool tip in the comments of my window hiding post:

Also note this nice trick: Once you have Exposéd the Application Windows, you can hit tab to cycle between applications -- they swap in, Exposéd - just mouse over the one you want and click. Boom - that app is in front, and that window is on top. For me, this works better than Exposé All Windows since I often have many applications and windows open and so doing them all makes them really too small.
[22:54] | [computers/operating_systems/macosx/tips] | # | TB | F | G | 2 Comments | Other blogs commenting on this post
Sat, 23 Apr 2005
Back from San Francisco

I've returned from a productive and social trip to the OSAF offices in San Francisco and landed in the midst of a weekend of household projects. I expect blogging to be light until Monday...

[23:09] | [misc] | # | TB | F | G | 0 Comments | Other blogs commenting on this post
Sat, 16 Apr 2005
I'm a hider

Earlier this week Brent Simmons asked how people manage lots of windows (close them, minimize them, hide them, or Exposé them). Like Brent, I'm mostly a hider. Those years that I spent on System 7 and 8 are still buried back in my brain stem somewhere. I don't close windows because I like to have the applications open and not wait for them to start (although I do sometimes have to wait for them to page in). Minimizing just doesn't work for me -- I don't like the animation -- when I want the window out of the way, I want it out of the way fast. I do use the command-tab application switcher very heavily and find that this takes care of many of my window/application management needs.

I was using virtual desktops, but earlier this month I decided to turn off Codetek Virtual Desktop and see what life would be like without virtual desktops. Surprisingly, I don't feel any less organized without the virtual desktops. That's odd, because I never would have shelled out the money for Codetek (which is a perfectly good virtual desktop solution. Along the way to no virtual desktops, I tried Desktop Manger and Virtue, which I liked less than the CodeTek product.). So for now, it looks like virtual desktops are out of my repertoire of window management tricks.

I'd like to use Exposé more, but I find that all the ways of triggering it are awkward. My touch-typing doesn't extend to the function keys, so I never hit the right one. I've tried the mouse corners, but I don't like having to move the mouse all over my (large) desktop to hit a corner (Fitt's law notwithstanding). What I'd really like is to hold a modifier key and hit one of the extra buttons on my Intellimouse Explorer and trigger Exposé that way. Unfortunately, I haven't been able to find a utility that will let me assign actions to modified mouse clicks. Perhaps a future version of USB Overdrive will do the trick -- the author seems to have found time for it again.

I also want to train my muscle memory to use Quicksilver to switch apps more often, but a major problem that I'm having with QuickSilver is that that it ends up getting swapped out, and so there's a long delay while waiting for the Quicksilver dialog to pop up.

[23:30] | [computers/operating_systems/macosx] | # | TB | F | G | 10 Comments | Other blogs commenting on this post
Fri, 15 Apr 2005
Impressed by PSP

I haven't been paying any attention at all to video games, but a few weeks ago, I happened to see a Sony PSP in person, and I was pretty impressed. The form factor kind of reminded me of a Newton MessagePad 2100, but it was lighter, faster, and I hate to say it, cooler. The image quality was really good, and I was impressed before I learned that there was 802.11 inside. And I was done for when the owner showed us SpiderMan2 playing on it. The only question I have is whether it's hackable enough...

[18:21] | [gadgets] | # | TB | F | G | 2 Comments | Other blogs commenting on this post
Thu, 14 Apr 2005
It's about protecting your flow state

[via Kathy Sierra's excellent Creating Passionate Users ]

The fact that these guys talked about the whole productivity thing in terms of "protecting your flow state" was what really did it for me.

This is a really good alternate way of explaining what Getting Things Done is all about.

[23:39] | [misc] | # | TB | F | G | 0 Comments | Other blogs commenting on this post
Wed, 13 Apr 2005
Functional Programming and Perl roundup.

[ via Glenn Ehrlich's blog ]

It's a shame that I can't deal with Perl, because sometimes the Perl guys just knock my socks off:

Autrijus Tang is chronicling his efforts to build Pugs, a Perl6 implementation in Haskell. First off, this is just plain cool. Second, I have to hand it to the Pugs team for being willing to experiment with Haskell in this way. (The Python world has PyPy, which is also cool). Autrijus explained more of the story in this interview. Reading through Autrijus' blog gives a sense that there's a frenetic level of development and community forming around Pugs. You feel the rhythm of new committers being added. I'm also struck by the amount of use of SubEthaEdit -- I know there are a bunch of SEE clone efforts underway. I hope that one of them finishes soon.

From reading Autrijus's blog, I also learned that clkao, the author of svk, has implemented the darcs patch scheme in svk -- it looks like things are already heating up in the distributed version control space. This is good news to me. While I'm looking forward to a bk-like/arch-like source code system, I participate in enough communities that are going to stick to SVN (I hope not CVS) that svk is a realistic alternative. The last time I tried it, several versions ago, I couldn't get it to talk to CVS over ssh repositories, but maybe I should give it a whirl again.

Glenn also pointed out Mark Jason Dominus' new book Higher Order Perl, which explains the concepts of higher order programming to Perl folks. The book is actually online, so you can go over and see for yourself. I find it interesting that there's this flurry of activity around functional programming in the Perl community at the same moment that the Python community is looking to reduce the functional programming capabilities of Python.

[22:50] | [computers/programming] | # | TB | F | G | 4 Comments | Other blogs commenting on this post
Tue, 12 Apr 2005
Team ITC: A great example of forming a community

J. D. Lasica has reposted Doug Kaye's e-mail message announcing a shift to commons-based peer production (open source) at IT Conversations. I'm glad to see things going this way. IT Conversations is a great resource - it is a great way to access some really thought provoking content.

As I read Doug's mail (I'm not subscribed to the right list) I saw something else. I saw a great example of how a community can form around a passion, resulting in commons-based peer-production. The commons in this case is the IT Conversations audio, which is licensed under a Creative Commons License, and the peer production is ramping up via Team ITC. Here's Doug's description of how it happened.

It began when IT Conversations listeners pressured me into
creating a tip jar on the site, which I did a few months ago,
and the tips have trickled in steadily ever since. Next, other
producers started to submit audio recordings, hoping they'd be
published on IT Conversations. Most weren't good enough (due to
poor content or audio quality), but some shows like Stowe
Boyd's True Voice and Rob Greenlee's Web Talk made the cut and
have proven to be very popular on the site. Then I put out the
word for help on the software-development side -- to date, I've
written all the code myself -- and immediately heard from three
top-notch programmers that wanted to help.

But I didn't stop there, because I also had audio experts and
writers who got in touch and said they wanted to help, too. So
it finally occurred to me that *this* is what listener-
supported audio was all about. I had added that tag line to the
web site when I posted the tip jar, but I've since learned that
among the nearly 80,000 unique IT Conversations listeners each
month, there are hundreds who not only enjoy what we've done,
but are downright passionate about it. In other words: IT
Conversations has become a community of people whose lives it
has affected.
[00:39] | [computers/open_source] | # | TB | F | G | 0 Comments | Other blogs commenting on this post
Mon, 11 Apr 2005
In SFO 4/18 - 4/22

I'm going to be in San Francisco next week from Monday through Friday. If you'd like to get together, leave a comment or send e-mail.

[11:54] | [computers/open_source/osaf] | # | TB | F | G | 5 Comments | Other blogs commenting on this post
Sun, 10 Apr 2005
Mac Automation Tips

Here are some handy tools for automating stuff on your Macintosh.

Stakeout with Growl support
Run a script when files change
CocoaDialog
Mac OS X user interface dialogs that you can use from your favorite UNIX scripting language
osxutils
A set of command line tools for maniuplating Mac specific information
[22:38] | [computers/operating_systems/macosx/tips] | # | TB | F | G | 1 Comments | Other blogs commenting on this post
Sat, 09 Apr 2005
Homeschooling Alone: Why corporate reformers are ignoring the real revolution in education

Reason Online has a good article on homeschooling, particularly the parts about how corporations are insisting on education reform on the one hand, while backing the status quo on the other:

If today’s corporate reformers don’t know much about history, they do display a well-developed sense of irony. In one breath, they argue for more “school choice.” In the next, they advocate the development of “best practices” that can be franchised from classroom to classroom and lobby for legislation like the No Child Left Behind Act, which essentially coerces all schools everywhere to teach the same subjects using the same methods and materials. To streamline an education system where “the vast majority of students and teachers are struggling against bureaucratic constraints,” IBM introduced its Reinventing Education program, which, in impeccably fluent Educratese, proudly touts its “student assessment practices, continuous teacher improvement models, and teacher instructional planning.” If there’s anything that can get apathetic students and teachers energized about learning, it’s “student assessment practices” and “continuous teacher improvement models.”
[22:28] | [education] | # | TB | F | G | 5 Comments | Other blogs commenting on this post
Fri, 08 Apr 2005
Lawn Boy. Not.

Tonight after dinner I hopped into our van and hauled myself off to Silverdale, the no-ferry-involved shopping mecca for Bainbridge Islanders. You see, on Wednesday I postponed dinner and went to try and cut our grass, which has grown enormously tall due to a combination of some fertilizer, some unexpectedly warm spring weather, and lots of famous Pacific Northwest rain.

Ever since we've owned a home, I have used one model or another of Black and Decker cordless electric mower. We had one in San Jose that was starting to run down just as we moved up here, and when we bought our house, I decided to give the cordless mower one more try -- I wanted to do what was good for the environment. The cordless mowers are also super convenient -- there's much less maintenance involved. They are also enormously more expensive than a comparable gas powered mower, and as they get older and the batteries wear down, they have a harder and harder time cutting the grass.

I will digress at this point and mention that we have serious lawn genes in my family. Well, at least my father and brother do. The gene seems to have skipped me altogether. When I was growing up, some friends once teased me by saying "your Dad is out there cutting his lawn with tweezers". That was a slight exaggeration, but working on the lawn and yard was my Dad's hobby, and he was pretty good at it. Consequently, we had a very fine lawn growing up. Of course, it didn't hurt that we lived next to a gardening contractor either. My brother has inherited the gene from my father, so he got all the skills for dealing with a lawn (not to mention a house, a car or any other mechanical device). What I got was a good idea of what a healthy flourishing lawn looks like. That's mostly been good for guilt, because my lawn is definitely not measuring up to the family standard.

So Wednesday evening I set out to make the grass at least a presentable height (it is a beautiful color), only to discover that the Black and Decker had weakened to the point where it barely cut 1/3 of my tall lawn before the needle visited the bottom of the battery gauge's red zone. Last year I had a few instances where lawn mowing turned into a 2 evening affair because I needed a recharge in order to finish. The prospect of 3 evenings worth of cutting, combined with a bleak rain forecast, and a *very* *full* calendar finally pushed me over the edge and over to Silverdale.

Thus I found myself at Home Depot at 8pm, buying a gas powered lawnmower. The lawnmower guy at Home Depot seemed to think that most lawnmowers were good for about 5 years, unless you moved up to the self propelled Hondas that were twice as much as the mower I was looking at, not to mention overkill for the size yard that I have. The Black and Decker is 4 years old, so I suppose that's not too bad. The salesman and I had our moment of commiseration about how they don't make things the way they used to, and then I got on with the dirty deed. I've been through two of the electric mowers now. I've paid the eco-friendly price (and time) premium. But this time around, I'm going with the gas mower. Maybe in 5 years there'll be the Prius of lawn mowers. At least I didn't buy an SUV.

[01:05] | [places/us/wa/bainbridge_island] | # | TB | F | G | 17 Comments | Other blogs commenting on this post
Ross Mayfield on Open Source and Innovation

Ross Mayfield has written a post describing some of the dynamics of the relationship between open source and innovation. Here are a few of the sections that I liked the most.

... The greatest breakthrough for open source, IMHO, is applying collaborative methodologies for development. Inherent in collaborative practices is a greater opportunity for innovation than competitive practices.

Some norms such as the right to fork, open participation and self-organizing contribution strengthen this opportunity and provide models for consideration beyond software development. When a project can be forked, it provides a balance against poor management (albeit at a cost) and fosters a leadership style that lets other express ideas and have them be heard. Leadership forms the core of a social network of innovation, being an arbiter of information and quality outcomes. Open participation is essential to innovation, to bring in new people with new ideas. By self-organizing I don't mean some high falutin' emergence, but the simple freedom for people to choose where to contribute based on their expertise and personal motivation.
I would suggest that open source could improve management practices, if we can get past treating our employees as competitors. Through sharing, innovation proliferates.

Go read the whole thing.

[00:08] | [computers/open_source] | # | TB | F | G | 2 Comments | Other blogs commenting on this post


twl JPG

About

Ted Leung FOAF Explorer

I work at the Open Source Applications Foundation (OSAF).
The opinions expressed here are entirely my own, not those of my employer.

Creative Commons License
This work is licensed under a Creative Commons License.

Now available!
Professional XML Development with Apache Tools : Xerces, Xalan, FOP, Cocoon, Axis, Xindice
Technorati Profile
PGP Key Fingerprint
My del.icio.us Bookmarks
My Flickr Photos


Syndicate
RSS 2.0 xml GIF
Comments (RSS 2.0) xml GIF
Atom 0.3 feed
Feedburner'ed RSS feed

< April 2005 >
SuMoTuWeThFrSa
      1 2
3 4 5 6 7 8 9
10111213141516
17181920212223
24252627282930

Archives
2006
2005
2004
2003

Articles
Macintosh Tips and Tricks

Search
Lucene
Blogs nearby
geourl PNG

Categories
/ (1567)
  books/ (33)
  computers/ (62)
    hardware/ (15)
    internet/ (58)
      mail/ (11)
      microcontent/ (58)
      weblogs/ (174)
        pyblosxom/ (36)
      www/ (25)
    open_source/ (145)
      asf/ (53)
      osaf/ (32)
        chandler/ (35)
        cosmo/ (1)
    operating_systems/ (16)
      linux/ (9)
        debian/ (15)
        ubuntu/ (2)
      macosx/ (101)
        tips/ (25)
      windows_xp/ (4)
    programming/ (156)
      clr/ (1)
      dotnet/ (13)
      java/ (71)
        eclipse/ (22)
      lisp/ (34)
      python/ (86)
      smalltalk/ (4)
      xml/ (18)
    research/ (1)
    security/ (4)
    wireless/ (1)
  culture/ (10)
    film/ (8)
    music/ (6)
  education/ (13)
  family/ (17)
  gadgets/ (24)
  misc/ (47)
  people/ (18)
  photography/ (25)
    pictures/ (12)
  places/ (3)
    us/ (0)
      wa/ (2)
        bainbridge_island/ (17)
        seattle/ (13)
  skating/ (6)
  society/ (20)



[Valid RSS]

del.icio.us linkblog

www.flickr.com

Blogroll

java.blogs
Listed on BlogShares

Locations of visitors to this page
Where are visitors to this page?


pyblosxom GIF