You Never Owned Any Music

“I just tried out Napster to Go with my iMate and while I still am not sure that I like the idea of music rental, but I would pay a monthly fee to Apple if I could get access to any piece of music anytime even if just for a while after using Napster for even a few days.  The software experience needs work, but it is a lot better than I ever expected it to be.  Napster has something here actually, but most people don’t realize it yet because Microsoft and the industry is doing a piss poor job at showing just how interesting life can be in this model.” [Lenn Pryor]

While Lenn admits that “Napster has something here actually”, I guess I have never understood the issue some people have with “music rental”. You don’t own the music and you never did. You’ve always owned a copy of the music. You “rented” the music in perpetuity (that’s legalese for “a long ass time”) for a flat fee. You can argue that the record labels have kept more than their fair share of said flat fee, but it doesn’t change the fact that you never owned anything but a copy.

Personally, I like the Napster model much better. I am paying $15 a month in perpetuity but I get access to pretty much everything that comes out. Actually, I’m not even paying yet – I’m still in my 14 day trial period. But I’ve downloaded nearly 3GB so far including a variety of stuff that I was going to buy on CD anyway when I got around to it. Life is certainly more interesting under this model.

Speaking of Steve

BTW, if you haven’t seen Steve’s entry on Isomorphism, go read it right now. He nails this whole services as contracts vs. services as code debate right on the head. The spot on nature of this post reminds me when he nailed the modeling problem on the head – another must read post if you haven’t already.

Thoughts on Factories

Last week, I had a great discussion with the Product Unit Manager (or PUM) of VSTA. She wanted my perspective on a few things related to Software Factories and I figured I’d share some of them here.

First off, while I appreciate the vision of factories, I’m also focused on the short term gains of automating software construction. Today, most of that automation is in terms of code generation. For example, John asked the other day if I thought Yacc is a software factory. It certainly is a domain specific language! However, I’m not sure I’d go so far as to say it’s a factory. But on the other hand, I’m not sure it matters that much if it’s a factory or not. When the other John on my team blogged his thoughts on SOA, he included one I wrote: “Eventually we’ll stop talking about SOA and go back to talking about Architecture”. I feel sort of the same way about factories. As long as we’re talking about it as if it is something different from what we’re already doing, we’re not there yet. But if we keep taking steps in the right direction, eventually we’ll get to the point where the process of building software doesn’t look the way it does today. Sorta the same way that building software today doesn’t look like it did pre-.NET, pre-VB, pre-Windows or pre-C++ (I could keep going, but I think you get the point). That’s the thing about visions, you never really get there, it just provides a way to keep you going in the right direction.

Secondly, I think that one aspect of Software Factories that at least I haven’t focused on is reusable frameworks. The book is called “Software Factories: Assembling Applications with Patterns, Models, Frameworks, and Tools” but I think the focus has been mostly on models and tools. This is partially because of the whole DSL vs. UML flack (quick side note – how about we have both?) and partially because the DSL toolkit is the first factory-esque thing that we’re shipping. However, DSLs big value, IMO, is to automate the construction of applications built on top of well designed reusable frameworks. For example, the OOPSLA keynote demo was a DSL that would sit on top of a UI process framework such as the p&p UIP block. But if there is not a good framework, there’s little point in having a language. I’ve pointed out in the past that the big gap to cross for organizations to start using DSLs is the leap from building abstractions to building languages that automate that abstractions. However, that’s not really true. The really big gap is the leap from building one-off abstractions to building reusable frameworks of abstractions. Once you have the reusable framework, building the DSL is an easier step IMO.

Even though I didn’t figure out the framework / factory connection until last week, it must have been there in the back of my mind when I was working on the ARC track for TechEd. We’re having a session on “Design Considerations for Enterprise Application Frameworks” with Steve Maine as the speaker.

Another Vector Option – Xamlon Flash

Another option besides ActiveSWF is the recently announced Xamlon Pro Flash Edition. Xamlon is essentially an implementation of XAML the current version of Visual Studio. There’s a version for Windows Forms, for Compact Framework and now for Flash. So basically, you can write your flash app with XAML and C#. Apparently, you can also code directly to the Flash format, bypassing the XAML layer entirely. I like the idea of using a managed component like Xamlon better than a COM based component.

My big issue with using Flash is that it’s a totally seperate programming environment from the browser. Using VML in IE, you can manipulate the vector objects with javascript. In Flash, you may be doing one thing in the browser and something completely different in the flash movie. That’s a pain in the behind.

Inital Thoughts on Zen Micro and Nomad to Go

After using the new 2.1 firmware for my Nomad Zen Micro for a couple of days, I can see why they haven’t upgraded all their players en masse quite yet. It still has a few rough edges. Red Chair Software, makers of the awesome Notmad Explorer that I use to manage my other Nomads, advises that you use the older 1.x firmware “you have a specific reason to switch”. Of course, I have a very good reason to switch. The 2.1 firmware is actually beta – something I think Creative should make a little more obvious on the website (not that I wouldn’t have downloaded it anyway). For the less adventurous, the 2.0 firmware also supports Napster to Go and isn’t in beta.

The place where I notice the rough edge the most during song transition. When I push next or previous song, sometimes it happens right away and sometimes it takes 4-5 seconds. It doesn’t happen when it’s playing back a set of songs – what ever the Nomad is doing (verifying licenses I’m assume) it must do it for the next song before the current song ends, so the lag only occurs when you’re jumping around manually.

That’s really my biggest complaint. Napster to Go works really well. They haven’t upgraded their help files to the new 3.x version of Napster – for example, all of their screenshots have a separate library function within Napster, but on my machine it just uses WMP’s library – but it’s pretty easy to figure out. I’ve configured NTG and WMP 10 to auto sync any Zen Micro with any songs I’ve downloaded from Napster (about 1GB in the first 24 hours I’ve used it!). The only complaint there is that autosync works by playlist. If you download a Napster compilation, autosync will transfer the music but not the playlist.

And that reminds me of a feature I’d like to see on the Nomad (all of them). I want to be able filter the list of album to exclude the ones that only have one or two songs. When you download a compilation, you get around 25 songs from different artists. Great for discovering new music, but it adds a bunch of noise to the list of albums. So why not exclude albums that only have a few songs downloaded?