Friday, May 25, 2007

SharpDevelop 2.1 broke building in Visual Studio 2005 SP1

When I was researching Mono, I installed SharpDevelop to play around with. One of the first things I did was open an existing Visual Studio 2005 solution to see how the SharpDevelop IDE compared to VS. After I opened it, I let the IDE sit their since I had to go do other stuff, and when I came back to it, SharpDevelop had crashed with an unhandled exception. Crap, if the IDE can't even sit still without crashing, how could I even think about using this as my main IDE?!? There were some posts in the SharpDevelop Bug Reporting forum and I added one to the list (still waiting on a response, over a week later). So I stopped looking at it. Yesterday my dalliance with another IDE caused Visual Studio 2005 to go all Glenn Close fatal attraction and I missed a deadline because of it. This is what happened.

I hate you Publish...
The first thing I noticed that something was wrong was when I went to publish my site. I have written before about problems with Publish. Visual Studio was immediately acting weird. You care supposed to see this:

Instead in the status bar, I see this build succeeded. What?!?! At first I am ready to chalk this up to Publish not working, and I go to Scott Gu's blog to get that Publish hotfix. I know I am not seeing the error message described, but hey maybe the installer will fix it anyway. But something is wrong with the link to the hotfix, I see a page not found error. I eventually find DevDiv Hotfix Public Availability Pilot Program. In the table on the site, I find the hotfix, 3rd from the bottom:

I click the download link, only again to see this:

Argh! Again the Output window didn't automatically appear, so I open it and pin it to see if their is any more info and it says this:

Odd, what was skipped and why? Just a little higher up in the Output I see this:

It doesn't make any sense, even with a full rebuild, a clean and rebuild, and me dumping all intermediate products manually and cleaning out anything that looks like a VS cache. I am ashamed to admit, I even rebooted Windows, which I usually make fun of anyone for. It means they are out of ideas, and that was true of me, I was out of gas and starting to freak because I was supposed to have the bits deployed hours ago. So I bagged it, pushed the deadline to get the code tested a day, and came back fresh this morning and finally cracked it.

Do you want an extra project with that solution?
A thread in the back of my mind said "Didn't you open the solution file with SharpDevelop last week? Seems strange, but do you think it edited the solution file?" Hmm, could be, I wouldn't think there was any need to, but could be. So I opened up the directory and I see that TortoiseSVN says the solution file has been edited (icon on the left). Ut oh! I immediately do a diff, and their are two groups of changes, this:

And this:

I surely didn't add any more projects to the solution.

TortoiseSVN sure tells me I haven't, and the GUID in the highlighted block doesn't match anything in the solution file. So I revert the solution file to what is in the repository, and Visual Studio has no problem building or publishing! I haven't proved yet that SharpDevelop did this, it could be a Visual Studio bug. That is of course until I open the solution file in SharpDevelop again. I diff a copy of a SharpDevelop butchered modified solution file with the newly SharpDevelop mangled modified file, TortoiseSVN says they are identical, right down to the dodgy GUIDs used. If I isolate the changes, the problem is not the # SharpDevelop definition at the top of the solution file, it is the extra configuration junk.

A Cautionary Tale
You could say Visual Studio is a jealous lover. She found out I had an extra-IDE affair and made me pay the price with a blown deadline and hours of frustration. The fault was all mine though. My project contracted an STD (solution transmitted disease) by fornicating with SharpDevelop. It was only because I used protection, a good source control system, that this disease wasn't fatal. The solution recovered and has been deployed. If you are thinking of Giving up on Microsoft, or at least fooling around, be prepared for the consequences.

Wednesday, May 23, 2007

Is my blog fat?

The above image shows you what Firebug says it takes to load the blog before I posted this entry using the Verizon EVDO card. 1 MB? 27s? It's hard to believe. My immediate reaction is that the page weight of the blog right now is too high, it needs to go on a diet. But what to cut? How can I slim this down? This page weight link has some good tips, where is the fat on the blog? I used get|ben's page weight calculator to see where the fat was:

20 KB in Excess White Space? The rest, hey that's not so bad I think. 125 KB, so that means the rest of the 1 MB is in images? Yikes. But the excess white space, what can I do about that? I have never thought of this before, but apparently there is a whole cottage industry around HTML compressors. I guess you could also to some degree call them obfuscators, since they make the source extremely hard to read, but does having the source human readable really matter when its being served to a browser in production? In development sure, but I kinda wish HTTP servers would just do this instead of ZIPping the content. Why pay the compression penalty if you could get most of the benefit at "build time" without requiring support on clients? In practice all modern desktop browsers support GZIP compression, and in fact Blogger is already serving the content compressed:

