PDC Sessions Collected

Here’s a nice compilation of the PDC 08 session list with links to the recordings. (I’ve found navigating through at www.microsoftpdc.com to be rather tedious).

http://blogs.msdn.com/nigel/archive/2008/11/03/128-pdc-breakout-sessions-available-now.aspx

Posted in Software Development | Leave a comment

Compiler as a Service

Woah…

http://channel9.msdn.com/pdc2008/TL16/

The real fun starts at 62:30.

Posted in Software Development | Leave a comment

Windows Azure

I’ve noticed a subtle change in the tech marketplace over the past few years. I believe the Operating System market has been / is fragmenting, statistics about the number of college students that are using Macs is pretty shocking to me. No one was using Macs when I was in college, I don’t recall seeing even one. These students are the next generation of computer users, and they are all computer users. Even though I don’t personally agree from a technical / use perspective, it appears Microsoft has made a major misstep with Vista. (I have been using it since some of the pretty early available MSDN betas.)  This has opened a door that I believe Microsoft would have rather had stayed closed. Along these lines, there is some pretty good movement with the open source OS platforms. Dell and others are selling machines with Ubuntu pre-installed as a general option. These things weren’t going on just a few years ago, or at least to any real degree. It was always mainly Microsoft. In addition, Microsoft’s other major franchise, the Office suite, has been challenged by other, often much cheaper or free, competition like Open Office, and Google Docs. What’s more, the Microsoft Zune, which I own and think is an awesome device,  hasn’t even really dented the mp3 player marketshare of Apple’s Ipod (last number I remember hearing was Zune = 3-5%, I might be wrong). The XBOX, although also very awesome, has been a real money looser (until lately?). Don’t get me wrong, they’re still making money hand over fist.

So I’ve been wondering what the future looks like for Microsoft. With the apparent fragmentation in the OS game, (which many will dispute I’m sure) it seems the ubiquity of the ‘Windows Desktop’ (call it whatever you want XP, Vista,  7), may have a limited future (perhaps 5-10 years still I think). Other players will probably come into this game in a non-trivial way. This concerns me because I’ve invested a ton of time over the years learning the Microsoft stack, the last few on .NET particularly. If .NET == ‘Windows Desktop’ then that investment looses value. (In this vane, I’m really glad to see things like Mono coming up which take .NET onto other platforms like Linux, etc. Also, glad that Silverlight is bringing the .NET skillset out to so many new places.) Recently, a major new future direction for Microsoft was announced at the PDC. They announced a new platform called ‘Windows Azure’.

servicesPlatform

While, from a cursory glance, this looks similiar to other platforms that have recently come out of Redmond (think WPF, WCF, WF….and on and on), I think there is something more to it. They are looking for their next franchise, Microsoft sees that its core franchises are, or will soon be, under major attack for the reasons mentioned above. The marketplace is simply evolving. We know how Microsoft made zillions with those francises, they sold licenses to run on-premise software. ‘Windows Desktop’ runs on your desktop machine, Office likewise. Individuals and businesses shelled out major money for the software that they would run.  Windows Azure is presented as an ‘Operating System for the Cloud’ – it doesn’t run on your machine (in deployment / real world). People (users) don’t generally pay for the software they run in the cloud. They pay for the utility they get. Think music you buy from Amazon, think photos you store online to share with your family, even think about paying your bills online. There’s software under there – you don’t pay for it as such but someone does. Further, there’s hardware under there. Amazon pays a ton, in hardware, management & power costs to make its marketplace available. Your bank pays a boatload for operating its datacenter. These costs are actually prohibitive in some cases for businesses of certain sizes. Its hard to scale and do so quickly when you need to (you get Digged or something).

solutions

Ok, back on point. So what is Windows Azure. Well, its a platform for doing these things. With Azure, it looks like Microsoft is starting in a new direction, one with many of the same facets of its massively successful ‘Windows Desktop’ franchise. ‘Windows Desktop’ has been successful not because it, itself, is that great, but largely due to the fact that it has been the choice platform for people who MAKE applicaitons. It is the ease of application development and therefore the diversity of said application base that has propelled ‘Windows Desktop’ for so long. Windows Azure looks to be largely the same thing in the new world of online apps and services. It is a platform that will seem familiar to the army of Microsoft developers that want / need to enter the ‘connected game’ in a big way. It may not even be the ‘best’ (some people are religious about Macs), Amazon has been doing similiar things, other people might have a ‘better’ platform, but what Microsoft brings is the developers. So how are they going to make their zillions off this platform like they did off the ‘Windows Desktop’? They have not announced exact details yet on the price structure, but it seems like they are going to be monetizing the hardware, the software and the management (which is also, in part, software.) These are all things you have to pay for anyway to get in the game – so why pay Microsoft? Well, some of these are hard – as I mentioned, its hard to scale quickly. Its hard to have reliable storage. You have to know things / hire people. This is expensive if you have to do it yourself – especially up front. You can pay as you go. Also advantageous for Microsoft here, as with ‘Windows Desktop’ is that there is lock-in. They offer the platform you build on. The platform isn’t just software anymore, its the whole scale of a datacenter. I was wondering how Microsoft was going to challenge the Googles of the world. Now we know.

