Windows drags like crap

Vista - Dragging

Vista - Dragging

I'm cheery if you can't tell.  This is something I mean to write about a while ago, but never got around to.  If you've got Show window contents while dragging enabled on Windows (tested on XP and Vista) and try to select and drag a group of icons more than 5 icons tall, the ghosted icons fade into nothingness.  It really is a pain when you're dragging a large number of icons and the 'hidden' icons end up moving icons at your target destination.

You know what doesn't have the same problem? OS X.

OS X - Drag and Drop

OS X - Drag and Drop

Outlook 2007 wants you to get spam

Update 10/29/08: Microsoft says they'll fix this in Outlook 2007 Service Pack 2! The waiting begins…

I hate Outlook 2007 with the white hot heat of a thousand suns.

Why?

Because I've just exposed my email address to thousands of spam harvesting little fucks.  I've gone out of my way to not use this address for anything other than corresponding with friends and trusted business partners.  If I don't know you, you get a throwaway email.

And is where the story begins.

Inbox:Spam ratio

I have a catch-all address configured that I use for signing up for for websites, and it works great.  The downside is it gets a staggering amount of spam.  3 years worth of messages and I've got 2758 messages in my inbox.  And there are 10,041 pieces of spam in the past 30 days.

That's fine though, because I've only had a few false-positives that I care about (or at least noticed), and I don't even look in the Spam folder unless I'm expecting something.  To make my life easier I've been POPing my mail into Outlook, the one downside being that it doesn't synchronize reads or deletes.  When I upgraded my desktop last week I decided to switch to IMAP, because who doesn't want more synchronization, right?

It turns out there is an incredibly nasty bug in Outlook 2007.  Scream and pull your hair out and pray for testicular cancer in all of the male developers bad.  Not data loss, no, that's manageable if you backup regularly.  No, it's not emails not being delivered either.

No, the problem is that Outlook doesn't honor your "Read Receipt" option.  If Outlook has synchronized with the server and downloaded messages, and then you delete the message elsewhere, Outlook will send the Read Receipt the next time it synchronizes with the server.

And because every shit eating kid with a botnet and a list of email addresses to sell wants proof that an address is alive, spam almost always is sent with a Read Receipt requested.  This means that if you're using some relatively unknown webmail service like GMail along with Outlook, you're in for a world of hurt.  The next time you (or GMail) deletes spam messages a slew of read receipts will be sent out to wonderful people like Monty Savage or Данила Алексеевич.

That's not the worst part though. The worst part is that if you're using Exchange, that address will be exposed. Presumably it's whatever your primary email address is. That email address that you've kept secret, cherished, coddled and protected for years will be ravaged and exposed to the world.

Steps to reproduce:

  1. Add an IMAP account to Outlook
  2. Send a message to the IMAP account email address with Read Receipt Requested from a different email account.
  3. Send/Receive until the message appears in Outlook
  4. Delete the IMAP message from a different client (eg, GMail). Make sure to completely delete the message (check the Trash folder on GMail).
  5. Send/Receive in Outlook again.
  6. Return to the sending account to see the unexpected read receipt.

The read receipt will be similar to:

Your message

To: primary_email@address.com
Subject:

was deleted without being read on 10/27/2008 4:20 PM.

Where primary_email@address.com is not necessarily the address you sent the email to.

It doesn't matter if you set your options to always send a read receipt, never send a read receipt or prompt before sending a read receipt. Outlook does what Outlook wants, and Outlook wants you to suffer and drown in a flood of spam.

Did I mention that this bug was reported around 15 months ago?

In closing, if you are one of the developers who decided that this wasn't something worth fixing, I hope you die in a fiery car crash.

Symbolic links on Windows

One of the most useful things you'll find on any Linux/UNIX variant is the ability to create symbolic links. Rather than copying a file or directory you can create a pointer to it. It's very similar to a Shortcut in Windows, but much more powerful because a symlink behaves like a normal file.

Shortcuts vs links

For example, assume you use a program that will only store it's files in C:\MUSIC. If you wanted to move the MUSIC directory to a different drive, you couldn't. If you create a shortcut called MUSIC on the C:\ drive to D:\MUSIC that won't work because the shortcut is actually a file called "MUSIC.lnk"

You could create a symbolic link from C:\MUSIC to D:\MUSIC and the program would function as expected, allowing you to move the MUSIC directory to a new drive.

Symlinks on Windows

Support for symbolic links on Windows is all over the board. Out of the box on Windows 2000 and XP you can only create links to files, and you need a separate program for linking to directories. Vista provides a new utility, but you still need to specify if you are linking to a directory or file.

fsutil

fsutil is available on Windows 2000, XP and Vista. There's actually quite a bit you can do with it, but for creating links the syntax is:

fsutil hardlink create new_filename existing_filename

If you wanted to create a link to c:\secret\passwords.txt on your desktop you'd run the following command

fsutil hardlink create %userprofiledir%\desktop\passwords.txt c:\secret\passwords.txt

You must provide the filename of the link.

Junction

Junction was created Mark Russinovich, and allows you to create links (actually junctions) to directories. It runs on Win2k, XP and Vista. To create a junction the syntax is:

junction junction directory junction target

So to create a link (junction) to c:\lodo_conversations\ on your desktop you would run:

junction %userprofile%\desktop\lodo_conversations\ c:\lodo_conversations\

junction.exe must be in your PATH and you must provide the name of the link.

To delete a junction:

junction -d %userprofile%\desktop\lodo_conversations\

mklink

mklink was introduced with Vista and allows you to create links to both directories and files, with a switch.

To link to c:\lodo_conversations\ on your desktop you would run:

mklink /d %userprofile%\desktop\lodo_conversations\ c:\lodo_conversations\

To remove that link

rmdir %userprofile%\desktop\lodo_conversations\

To create a link to c:\secret\passwords.txt on your desktop you'd run the following command

mklink %userprofiledir%\desktop\passwords.txt c:\secret\passwords.txt

Custom Print CSS for Akamai Delivery Reports

If you're impatient and don't want to wait for a report from Akamai to be emailed to you, here's a little CSS that will clean up the Site Delivery page nicely.

@media print {
 html {
  margin-bottom:0;
  min-height:auto;
 }
 #iframeheaderwrapper, #iframefooterwrapper, .navwrapper, #moreoptions, #maininside > form, .helplink {
  display:none !important;
 }
 .iframepage .contentarea {
  min-height:auto;
 }
 .contentarea {
  margin-left:0;
 }
 #moreoptions + * + .shadowwrapper + .shadowwrapper + .shadowwrapper,
 #moreoptions + * + .shadowwrapper + .shadowwrapper + .shadowwrapper + .shadowwrapper + .shadowwrapper + .shadowwrapper,
 #moreoptions + * + .shadowwrapper + .shadowwrapper + .shadowwrapper + .shadowwrapper + .shadowwrapper + .shadowwrapper + .shadowwrapper + .shadowwrapper {
  page-break-before:always !important;
 }
}

Notice the lovely use of adjacent child selectors to ensure proper page breaks.  Most browsers don't support nth-child or page-break-inside so statements like following don't help.

 .shadowwrapper {
  page-break-inside:avoid !important;
 }
 .shadowinside, .shadowinside2, .titlebox {
  page-break-after:avoid !important;
 }
 .graphbox {
  page-break-before:avoid !important;
 }
 .tableinsidegraphbox, .titleboxinside {
  page-break-before:avoid !important;
  page-break-after:avoid !important;
 }

The result is a cleanly printing report that doesn't have boxes breaking across pages. If you want to this be the default print settings for Akamai, you can add a site-specific CSS rule in Firefox.