Does anything on the server side already do HTML minimization (to distinguish from compression)? I didn't find anything specifically like this that is automatic, it all appeared to require developer interaction. If you do want to use HTTP compression with IIS, an article by Scott Forsyth seems to cover all the bases.
This is the load time in my office connection, so maybe the page is not that fat, but I also wish Blogger had a feature to only show the top, I don't know, 20% of a post with a jump to the full article. I have been working on a new very long post for a month now, and I have been holding off because I was worried about a bit the length on the home page. Oh well, I'll probably just publish it as one long article.

Tuesday, May 22, 2007

Microsoft Annoyance #001: Crazy Version and Service Pack Numbering

A co-worker IMed me a little while ago and asked me what the current Service Pack for Visual Studio 2005 is. I fired back cocksure that it was SP2, even thinking to myself can't he just google this? Then a pang of doubt entered my mind and I decided to check, I already had Visual Studio 2005 open, it was only going to take a second. And this is what I see:

What? The standard naming procedure for an update to a shipped Microsoft product has been since, oh 1995 at least, a Service Pack or SP for short (except Office, they used Service Releases for a while, but have "corrected" that mistake). Service Packs start at SP1 and go up from there until Microsoft decides to stop releasing cumulative updates containing all the hotfixes that exist for that product. Another exception is when the first public release of an SP is bugged, then they append a letter, like SP1a. So what is going on with the Visual Studio version number? It appears I might have a Service Pack installed, but which one? Why do I have to Google which Service Pack I have installed? Does this Visual Studio 2005 SP1 landing page inform me how to tell if I have it installed? No. The release notes? No. What's New? Try again. How about the download itself? Ah yes, I have to match up the version here to the one in the Visual Studio 2005 About dialog. Crazy. It took me 5 minutes to dig through links looking for a clear-cut way to tell.

This isn't just a Visual Studio 2005 problem either. Here is the huge About dialog from SQL Server 2005 Management Studio:

Maybe dumber, just version numbers of various components. If you are going to use terminology like Service Pack or the abbreviated SP, you should always have it in your About dialogs. What is so hard about doing even this simple thing consistently?

Saturday, May 19, 2007

StarCraft II !!! and Running StarCraft 1 on Mac OS X

StarCraft 2 has been announced. Blizzard pretty much rocks. I got seriously addicted to World of WarCraft, kicked the habit in Feb. 06, fell off the wagon for the Burning Crusade expansion, and time just ran out on the subscription, officially I am off the juice again on 5/18/07. I can't trash my install yet though, I tried on Thursday, but I hold out hope that an ala carte pricing model is introduced that is reasonably priced for those times when I need a fix. I just can't play WoW regularly enough to justify paying a monthly fee.

This was about StarCraft though, and I have a confession to make there. I never did finish that game. I finished I think the Terran part of the original game. I didn't get the game when it first came out, I bought the Battle Chest after playing through the original WarCraft III. With this real-time strategy games I always get stuck on a mission and lose interest. Same thing happened to me with WarCraft III: The Frozen Throne. Doesn't mean though I won't get StarCraft II the day it comes out, I do have a lot of fun with these games, even if I can't finish them.

The truly amazing thing though is that StarCraft has been updated to work on Mac OS X. This was a Mac Classic application, here are the original Mac OS requirements from the Read Me:
• Power Macintosh (or compatible).

• System 7.6.

• 16 megabytes of physical memory for a single player game. If you only have 16 megabytes of physical memory, you will need to turn on Virtual Memory. We recommend setting VM so your system’s largest unused block reports at least 27 megabytes free.

• Color display with a minimum resolution of 640x480 and 256 colors.

This is a processor architecture and major operating system revision away. This is all you have to do to get it installed on OS X:
  • Download the OS X native installer.
  • Run it, which worked fine for me from the disk image.
  • If you have the original game and Brood War expansion set, pick to install Brood War. It will automatically install StarCraft once it needs those files. If you install StarCraft first though, and then pick Brood War, you can't upgrade, this Installer will ask you to put the whole game in a new location.
  • Install the latest patch, at the time of this writing it is 1.15. You have to follow the instructions at that link, since its a copy the files yourself install.
  • Run the game, the opening Blizzard logo animation will stutter for a few seconds, I imagine as Rosetta translates the PowerPC instructions to Intel, but this clears itself up very quickly and then it's smooth as silk.

According to the release notes for StarCraft on OS X, a bunch of files were updated to use Carbon, the Mac OS Classic API that is available on OS X, which Mac OS Classic developers could adjust their applications to use to quickly have a working OS X application. The games system requirements are so low and runs so well in OS X (in my limited testing) using Rosetta, I don't imagine Blizzard would ever update it to be a Universal Binary.