Posted in Cool Tech, Software Development | Leave a comment

Web Host’s Server Blew Up

So sometime in late August I noticed this site was down. (I hadn’t found time to post much during the summer.) So anyway, at that time I try to log into the control panel for the site to see what the scoop was – and of course that was down too. So I contacted the hosting company, and they informed me that my box had blown up or something and they were transistioning everyone’s stuff over to a new box – that it would be a couple days, perhaps, until everyone was up again. Well, either when the old box blew up, or when the transition happened, my MySQL databases got corrupted. They came over to the new box in a corrupted state.

Luckily I had taken some backups at some point (not as often as I should have, or will in the future). LONG STORY short, after MUCH back and forth with the hosting company I was finally able to get them to delete my databases so I could rebuild. (For some reason I could do nothing to the corrupted ones that were in place, not even delete them.) Consequently, the site has been down for quite a while. Moral of the story is backup your hosted stuff often!

Posted in Almost completely off-topic | Leave a comment

Project Gutenberg

If you are a commuter and have an IPod or Zune, I recommend that you checkout Project Gutenberg for a bunch of free audiobooks. They have books that have gone into the ‘public domain’ (as I understand it, the copyright wears out on a publication after 100 years or something). At any rate, there are a ton of classics on there that are worth the time. Check it out:

http://www.gutenberg.org/

Currently reading Adam Smith’s classic economic treatise ‘The Wealth of Nations’.

Posted in Almost completely off-topic | Leave a comment

Windows Home Server

whs1

More than a year ago if I recall correctly, I signed up for the 120-day trial of Microsoft’s new ‘Windows Home Server’. At that time the deal was, you give them $7.95 for shipping and they send you a couple DVDs with the goods. Anyway, after going through the order process, giving my credit card number, and getting excited – they canceled it a couple days later with no explaination. Well, recently I signed up again and this time they sent me the goods … for free. That’s the new deal. I think the first time I ordered it they were still grappling with whether or not to allow individuals (non-OEMs) to purchase the software to install on whatever. Around that time they were pitching the MediaSmart Server from Hewlett Packard which was specially designed for the job. From what I’ve subsequently read thats a really nice little machine. There was some talk that you needed certain hardware to do the job well and that they weren’t sure hobbyists or whatever could put something together that would cut the mustard. Glad they got over that! 

So when I got the software in the mail, I applied a tower that I had sitting around – and some drives I was repurposing from my NetGear SC100 (little toaster looking network attached storage (NAS) device that was literally toasting my drives). The tower is probably overkill for the job but it was the only suitable machine I had free. It’s a 3GHz P4 Extreme with Hyperthreading. Yeah, overkill… Anyway, the install was relatively painless except for the cheap RAID (ITE8212) card that I unfortunately left in the machine for the first install attempt. I got a corrupted install the first time but, realizing that the card might have put the kibosh on the install, I removed it and tried again sucessfully. From there you just add drives, nothing fancy or complicated – the server just picks them up and adds them to your ‘storage pool’. It allows you to specify what stuff needs to be duplicated for safety in the case of a drive failure – then it just handles it for you. You can see my setup below:

whs

Once you’ve got your drives in there and the machine is stablized, you can install the ‘Home Server Connector’ software on up to ten machines (XP, VISTA) in your household and then the server will work with your machines to make sure they are backed up. This part is seamless. Another great feature of this software is that it implements the ‘Media Connect’ protocol which means it was picked up my my D-LINK Medialounge and the XBOX in the house. Once you put your home videos and picture collection on the server it will make them available in the living room via a remote control or XBOX controller.

The server also allows you to remotely access the files on your machine, and remote desktop into the machine(s) themselves from anywhere in the world via some nifty magic (port forwarding and DNS tricks). You get a name like <myservername>.homeserver.com that you, or family members, can easily from any web browser. So cool.

