November 2005 - Posts

[tool] DiffDoc - Show differences between Word documents (and PDF, XLS, PPT, RTF..)

I just read about DiffDoc on Buck Hodges' blog. This thing's amazing - it shows differences between all sorts of businessy document formats - MS Word, Excel, PowerPoint, Wordperfect, PDF, RTF, and HTML

Wow! I don't know how many times I've been handed a new version of a software spec with no clues as to what has changed between versions, and this would have saved me quite a bit of grief.

There's a free trial available, and it worked just great on my tests. Check out the HTML demo slides here.

[Source: Buck Hodges - How to diff Word documents ]

Posted by Jon Galloway | 2 comment(s)
Filed under:

[fix] Killing the F-Lock on MS Keyboards (even under USB)

Summary

None of the normal hacks to disable the F-Lock key on Microsoft keyboards work if you're connected via USB. The XML file at the end of this post corrects it.

Long story version

For some bizarre reason, the function keys (F1 through F12) on MS Keyboards have different meanings. I can't say it any better than Udolpho:

A few years ago Microsoft decided that something should be done with the function keys, F1 through F12, which sit at the top of every PC keyboard and have done so since IBM and God put them there in 1987.  Microsoft decided out of the blue that the keys should be assigned arbitrary program actions, such as Undo, Redo, Open, Save, Reply, etc.  Pressing F10 on Microsoft's newer keyboards starts the spell check routine, for example, if such a routine is supported by the application that currently has focus...

The most common key used is probably F5, labeled in virtually every Windows application as the Refresh key. It causes whatever window has the focus to redraw itself with up-to-date information. It's commonly used in browsers to refresh the web page. But refresh isn't even present on Microsoft's remapped keys; instead F5 is now the Open command, which means that in the most commonly used program it is entirely useless. And as with Word's spell check, the browser menu still tells you to use F5 to refresh. Well, don't bother.

This is especially annoying if you're developing software on Windows, since most development environments make heavy use of the function keys.

There is an F-Lock key on the keyboard which allows toggling the function keys to their proper behavior, but until recently it had to be hit every time you rebooted. They finally fixed it to remember the setting when you reboot, but... it only works when the keyboard is connected via the PS/2 keyboard port. Many newer computers (like mine) only have USB connections, which don't remember the F-Lock settings on reboot. Argh.

Jason Tsang wrote up some cool registry files to eliminate the F-Lock by modifying the keyboard scan codes, but sadly they don't work when the keyboard is connected via USB. Argh.

Udolpho came up with a workable solution which uses the Intellitype keyboard configuration software to map the F keys to a VBS script which calls SendKeys to send the correct key. This of course begs a question - if there's keyboard configuration software software, doesn't it allow configuring the F-Lock behavior? Nope. It has a lot of interesting options, but maddeningly doesn't allow configuring the F-Lock key behavior. So, anyway - Udolpho's solution works, but it's a pretty wild hack that requires manually mapping each key in the config software and running a VBS script every time you hit a function key.

I came up with a slightly simpler solution. I figured if Intellitype allows you to configure the key behaviors, it's got to store the configuration information somewhere. Sure enough, it's stored in a file called commands.xml. On my default installation, it's at C:\Program Files\Microsoft IntelliType Pro\commands.xml.

I made a backup of the commands.xml file and made a special version which maps the keys to the standard F-Key settings. This is a baby with the bathwater approach that probably kills some of the other special media buttons which I've never used; they're all in the commands.xml backup in case I ever want to hook them up. Anyways, here's the commands.xml file I came up with:

<?xml version="1.0" encoding="Windows-1252" standalone="yes" ?>
<DPGCmd>
    <Copyright>
        
Copyright (c) 1983-2005 Microsoft Corporation. All rights reserved.
    
</Copyright>
    <
Version>5.30.606.0</Version>
    <CHS 
/>
    <CHT 
/>
    <ENG 
/>
    <FRA 
/>
    <DEU 
/>
    <ITA 
/>
    <JPN 
/>
    <KOR 
/>
    <PTB 
/>
    <PTI 
/>
    <ESP 
/>
    <ALL>
        <Application 
UniqueName="StandardSupport">
            <C302 
Type="5" KeySeq="F1" />
            <C203 
Type="5" KeySeq="F2" />
            <C204 
Type="5" KeySeq="F3" />
            <C307 
Type="5" KeySeq="F4" />
            <C308 