Thursday, May 17, 2007

Xcode and CSharpXcodePlugin do not play nice

After my last post, I am seriously just not looking forward to getting MonoDevelop to run to even see what that looks like on OS X. So I thought, might as well give the XcodeCSharpPlugin a try.

Right, that didn't work out at all. I don't know if it's because I installed Mono 1.2.4, or if it's just busted, but Xcode says the build succeeded, but there is no executable in the build folder, and not error messages. It might be related to fact that the Product has a blank named file in it, but I am sure not tearing into the project templates and all that to figure this out especially when this is nothing more than syntax highlighting for C# in Xcode and for command-line programs at that, no ASP.NET based stuff at all, and no IntelliSense. Ok, back to figuring out MonoDevelop for OS X...*sigh*

A comment on this post says its from Susan, the original developer of the plugin. So I screenshot exactly what I did even in the trivial case in the documentation (which yes I did read - mostly ;-))

Now to build...
Click for larger more readable version
And there is nothing to run...

Wednesday, May 16, 2007

Why use Mono to develop an ASP.NET site?

I might have spoke too soon, and my feeds failed me. When I wrote the original post yesterday, I had no indication that Mono 1.2.4 was released on May 15. Here are the complete release notes. I am kinda of surprised no feeds I subscribe to, and that is a long list, mentioned this bit of information. 1.2.4 fixes a large number of ASP.NET 2.0 compatibility issues, they consider the support complete. On the feeds thing, I have an idea. In NetNewsWire, I just added the Mono Project News feed, and the last entry is from March 2007, about Mono.AddIn. What? A new release and it's not published, that can't be. So I switched Safari over to using its' internal feed reader, and sure enough the Mono 1.2.4 release is the latest item. I get my feeds using NetNewsWire by proxy through NewsGator, it looks like NewsGator stopped updating the Mono feed or somehow this is broken. I turn off synching with NewsGator, NetNewWire gets the full Mono News Feed. Could other's be using NewsGator and not seeing that Mono 1.2.4 was published because of this? Or is Mono used so little that no one, not even FOSS or Mac developers cared?

Back on point though, I started following the instructions to start Mono development on OS X. Already had X11 installed, installed Fink, installed Gnome, and I have to stop because my train is pulling in but, and sorry if this is a whine, but can't they put together an installer package for OS X for all this shit? I mean seriously, I just want to get MonoDevelop up and running. Here is another article, even more daunting because of the long list of packages, to use MonoDevelop on OS X.

Original Post
I don't get it. I have been researching Mono specifically to develop a new ASP.NET based site, and I can't see choosing it as my target run-time instead of Microsoft's .NET runtime. These are the reasons why I can't justify using Mono:
  • Feature lag. ASP.NET 2.0 has been out since November 11, 2005. If you read the Mono ASP.NET FAQ says "currently we are missing WebParts and some tiny small features", but they don't say what various tiny small features don't exist. Later on in the FAQ it says "Support for 2.x ASP.NET applications is under active development, but it's not complete". Which is it, tiny small feature or incomplete functionality segregated off into a preview of xsp2.exe?
  • No ASP.NET AJAX control compatibility. This is listed under the Portability section and lists some other controls you might try. I don't think so, the ASP.NET AJAX stuff seems to work well, why would I risk that functionality?
  • Where are the hosting companies? The Mono ASP.NET FAQ lists 2!. I guess I could develop on Mono and deploy to MS .NET, but that is a huge development no-no to me, you as closely as possible develop on the same platform you are deploying on.
  • Where is the cost savings?. This comes down to hosting costs. The company I am consulting for is not setting up their own datacenter. Hosting for Mono ASP.NET apps vs. MS ASP.NET apps is either the same or within $5 dollars of each other. Ubiquity Hosting one of the two that are listed to support Mono has pricing starting at $4.95 a month, and Discount ASP.NET for just about the same storage and transfer rates is $10/month. That's it, $5/month difference?!?! $60 a year, $300 for 5 years to go with MS.NET? This is what free (as in beer) Mono and Linux net me in savings!?!?

The only reasons for Mono might be no Windows license and Visual Studio for developers. This might be interesting if I didn't already have a Windows license, but the Visual Studio part is intriging. Even that though, I have installed SharpDevelop which is free (beer again) and I might give that a go. Other than that, I feel like I might be missing something, but I can't put my finger on what it is, and the reasons against Mono ASP.NET seem overwhelming. I have to conclude at this point Mono for ASP.NET isn't worth it.

