Skip Ribbon Commands
Skip to main content

Blog

:

Quick Launch

Home
Blog of Will Allan, containing my thoughts, comments and questions.
October 14
Silverlight 2 Birthday Widget, Part II
And here she is...just one of several hundred Hard Rock Memorabila widgets to choose from. This one's from Rob Zombie - the most disturbing double-bass you will ever see up close. Enjoy!
<br/><br/>
<object type="application/x-silverlight-2" data="data:application/x-silverlight-2," width="600" height="450"><param name="background" value="#141414" /><param name="splashScreenSource" value="http://memorabilia.hardrock.com/Splash.xaml" /><param name="source" value="http://memorabilia.hardrock.com/Widget/HardRock.Memorabilia.Silverlight.Widget.xap" /><param name="enableHtmlAccess" value="true" /><param name="initParams" value="item=050938" /><a href="http://go.microsoft.com/fwlink/?linkid=124807"><img src="http://memorabilia.hardrock.com/Widget/Ping.gif?type=install&item=050938" style="background:#141414 url(http://memorabilia.hardrock.com/Widget/Install/050938.jpg) no-repeat center;margin:0;padding:0;border:0;" width="600" height="450" /></a></object>
October 14
Silverlight 2 Birthday Widget, Part I
I’m sure everyone is very busy this morning with the official launch of Silverlight 2 and so are we, but we’re also excited to announce another very special release. The Hard Rock Memorabilia Widget is now live on the latest Silverlight 2 RTM bits at <a href="http://memorabilia.hardrock.com" target="_blank">memorabilia.hardrock.com</a>!
<br/><br/>
This is our biggest release since the initial launch of the memorabilia site at MIX ’08. The Widget lets users take any memorabilia item in the collection “back home” with them to their own sites, blogs, etc. It’s truly a mini-embeddable version of the Hard Rock Memorabilia site – a tiny, 50K XAP file with all the features of the memorabilia site (e.g. Deep Zoom, stories, videos, links, plus custom splash and install screens, full-screen support, and even a few easter eggs).
<br/><br/>
Check it out for yourself by zooming to any item in the collection and grabbing the embed code from the item's Share tray.
<br/><br/>
<img src="http://blogs.vertigo.com/personal/willa/Blog/Lists/Photos/050938.JPG" />
July 28
New Hard Rock Memorabilia Collection
Just feeding the Google. Here are all 300 item links to the Hard Rock Memorabilia site. Bon appétit.

Item 000001Item 000002Item 000003Item 000004Item 000005Item 000006Item 000007Item 000008Item 000009Item 000010

Item 000011Item 000012Item 000013Item 000014Item 000015Item 000016Item 000017Item 000018Item 000019Item 000020
Item 000021Item 000022Item 000023Item 000024Item 000025Item 000026Item 000027Item 000028Item 000029Item 000030
Item 000031Item 000032Item 000033Item 000034Item 000035Item 000036Item 000037Item 000038Item 000039Item 000040
Item 000042Item 000043Item 000044Item 000045Item 000046Item 000047Item 001102Item 001155Item 001169Item 001854
Item 005320Item 008532Item 008594Item 008631Item 008642Item 008643Item 009271Item 012204Item 012213Item 012215
Item 012217Item 012234Item 012246Item 012266Item 013332Item 016705Item 017628Item 021114Item 021353Item 021937
Item 021959Item 022079Item 022234Item 023304Item 023350Item 023792Item 024198Item 024532Item 024709Item 024746
Item 024816Item 024900Item 025384Item 025418Item 025683Item 025707Item 025746Item 026224Item 026229Item 026341
Item 026364Item 026423Item 027154Item 027218Item 027225Item 027299Item 027341Item 027353Item 027357Item 027534
Item 027744Item 033376Item 033391Item 033789Item 034030Item 034114Item 034116Item 034192Item 034522Item 035107
Item 035643Item 036539Item 036643Item 036650Item 036760Item 039089Item 039308Item 039317Item 039747Item 040144
Item 040163Item 040392Item 040437Item 040514Item 040849Item 040978Item 041130Item 041237Item 041315Item 041656
Item 041867Item 042285Item 042387Item 043074Item 043123Item 043273Item 044105Item 044178Item 044456Item 044506
Item 044581Item 044754Item 044791Item 045490Item 045844Item 046244Item 046554Item 047478Item 047568Item 047721
Item 047894Item 047898Item 048391Item 048396Item 048485Item 049946Item 050931Item 050935Item 050937Item 050938
Item 050939Item 050940Item 050941Item 050942Item 050943Item 050944Item 050945Item 050963Item 051029Item 051038
Item 051063Item 051827Item 052002Item 052067Item 052356Item 052386Item 052509Item 052607Item 052688Item 053124
Item 053130Item 053844Item 054570Item 054573Item 054575Item 054576Item 054588Item 054726Item 055040Item 055190
Item 055229Item 055231Item 055232Item 055233Item 055234Item 055235Item 055239Item 055341Item 056635Item 057213
Item 057765Item 057807Item 057815Item 058305Item 058423Item 058682Item 058877Item 059313Item 059395Item 059711
Item 061152Item 061218Item 061369Item 061380Item 061425Item 061786Item 061791Item 061853Item 062570Item 062575
Item 062597Item 063609Item 064267Item 064650Item 064673Item 064726Item 064772Item 065036Item 065041Item 065094
Item 065219Item 066289Item 066294Item 066553Item 066593Item 066794Item 067235Item 068117Item 068127Item 068310
Item 069412Item 069804Item 069867Item 069915Item 071269Item 071278Item 071401Item 071845Item 072730Item 074066
Item 075785Item 087424Item 087478Item 087570Item 087615Item 087739Item 087900Item 088098Item 088125Item 089144
Item 089749Item 090116Item 090181Item 090395Item 090723Item 090955Item 091264Item 091403Item 091812Item 091986
Item 092517Item 092553Item 092663Item 093350Item 093366Item 093367Item 093539Item 093574Item 093638Item 093845
Item 093912Item 094206Item 094489Item 094490Item 095201Item 095411Item 095605Item 095968Item 095989Item 096322
Item 097464Item 097971Item 100049Item 100089Item 100190Item 100277Item 100281Item 100286Item 100299Item 100388
(Burp.)
December 17
Slide.Show: My Silverlight 1.0 lb. baby

