28th December 2006

Vista- Windows Vista Tips

With the consumer release of Vista coming out in a few weeks I’ve been playing with RC2 and thought I’d document some of my experiences and tips for Vista users.
My first time is to suggest turning User Account Control off. This is a good intentioned feature that was intended to help improve the security of the system by normally running all programs in a restricted mode and requiring you to authorize administrative things. Unfortunately for me normal usage of my machine involves 10-100 of these so-called administrative things all day long, and with User Account Control turned on Windows Vista gives you constant pop-up dialogs asking if you want to do something. Over and over.
To turn it off go to your User Accounts control panel. Select “Turn User Account Control on or off” at the end of the list. A description of the feature appears with a checkbox. Uncheck the box and click OK.
Image of User Accounts Control Panel User Account Control
Note- I’d only really recommend this if you feel confident in running your system and keeping it virus-free on your own. Microsoft loves bugging you with these security dialogs so much that they will give you a piece of toast every time you boot if you turn it off. Still, one toast per boot is way better than the constant nagging. And to be clear, plenty of user-research has shown that techniques like this don’t work to improve real security since users just become habituated to clicking “ok” over and over and stop actually reading the dialogs or thinking about their context.

posted in Vista | 0 Comments

26th December 2006

Technology- (Con)Fusion

I have been in hell with my main work laptop since Friday. On Friday I tried installing the Visual Studio SP1 upgrade.
The first time I tried the upgrade I didn’t realize that I’d need 2+ GB of free space so the installer failed.
VS SP1 apparently still has a bug where if the install fails, the roll-back fails horribly, corrupting your
.NET 2.0 install. Trying to run the VS SP1 setup or repair the .NET 2.0 gives you the cryptic error message “Error 25007.Error occurred while initializing fusion. Setup could not load fusion with LoadLibraryShim(). Error: The handle is invalid.”.

Since then I’ve spent 3 days uninstalling and reinstalling things and trying to find advice on web-sites
for how to fix the problem. Most of the advice didn’t help but I finally found a suggestion
in the end of this post that solved the problem. By deleting the c:\Windows\WinSxS\Policies directory, I could reinstall .NET 2.0 and proceed from there. What a nightmare.

I’m a little reluctant to point this out since there were some very good people on the team, but its pretty clear that some of the fundamental underlying problem is the technology called Fusion. This was an ambitious effort to fix some of the system fragility problems with the registry and dll-hell on Windows. The result can only be described as a fix that is 10x worse that the problem. The registry certainly has its problems, and most developers had figured out how to rename DLLs with strange version #s when they made incompatible changes. Things were fragile but a reasonably skilled Windows power-user or developer could fix them. With fusion the model is so much more complex and the databases are more opaque so pretty much the only people who can fix problems are the developers on the Fusion team. Its incredibly easy to get the wrong thing in the GAC (global assembly
cache) or otherwise make some minor configuration mistake that is almost impossible to fix.

Who knows, maybe this is a product opportunity. It seems like pretty soon there might be a big market
for fusion repair tools. Go for it…

posted in Technology | 4 Comments

25th December 2006

Skiing- All I Want For Christmas is 1′ Fresh Snow

And Christmas morning we woke up to find Whistler buried under 11 inches of fresh powder. Light stuff too. Ok,
so it wasn’t a full foot but close enough.
Our initial plan was to go to Snowbird again but a few weeks ago the snow reports there were not looking very
good so we cancelled those reservations. The plan was to wait until this week and then see if what spots had
great snow and look for deals. I was happy to see that Whistler was reporting over 100″ snow-base and their
Last Minute Hotel Deals page had a 5-star hotel
listed for $169/night again, over half off the normal rates.

posted in Skiing | 0 Comments

22nd December 2006

Technology- Judy’s Book After Christmas Guide

