Tuesday, October 09, 2007

missingbookmarks Lesson learned -- all that comes from Mountain View is not gold. Or stable. Or safe.

While I use del.icio.us for 99.47% of my bookmarking needs on the web, there are always a couple dozen or so URLs that I leave in Firefox's local bookmarks file. Examples are for sites that I want on the browser's toolbar, private or internal URLs that aren't public, and bookmarks that have search keywords assigned.

For a while now, I've wanted to sync up my Firefox bookmarks at home with the bookmarks on my office machine. Most of these get used on either machine and it's a hassle to remember to add those bookmarks and search shortcuts in both places.

So when I came across the Google Browser Sync extension, I thought, "this is PERFECT!"  It would sync up not only bookmarks but also settings and any open tabs. That seemed great for those times when I had something open for reading in the office, but didn't get to it. Shut it down on that machine and it would open up on my home machine later.

I installed the extension on both machines, let it sync up, and then merged the bookmarks in both locations. After that, I went through a process last night of cleaning up and re-organizing those local bookmarks. I spent over an hour getting rid of the ones that were old, cleaning out the dupes, and adding more search keywords.

Today, they're gone. On both machines. A couple of folders are completely missing. Nice, huh?

Thankfully, I found a backup of the bookmarks.html file from before I installed the extension... so while I've lost the cleanup work I did last night, I haven't completely lost the original bookmarks.

Anyway, be warned... if I'd have taken the time to browse through the Google Groups discussions for this extension, I'd have probably avoided it altogether and perhaps tried FoxMarks instead. But I figured Google's stuff is pretty solid... again, lesson learned. Thank goodness I didn't have it sync passwords and all of my other browser settings.

So... back to that cleanup effort (again).

posted on Tuesday, October 09, 2007 10:43 PM Mountain Daylight Time  #    Comments [0]
 Sunday, October 07, 2007

rrod It started several weeks ago. When playing Madden 08, I would occasionally get weird color glitches. It reminded me of the old CRT days when your VGA cable would get loose -- it was as if I was looking at my television through green-colored glasses. "A bug in Madden," I thought, plus a reboot would always fix it. It happened rarely, so no worries.

On Friday, 9/21, a Dashboard Update went out for the 360 and this green-glasses thing happened again. "Uh oh," I thought, "it's not Madden." At the end of the update, the 360 rebooted and I got a black screen. I could hear the startup sound and playing with the controller would result in sounds as I moved around the UI. I just couldn't see anything due to the black screen.

I tried different inputs on the television. No joy. I bought a new video cable to rule that out. No joy. So if it's not the television or the cable -- gotta be the box. What seemed even more bizarre was that I wasn't getting those three red lights -- the Red Ring of Doom.

"That really sucks," I thought, "especially since Halo 3 releases next week... but at least Microsoft extended their warranty." They announced this a while back because so many boxes (especially the initial "launch day" boxes) were having problems due to overheating. Mine was not a launch-day box -- I got it about 4 months after the 360's release. So I'm covered, right?

Poor, naive me. Turns out Microsoft extended the warranty but only if you get the RRoD. In the open letter from Peter Moore (Xbox Head at Microsoft):

...we are announcing  today a three-year warranty that covers any console that displays a three flashing red lights error message.

A box with the symptoms mine was showing -- not covered. Lots of unhappy people on support forums about that issue... including many people who recommend giving the box a thump on the side (reminding me of an old television set we had when I was a kid) or wrapping the box in a towel to overheat it on purpose. I didn't want to do either of those, but I called Xbox Support to see what my options were. No amount of complaining, griping, or asking to speak with a supervisor mattered -- I'd have to pay the $99 repair fee if I wanted it fixed.

So now my Xbox is somewhere between Colorado and Texas in the supplied box that lots of people refer to as "the coffin".

A few things I've learned over the last couple of weeks:

  • The $99 fee covers shipping three times. First, they get a box to me (took 7 business days). Then the console goes in the box and heads to Texas (en route now). Finally, the repaired box comes back.
  • That fee also re-sets my warranty for another year. I plan on using the crap out of it to put that to the test.
  • I may or may not get the same box back, which surprised me. The box I get back may be someone else's refurbished box with a different serial number. As long as it works and doesn't look like a Best Buy floor model, I don't much care either way.
  • There are a TON of people who had problems on or near that fateful Friday, 9/21. Two different .NET bloggers I read (Scott Hanselman and Travis Illig) had it happen within a couple weeks. A Google search turns up a TON of problems occurring in late September. I doubt that Microsoft will ever admit that the Dashboard Update caused a problem or is even related. But checking out this thread makes it hard to claim "coincidence".