My last blog post was about my new baby, Daniel, born in August. At 10 lbs. he was one BIG baby!
 
My most recent birth was to Slide.Show, another rather large baby of mine. After nearly two months of long hours and a few weekends, our team proudly released/launched/birthed Slide.Show on CodePlex as an open source Silverlight 1.0 control for publishing highly-customizable photo slideshows on the Web. It's now part of the .Show family of products recently released by Vertigo, which includes Family.Show and Video.Show, equally cool and impressive projects that you should check out, too.
 
Slide.Show been getting quite a bit of attention lately, especially after Nikhil Kothari blogged about it. In just one week after our 1.1 release, we've had over 500 downloads and quite a warm reception. That brings us to nearly 1000 total downloads in under a month, and puts us in the top 50 projects at CodePlex (out of 3000+ total projects), and #1 and #3 in the "slideshow" and "Silverlight" categories, respectively!
 
My team poured its heart and soul into this little baby, trying to make it as extensible and customizable as possible. I just can't wait to see how the open source and design communities foster it and help it grow...
 


 Technorati Profile
August 12
It’s a boy!

We just had another son. His name is Daniel David Allan, 9 lbs. 0 ounces, born Friday, August 10th at 12:17 PM. So far all we can tell about him is that he likes to sleep in during the weekends and he seems to have chronic hiccups. We're so happy to have another healthy baby boy! Welcome Daniel!
 
 
June 27
Dual-Monitor Wallpaper for Vista
My company, Vertigo, recently provided its engineers with brand new Vista development machines with some pretty impressive specs (thanks guys!!). And last year it was dual flat-panel monitors for everyone. When combined, it's a pretty sweet arrangement – just ask my colleague, Jeff Atwood, a huge fan of the multi-monitor setup (and UltraMon). He's got three!
Anyways, props to another colleague of mine, Daryll Herberger, for inspiring me and showing me how to create cool wallpaper for my dual-monitor setup, shown below.

Yar! Perhaps this is common knowledge already, but here's how I did it:
Create or download cool artwork
Resize the image (e.g. in Paint) so the width of the image is double the resolution of a single monitor (e.g. if your resolution is 1280 x 1024, then resize it to 2560 x 1024 pixels)
In Vista, open the Control Panel, then click Change desktop background
Browse to the image, select it as your background, click the Tile option, then click OK. Yar!
May 05
Silverlight Fix for IE7

I just returned from an exciting Mix '07 conference in Las Vegas – the most exciting news being the announcements of Microsoft Silverlight 1.0 Beta and 1.1 Alpha. I was all pumped up to play with Silverlight, but whenever I tried viewing the online samples, it simply wouldn't work in IE7 on my Vista machine. I installed the latest runtime several times, read and re-read the installation instructions, ensured that I removed the early beta versions from my machine, but no matter what I tried, I kept seeing the "Get Microsoft Silverlight" image.
 