Speaking of Judy’s Book I thought it was worth
mentioning some features I’ve worked on the past couple of weeks. Now that we have the deals site up and running solidly it has been very cool to succesfully build and ship some new features in less than a week.
A couple of weeks ago Chad and I built a Coupon Finder that uses a little bit of AJAX to work somewhat like the Google Suggest feature. You just start typing a phrase and as you type it issues queries and updates the display in real-time. The key was keeping the results really compact and the queries light-weight enough that the performance is really good. If it were slower at returning the results the usability would be poor. As it is the feature feels (to me) cool and responsive.
That same week we shipped a Holiday shipping guide.
This was pretty crucial to turn around quickly while the data was still useful to people. Getting it out the door was an interesting exercise in rapid development. It was a mostly content-oriented mini-site, but the data entry was turning out to be very error-prone. We switched it to be driven by a table of data and were succesful at getting the initial version out on time, but there were issues to fix for a few days after the initial launch. From my perspective that was fine- with a web app if its not horribly broken, the cost of doing updates should be fairly low and there is little evidence of your mistakes later.
Yesterday we got online a After Christmas Sale Guide that was built on a similar structure to the holiday shipping guide. Based on the experience with the first guide I built a structure for creating generic “guide” sites. It seems like these things are very useful to people who visit the deals site, and they also provide a good source of incoming organic search users. In theory this generic version will let us deploy a new guide by editing an Excel file, three lines in a config file and no real code. If I had tried to build the generic version before we did the first guide I’m pretty certain I would have screwed it up- either made it too complicated or created a structure that didn’t provide us with the right flexibility. Since we worked out the model in the first place, and then encapsulated it into code later, I had an easy model to follow. Of course I’m sure there will be many additions for future versions, but from my perspective it was a pretty good validation about rapid iterative models of software development.

posted in Technology | 0 Comments

21st December 2006

Technology- Launch21

For the past few months I’ve been both working on some of my own sites like CalendarData as well as working with some other start-ups like Judy’s Book. I’ve really enjoyed the opportunity to work with lots of different projects and the local environment is incredibly dynamic right now. It is pretty cool just being able to dip your fingers into some of the latest new stuff. With the advances in the ability to develop web-applications via that stuff that gets called “web 2.0″ and the recent releases of WPF and WPF/E the environment also seems especially well suited for my skills.
A couple of weeks ago Peyman and I decided to combine forces and we created Launch21. Launch21 is a consulting group that specializes in rapid development of both traditional web 2.0 sites (ok, its funny calling them traditional) as well as WPF and WPF/E based projects. We are combining our tool-chests of libraries that we have been developing and are pretty convinced we can offer some unique time-to-market for people who want to get something out to the public quickly.
Today we signed our first deal. Of course I can’t say what it is, but we are off and rolling.

posted in Launch21, Technology | 0 Comments

19th December 2006

Technology- Virtualization

The power came back on late Sunday night- what a relief. All that I can say is that having the power off
was miserable. I can’t imagine how horrible it must be for people who still don’t have power now that
the work week has started. At least we didn’t run out of laundry and were able to go to the gym for a hot
shower.

It is pretty incredibly how poor the information availability was during the past week. Back at the 2003 PDC
we did all kinds of demos of cool visualizations for situation-rooms and emergency response centers. But we never
mentioned anything about helping provide information to people so they can find out what is going on. I’m sure
there are kinds of social issues involved with providing more detailed information (why is that block prioritized ahead
of mine?) but it still seems like we could do much better.

With my server running nicely in its rack in the datacenter, I thought I’d mention how great of a change
it is to have modern virtualization technology. This is one of those things that took a bit to sink in. It was pretty
clear right away why it was cool to have virtual memory and preemptive multi-tasking back a couple of decades ago. But
when I can run all my apps at once nicely in one OS, why would I care about running more than one OS?

