A blog only a geek could love

At first glance, Google+ seems promising. I like how the Circles feature gives you more control over who you share with. The desktop browser interface looks nice and works well, but the mobile experience on the iPhone leaves something to be desired. Several features are unavailable including photo uploading and profile editing, and viewing someone else’s profile still redirects to Google Buzz. The iPad just displays a larger version of the iPhone interface that doesn’t take any advantage of the increased screen size. I hope Google will do a better job with iPad support than Facebook has. I’m looking forward to seeing what they’ve done with the iOS app, which is supposedly just waiting for approval from Apple.

I recently went through the unfortunate demise of the primary disk on my main development machine, so I had to rebuild my dev environment from scratch. I have a test server running SQL Server 2005, so I decided to install SQL Server 2008 on my dev machine for compatibility testing. Imagine my frustration when I tried to load up my database project in Visual Studio 2008 and was told that I needed a local instance of SQL Server 2005!

Fortunately, Microsoft has a new GDR release of Database Edition that adds support for SQL Server 2008. Unfortunately, this isn’t just a service pack, it’s more like a product upgrade. An upgrade of your database project is required, and the project will no longer be usable by other developers on the team if they haven’t upgraded to the GDR release also. Oh well, I guess you can’t have everything.

When creating a new Windows Communication Foundation web service, the default extension is .svc. This can be a problem if you want to migrate an existing .NET web service where clients may have hard-coded the .asmx extension. The following article from MSDN Blogs shows how to configure a WCF web service that uses the .asmx extension:

Via Ajaxian: Google is now hosting a number of open-source AJAX libraries, so you can take advantage of the vast Google infrastructure to reduce the load on your server. Complete details on how to access the script files can be found in the AJAX Libraries API Developer’s Guide.

It looks like this blog was recently hacked with a rather nasty, malware-distributing trojan, and apparently this has been a rather wide-spread problem. Hopefully there weren’t too many visitors turned away by the “Warning – visiting this web site may harm your computer!” message from Google. Here is a blog article with more information about the problem. I deleted all of the WordPress files and upgraded to WordPress 2.5.1, then reloaded all of the ScribbishWP theme files from a backup. Finally, I had to hand-clean my WordPress config files and a few static HTML files. I asked for a Google review of the site after the cleanup and it looks like we’re in the clear for now, but please email me if you notice anything like this happening again!

Some of the standard ASP.NET server controls allow the user to specify a template containing custom markup that will be used inside the server control. It is possible to create “.ascx” user controls that make use of this type of template. The MSDN documentation explains how.

When discussing the new features in Visual Studio 2008, LINQ gets most of the press. However, LINQ only works if you are targeting the .NET 3.5 Framework. Another new feature of Visual Studio 2008 is the ability to choose which Framework version to target, and sometimes you just don’t have the luxury of upgrading all your users to the latest Framework. Fortunately several of the new language features in C# 3.0 don’t require library support, so here are some useful enhancements that work just fine when targeting the .NET 2.0 Framework.

Extension Methods (more via developer.com and Scott Guthrie)Update: It turns out that the compiler attaches an attribute to extension methods that is not defined in the .NET 2.0 library, so extension methods can only be used with .NET 3.5 after all.

Clearly blog posts have been very sparse here, so I’m going to try something new. Whenever I find a good article or web site that helps me solve a particular problem I’m having, I’ll try to dash off a quick post referencing it. This’ll help me locate the information if I need it again later, and maybe it will help someone else find what they’re looking for too.

Have you ever noticed those strange “WebResource.axd” URLs that ASP.NET likes to generate? I recently needed to return a JavaScript resource from a custom ASP.NET control and wondered if I could take advantage of “WebResource.axd” myself. Via ASP.NET blogger Jeff Putz, Using WebResource.axd for embedded resources shows you how.

I recently purchased a U3-enabled flash drive. I’ve been using Password Safe (originally from Bruce Schneier’s Counterpane Labs, now a SourceForge project) for some time now to store my passwords, and it seemed like a perfect application to have on a flash drive. I was shocked when I discovered that they wanted $9.95 for the U3 version of a free utility!

Well, the U3 Developer Kit is available for a free registration and Password Safe is Open Source, so I decided to see if I could build my own U3 version. It turned out to be easier than I thought. The standard binary distribution of Password Safe already includes all of the necessary U3 support. I just followed the U3 packaging guidelines along with some pathnames gleaned from the Password Safe source to lay out the U3 package. I then used the U3 tools to generate the manifest file and configure the various actions. I even wrote a little device install utility as an NSIS script to make sure the default data directory gets created when installing to the flash drive.

I’m hereby making available the final result under the same Artistic License terms as Password Safe itself. This is based on the 3.10 version of Password Safe, but I will attempt to provide updates whenever I happen to notice a new release of the original binaries. Feel free to email me if you have any feedback. I simply ask that you remember I had nothing to do with the original Password Safe program, only the packaging.

Source
The source ZIP contains just the source files for the U3 packaging. You’ll need to obtain the program binaries from Password Safe and the U3Action.exe from the U3 Developer Tools, then place the files according to the directory listing in package_dir.txt. You can also get the U3P2EXE tool from the U3 site to build the executable installer package.