Monday 27 October 2008

Dynalink RTA1046VW DMZ Config Kills VoIP

While trying to speed up my P2P downloads yesterday I decided to configure a DMZ host in my Dynalink RTA1046VW router (on advice from a mid-2006 forum thread). My P2P ports were forwarded correctly, according to portforward.com, but I figured it would be worth the experiment.

As I'm now on a naked ADSL 2+ plan, I no longer have a traditional land line and all inbound and outbound calls are shunted across the internet; to facilitate this, my analog phone plugs directly into the back of my modem. My new ADSL account was live on Friday and I spoke with my sister in Canada successfully for an hour straight on Saturday morning. On Sunday I configured the DMZ host and from that point forward I noticed I could no longer hear anything in the phone's earpiece. The internet connection was otherwise fine, apart from a few dropouts every so often, but there was absolutely nothing coming out of the phone's earpiece; calls were otherwise going through (sporadically) but the caller could hear me fine. To top it all off I got home tonight and successfully replayed my phone messages. The problem was reproducible with another phone. Weird. 

The only thing left to do was remove the DMZ host configuration and behold--the tin cans work! I don't get it--I really don't know much about VoIP but my guess is VoIP runs over a port and the port was being forwarded by the router to the DMZ host... dunno, especially considering the default setting is to simply discard packets not belonging to an application configured in the port forwarding table. 

[Update: Silly me, of course VoIP runs over a port--the port I set when I configured VoIP in the first place, duh. Anyway, I still reckon it was being forarded the DMZ host but I've noticed the kitchen microwave interferes with the phone and produces a similar problem where, after successfully initiating a call, I can hear the person I'm speaking to but they can't hear me.

By the way, my P2P speed reached about 180KBps down--a dizzying new height for the likes of someone who had no internet before this point.]


Custom-Built Microsoft Office SharePoint Server 2007 Branded Sites and Webpart Development - info@mediawole.com

Thursday 23 October 2008

Chrome Crash

Never thought I'd see the day--first time in nearly two months of heavy use:



Outlook was also crashing at the same time so I blame Outlook personally ;-)


Custom-Built Microsoft Office SharePoint Server 2007 Branded Sites and Webpart Development - info@mediawole.com

sgen.exe /compiler:/keyfile Doesn't Allow Spaces

While implementing a bit of .NET code that will ultimately live in SQL Server 2005, we came across a few minor problems with the auto-generated XmlSerializers.dll and, in particular, signing it with a key file. The assembly calls out to a web service, hence the need for the XmlSerializers.dll.

Normally you can tell Visual Studio to build this assembly for you at compile time: Project properties -> Build Tab, Generate serialization assembly = On | off (note this is set per configuration, eg. Debug, Release). SQL Server had a few problems around versioning with the generated assembly, however, so we decided to add a post-build event and use sgen.exe explicitly to manage this at build time. 

Soon after we also decided the main assembly and XmlSerializers assembly would need to be signed, as it's also being called from another bit of code in MOSS; we naturally figured adding the /compiler:/keyfile flags would take care of this.

The path to our .snk file has spaces, however, and the keyfile flag doesn't seem to like spaces. Initially I thought we would simply xcopy the .snk file to the c: drive and then reference it directly from there but that's dirty. 

In the end, there is a way to escape the quotes in the string: 

"C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin\sgen.exe" /compiler:"\"/keyfile:$(ProjectDir)MyKeyFile.snk"\" /force "$(TargetPath)"



Custom-Built Microsoft Office SharePoint Server 2007 Branded Sites and Webpart Development - info@mediawole.com

Sunday 19 October 2008

Conent Delivery Network (CDN) Alternatives

If you're looking to deliver your website via a content delivery network or content distribution network like Akamai, Limelight, or CDNetworks, you've got a few alternatives to consider (especially on the cost point). 
  • Amazon is set to release a new pay-as-you-go content delivery service before the end of the year. It's also built to integrate with Amazone S3 for storage. 
  • Coral is a free CDN built on peer-to-peer technologies. Seems like it's being run as some sort of test project but it's free.
In case you're interested, www.westernaustralia.com has been delivered through Akamai since early August. We reduced international load times from an average of 43.5 seconds to 5.5 seconds on go-live but pay a hefty annual fee for the privilege. We're using their standard geographic caching service and their Dynamic Site Accellerator product to speed up requests that do have to hit our Perth-based servers.

CSS Reset Fundamentals