But with just 1U of space in the datacenter, the flexibility that virtualization gives me is just really amazing.
The machine I got can easily expand to more than 10GB ram, 8 cores of CPUs, and 3TB of disks space. Those upgrades
are all much easier than buying an extra hardware box. And eventually I’m sure I will buy an extra piece of hardware
for redundancy. But in the meantime I can setup the services I’m building, deploy them on their own virtual
machines, and they are all easy to manage. System updates used to be scary for a server when you don’t have physical
access, since if the machine didn’t reboot right, you weren’t there to reset it. Now if I need to reset a “machine”
I just log into the host machine and go to its console.

Once I have a second server, I don’t need to do any complicated reconfiguration. I can just move some of the
VM configurations to the new box, and start them up. I didn’t even have to shut-down my app servers to bring
the physical hardware to the data center- they were all suspended, and once I booted up the host they were all
able to just resume. I could be wrong but it looks like reboot times might be much easier to manage and
much quicker with this setup too.

This stuff is going to be industry-changing for sure. Its already taking off quite a bit, but its clear
that within a couple of years its going to be ubiquitous. On the other hand, Microsoft’s current licensing schemes seem
like they are going to be a serious problem. Just dealing with product activation already puts Windows Server
at a huge disadvantage in this kind of world where its trivially easy to just clone a Linux machine image
but Windows Server puts me through many more hoops to get it to work. Microsoft is going to have to figure
out how to charge (and not gouge) for this stuff without being too much of a nightmare for the administrator.
If they don’t their already precarious position in the server space is going to collapse.

posted in Technology | 0 Comments

16th December 2006

Home- Power is out

Thursday night we had a huge wind storm here in Seattle and the power has been out in our neighborhood for
a day and a half now. Since my email server has been hosted out of my house, it is down at the moment and
presumably my email is bouncing. I’m going to try to move it somewhere hosted as soon as possible-
for now I haven’t heard any solid predictions of how long it will take to get the power back. Oh, and its
getting pretty chilly at home too. At least the stove works and we have a ton of candles.

I went and installed the Fast Carrot server at
GridZones last night. With the power out it wasn’t doing any good
and this way maybe I can make a push to get the site ported over to it over the weekend.

Update: My email appears to be working now. I’ve moved it to a hosted service so that should be safer.

]]>

posted in Home | 0 Comments

13th December 2006

WPF- Upcoming conferences

Mike Taulty has posted
a cool sample of playing 12 video streams at once
and animating them
using WPF/E. It looks like there is a bug on Windows where the videos aren’t caching property so it looks
like the video is being downloaded 12 seperate times. The Mac doesn’t have the same issue but the video playback
and especially the animation are not nearly as smooth (despite my Mac having a slightly faster CPU than the PC).

It looks like both MIX07
and the Microsoft PDC have been scheduled for 2007. I’ve added them both to my
calendar of technology events on CalendarData.com. At the moment I’m more likely to go to Mix than
the PDC, but we will see when it gets a bit closer. I’m already planning on being in Palm Springs for
Coachella
2007
the night before so flying down to Vegas is just a short hop.

]]>

posted in WPF | 0 Comments

11th December 2006

Technology- Building out hosting servers

I will shortly be moving the hosting for CalendarData.com and probably associated sites. So far
I have been using 1and1 which has worked out fine for development
purposes, at least on the linux side. Their ASP.net hosting is pretty horrible and once the traffic starts
to build as it has for calendardata, their solutions are insufficient.

My current approach is to build out 1U servers using the Tyan
Tank GT20 barebones
. They seem to offer the most flexibility since you can put 2x Intel Woodcrest CPUs in which themselves can
be each up to 4 cores, + it supports 4 hot-swap hard-drives. Running either VMWare or Xen for virtualization I can easily
deploy multiple “servers” on one unit and as I need more capacity I can initially upgrade that first physical server with
more RAM, CPU and disk, and later move them off to additional physical servers.

I’m currently shopping for a co-location service. In addition to the folks
I mentioned back in March I’m also
looking at gridzones- they have some attractive rates for 1U, although
I’m trying to find someone who has experience with their service.