Thursday, May 10, 2007

Don't get screwed buying Marvel Ultimate Alliance for Xbox 360

If like me you got Marvel Ultimate Alliance for Xbox 360 when it came out in Late 2006, the cover of the game looks like the image on the left. You can still buy this version on, but I would recommend against it. If you want the full game, you would then have to buy the downloadable content for another 800 MS Points/$10. Amazon has the game listed for $49.99 right now, but you can't resell downloadable content. Why does this matter?

On May 15, 2007, you can buy the Gold Edition for normal Xbox 360 game retail price of $59.99, but the kicker is it includes the downloadable content. Nice MS and Activision, charge the customers who bought the game in the first place for a few new characters, and then give away that content at the same price I originally paid for the game. If I wanted to eBay my Original Marvel Ultimate Alliance, I really love having to compete with the eventual Gold Edition sellers.

Tuesday, May 08, 2007

Apple TV Review, or iTunes 7.1 sync options for Apple TV are way to simple

I never reviewed the Apple TV once I got it. This was partially due to me not being a professional reviewer, I don't exhaust products when I get them to write up an immediate review, I use them as an end-user and final thoughts or issues only then really percolate to the surface. Also, I started using Apple TV with an SDTV+component video but no widescreen setting so video looked squished, it was unfair to give a review. Within 2 weeks of getting the Apple TV, I replaced the SDTV with an HDTV, a 52" Mitsubishi 1080p set. Since then, I have been very happy with the Apple TV. Let me get the good stuff out of the way:
  • Video quality is better than DirecTV on the HDTV. This is particularly true of widescreen content. I am talking about SD content, like Stargate SG-1, which is letter-boxed on DirecTV (the widescreen setting on the DirecTivo apparently does nothing here), so I have to zoom the the DirecTV input in some way, and it looks terrible. Stargate SG-1 from iTunes looks fantastic by comparison, it fills the whole screen without me doing anything. I have since dialed down the DirecTV subscription to the $35 family pack (which includes local channels) and have started to buy TV Shows from iTunes.
  • The UI is mostly great. Text is crystal clear, a lot of information is presented on screen about content at all times, and it is very easy to use. It really does make the Xbox 360 Dashboard look bad, even with the Xbox 360 Spring Dashboard Update. What am I talking about? The Xbox 360 Dashboard just doesn't optimize for lower clicks. This is especially bad getting out of a deep menu. Apple TV doesn't have this problem at all, and it "feels" faster to get around. The Spring 2007 Dashboard update makes menu speed much faster, but its not the display speed that is truly broken, its just the amount of navigation you have to do. Apple TV doesn't have this problem except for the Sources menu, which is why I say the UI is "mostly" great, and I will expand on this later.
  • Photos screen-saver is beautiful. This is just sublime, and totally unexpected. You just sit there watching to see what comes up next, it's really exceptionally done.
  • Ripped DVD video quality is excellent. This may be limited, I haven't tested this a tremendous amount yet, but here goes. I ripped Dune (Extended Cut) using Handbrake 0.8.5b1 with the Apple TV Preset. This means a 3000 kbps encoding bitrate. I then put the original DVD in the Xbox 360 (connected via component video), synchronized the scene playing to the same one on Apple TV (connected via HDMI) and watched part of the movie in split-screen on my HDTV. Then I started toggling back and forth between full screen for each input. Quality wise it was no contest, the file on the Apple TV appeared quality wise to be identical, but the Apple TV looked far better because the black level was deeper (even with the HDMI Brightness set to High). The 360 was washed out by comparison, with much worse color separation, it was stunning. I verified both inputs were identically configured on the TV (real nice thing about this TV, it saves all settings per input, sweet). Maybe I will do some more of these side by side tests, but this result was extremely surprising. With the Spring 2007 Dashboard Update I changed the Black Level, which I am pretty sure is new, form Standard to Intermediate, and the DVD I watched last night looked better, I could tell the letterboxes (it was a 2.35:1 ratio) were darker, so maybe this Apple TV "advantage" has disappeared, the video quality part, but the speedy access to movies without a disc is means...
  • Apple TV is silent and doesn't throw off as much heat as Xbox 360

All that said, I am frustrated with iTunes 7.1 and the overly simplistic syncing interface to the Apple TV. Why? You have to understand how I am using it.