I’m sure I’ll have some more posts on this stellar product shortly (I haven’t even touched on the addins or the developer API). Further, I’m sure that with PDC rapidly approaching we’ll see some very cool new things, maybe some cloud services integration with Live Mesh or something. (You can currently do offsite backup for things like your photo collection or whatever, but its pretty expensive.) Here’s a link to a Channel9 video about this:

http://channel9.msdn.com/posts/Rory/Windows-Home-Server/

and Microsoft’s official site on it:

http://www.microsoft.com/windows/products/winfamily/windowshomeserver/default.mspx

Nice show WHS team, keep it coming.

Posted in Cool Tech | Leave a comment

Deepzoom

Get out your thumbwheel, and see if you can find anything different about this pic.

Posted in Software Development | Leave a comment

T4 Templates – Code Generation in Visual Studio

Recently I was listening to the .NET Rocks podcast on my afternoon commute and they were discussing a topic that is somewhat familiar to me, albeit in a different domain, code generation. This time the domain was .NET development, namely code generation within Visual Studio. They were taling about T4 templates, now included in Visual Studio 2008, and I believe they mentioned the editor from Clarius Consulting. It seemed pretty interesting at the time (in comparison to the commute traffic?). While googling the topic later at home, I stumbled upon an article by Hilton Giesenow at his blog where he mentioned that he put together a screencast demonstrating the topic. I really like the screencast medium, and am always interested in checking out one on an interesting topic so I pulled it down and watched it. Pretty neat stuff. Anyway, I filed it away as ‘might-be-useful-someday’, and got on with my life.

templatett

Well, recently I had occasion for about 100+ dependency properties on a class. (I don’t want emails saying ‘Oh, why would you ever need that, derive from THIS instead’ or ‘Just use a collection’ or something, thats not the point here.) So, dependency properties are exceptionally tedious to add to your class, often times requiring 30ish line of code each – most of it boilerplate. Now, once you have them it gives you tremendous power, but its a bear getting there. Anyway, since there would be, and generally is, tons of boilerplate code here, I figured it would be a good opportunity to test out the code generation stuff thats built in to VS2008. The amazing thing is that you can write C# that writes your C# (wish there was C# intellisense in the template editor). This is very cool and gets you thinking at a different level about your code. Anyway, very cool stuff – you never know what you will find in your travels and when it might come in handy. Learn on!

Posted in Software Development | Leave a comment

.NET Sleepers

In the vast universe that is .NET, there is almost no way to know about everything you have right at your fingertips (literally). Every once in a while I come across something and have an ‘ah ha’ moment (and a subsequent ‘Oops’ moment when I think about something I did that I could have gotten for free.) So in an effort to help others avoid some sleepers, here are some great articles I have come across in my travels on random topics in the framework.

Tracing

Some of you may know about the static Trace class from .NET 1.0, or you may have written your own debugging support library, well some really cool Tracing support was added in 2.0 that you might not know about. Here’s a good series on the topic:

Tracing Primer – Part I
Tracing Primer Part II(A)
Tracing Primer Part II(B)
Tracing Primer Part II(C)

The best part about really instrumenting your app or framework, especially a layered framework, is that, when debug time comes, you can configure the TraceListeners however you want (post-compile) and get just the visibility you need for debugging. Imagine tracing the order of execution through a layered stack – if each layer had its own trace channel (called a TraceSource), you could have them all write to the same trace file and see the execution of calls through the whole stack. For those working with WPF, you might also want to check out this.

Anonymous Delegates

Not necessarily a sleeper, but mysterious to some no less. Here is a series on Anonymous Delegates, they are a powerful concept, and look out for the new stuff in 3.5, it gets even better!

The implementation of anonymous methods in C# and its consequences (part 1)
The implementation of anonymous methods in C# and its consequences (part 2)
The implementation of anonymous methods in C# and its consequences (part 3)

Functional Programming, Lambdas

Here’s a great series to get you thinking about some of the awesomeness that is .NET 3.5. I don’t know if this could be called a sleeper because it’s so new, but you shouldn’t miss it. If ‘Functional Programming’ is boring to you, you should still read to check out some of the new C# 3.0 stuff.

Lambdas and Closures and Currying. Oh my! (Parts 1 – 4)
Lambdas and Closures and Currying. Oh my! (Parts 5 – 9)

Posted in Software Development | Leave a comment

Vista SP1