On the plus side... one of the guys at work has a 360 and hadn't used it for months (the horror!), so he brought his in for me to borrow. This added a few more things to the list of what I've learned:

  • There are some very nice people in the world. It's great to have a console to use during this season when a LOT of interesting games are being released (Halo 3, PGR4, Call of Duty 4, Guitar Hero 3, FIFA 08, and more).
  • Plugging your hard drive on to the side of someone else's console works like a charm. It was as if I was using my original console, except...
  • His console is much, MUCH quieter than mine. When it's at the dashboard, you can barely tell it's on and even with a disc spinning, it's still much quieter than mine ever was. So much so that my wife is in favor of buying a newer one if the repaired console doesn't come back as quiet as this borrowed one. It's THAT noticeable.
  • The dashboard update doesn't break every Xbox... his wanted the update as soon as it was turned on and before it could continue. Went through like a champ (though not without me sweating a bit!).

So... I'm sure it will be a couple more weeks before my repair console returns and it'll be interesting to see what's changed. Noise? Serial number? Heat dissipation? Stay tuned.

posted on Sunday, October 07, 2007 1:57 PM Mountain Daylight Time  #    Comments [0]
 Wednesday, September 12, 2007

dell-logo Back in July, I posted about the on-going problems I was having with my Dell Inspiron 9400 laptop. It was just about a year old and was facing its fourth house call by a local Dell tech contractor. In the comments for that post, John B (an employee in Dell's Customer Advocacy group) contacted me to let me know that he agreed -- it was time to call it a lemon and get a system exchange.

I'm happy to update that the process was quick, painless, and couldn't have been easier. I simply emailed John with some details about the system and my contact info (service tag and my home address) so that he could find my record in their support system. Once he confirmed those details, he got in touch to let me know that a new machine would be on my doorstep in a week or two (5-15 business days).

It was just over a week when the new machine arrived. When I opened the box, I was initially thrown off because the new machine didn't look like the old one. The new make was of the newer generation -- an Inspiron 1720. I'm happy to report that the new machine has been running well for several weeks now and I've not had any problems with it.

The new machine arrives in a box with a pre-paid shipping label for the old machine. All the instructions were included for packing and shipping, including the DHL 800 number to have them come pick up the old machine at the house. Piece of cake.

The machine itself wasn't quite a one-for-one swap, but overall I'm quite happy with the way it worked out. Some of the things that vary from this 1720 to the older 9400 I had are:

  • The 1720 doesn't have a DVI output. As I never really use the machine with an external display, it's not a big deal to me. If I did need an external panel, this might be a concern.
  • They (John?) did upgrade the machine to a Core 2 Duo T7300 processor (from plain ol' Core Duo), as well as a drive upgrade to 160GB 7200rpm (the original was an 80GB at 7200rpm). Very nice
  • It's got five USB ports on it, while the older machine had 6. I rarely use more than two at a time, so this wasn't a big deal to me at all.
  • numerickeypad The new machine has a bigger keyboard and a full numeric keypad to the right of the main keyboard. As a result, it's got less empty space on the left/right sides of the keyboard than the old machine. The layout of navigation and editing keys is still taking some getting used to (e.g., PgUp, PgDn, Home, End), but overall it's handy to have the numeric keypad. The biggest adjustment has been that the main keyboard isn't centered on the machine... so I offset my hands a bit while I'm using it.
  • The new machine has an NVidia GeForce 8600M GT video adapter in it. So far, I'm very pleased with the video performance. The older one had an NVidia in it as well, but it was the GeForce GO. I expected the newer machine to have a higher Windows Experience Rating than the old one, but it actually dropped a small amount (due to the graphics card). Then again, I'm using the default driver that Windows Vista put on the machine and haven't checked Dell's support site to see if there's something new and improved available for the 8600. I don't do any gaming or hardcore DirectX/OpenGL stuff on this machine, so the video performance hasn't been an issue.

experience-score-new

Getting up and running was mostly straightforward... I did have a bit of a panic when I went to re-pave it, though. As Rick Strahl mentioned on his post about a new Inspiron 1520, the larger capacity SATA drives on these laptops require a special driver. Without it, Vista initially installs just fine but then blue-screens after the final reboot. The first time it did that, I got well and truly panicked!

A quick search on Dell's support forums, though, turned up a couple possible solutions... you could do as Rick did and disable the AHCI mode in the BIOS (putting the drive in plain old ATA mode). It sounds like there's no performance or stability hit either way. The other route, which is the one I took because I was doing the pave anyway, was to download the AHCI driver from Dell and expand it on to a USB thumb drive. Insert that in the machine during the Vista install and then point to it during the step where it asks about third-party SCSI or RAID drivers. Once I did that, all was well.

Interestingly, it sounds like some of the problems Rick had with his NVidia card are similar to the issues I had... while his issues led to instability during WPF development and the inability to use an external panel, mine led to black screens and what seemed like the eventual burnout of the built-in panel.

After searching around quite a bit, there are also reports of issues with those machines being susceptible to static discharge problems. I definitely felt that "tingle" from time to time with the older machine and was using the standard 2-prong AC adapter that Dell ships. Apparently, it's now possible to order a 3-prong adapter if you want it but Dell sounds fairly confident that the 2-prong shouldn't be a problem.

In any case, the newer machine has been ROCK SOLID for the last several weeks of regular use. No instability, the temperature seems to be well within the normal ranges, and it runs very very fast.

Thanks again to John and the rest of the Dell Customer Advocate folks for taking care of me on this.

Doh - that reminds me... I need to make sure the extended warranty I paid for was transferred to this newer machine! Off to that support site again... :)

Technorati Tags: , , , ,
posted on Wednesday, September 12, 2007 12:16 AM Mountain Daylight Time  #    Comments [0]
 Wednesday, August 01, 2007

Via a post the other day from Lifehacker, I've been checking out a new site called XTimeline at http://www.xtimeline.com. The site allows you to create web-based timelines based on data you provide, using a couple of different file formats (CSV or RSS), or by entering events on the timeline by hand. The coolest option is to provide an RSS feed and it creates a timeline with points along the line for each item in your feed. Once you create an account and log in, you can create your own timelines, share them with others (or make them private), embed them into your own site, and so on.

xtimelinesample

The image above is based on the data from a Yahoo Pipes RSS feed I created a while back. It's a feed that pulls together items from this blog, my del.icio.us bookmarks, and other online accounts I have. It's not very interesting or voluminous, but it did highlight how easy it is to create a timeline. The only thing that wasn't immediately intuitive was that there was an extra steps to "add events from RSS", wherein it takes the published date for each item out of the feed.

In addition to creating timelines from RSS feeds, you can upload data in CSV format, browse through a ton of public timeliness others have created, identify favorite timelines, rate them, tag timelines with keywords, and so on. Some cool examples include a history of the internet, the history of video games, and a timeline of music in the United States (embedded as an iframe below).

Creating an account is free and requires only an email address. I don't see options around "premium" services, so aside from some subtle ads on the site, there doesn't appear to be an obvious monetization plan -- not that wikipedia has one either, right? Either way, it's a really cool site for data and infoporn geeks. They've also got a blog where the founders/developers update on site improvements and changes. In their initial announcement, they answer the "Why Timelines?" question:

Why make a site just for timelines?
Making a dynamic timeline widget isn't enough -- you need to have a place to create, store, and share them with other people.  We like to think of xtimeline as a cross between wikipedia and youtube.  Like all user-generated content sites, you can upload your own thoughts, media, and opinions.  Eventually, we think some timelines will become well-known enough to be online references.

I really dig seeing cool visualization tools like this, especially when (just like Swivel and Many Eyes before) they make it so easy to explore and create new views of data. Well done!

posted on Wednesday, August 01, 2007 3:57 PM Mountain Daylight Time  #    Comments [0]
 Sunday, July 29, 2007

Greg Reinacker (Founder/CTO of NewsGator, a local company) and Brad Feld (of the Foundry Group and a Boulder-based VS/startup blogger) both posted recently about their first computers.

For me, the "computer geek" bug bit pretty early. When I was 12 or so (early 80s), I had a friend whose father bought him a TRS-80 Color Computer. He'd have sleepovers at his house and we'd stay up very late hacking out "games" (loosely defined) that were of the Choose Your Own Adventure variety. They were completely text-based and offered multiple choices at each turn. We learned quickly to map out the story's flow on graph paper.

c64 It didn't take long to decide that I needed a computer of my own, so I started saving. Eventually, I got a paper route for the San Jose Mercury News and that helped me reach the savings goal pretty fast... I was pretty excited to purchase a Commodore 64 with my own money. My parents helped out by buying me the cassette tape drive (so I could [painfully and slowly] save my work) and a dot matrix printer. The following Christmas, my grandparents bought me the 300 baud modem for it (funny story: I learned years later that my grandparents argued over whether to get this because they'd just seen the film War Games). A year or so later, I bought the disk drive for it... which was both more expensive and physically larger than the computer itself!