Keep you hands off that DVD kid!
If you have a young kid(s), you know the punishment that DVDs take going in and out of the player. It seems kids (speaking from my experience and others I have seen) very quickly understand that shiny circles makes pretty pictures on big box when you put it in white box (Xbox 360, your player may vary) under the TV. What they don't understand is that fingerprints, chocolate, juice, and snot do not go together with the shiny circle since they get that stuff on everything else. And then actually placing DVD in tray is a recipe for scratches, assuming they scurry out of reach with disc in hand. Little kids also can't understand why you can't skip FBI warnings, trailers for movies you own but don't want to watch now, or any other preamble before watching the "show" as my son calls it. Actually, it makes no sense to me either why you can't skip all that stuff. With kids then you want:
  • Quick access to the show you actually want to watch
  • Hands-free access to the show
  • A large assortment of shows on hand as tastes can be fickle
  • To watch the same thing over and over again

Mom and Dad also watch Movies and TV shows, but the pattern is different. You generally watch shows and movies as they are released, and then not again for a while or possibly ever. Now that we are level set, how do we use iTunes and Apple TV to solve it?

Why do you sync again?
You can sync or stream content from iTunes to Apple TV. Streaming is so good, why sync? You can only scrub so far through streamed content before you run out of buffer, synced content is all on the hard drive. Streaming requires another machine to be on, once syncing is done, no other machines need to be on. So if syncing is a good option, how do you manage it?

Syncing Movies
iTunes syncs content to Apple TV in fixed priority order, the user can't change it. The order is:
  1. Movies
  2. TV Shows
  3. Music
  4. Podcasts
  5. Photos
If the content in any one category would fill the Apple TV Hard Disk Drive (HDD), then the next category down in the list doesn't get synced. Having good sync options and optimizing for your media is the only way to increase the probability that the content you want is on the Apple TV, it's certainly not a guarantee. Let's look at are options for Movies:

First thing you should notice is that you have to manage everything in groups, like unwatched or selected movies. This may be the Achilles heal of the iTunes sync interface, but I get ahead of myself. What options to those drop-downs contain?

This looks reasonable, I usually want unwatched movies synced, let's see what are options are on the second drop-down:

Ah, well I can surely survive individually selecting movies in this interface, but maybe I can get better control over the content with Smart Playlists, go all rules crazy on it, but...

Huh? Where are my playlists? What is this special batch of playlists? Why only these? It's inexplicable. Well I guess I am going to leave this on Selected movies, let's see what I can do with TV Shows.

Sync TV Shows This looks pretty familiar:

There is a subtle difference though. Movies syncs all unwatched movies and selected movies, but TV Shows syncs all unwatched episodes either All TV Shows or selected. There is no way to automatically get just unwatched episodes and then all episodes of certain TV Shows, it's maddening. Here are the drop-down contents:

Again the silly playlists restriction. If I had my own playlists, then I get to sort of what I want, maybe all of it. What do I want? Control over individual shows. Let me choose whether I want all episodes of a show, 5 episodes, or only unwatched, synced to Apple TV. Let's see what you can do with podcasts:

Sync Podcasts

Similar, but yet again different from either TV Shows or Movies. Why? I think the partial answer is in the way the content is acquired. You manage Podcasts entirely from the Podcasts section of your iTunes library. They automatically download when available if you have Subscribed to them, which means if they are configured for syncing to Apple TV, you don't have to do anything to acquire the content past subscribing, its just there. Keep that in mind. One more thing, where is the option to only sync the video in a mixed audio/video podcast feed?

Various Other Sync Problems
I have reported all of the following to Apple using Bug Reporter, aka RadarWeb. Scott Stevenson @ Thecacao has a good write-up on how to use this influential tool. I have been logging issues to Apple since November, and there is no doubt Apple actively uses this tool. Anyway, here are the other sync issues:
  • Some content changes do not trigger a sync to Apple TV. For example, if you have ripped some TV Shows from DVD and forgot to assign an Episode Number on the Video tab of the Info sheet before synching to Apple TV, changing the Episode Number will not trigger a sync. You have to un-assign the show from Apple TV and re-assign it.
  • iTunes restarts sync to Apple TV during a sync operation when a change is made Say you are synching a movie, it is > 1 GB, and you happen to change the Apple TV sync configuration during this operation. Even if the movie you are synching is still to be synced to the Apple TV after your config changes, iTunes kills the sync and starts over.
  • iTunes doesn't automatically initiate a sync to iPod on data changeHey this has nothing to do with Apple TV right. No, it's because of Apple TV this becomes so glaring. If iTunes can (usually, see above) detect changes and sync to a connected Apple TV, why can't iTunes do the same for iPods?
  • Tunes device list should include other Macs or PCs running iTunes for syncing It is inevitable that you are going to be able to purchase content in some form directly on the Apple TV. This means bi-directional sync (I would also say multi-master) is going to have to work. I say that your notebook or laptop computers should be treated as Apple TV's with screens. I want my iTunes Server (where all the backup and large discs are) to sync content not just with Apple TV and iPod, but treat all mobile computing devices the same. I more often use my MacBook Pro for mobile video than an iPod, no reason I shouldn't be able to sync them. And since you can wirelessly sync to Apple TV, this is a no-brainer.