Type="5" KeySeq="F5" />
            <C309 
Type="5" KeySeq="F6" />
            <C900 
Type="5" KeySeq="F7" />
            <C901 
Type="5" KeySeq="F8" />
            <C902 
Type="5" KeySeq="F9" />
            <C401 
Type="5" KeySeq="F10" />
            <C311 
Type="5" KeySeq="F11" />
            <C310 
Type="5" KeySeq="F12" />
        <
/Application>
    <
/ALL>
<
/DPGCmd>

So, to set this up you just need to:

  1. Rename your commands.xml file (commands.xml.bak for instance)
  2. Create a new text file and edit it in Notepad
  3. Paste in the above text
  4. Save it as commands.xml in the same folder the old commands.xml file was in
  5. Test it - open IE, browse to a site, and hit F5. Did the page refresh?

Kinda hacky. If I get enough hits on this, I may put an installer together.

Posted by Jon Galloway | 27 comment(s)
Filed under: ,

[tip] (Re)installing Windows on a SATA drive

I recently bought a Dell Dimension 9100, mainly due to the 24" LCD bundle. I blew out whatever goofiness had been preinstalled and went to intall Windows XP SP2. Well, it has a SATA drive and Windows still doesn't include SATA drivers.

One solution, as Jeff Key describes, is to slipstream the SATA drivers.

In my case, though, there was a simpler solution - change the BIOS settings for SATA Operation from "RAID Autodetect / AHCI" to "COMBINATION" as detailed here. That did the trick.

Of course, the network drivers need to be loaded. For a Dell 9100, the drivers are here.

Posted by Jon Galloway | 3 comment(s)
Filed under:

[wish] Windows MCE TV / Video Playlists

I'll confess - my kids watch the occasional TV show. At least with our Windows MCE setup, they watch shows my wife and I preselect instead of whatever happens to be on at the time, but that brings with it the annoyance of having to change the shows when each one ends.

Why doesn't MCE have TV / Video playlists which work exactly the same as Windows Media Player music playlists? I'd love to stack up two or three shows and play them in order without any intervention. That could be handy for parties, too - have a playlist of interesting shows or videos playing in the background without having to run and change them each time one ends.

Posted by Jon Galloway | 2 comment(s)
Filed under: ,

3D Pie Chart

Here's a nice free3D Pie Chart class on CodeProject. Version 1.4 (just released) includes some bug fixes and a demo app. Purty.

Posted by Jon Galloway | with no comments
Filed under: ,

[FIX] BizTalk 2004 - Failed to generate the master secret (error code 0X80070005)

The BizTalk Server 2004 installation fails on XP SP2 with an error message that doesn't give much of a clue as to what the problem is: Failed to generate the master secret (error code 0X80070005). As Marco says in his post, it's easy enough to Google it if you know that XP SP2 caused the problem, but otherwise it's not easy to figure out.

Marco's got the fix here:

The install failure is: An unexpected error occurred while configuring the Single Sign-On server. The service cannot be started, either because it is disabled or because it has no enabled devices associated with it. Microsoft support article 841893 explains in detail how to resolve the issue by:
* Using Gpedit.msc to enforce the authentication of client calls or
* Using Registry Editor to enforce the authentication of client calls
Posted by Jon Galloway | 1 comment(s)
Filed under:

[tip] Use the Coral Distribution Network to save bandwidwidth

A family member called me about the bandwidth on his site due to MP3 downloads lately. The host company said there had been 40GB of downloads this past month, which required extra fees since the hosting plan doesn't allow for near that bandwidth. I changed the offending MP3 links to use the (free) Coral Distribution Network , and thought it would be good to share the information on this service since it's bailed me out more than a few times.

The Coral Distribution Network (CDN) is a free service that was started by NYU includes a global network of universities and other nice folks. More info about it on the Coral CDN site and on the Coral Wiki.

The coolest thing about it is that it's really easy to use. You just modify your links to include .nyud.net:8090/ after your domain name. So instead of this:
http://www.mysite.com/mysite/media/mp3/example.mp3
you would use this::
http://www.mysite.com.nyud.net:8090/mysite/media/mp3/example.mp3

The file is still on your website, but when people click on the link it gets routed through CDN. The first time someone clicks on the link, the file's not there and it gets downloaded from your site just like it always would have, but now the CDN knows about it and grabs a copy. From then on, if someone clicks the link, CDN checks if it's still on your website and hasn't been changed, then sends the file itself. You don't pay for the bandwidth; they handle it. What's even cooler is that they have a global network, so if someone in Australia downloads it, they get the file from an Australian Coral server, so it's much faster from the user point of view.