I spent a whole lot of time hacking on that thing, including punching in program after program from "Compute Magazine". You'd punch things in by hand and try to run it later... but it was guaranteed not to run, so you'd have to go back through and try to find the typo.

wargames In high school, I got in trouble once in a History class and was given some "extra" homework -- I had to write "I will not cause a disruption in Mr. Whatever's class in the future" a hundred times. I asked the teacher if it would be alright if I typed it a hundred times because A) I had a lot of homework and B) I needed the practice typing. Not having any idea what he was agreeing to, he said it was alright.

I went home and wrote something like this:

10 FOR I = 1 TO 100 
20     PRINT "I will not cause a disruption in Mr. Whatever's class in the future." 
30 NEXT I 

Fire up the printer, run it, and I was done... I remember this because it was the first time I realized that I could make a computer work hard so I wouldn't have to. Thus, a career was born.

That computer was also my first experience with the online world. I had to borrow my parents credit card to make it happen, but I got my first Compuserve account with that C64. Between cruising forums and writing code to peek/poke sprites on screen, I spent hundreds of hours on that machines.

Later (shortly after high school), I got an IBM PC XT 8088 clone that had two 5.25" floppy drives in it. One was the system (the OS and whatever app you ran) and the other was for data (to save your documents or whatever). Later, my uncle hooked me up with a 10MB hard drive... it was a beast and sounded like a jet taking off. I still remember messing around with jumpers to get it all working.