Time for Some Solutions
Can most or all of these issues be solved? I am sure that the switch to subscription accounting for Apple TV means updates are inbound, I hope sooner than later, and surely some of these issues are being worked on. The release of EMI DRM-free tracks this month is going to mean a new version of iTunes, hopefully Apple TV will get some love. How would I change iTunes or Apple TV?
  • Make the sync and acquisition management of TV Shows and Video Podcasts as close to the same as possible, which means..
  • You should be able to subscribe to TV Shows, just like Podcasts, even though you haven't bought a Season Pass.
  • Management of TV Show/Podcasts acquisition settings should be at the TV Show/Podcast level
  • Treat laptops as Apple TVs with dedicated displays so you can bi-directionally sync content to them
  • Content changes in iTunes should auto-sync to all devices, and all changes to content should trigger this action, not a magic set
  • TV Show Season Passes need an overhaul. Enabling a "Subscribe" option would partially fix this, you are always going to have people deciding to watch a show through iTunes after the season starts. Also, there needs to be a Complete My Season option. I bought an episode smorgasbord from The Office, I want the rest of the season, I am not paying for a full season pass with 20% of the season already bought, and I am not paying full price either.
  • Eliminate the Apple TV Sources menu. This option allows you to choose whether you are looking at content from Apple TV, or another machine running iTunes, this is your streaming option. My question is, why does this exist at all? Once I configure iTunes on a machine to connect to an Apple TV, why doesn't Apple TV just show the content menus merged together from all the connected sources on the network? Why do I the user have to make this artificial choice at all? Here is how it works. You turn on Apple TV. It sees what machines are on the network. It shows you local content immediately, and then lazily adds content in from streaming sources. If the same content exists in both places, Apple TV prefers its hard drive of course. I don't even think the user needs an indicator where the content is coming from, but you can certainly add an icon if you want to. I am going to log this as a Feature Enhancement request.
  • When TV Shows are supposed to be released the day after broadcast air date, it better be there. Currently Stargate SG-1 and Stargate Atlantis appearing on iTunes are running behind broadcast, sometimes by 2 weeks. There is no excuse for this, in fact, there is no reason for these shows to not be released as soon as they are ready, forget about broadcast.
  • Need a movie rental option and movie purchases (everywhere, not just iTunes) are overpriced. The need for a rental option is obvious, but if it's as draconian as the Xbox Live Marketplace rules, I would still not be renting. What rules? Movies bought from Xbox Live Marketplace have to be watched within 24 hours once you start them, that just doesn't work for me. Movie purchases are crazy overpriced. Again, this is everywhere. HD-DVD's at Best Buy are $24.99-29.99, iTunes movies are $9.99-$14.99, regular DVD purchases are $9.99-$24.99. What is the point of buying? To have the content on hand if I decide to watch a second time. I discount the "collector" aspect because I think that is an outmoded way of thinking.
  • Include a top-level Radio option. No I don't mean satellite radio, or an FM receiver in the Apple TV. I mean There should be Internet Radio stations to listen to directly on the Apple TV.

Clearly Apple has a lot to do here, at least according to my view. This is not to say that the Apple TV isn't good at what it does, it is, but it could be a whole lot better.

Sunday, May 06, 2007

TortoiseSVN Delight #001: Renaming

I have to rename an ASPX page, which is actually 3 files, the .aspx, the .designer.cs, and the .cs code-behind. These files are under source control using Subversion, and I use TortoiseSVN as my client, so I right-click on the file, chose TortoiseSVN, and then Rename, and the following happens:

I completely expected to rename all 3 files "manually", so this was a pleasant surprise.

Blogger Annoyance #002 - Adding Labels/Tags to old Blogger posts adds the item to the feed as new

If you are a subscriber to the RSS feed, you might occasionally see posts that make no sense given the date, like this Are you ready for Halo 2?. This is because I have forgotten from time to time that labeling/taging old posts on Blogger puts them back in the RSS feed as new. For someone as anal as I am about having meta data be correct, this is very annoying because I want to go through all old posts and make them right over time, but I don't want them to show-up in the feed. And thus I do nothing.

Friday, May 04, 2007

A compelling argument for DVD ripping on an Intel Mac