(see area maps here)

Some caveats:
1) I read in their FAQ that it's possible for people to have problems with downloads if they have a weird firewall setup (port 8090 outbound blocked), but I haven't run into this. Something to be aware of, but if the alternative is to pay thousands a year in hosting I think this is worth it.

2) Transfers > 50MB just redirect back to the original host due to bandwidth overuse (see the FAQ).

3) You're not able to track your downloads. If you need hit counts for sponsorship, this won't work for you. On the other hand, if you want to post some audio or video and

Posted by Jon Galloway | 1 comment(s)
Filed under:

Job Posting: More Rockstar Developer(s) Needed

The company I recently joined up with, VelocIT, is looking from more Rockstar Developers. We're a distributed company, but it would be a nice plus if you're in southern California to meet with a current client and to keep an eye on Phil. I'm shamelessly copying HAACKED Phil's job posting which snared me back in August since he's on vacation :

Requirements

  • 2+ years of technology consultant experience with direct client interaction
  • Excellent communication skills: spoken, written, visual, and otherwise.
  • Motivated, autonomous, self-starter. You need to be able to work effectively from home.
  • You must have in-depth knowledge (2+ years) of several web application technologies such as:
    • (X)HTML and CSS. Ideally, you’re a fan of CSS ZenGarden. If not, fake it.
    • XML Web Services (SOAP, WSDL, WS-*)
    • Web application security
    • XML, including XSD, XSLT, etc.
    • Must know Microsoft ASP.NET and C# as if your life depended on it. This job does.
    • Object Oriented Design.

Bonus Points:

  • DotNetNuke or knowledge of other content management / extranet / portal technologies.
  • SQL Server 2000 preferred, though excellent knowledge of other DBMS will be considered.
  • SharePoint
  • MapPoint Web Services
  • BizTalk
  • Experience with CRM, ERP, or financial systems
  • Experience with full product development life-cycle and development processes.
  • Know UML and understand Design Patterns, when to use them, and when not to.
  • Experienced with Test-Driven Development and NUnit.

Send your resume to micah at veloc-it d0t com.

[OT] 300th post

Well, hey, look at that! This is my 300th post. Hooray for multiples of 100!

Posted by Jon Galloway | with no comments
Filed under:

Best free VistaDB post - "If VistaDB was a woman... I'd marry it."

...or rather... if VistaDB was a woman... and I wasn't already married... and I was into chicks who were thread-safe and crash-safe.... then I'd marry...

Source: Musical Nerdery - WATYF - If VistaDB was a woman... I'd marry it.

So, yeah, I want a free copy of VistaDB. But, look, I blogged back in July about how .NET is letting us down on the Embedded Database front. I've played with SQLite, SharpHSQL, and FireBird (and Access if I must admit it) looking for an embedded datastore for desktop apps that doesn't take a 20+ MB install and run when my application isn't, all server stylee like SQL Express. The Jet/Access Engine seems like it would be a good alternative, but it's been deprecated by Microsoft and will no longer be installed by default. 

And WATYF has been on a parallel quest for quite a while, trying the same alternative databases and running into the same problems I did. I'm glad he finally found true love, and hope this is my answer, too. It doesn't support support NHibernate yet, but it's in the works.

And, come on Microsoft - give us a lightweight database out of the box! License a lite version of VistaDB or something. A development platform needs a database solution.

So here's my quote of the VistaDB info for my free copy:

VistaDB 2.1 database for .NET has been released
This 2.1 update includes over 60 improvements, including new support for .NET 2.0 and Visual Studio 2005. VistaDB is a small-footprint, embedded SQL database alternative to Jet/Access, MSDE and SQL Server Express 2005 that enables developers to build .NET 1.1 and .NET 2.0 applications. Features SQL-92 support, small 500KB embedded footprint, free 2-User VistaDB Server for remote TCP/IP data access, royalty free distribution for both embedded and server, Copy 'n Go! deployment, managed ADO.NET Provider, data management and data migration tools. Free trial is available for download.
- Learn more about VistaDB
- Repost this to your blog and receive a FREE copy of VistaDB 2.1!

Posted by Jon Galloway | 7 comment(s)
Filed under:
More Posts Next page »