cakewalkdos That 8088, with an amberchrome monitor, was the computer with which I first combined my other hobby -- music. I bought a serial port MIDI adapter and the original release of Cakewalk for DOS. Connecting a synthesizer to a computer opened up an amazing new world to me. I've been a Cakewalk (now SONAR) user ever since, despite dabbling with other products. It just "feels right" to me.

From there, it's been a series of 286, 386, and so on... I've never owned an Apple computer (though the MacBook Pro is sure tempting these days) and have been a PC junkie for over 20 years now.

posted on Sunday, July 29, 2007 2:36 PM Mountain Daylight Time  #    Comments [2]
 Saturday, July 28, 2007

bsodjoke

If getting a tattoo of a product logo (MS Zune, in this case) isn't "out there" enough, how about getting an operating system error message tattooed all the way up your arm (Windows Blue Screen of Death)??

I wonder how you explain those to your grandkids in a few decades...

Technorati tags: , , ,

posted on Saturday, July 28, 2007 11:52 PM Mountain Daylight Time  #    Comments [0]

recycle A chain of blog posts came through my reader this week that discussed the value, or lack thereof, in "code reuse" for most development teams. First, some background...

It looks like the original article was "Internal Code Reuse Considered Dangerous" by Dennis Forbes (great blog, btw). That article was then referenced by Carl G Lewis (cysquatch), who largely agrees with the sentiment in his "Is Your Code Worthless" post. Finally, Scott Reynolds referenced Carl's blog post in a follow-up the other day, wherein Scott suggests that "Code Reuse Is Not the Villain".

Still with me? Good.