When Handbrake 0.8.5b1 was released containing an Apple TV preset, I took out one of the DVDs that was on the stack to rip, in this case Over the Hedge. Since I wanted to use my MacBook Pro, I figured I would just use the iMac G5 1.83 GHz, I mean I really didn't care how long it was going to take, until I saw this:

I thought this must be a mistake. I quit everything that was running on the iMac, restarted Handbrake, and started again, same result. This is going to take way to long. The amount of power the iMac is going to consume while ripping this DVD is crazy compared to what the 2.16 GHz MacBook Pro would use when ripping this DVD in near realtime:

Buying content for Apple TV from your couch

With Apple TV 1.0, you can't buy content from iTunes through the Apple TV directly, you have to use a Mac or PC. To get your content to Apple TV, you can sync or stream. Syncing places a copy of the file on Apple TV, stream sends the bits as needed to the device, but once the machine your streaming from is gone, Apple TV can't play the bits. So how do you buy stuff without leaving the sofa? You can use a laptop and either stream it from there, or if that is the machine your Apple TV syncs with, even better. But I chose to make the synching machine for the Apple TV an original iMac G5, since it's wired to the Apple Airport Extreme N, I get better performance. But the iMac is a floor up and half the house away width wise from the Apple TV, no way I am running upstairs to buy something. Sure, I can use the laptop to buy something and then move it over to the iMac, which could then push it down to the Apple TV, but can I simplify this? Thankfully the answer is yes, but its really only for the geeky.

Some Configuration
First, you have to turn on Apple Remote Desktop in the Sharing System Preference like this:

This enables your Mac to use the Virtual Network Computing (VNC) protocol to send its' display to a VNC client running on another machine. Apple has its own VNC client/management solution called Remote Desktop. But that costs big dollars, so you can download Chicken of the VNC for Mac OS X which costs nothing. Of course if you are using a Windows machine as the Apple TV sync computer, you can use the built-in Remote Desktop and even access the computer from a Mac using Remote Desktop Connection for OS X though sadly it's still a PowerPC only application.

Don't bother me I am sleeping
Great, so now you can remotely view the screen of your Mac/PC, but what if the machine is asleep. My iMac is set to nap after idling for 1 hour. I am not running upstairs to wake it up! Thankfully, there is a technology introduced for managing networks of computers called Wake on LAN (WOL). Basically, you send a magic network packet to a machine, that if configured to listen for it, will wake it up. I think this setting on Mac OS X is on by default, and strangely it is not in the Network System Preference, but in Energy Preferences:
If the iTunes library you are synching Apple TV with is on a Windows machine, thinks might be more complicated. In a bit of serendipity, posted Wake-On-LAN Add-in for Windows Home Server, which in turn linked to a blog post with the caveat relevant to our situation:
Of course, the PC must support Wake-on-LAN and this feature must be enabled in the BIOS of the PC, as well.

So you mileage may vary with Windows, since this could be a potential BIOS configuration issue, your pretty much on your own.

Assuming your machine like all Macs supports Wake-on-LAN, how do you send the magic packet to wake it up? You need software. The Wikipedia article on WOL lists a bunch of software by platform that can do this. On Mac OS, again Apple's Remote Desktop can do the job, but clearly overkill. In Mac OS X software list, I choose to use WakeOnLan. It's pretty simple, it scans your local network for machines, tells you if they are awake or not, then allows you to wake them up or put them to sleep. I have been using it now for a couple weeks:

I am not sure it is 100% reliable though, or it could be the new Airport Extreme N. I think I have seen the Airport Extreme reset when trying to send the magic packet, and I think WakeOnLan causes the iMac to kernel panic the other day when it received the magic packet, so not sure if there is an Intel to PowerPC problem, a malformed packet coming out of WakeOnLan, or the Airport Extreme corrupting the packet under certain circumstances, but I'll chance it so I don't have to run upstairs.

Can we get some iTunes or OS X integration? While this is all doable, I actually think Apple TV or iTunes should intelligently use WOL, since it doesn't appear to right now. How so? Well, say Apple TV wakes up your sync machine every hour (if it's on the local network of course), which initiates a sync from iTunes, then tells your sync machine to go back to sleep? Or even without Apple TV, how about in iTunes under Sharing in the Source list I could see a list of machines I had previously connected to and wake them up from there? Geez, even in the Finder, let me see a list of machines I had previously mounted volumes from and give me the option to wake them up if they are asleep. I can even see a little half-moon icon next to these machines, or the Finder icon with Zzzs coming out of it. I guess I am the one dreaming now.

Wednesday, May 02, 2007

Silverlight makes AJAX an endangered species? I don't think so.