123ozlj
A couple weeks ago Microsoft made Windows Vista Service Pack 1 available to technical folks though the MSDN site. Honestly, I had been waiting on this for a while now. I had long noticed some ‘quirks’ in the original Vista that I was hoping would be fixed by the service pack. So when they made it available – I figured I would get right on it and download the update. Not wanting any ‘accidents’ that would cause disruption to my life – I decided to wait until the weekend to install it so I would have ample time to fix any issues that might arise. So I went to download it, pulled down the bootstrapping download manager and fired it up (on my Vista machine), it proceeded to crash. So I tried again, no luck. Ok, let’s see if its the download manager – try it on my XP workstation – no problems. Ok, fair enough, over that hurdle. I’ll wait until the weekend now and finish this up.

Ok, finally I go to run the update installer on my Vista machine. I get:

“Windows Vista Service Pack 1 cannot be installed on your computer because the language of Windows Vista you have installed is not supported or you have installed a language pack that is not supported. Windows Vista Service Pack 1 can only be installed on computers running the English, French, German, Japanese, and Spanish versions of Windows Vista or computers running only those language packs.”

So, I’m thinking, “Why would I have ever installed another language pack, I only want to use my computer in English.” Then, I checked in ‘Control Panel->Regional Something Settings’ and, sure enough I had like 16 language packs installed.

#ifdef RANT

So I thought about why I would have installed those (if it was me that installed them) and realized that the only plausible reason was to make ‘Windows Update’ stop bugging me every 15 minutes to install them. (I also hate that Java thingy that thinks I care about updating to the latest Java every 3 days.)

#endif

Ok, so I guess I need to uninstall everything that I don’t need (i.e. everything except English). So I select all 16 of the non-English language packs and select ‘Uninstall’. This should be easy… It works on it for about 15 minutes and then tells me it was only able to uninstall Bulgarian (or whatever) – and that it must restart TO FINISH uninstalling. So it restarts – on its way up it does ‘Step 2′ and ‘Step 3′ for about half an hour. Ok, back into Windows now, I go back to ‘Control Panel->Regional Something Settings’ and look and all the language packs are there still, minus one. Oh boy, this is going to be fun, I try to select all of them and nope, one at a time (~45 minutes each – and its not like I have a total junk machine, its a 2.2ghz DualCore with 2gb RAM, 7200 rpm HDD). So, now its Sunday – I have them all off the machine – or so I think. Yes…time for SP1! Nope,

“Windows Vista Service Pack 1 cannot be installed on your computer because the language of Windows Vista you have installed is not supported or you have installed a language pack that is not supported. Windows Vista Service Pack 1 can only be installed on computers running the English, French, German, Japanese, and Spanish versions of Windows Vista or computers running only those language packs.”

Ok, I’m pretty ticked now. I just spent an unreasonable amount of time here messing with this thing. I dig around, my list of installed language packs is showing nothing except English, but I look (somewhere else) and apparently I can select Portuguese for the display language, even though its not showing in my list. So, in despair, I reboot, now I see Hungarian in my list of installed language packs. Whew… So I go though and ‘try’ to uninstall. Nope, still:

“Windows Vista Service Pack 1 cannot be installed on your computer because the language of Windows Vista you have installed is not supported or you have installed a language pack that is not supported. Windows Vista Service Pack 1 can only be installed on computers running the English, French, German, Japanese, and Spanish versions of Windows Vista or computers running only those language packs.”

I try a couple more times and then Google for a while until I stumble upon http://support.microsoft.com/KB/947506. I download that, run it and then uninstall the languauge packs that now show up in my list – and I’m in, SP1! Apparently, ‘TrustedInstaller’ somehow got my language packs corrupted during install and I didn’t even know it…

MORAL OF THE STORY – hope this helps people avoid the pain – if you get the message about the language packs, you might want to try KB947506 before you get too flustered.

Ok, now the good news, SP1 did fix a couple of my noticed ‘quirks’ in Vista. Network transfers that used to take 12 minutes (3 on XP) seem to be about right now. The ‘Calculating Transfer’ stuff that you see when you move things around on a network are MUCH QUICKER (I think it starts transferring right away now like it should), Hibernation / Sleep / Startup seem improved, and ‘Windows Explorer’ now only crashes 3 or 4 times a day (which is a big improvement.)

Also, if you want to hide an update that is being pushed on you by ‘Windows Update’, you can just right click on it in the list and select ‘Hide’ and it will stop bothering you about it.

Progress sometimes comes in baby steps…

Posted in Software Development | 1 Comment