As I worked my way back in time (Dennis' original post is from 2005), it occurred to me that this line of trackbacks is a bit like the "telephone game" that we played as kids. As each person responded to the previous person, the meaning of the story changed in subtle (but important) ways.

In deciphering this, I hope it goes without saying that "code reuse" as a practice is a worthwhile goal to keep in mind. It's not always achievable, nor even desirable, but certainly it's something that good developers keep in mind as they work.

That said, Dennis begins by arguing against the management notion that code reuse saves money by "codifying the abilities of the team" -- thereby making the team easier to replace or downsize. Ouch.

Code in the library is considered an asset, and managers and owners like the idea that, while developing product A, as a side effect they're accumulating this great repository of generalized code which they'll be able to use for a completely different product - let's call it product B. Soon the domain knowledge of their developers won't matter (and thus they'll be expendable), because everything is encapsulated in common code: They've codified the abilities of their team.

I'm not sure how any worthwhile manager could get from Point A (the practice of "accumulating [a] great repository") to that particular Point B (where the "domain knowledge of their developers won't matter"). And in fact, Dennis' rebuttal to this point is that the opposite happens -- the more you grow internal frameworks and libraries, the more you depend on your developers. New developers, regardless of previous experience, have a substantial learning curve in front of them with any of your internal code.

And in that, I completely agree. Where I got lost in Dennis' argument was in the next portion where he appears to argue that code has no value beyond the developers writing it and the project they're writing it for. [emphasis mine]

The question every organization needs to ask itself, then, is what value they could sell their "reusable code" for - what, realistically, would competitors and new entrants in the field offer for it? The answer, in almost every case, is $0, and they wouldn't want it even at that price. There is extraordinarily little code theft in this industry (even though we're in the era of burnable DVDs and USB keys) because most code - above and beyond the industry-wide frameworks and libraries - has no value at all outside of a specific project with a specific group of developers. Trying to use it for other projects is often worse than starting with nothing at all.

This is the part that loses me completely, for two reasons:

  1. It assumes that the value of reusable code is measured by what an external entity would pay for it. I'd argue that it should be measured by its value to the company that owns it. Not just in that it saves time for the team that wrote it... but that it reduces bugs by ensuring that a bug fixed in one location is fixed for all locations. A user interface metaphor or workflow used in one place is used in multiple places. Blah, blah, blah, the usual examples... Reusing code in the correct way increases the value of a product in the eyes of customers and prospects and this has very direct value for the company's bottom line.
  2. That argument also ignores technology acquisitions. The value of Visio's code when Microsoft bought Shapeware was something (much) greater than $0. It's not as if Microsoft needed the customer base or the market share. Similarly when Google purchased Writely or when Yahoo bought del.icio.us. In each case, the acquisition was a technology purchase -- the acquirer was infinitely larger than the company being bought and wasn't already in competition with them. The purchase wasn't just for the customer list.

I actually think Dennis' point is best made in a bullet point later in the post. And the point is that code reuse merely for the purpose of code reuse is a waste of time and money. [original emphasis]

Internal code reuse for niche industries and domain specific problems can be very valuable, but code for generalized, industry-wide problems are seldom valuable unless you're truly developing it for industry-wide consumption (e.g. the .NET Framework is tremendously valuable code reuse). I have seen too many examples of large internal libraries that are largely duplications of vastly superior functionality existing in the .NET Framework or C++ Standard Template Library, or which could be better served by available professional or open source libraries. If your problem isn't domain or niche specific, but rather is industry wide, it is extremely likely that either a library encompassing it exists, or that it isn't a problem that is worthwhile generalizing

And here's where I'd agree... I, too, have seen many examples where companies simply reinvent the wheel in the name of "reuse". Hey, if it's ours then we can change it, fix it, and reuse it -- right? It's really a buy-versus-build debate. If your team is writing things like data access layers, UI controls, or validation tools in the name of "reuse", then you may as well go out to your parking lot and just light some cash on fire. At least it'd be quicker and you'll get the momentary heat and entertainment.

The above quote is what Carl's response (from last month) is based on... and while the post's title ("Is Your Code Worthless?") is plenty controversial, his purpose was really more to tell a story -- and a funny one at that. It's the story of a client company who felt that their internal code was so proprietary and so valuable that they couldn't possibly let a contractor look at it offsite. Instead, they had Carl travel 8000km to work on it at their location -- only to discover that the code was a complete disaster. What a great line...

I sat down and fired up Vim to start looking at their code and was INSTANTANEOUSLY BLINDED by the reeking bile that was pouring across my monitor.

Hilarious.

Lastly, it's worthwhile, I think, to differentiate between the development of internal business applications and developing commercial products. If you're building internal applications (e.g., payroll, HR, accounting types of systems), then managing reuse across multiple applications is probably not as important. There's still value in reuse for you, but your company doesn't lose customers if the display grid in Application A is different from the display grid in Application B. The tolerance for error is higher. With commercial products, though, it's a different story. It would be silly for the Word, Excel, and Powerpoint teams to all go create their own base UI libraries or text-formatting behavior. And the consequences of a mistake are greater and more easily measured.

I guess the point is to not get carried away with a "reuse is worthless" meme and suggest turning away from it altogether. In 16 years, I've worked on several product lines that made extensive use of shared/common libraries, to great effect and to great value for the company. Bottom line - the key is to pay attention to where building your own libraries for reuse makes sense and where you should simply reuse existing, proven libraries.

In either case, recycle the good stuff... future generations thank you. ;)