Dare Obasanjo aka Carnage4Life says Silverlight: AJAX is now an Endangered Species. Here is what I wrote in the comments:
While Silverlight is certainly an exciting development, Microsoft has s serious credibility problem with cross-platform solutions. They killed IE for the Mac, Windows Media Player for the Mac, Microsoft Messenger for Mac is nowhere near feature parity with Windows Live Messenger, Remote Desktop Connection for Macs still PowerPC only and isn't on par with the version in Vista, Office for Intel Macs has lost VBA (and still hasn't shipped), Virtual PC for Mac is pushing up I to seriously believe after this long trail of corpses that if Silverlight "wins" then Microsoft won't choose to kill it too for Mac?

Silverlight looks exciting as a .NET developer because I can transfer those skills to Rich Internet Applications (RIAs). But if I care about cross-platform at all, Silverlight looks high risk. Microsoft's track-record just isn't great. I would think they nearly need to publicly state that Silverlight will be developed cross-browser and cross-platform for, say, 10 years to ease fears that they aren't going to pull the rug out. Or instead of a pledge, port Visual Studio to OS X :-)

Tuesday, May 01, 2007

May Day: Xbox 360 Elite taking fire!

The Xbox 360 Elite launched on 4/29/2007, and it didn't take long for the complaints to start. What's the problem? Two things. 1) MS didn't include a transfer cable to move content from an existing 360 to the Elite. Their reasoning, Elite is aimed at new customers, not existing ones with content. Doh! Existing customers are supposed to buy the new add-on hard drive, which includes the cable. Uh hello Microsoft, does the add-on drive come with an HDMI port? I didn't think so. 2) DRM. If you are an existing customer, like me, and you order the transfer cable and use it, the DRM on your Xbox Live bought content is altered to always require you to be logged into Xbox Live to use your content, no offline for you! That said, I wasn't planning on getting an Elite, I might drop the bills on a PS3 before "upgrading" the 360.

The problems with the 360 highlight the serious problems with Microsoft consumer strategy. This is the direction MS should have taken (and includes the Zune):
  • Unified Marketplace(s) and purchased content portability (aka fix the DRM). Xbox Live Marketplace, Zune Marketplace, Windows Marketplace. Too many marketplaces. These all need to be brought together. Microsoft really needs to copy the iTunes model here, content bought that can be used anywhere (video, audio) should be usable anywhere. Why if I buy an episode of Star Trek The Original Series Remastered is is locked up on the Xbox? No good reason is why.
  • Synching and Streaming. Say I have my main Xbox under my HDTV in the Family Room, but my son is watching something and I want to sneak some Crackdown in. I might go to a 360 in my bedroom, but there is no way I am even going to create that setup. Why? My saved games, my content, are not going to be kept in sync because each 360 in your house is an island, it's a silo of content.
  • Sharing content bought on the Marketplace (fix the DRM part 2). This isn't specific to Xbox Live, iTunes doesn't let you do this, but while we are here. If a friend has bought a game that he thinks I might like, I can borrow it and get a full non-trial experience. He can't use the game while I am playing it, this is an obvious but key point. How does this apply to sharing? If I buy a game, a show, any piece of digital only downloaded content, I should be able to share that with people I want if I give up access to it. Let's look at an example. I buy Geometry Wars for 360 from Xbox Live Marketplace. I tell a friend its pretty cool, but the trial isn't enough for him to decide to buy it. I should be able to "share" it to my friend, so he gets the full version. He can play as long as he likes as long, but I can't play it while he "borrows" it. I know, never going to happen right, MS is throwing money away with this flexibility, the content industry has always wanted to eliminate the used market and friend borrowing, that's revenue they are missing. People are just going to avoid digital content when freedoms and common sense aren't there.
  • Cross platform This is not just because I use Macs at home and now at work. With the May 7, 2007 Spring Update adding support for industry standard MP4 and MP4/H.264, formats popularized by Apple. This will allow non-DRM content from iTunes to be played on the 360, but MS needs to embrace all of the above and make sure it all works on OS X. Microsoft's move with Silverlight is encouraging.

Why do I think this is all important? Because while Apple TV doesn't have buying content directly from the device or HD content, their is a window of opportunity for the Xbox 360 to grab more share of the living room as an entertainment device, not just a game console, and I would love to see Apple have a strong competitor. Given that MS is about to unleash the Spring Update to the 360 without any of the above and they are releasing every half year, and Apple is planning on software updates to Apple TV (I don't think its a stretch to predict they are already working on), its only a mater of time before Apple closes the gap with the few advantages the 360 has over Apple TV, and I think MS has a larger gap to close for the things Apple TV and iTunes already get right.