I'm not much of a visual designer but this little CSS reset snippet from Karinne Legault's article on The Web Squeeze is easily added to an existing CSS file instead of referencing yet another style sheet (not that I don't trust Yahoo!). Karinne's article also discusses the construction of a full, floated HTML layout from mockup to markup to styling.

html, body { margin: 0; padding: 0; }

Saturday 18 October 2008

Free eBook: Introducing Microsoft SQL Server 2008 (MS Press)

Microsoft Press is offering the Introducing Micorosoft SQL Server 2008 ebook (by Peter DeBetta, Greg Low, and Mark Whitehorn) as a free download

Tuesday 14 October 2008

Silverlight Penetration

Silverlight 2 RTM'd yesterday with a personal hero of mine, Scott Guthrie, doing the press release thang

We've been taking very small steps in the Silverlight direction for a month or so now (the fancy bits on Tourism sites are currently all Flash-based) but have yet to commit due to take-up rates of the Silverlight player--it's still early days on that front, despite decent penetration rates given the player's only been around for a year or so. The official press release claims Silverlight is installed on one out of every four desktops but the install base is as high as 50% in some countries. The Beijing olympics and a number of other high-profile partner sites are cited as major penetration drivers.

Flash has been around a lot longer and obviously has a greater penetration rate so I thought it would be useful to compare the number of global visitors to all of the Tourism WA eMarketplace sites running Silverlight versus the number running Flash. The results were pulled from Omniture and are as follows:
  • 15% of visitors to the eMarketplace sites have Silverlight installed
  • An average of 17.6% of internet users have Silverlight installed (so not quite one out four just yet)
  • 101.6% of visitors to the eMarketplace sites have Flash installed (yes, 101.6%...)
  • An average of 87.5% of internet users have Flash installed
I'll keep an eye on these stats and report back in another six months. 

Guthrie's a superstar and in typical Scott Gu fashion--despite being and MS VP, he's got a dandy blog post to get you started with Silverlight:

http://weblogs.asp.net/scottgu/archive/2008/10/14/silverlight-2-released.aspx

I'm planning to do some MOSS/Silverlight posts in the coming months to detail my experience integrating Silverlight with SharePoint and may even have a Silverlight web part available for download before long! Watch this space...

[Update: no cool Silverlight dev to report unfortunately :-( but I have posted current penetration stats along with some links to related posts of mine.]

Thursday 9 October 2008

Man Down

We lose a good man here on Friday. Elliot's been a gun programmer since his debut as a quirky 17 year-old work experience student nearly two years ago. I had my doubts about yoof in general back then--nearing thirty, as I am--but Elliot's earned his keep many times over (his keep being negligible as a state government contractor). 

Elliot's one of those people you meet in life who keep the world interesting. He's still a young fella but the potential he's demonstrated during his time at Tourism suggests he can go wherever he wants with his career and his life. Apart from being a strong developer with a keen interest in everything code, he's got an outstanding personality for a geek. He can flirt with the CEO between debugging lines of code and chewing random pieces of metal. As a dev, he's got an incredible knack for quickly thinking through a problem, weighing up solutions, and implementing a feature-rich app in under ten minutes. 

I was one of the first team members to work with the guy when he arrived in early 2007 and while I like to think I may have contributed something to his professional development I know in reality his own drive and raw brain power make him who he is. It would blow your mind to hear about some of the MOSS-integrated applications he's written on a whim. 

Elliot's been poached by our venerable BA, who runs his own contracting firm; he's now off to the Department of Education and Training in Perth to rock out with his cock out, no doubt, and do some crazy MOSS 2007 and CRM mashup. 

Memorable highlights have to include the green suit, wookie sounds, fire alarm tip-offs, and the didgeridoo; I'll leave it up to the team to add to that list as comments.

Dude, it's been great working with you over the last while and while it's not going to be the same around the office without you, I know you'll fly no matter what you do or where you're working. Your contribution has been massive and it's been an abosolute pleasure working with you. We'll miss you buddy ;-)

eeeeeeeeewwwwwoooooooooodddddd!!!

Don't Touch that Database!

Microsoft and urban legend have been harping on for yonkers now that we must never, ever touch MOSS content databases or risk voiding any hope of support. This basically includes modifying a content database in any way--from extending it with new functionality (sps, triggers, etc) to modifying existing data. This isn't always easy to avoid but luckily the API gives us access to most things in MOSS.

If you're wondering what exactly qualifies as database modifications or have modified a content database and now require support, you might want to read this:

http://support.microsoft.com/kb/841057/en-us

Tuesday 7 October 2008

Channels (SBS, Nine) Disappear in Windows Media Center

I've been having a problem for years on Vista MCE with SBS dropping out (being unwatchable) every few days. A restart wouldn't correct the issue and I'd have to a full re-scan. The problem was quite strange because it was unpredictable: sometimes SBS would disappear every day, sometimes I'd go a full week before having to re-scan. Summer always seemed better, oddly enough. Since we moved into the new house with a brand new antenna the problem's only worsened. Luckily my wife's comfortable doing a re-scan as required and she doesn't much care about SBS anyway ;-)

The other day I finally decided to install Vista SP1 and update the drivers for the ancient Hauppauge Nova-T PCI tuner card I'm running. I was previously running the Vista RTM drivers instaleld by the OS but Hauppauge has released an updated set since then. SP1 went smoothly but the driver update was disastrous with SBS and Channel 9 disappearing completely. Re-scans weren't helping. Reboots weren't helping. The wife does watch Channel 9 so my manhood was at stake. Luckily a quick driver rollback fixed that one in a hurry but the growing lost channel problem led me to see if I could find anything new on Google since the last time I looked. 

A few others seem to have this sort of problem but there doesn't seem to be a definitive answer out there. This title of this hotfix led me to breathe a sigh of relief until I noted it was included in SP1. Reading through and pretty much on a whim I thought I might try disabling actual stream opportunistic scanning, whatever that means, and lo, it did the trick. SBS and 9 came back and a few weeks on and I haven't lost SBS once! 

As per the hotfix instructions (down the bottom), I created a new DWORD called DisableActualStreamOpportunisticScanning with a value of 1 under HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Media Center\Service\GLID

Apparently this key tells WMC to stop reading the latest channel info coming down from the station so in theory your channels might get stuffed up if the station changes some of this info. I'm not using a program guide at the moment but I don't think this has anything to do with program guides--it's more about the channel's meta data. Something like that. I don't really care but it worked!

Friday 3 October 2008

Burning with FeedBurner - MyBrand and CNAME and 404

I just decided to burn this blog with FeedBurner. You can now subscribe from http://feeds.mediawhole.com/DirtyWords if you haven't already ;-)

The blog is hosted on Blogger and integrated with the mediawhole.com domain, with DNS provided by everydns.net (thank you, I love you guys!). I've previously blogged about this setup.

The DNS settings allow me to point the default Blogger URL (http://michhes.blogspot.com) to http://blog.mediawhole.com via a CNAME record. When I noticed the MyBrand option in FeedBurner, I naturally jumped at yet another CNAME/mediawhole.com branding opportunity! Sad geek, yes... 

Anyway, the setup was a bit finicky so I thought I'd detail it here. 

To start, I created a FeedBurner account and burned my feed by pointing FeedBurner to http://blog.mediawhole.com. That presumably adds me to the FeedBurner database and syndicates my content through FeedBurner but it doesn't tell Blogspot about the connection so my Subscribe button goes to the default Blogspot address and I get not FeedBurner subscription stats. That's one of the key points for me. 

Next up, I clicked into My Account --> MyBrand in FeedBurner. MyBrand is PRO feature but all their PRO features seem to be free now (thanks Google!?). This page tells you to create a new CNAME record so I did that at everydns.net... Fully Qualified Domain as feeds.mediawhole.com, Record Type as CNAME, Record Value as feeds.feedburner.com. I then entered my feeds.mediawhole.com address into the MyBrand page and activated the service. 

Finally I told Blogger about the change under Settings --> Site Feed. The Post Feed Redirect URL I supplied was http://feeds.mediawhole.com/DirtyWords because the Blogger default (http://feeds.mediawhole.com/feeds/posts/default) was returning a FeedBurner error page complaining about 404. 

As a PS, I then created a new subscribe chicklet in FeedBurner and added it to this blog. It created the subscribe URL using the original URL I supplied when first burning the feed so I updated that manually in the HTML. 

Sezai is a MOSS MVP!

One of the very best MOSS-men I know here in WA, Sezai Komur, has just been declared a MOSS MVP! Not only that, but he's the first MOSS MVP in Western Australia!

I had the pleasure of working with Sezai for a year or so back in 2006 when I first arrived at Tourism. At the time we were running MCMS 2002 with a SharePoint seach backend and he was one of the team gurus in both areas. From that point he moved into MOSS 2007 as the team developed the westernaustralia.com site before leaving to go to Vivid. Sezai's since presented at the Perth SharePoint User Group and I come across his blog frequently when searching for answers to my MOSS questions. 

Apart from being a really nice guy, Sezai's got a great enthusiasm for his work and he's a top ambassador for the MOSS platform. Congratulations dude!!

TWATS Wiki (or implementing a wiki at work)

My dev manager at Tourism (Steve) recently suggested we implement a wiki with the intention of improving our project and software documentation and making easily accessible. He'd been involved with the launch of a wiki at a previous job and found it beneficial. 

We previously built a wiki on our MOSS-based intranet using one of the MOSS templates but it was ugly, weird, boring, and wasn't adopted by the team. This time we've gone with MediaWiki and setting it up has taken the form of a mini project with our junior dev Tim assigned the task of learning/doing the configuring. We work for Tourism Western Australia so naturally we've named the wiki TWATS (Tourism WA Technical Support). 

The three of us also sat down to plan the wiki's structure: we settled on top level categories for project documentation, third-party application/platform documentation and training, templates, and code snippets/work-arounds/etc. Our customer service (help desk) training materials will also fit in there somewhere. Tim hasn't quite launched the wiki but I'm already thinking to myself "hey, I could wiki this if the wiki were up" every time I unearth some rare bit of info (I've been doing some legacy project work recently...). 

At this point I think the wiki is a brilliant idea and building it on a trusted platform (MediaWiki) means it should be easy for the team to use--both in terms of accessing content and updating wikis. We've traditionally stored our documentation as Word docs on the intranet; a document gets "finished" and quickly forgotten about because people are too scared to touch it--it's too formal and it's "finished". In theory this should be less of a problem with a brief wiki page. With the wiki being broadly accessible (eg. http://twats or http://wiki) and editable by nature, I'm hoping it will also get read and that should lead to the content being maintained as required.