In frustration, I tried the page in Firefox and to my great surprise…it worked! Hmm.
Eventually, I happened upon the following steps which fixed my IE7 problem:

Scan through your installed applications in the Control Panel. Uninstall previous versions of Silverlight and install the latest version if necessary.
From the Start menu, click All Programs, click Accessories, right-click Command Prompt, then click Run as administrator
In the console window, change the current directory to the Silverlight installation folder by executing the following command: cd C:\Program Files\Microsoft Silverlight
Register npctrl.dll in the Silverlight folder by executing the following command: regsvr32 npctrl.dll
Refreshing IE7 now shows my beloved Silverlight application!
 
April 25
Calendar Content Types in SharePoint 2007

For a non-profit parenting organization like PRAM, the calendar means everything. They have monthly board meetings, weekly playgroup schedules, classes, workshops, holiday parties, and other programs going on all the time. The Calendar List in SharePoint 2007 is the perfect solution since it allows for both one-time and recurring events, just like Outlook. However, meetings, playgroups, and programs each have different attributes (or columns). For example, playgroups need to track the playgroup leader and the leader's contact information, while classes need to track information about the teacher, fees, and discounts, none of which is provided by default in the list.
So, how can I set up my calendar lists to support multiple types of events? I could add a superset of columns to the default list, but then I would have to think about the non-applicable columns every time I added/edited an event. Alternatively, I could create a different list for each type of event, but then users would have to check each calendar to make sure they weren't double-booking a location, or scheduling two important events at the same time.
The obvious answer is to use a single calendar list, and use the built-in content type functionality in SharePoint 2007, which allows you to support multiple types in a list. I could go on forever about it, but you can read more about content types here. In PRAM, here's what all this looks like:
 
This is exactly what we want, three different content types in one calendar: Event, Playgroup, and Program. Users can store all of their data in one calendar and just add different views for different visualizations of the data. For example, I added an All Programs view that has a filter on the Program content type.
But wait, there's a catch! Although content types are supported in calendar lists, in order to be useful, they should inherit the built-in Event content type. This allows them to support recurrence and other nice features of events. Unfortunately, SharePoint hides the Event content type in a special content type group named "_Hidden". As you might have correctly guessed, you can't inherit from hidden content types because you can't see/access them via the SharePoint interface by default.
To get around this limitation, follow these steps:

Make a backup of this folder: [Drive]:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\FEATURES\ctypes\
In the ctypeswss.xml file, find the section beginning with <ContentType ID="0x0102" Name="$Resources:Event"…
Change Group="_Hidden" to Group="$Resources:List_Content_Types"
Execute the following commands:[Drive]:\>stsadm -o deactivatefeature -filename "ctypes\feature.xml" -url http://[Application][Drive]:\>stsadm -o activatefeature -filename "ctypes\feature.xml" -url http://[Application] 
This un-hides the Event content type and places it in the List Content Types group under your Site Content Type Gallery. Now you are free to use the Event content type as a parent for your new content types! Once you are done, you can re-hide the Event content type by replacing the ctypes folder with the backup from Step 1, or by following the above steps again, but swapping the two groups in Step 3. Good luck!
March 16
Workaround For Delayed Timer Jobs Due to DST in SharePoint 2007

Wow, this is my third blog post in two days, but when you are developing custom SharePoint 2007 solutions, there's often a lot to blog about.
 
Our team was experiencing problems after the daylight savings (DST) changeover this week. We noticed content deployment and solution deployment timer jobs were running one hour later than expected. The job status in Central Administration would say "Retracting..." or "Deploying..." and they would appear to hang for an hour before running. Because we are implementing a very custom solution, we sometimes have to deploy our solutions several times per day and it was holding us up.
 
I finally hit upon the right google search terms ("timer jobs") and found this new KB article from Microsoft:
 
http://support.microsoft.com/kb/932563
 
Apparently, this is a big problem down under because all the workarounds in the article pertain to Australia, New Zealand, and Singapore. If you are anywhere else, then you need to derive your own workaround.
 
For us, since Vertigo is based in California (our time zone should be Pacific Daylight Time), our workaround was to set our development and server machines' time zones to Alaskan Daylight Time. Suddenly, our timer jobs started running again immediately.
 