posted on Saturday, July 28, 2007 10:24 PM Mountain Daylight Time  #    Comments [0]

I've subscribed to Frans Bouma's blog for quite some time. He wrote a post earlier this week that echoed a meme floating around various development blogs and, at the end, he "tagged" anyone who was reading the post.

Let me just pass on the torch to every dear reader of this blog. So if you read this item, you are up next.

Not having been "tagged" before (it doesn't happen much when you have two readers -- and they're both just different browsers on your own machine ;-) ), I started to give it some thought.

What are the things in my life that I've just "gotta have"? The must-have gadgets and tools that I wouldn't want to do without.

I should make two very important distinctions... first is that the most important thing I have in my life is obviously my family, but they're not "things". The stuff below is a list of simple, material possessions. Secondly, let's ignore for the moment that all any of us really needs is sustenance, shelter, and safety. The point of the meme is simply to point out the gadgets, tools, or prized possessions you enjoy... so here's what I came up with.

Gadgets and Toys

Xbox 360 - While it was originally just mine, it's become something the whole family uses now. From the media center capabilities to family-friendly games on Xbox Live Arcade, there's plenty here for the non-hardcore gamer.

Nikon D70 - I wish I were better at taking photographs than I am... I do alright, but I try to avoid the Auto modes and my best pictures usually still require some trial-and-error.

Roland V-Drums - Rupturing my Achilles earlier this year was a big setback in my drumming. I'm able to do it for short periods now and it's very relaxing to put  my iPod on the 'Drums' playlist and work up a sweat.

Tivo - Once you've time-shifted television, there's no going back. And don't tell me about your Comcast or Dish Network DVR... it's not the same.

iPod - It's not my first MP3 player, but it's by far the best I've had. I just wish iTunes weren't such a P.O.S. under Windows. Mine is a 60gb iPod Photo... but I wouldn't mind moving to an 80gb 5G iPod at some point.

Software Tools

CodeRush and Refactor Pro - These tools are like crack for me. I get twitchy if I have to use a machine that doesn't have them installed. I think my team is tired of hearing me preach about how much I love using these.

SlickRun - Probably the first thing I install after Windows... there are so many ways of using it and many of the shortcuts I've defined are etched into my muscle memory.

FeedDemon - Sure, Google Reader's good... but for my money, you can't beat a well-written, fast desktop application. Plus, with the automatic syncing to NewsGator Online, I get the best of both worlds.

Reflector - I can't imagine any .NET developer not installing this on their machine right away.

SnagIt - I generate a LOT of screenshots. From graphics for our dev wiki to quick examples I attach to email messages, a picture is usually the quickest way to get a point across.

I think that's it... I could come up with a lot more (and may do a list like this one at some point -- if only as a Google-indexed reminder of the things to install), but this my current Top Ten.

(Sorry, Frans, that LLBLGen Pro isn't on that tools list yet. I've been meaning to try it out, honest! ;-)

posted on Saturday, July 28, 2007 7:54 PM Mountain Daylight Time  #    Comments [0]
 Monday, July 23, 2007

Every developer, or at least those who really love what they do, has a few side projects to work on. They're the palate-cleansers you turn to when you want to sink your coding teeth into a different problem for a while... they're your sorbet projects. 