On the WPF/E front, I’ve revised my “detectwpfe.js” script. It now encodes the user setting as
WPFE/YES/IE so that it will group better in the Google analytics display where the YES or NO is the
most important state to analyze. You can download the update here.

]]>

posted in Technology | 0 Comments

6th December 2006

WPF- WPF/E More Questions

The main set of questions that stand out with WPF/E at the moment is to figure out just what is missing (and what will be missing when the final version ships). One of the nice aspects is the install is smaller, and it runs on Macs, etc. But it doesn’t
appear to use the same high fidelity text engine and all that that the full WPF does. The real WPF isn’t a strict superset of WPF/E, to run without the CLR and on other platforms I suspect that its actually a completely different implementation. It would be nice if, on machines where full WPF exists you automatically got the benefits of full WPF, and the WPF/E engine only ran when its not there.
But I guess this brings us to one of the slightly confusing parts of the wonderful Microsoft technology naming. WPF/E isn’t really that similar to WPF. It’s a different engine, a different runtime model, etc. Hopefully they share some of the same rendering code, but mostly from a programming point of view the only thing they share is the ability to specify things in XAML. Even there, you window up using the http://schemas.microsoft.com/client/2007 namespace for WPF/E and the http://schemas.microsoft.com/winfx/2006/xaml namespace for WPF (and some of the later namespace is used for WPF/E also).
What this means is that you can create a XAML file for WPF/E. Double click it in the explorer and it will open in IE, and WPF will try to render it, but fail. Presumably this is a minor inconsistency that Microsoft can fix (although its not clear if that can be fixed in the final 1.0 version of WPF/E or if it needs to wait for a new version of .NET or if its just something you can work around in authoring your XAML).
It is clear that it is still early days for this stuff. WPF/E doesn’t even have a textbox yet. Presumably that is a key thing for them to add before they ship version 1. In the end I’m VERY glad that Microsoft choose to get this out into the community so we could start working with it at such an early stage- it looks like yet another sign of a more responsive Microsoft.
On another front, I’d point out that the support for media that is in the existing build is critical. So many of the scenarios where people want to embed richer content involve media, and this is one of the most common uses of flash around the web. The notion that this is a runtime where I can just play WMV and WMA on any browser any where and that its much easier to construct those players than with flash will be a critical strategic advantage for Microsoft.
On another front, I’m working on some tools to report to Google analytics how many of your users have WPF/E installed vs. not. It seems like it will be very interesting to track what percentage of my audience already has it when they come to my web-sites. I’ve created a small JavaScript function that detects the browser, platform and whether or not WPF/E is installed.
function GetWPFEStatus()
{
var Status = "WPFE-";
var Installed = false;

if((navigator.appVersion.indexOf('MSIE') != -1))
{
	Status += "IE-";
	try
	{
		var TheWPFE = new ActiveXObject("AgControl.AgControl.0.8");
		if(TheWPFE)
			Installed = true;
	}
	catch(e)
	{
	}
}
else
{
	try
	{
		if((window.GeckoActiveXObject && navigator.userAgent.indexOf('Windows') != -1))
			Status += "FF-WIN-";
		else if(navigator.userAgent.indexOf("Macintosh") != -1)
			Status += "MAC-";
		else if(navigator.userAgent.indexOf("Linux") != -1)
			Status += "LINUX-";
		else
			Status += "UNK-";
		for (var i=0; i < ; i++)
{
}

You can then wire this in to your Google Analytics reporting like this-

__utmSetVar(GetWPFEStatus());
_uacct = "-your-code-here-";
urchinTracker();
Yesterday’s technique to animate the text rotation was a good
exercise in talking to WPF/E with Javascript, but not really the
most efficient way to do an animation in WPF/E. Today I’ve got
an update that uses the built in animation objects. One interesting
point is that while the built-in technique is more efficient, it
isn’t necessarily more clear in the code…

posted in WPF | 0 Comments