Now we just need to remember to set our time zones back again on November 4th when daylights savings ends, or until Microsoft releases a fix. I'm not holding my breath yet. And if anyone has a superior fix or workaround, please let me know.
 
UPDATE: This workaround only fixed half of my problem. The solution deployment jobs are running as expected on my development machine, however, the same problem returned for the content deployment jobs even though the server was also set to Alaskan Daylight Time. We opened a support issue with Microsoft and they are preparing a hotfix.
March 15
This Ain’t No Ordinary MomNPopShop.com! (Part 1)

As Jeff Atwood, my colleague here at Vertigo and author of the immensely popular blog, Coding Horror, would say, "If you didn't blog about it, then it didn't happen". So, I've decided to take the first step toward writing a step-by-step guide entitled "How I Built the World's Most Expensive Mom 'n' Pop Shop Web Site Using SharePoint 2007". Welcome to Part 1 of my guide!
To be clear, by "expensive site" I don't actually mean that it's costing someone a lot of money to build the site, nor that I'm getting rich by building it. And by "mom 'n' pop shop", I mean that it's definitely not a Fortune 500 company with millions to spend implementing a custom SharePoint solution. In fact, the site is for a local non-profit parenting organization and I volunteered to build it for free. It probably would have been really expensive due to the technical challenges presented, but because Vertigo has been kind enough to host the site for free, provide me with the necessary resources, and allow me extra time at work to learn and implement the site using SharePoint 2007, the only thing that it really cost was a few weekends and my marriage (just kidding). Seriously, here are a few reasons why I think this site is unique and pretty cool:

It uses custom ASP.NET 2.0 pages for the public front-end (anonymous access)
It uses SharePoint 2007 for content management and as an administrative back-end (members-only access)
It leverages nifty features new in SharePoint 2007 such as custom membership providers, forms authentication, KPIs, etc.
Essentially, I created an ASP.NET 2.0 site using Visual Studio 2005 with the custom look and feel that I wanted (including master pages, css, images, and JavaScript), uploaded it to a document library in an out-of-the-box SharePoint 2007 site, tweaked the Web.config file to allow code to be executed from my custom pages, enabled anonymous access and forms authentication in all the right places, and communicated back-and-forth with my SharePoint lists using the SharePoint API.
Here's what the site currently looks like. It's still under construction, but it has a Membership Registration Wizard that allows an anonymous user to create a user account, submit their membership information from a custom form to a SharePoint 2007 list, and pay for their membership online via PayPal. Then, administrative users can sign in to view the membership list in SharePoint, activate members, verify payments, manage groups and permissions, etc.
The home page – a custom ASP.NET 2.0 page stored in a SharePoint 2007 document library with anonymous access enabled

Step 1 of the wizard – user account sign-up for forms authentication

Step 2 of the wizard – data submitted from the form is saved to a SharePoint 2007 list

The administration home page – a standard SharePoint 2007 page restricted to site administrators

The membership list – stores data submitted anonymously through the wizard

As I see it, there are four ways that you can leverage SharePoint 2007 for your own expensive MomNPopShop.com site:

As an out-of-the box SharePoint 2007 site. This is the 99% case for SharePoint sites currently out there. This is just a standard site created by SharePoint Central Administration using the out-of-the-box master pages and themes. It has all the cool functionality afforded by SharePoint, but your site will look like a million other sites already out there (not to mention that it will also look like a corporate intranet…blech!).
As a fully customized SharePoint 2007 site with custom master pages and themes. This is the ultimate level of SharePoint integration, but it takes a lot of trial, error, blood, sweat, and tears to successfully create a custom master page and/or theme for SharePoint that looks nice and works in all situations, for all pages, all browsers, etc. You will definitely spend a lot of time buried in thousands of lines of css and the word "placeholder" will eventually make you queasy.
As a custom ASP.NET 2.0 site that communicates with a separate SharePoint 2007 site via its built-in Web services. This allows you to communicate with SharePoint lists without sacrificing your custom look and feel. Unfortunately, you won't be sharing the same HTTP context, so it won't be easy for users to switch back and forth between sites easily.
My suggestion – as custom ASP.NET 2.0 pages stored within a SharePoint 2007 site that communicate back and forth via the SharePoint API. My custom pages share the same IIS configuration, same Web.config file, and the same HTTP context as SharePoint. The only limitation is that my custom master pages do not support Web Part Zones yet, although they could if I took the right bits and pieces from the out-of-the-box master pages.
Stay tuned for Part 2 of this guide where I'll begin describing my experiences and the steps to build your own SharePoint-hosted MomNPopShop.com site!
1 - 10Next