itunesexportsolution Well, one of the side projects I've worked on this year has been iTunesExport - a .NET app that can export playlists from your iTunes library. It exports them in a variety of formats (M3U, EXT, WPL), can copy tracks to a new location, and has both GUI and command-line interfaces. I got involved earlier this year when I wanted to export playlists in a file format that it didn't yet support. I contacted Eric Daugherty, who owns and hosts the project's site, and jumped in to add the additional export type. Since then, I've added additional features and tweaks and it's been a pretty fun project to work on.

Yesterday, productivity blog LifeHacker did (another) post on it with some examples for using it. It was a cool surprise as LifeHacker is one of the feeds I subscribe to, so I came across their post randomly in my feed reading.

I added a comment to that post, but since it was my first comment to LifeHacker my registration is sitting in an approval queue somewhere and the comment's not yet visible. The other comments on that post had a number of questions about iTunesExport and I wanted to answer those and/or clarify what the tool does.

First, iTunesExport does NOT modify your tracks in any way, shape, or form. It won't convert to or from any file format and it won't strip DRM from purchased tracks. The only time it does anything with actual song bits is when you choose to copy tracks to a new location for your exported playlist(s)... and in that case, it's just doing a straight, bit-for-bit file copy.

Second, the purpose of iTunesExport is simply to let you export playlists OUT of iTunes and into a file format that can be read by another player (WinAmp, Windows Media Player, etc). In my case, I use it to make my iTunes Smart Playlists available through the Tivo Home Media interface on our television. With this in mind, we're very careful to NOT modify the iTunes library XML file. We're simply reading the playlists/songs out of it and then writing another file in the format you want. So the exporter doesn't do anything to play count, last played, or any other data in the iTunes library.

Finally, Eric and I are always interested in hearing suggestions and feedback for the app. Some of the recent changes/fixes, especially around internationalization and Unicode,  have come via testing and feedback from others.  Those are always the things that are most fun to work on because you know someone can use it right away. So while I've got a few ideas for things I'd like to add (including saving/restoring your settings, improved documentation, and some better reporting/feedback on what was exported), we'd love to hear other ideas for things the tool might do... so please send those along via the project's site or through SourceForge.

posted on Monday, July 23, 2007 12:41 AM Mountain Daylight Time  #    Comments [0]
 Sunday, July 22, 2007

I'm not much into the Harry Potter phenomenon, but I am in the middle of trying to learn WPF (Windows Presentation Foundation). I'm currently tackling WPF via Adam Nathan's "WPF Unleashed" book and plan to read the Petzold WPF book next (followed, perhaps, by the Sells/Griffiths book). WPF is conceptually very different from Winforms or other UI technologies that I've used, which makes the learning curve steeper than would be normal for "just another platform update". Anyway, you may be wondering what Harry Potter has to do with WPF...

blackfamilytree Well, a month or two ago, the folks at Vertigo Software released a WPF reference sample application called Family.Show. The application is a genealogy tool that let's you manage a family tree, along with information and photos about the people in the tree. It's since been updated with more features and it's simply a great-looking application. If, like me, you're trying to learn WPF then the coolest part of Family.Show is that they've made the source available for download. Sweet.

Earlier today, Liam Molloy (of Vertigo) published a post about a family tree he created for the "Black family" from the Harry Potter series. Using Wikipedia, Liam was able to piece together a fairly large family tree for Sirius Black, including photos (of the actors/actresses from the films) and the background stories for many of the characters.

You can download Liam's data files for this family tree, load them up on your machine, and go to town with the info-browsing. Note Liam's warning at the bottom of his post -- while he made an effort to remove any spoilers for the just-released book, he says it's possible that there's still one or two in there. Not having read any of the books, I wouldn't know either way... I just think this was a very cool thing to do from a data visualization perspective.

So... whether you're into WPF or Harry Potter (or both?), you've got a reason to go check it out.

(Side Note: The only drawback I've found with the app Vertigo built for Microsoft is that the background whitepaper for it was published in the XPS file format... and even though I've got Office 2007 installed, I still had to download a separate "essentials pack" to view it. What's wrong with a simple PDF?)

posted on Sunday, July 22, 2007 10:55 PM Mountain Daylight Time  #    Comments [0]