Second Annual* Blog Facelift (Bloglift?)

For no real reason, I decided my old design was a bit pants, and started out on my second Annual Blog Facelift, the former of which was all the way back in June.

While I’m usually the poster child proving that people with basic coding skills shouldn’t also be designers, but I’m quite happy with the result. The archives look a little wonky with the date on the right, but heck, people have suffered more. Often at my hands.

I’ve somehow managed to Avoid Blue, which is a major step forward for me; I really think I’ve turned a corner this time. The gradients have also disappeared. Unless you were using a browser other than IE (gradient filters support), in which case you had to imagine gradients, or use tricks like “gradually move your eyes horizontally over the edge of the screen, then look at the title bar” to cause gradient effects to appear).

The other new feature is what I like to call the Ugly Mug Rotateur, which is like a lazy version of an ad rotator, that displays pictures of me, wonderful me, only in a rather lethargic sort of way. 

I really must get Craig to shoot some more professional-looking photos, I look like a caffeine-crazed lumpy ball in most of them, rather than the handsome, suave professional I am in real life*.

Now, to work out how to implement a corresponding Witty Comment Rotator…

[Update] And I must remember to Buy Presents For Darryn, who produced the title graphic for me post-facelift. Thanks Daz!

Why I Couldn’t Access The AppointmentItem Body Property…

… without getting one of those “An application is doing something evil with your email, would you like to be complicit (Y/N)?” dialog boxes (boxen?).

See Important Security Notes for Microsoft Outlook COM Add-In Developers.

I’ve played with a little Outlook Addin development before, this looks like one of the more useful articles around on the security model – which for some reason is quite difficult to get a useful Google result about.

I was surprised that a Body was considered sensitive, but thinking about it, harvesting detail is probably as harmful as mass emailing. If not more.

It doesn’t really help with the BlogWave Calendar adapter (where I hit the scenario), but considering it’s really designed to be used interactively (eg, with a logged on user), it’s probably not a terrible tradeoff.

Outlook Calendar Adapter for Blogwave

Your One-Stop Shop for the OLCalendar Blogwave Adapter. Usefulness not guaranteed.

For now, an all-in-one version history (topmost is newest, natch), but later- who knows?

General Notes:

PubDate is set to the Start Date of the appointment. I haven’t found a good way of representing the end date in RSS yet; I’m messing around with attribution, CDATA sections and similar, but either I’m getting it wrong, or BlogWave/RSS.Net don’t care about it 🙂

To Do:

Implement optional Body inclusion for appointments (and add more “how to format the separation between calendar data and body text” issues).

Some type of consumer would be nice (wow, a synchronization architecture built from RSS!), but also quite dangerous. So perhaps not…


Version 1.15

Updated Outlook Calendar Adapter for Blogwave Beta 1

To celebrate the release of BlogWave Beta 1*, I updated the Outlook Calendar Adapter for the new version!

There haven’t been any real enhancements (depending on how you feel about the themed dialog background for XP), but there are now two (relevant) files in the download – the OLCalendar DLL, and an image file used to generate all BlogWave’s internal images (tres slick, Addy!) – everything goes in the Adapters folder. Copying the Readme is optional – my advice is to flip a coin and then if you feel you might want to flip again, go with the option you really wanted to choose.

I fixed a couple of Dumb Bugs, nothing really worth mentioning. The previous To Do list largely stands, which I might revisit for newer BlogWave s.

Download: OLCalendar115.zip (14KB)

Yell if you have any problems with it (it’s been tested (roughly speaking) on my machine, but no others yet…).


Version 1.1

Outlook Calendar Adapter 1.1 for Blogwave

Working from the to do list at the original post, and desperately trying to avoid working on my terrible remote desktop switcher, I’ve updated the pseudo-terrible calendar adapter.

Major New Features:

  • Prettier icon, using the BlogWave Dynamic Wave Device*.

Minor New Features:

  • Ability to pick a specific calendar folder to publish. This is cool for many reasons, not least of which is that you can now explicitly control which appointments you want to publish by having them in this folder. And not marked as confidential, sensitive or private.
    • It might also work to some extent on non-calendar folders, but I’m pretty explicitly looking for Appointment types in a specific date range. I think. YMMV.
  • Stricter enforcement of date ranges.

There are still many rough edges:

  • As an adapter author, I’m not sure how (or if?) I’m meant to tell BlogWave that there’s no data meeting the criteria – BlogWave doesn’t like eating RSS feeds with only a channel and no items. So for now, it fails, and the error is probably harmless. If you had nothing to publish, why worry anyway? 🙂
    • Note: Addy fixed this in Blogwave 0.99 B1.
  • Amazing new-fangled Win Forms UI, in stylish default colours. Enjoy.
  • [20 Sep] Something Happened, and now oItems.Restrict(string s) doesn’t accept any string as being valid, at least not that I can throw at it:
    • For eg:
    • [Start] > ’09/01/2004 08:00 AM’
      System.Runtime.InteropServices.COMException (0xF5920009): Condition is not valid.
    • And others. Nothing seems to work any more…
  • [20 Sep B] Well, looks like it’s just happened to my slightly soiled work computer, and it’s working fine elsewhere. Time to spring clean, methinks.

But all up, it’s fun to play with. For instructions, see the original post.

Download: OLCalendar.zip (Same filename, updated binary).


Version 1.0

Fiddling: Outlook Calendar Adapter for Blogwave 0.3

Seeing as Addy was kind enough to include sample adapter code with BlogWave 0.3, my immediate thought was that a Calendar might be cool. Can o’ worms, that. I fiddled with this for the last few nights, and I think I’ve hit the 80/20 point, so I’ve cleaned up the UI, plastered massive warnings on it, and now it’s ready to be seen by anyone not seriously interested in using it.

It’s not designed for unattended use; it uses the simplest possible Outlook automation – no profile selection, no mess, no fuss, as long as the logged on user is the calendar source. Um, and it mostly works at night. Mostly.

Disclaimer: I strongly recommend against using this adapter, for any purpose, ever.

Notes:

  • Private appointments might be published. If you’re even remotely worried about information leakage, don’t use this adapter!
    • I’ve tried to filter out any non-normal-priority items, but there are other considerations, like:
  • I couldn’t easily work out how to access the Label colour (sorry, color) using C# (part of the information leakage issue), so labeling something as Personal doesn’t stop it being published.
    • it does check the sensitivity field for any non-normal value 
  • I couldn’t spot an easy way of persisting custom data from the XML document I passed back to Blogwave; I might work this out at some point. This means that the published information is, well, barren of extra metadata, and/or formatting. I briefly mucked around with CDATA, but couldn’t reliably get it to stick to the feed on its way out.
  • Trying to access the Body property always seemed to trigger the Outlook Security Dialog. So, no body!
  • Either Outlook’s date selection filtering logic is fairly loose, or I’m not doing it right (more likely) – don’t be surprised if something later than the actual date range shows up.

Items I thought about but didn’t/couldn’t/might implement later:

  • Picking a non-default Calendar folder. (Easiest, lowest-hanging fruit, if there’s another revision, this may well be in it). So you can put all the specific appointments you want published in a different folder, then syndicate it.
    • Alternatively, work out how to tell “Personal” from “Important” from “Business”, etc…
  • Some type of support for formatting and/or additional data in the RSS <description/> entry. More metadata is needed to describe an appointment, I feel. (mental note: I didn’t try attribution of the RSS items, cos I assumed that RSS.Net would either dislike it or destroy it – need to check that assumption).
  • Utterly And Totally Enforced Date Range constraints. Another probably-will-do.

Download: OLCalendar.zip . Unzip into the BlogWave Adapters folder, restart Blogwave if it’s running, and it should be good to go.

Updated Outlook Calendar Adapter for Blogwave Beta 1

To celebrate the release of BlogWave Beta 1*, I updated the Outlook Calendar Adapter for the new version!

There haven’t been any real enhancements (depending on how you feel about the themed dialog background for XP), but there are now two (relevant) files in the download – the OLCalendar DLL, and an image file used to generate all BlogWave’s internal images (tres slick, Addy!) – everything goes in the Adapters folder. Copying the Readme is optional – my advice is to flip a coin and then if you feel you might want to flip again, go with the option you really wanted to choose.

I fixed a couple of Dumb Bugs, nothing really worth mentioning. The previous To Do list largely stands, which I might revisit for newer BlogWave s.

Download: OLCalendar115.zip (14KB)

Yell if you have any problems with it (it’s been tested (roughly speaking) on my machine, but no others yet…).

Techie Audio?

What I find makes exercise (you know, walking and stuff) more tolerable is having someone whisper sweet technical nothings in my ear.

I’m working through DotNetRocks back-episodes, which aren’t bad at all.

While digging around for more audio, I noticed Technet Radio, and quickly chewed through it – personally, I’m after deeper content rather than higher-level stuff, but that’s just me.

I think my ideal is to find Support Webcast-like content (perhaps just the audio from one?) in WMA format (or anything that isn’t download-prevented, really).

If anyone’s willing to share their portable-friendly tech audio source, I’m willing to listen. Chortle.

[Update, 1 hour later] And if you download the Support Webcasts for Offline Viewing (gah), at least some of them have WMA files standalone, included. Happy sigh.

[Update, 2 days later] The Support Webcasts have offline downloads starting in about March 2004, the earlier ones are streaming-only. For my Muvo, I’ve noticed that dragging and dropping most of them doesn’t actually work, but syncing through WMP10 converts them up to a 32Kbps bitrate (which seems to be the minimum acceptable to the Muvo).

Rebuilding the Mighty Mighty Desktop

After one alpha too many, I’d left my primary desktop in what I can only describe as an “indeterminate state”, and earlier this week, Things Stopped Working.

This is pretty much the same installation I’ve been using since I started here about three years ago. My Desktop was a dumping ground for work-that-was-once-in-progress, My Documents was a dumping ground for items that didn’t quite make the bar for the Desktop, and for no reason at all, the Scripting.FileSystemObject had gone missing. Outlook Add-ins were failing to fire. Visual Studio was doing weird things on the occasions I visited it. Each thing was little, and probably easily fixable, but I’d been thinking in terms of starting again for a while.

So, being a tad on the paranoid side of the happy fence, I decided I’d rebuild clean, and do away with the NTFS atrocities of the past, and create a Bold New Future. I backed up most of my documents, then booted from CD and did the D – Enter – L dance during setup to wipe the partition clean. I feel less dirty already (perhaps down to only “grubby” on the Scale o’ Dirt).

VirtualPC fits neatly into my Cleaner, Happier future, as I plan to do all controversial (read: development) activities within a VPC (where possible), leaving a relatively clean Information Worker desktop for my day-to-day activities, dumping code out to sourcesafe if it’s worthwhile. I’d considered using a VPC for my “core work scenarios” before, but figure it’s probably more efficient/better all round to use it for my Dangerous Experiments.

While reinstalling my primary, I came up with the following “Can’t Live Without Em” list so far:

  • Office 2003
  • OneNote 2003
  • Lookout for Outlook 2003
    • Super-quick email searching (and the indexing is pretty quick too) – do away with rules!
  • Whatever RssGrabber debug build I’m up to
    • (before you ask – it’s homemade, no Atom support, terrible UI, doesn’t drive Outlook properly, the uninstall allegedly destroyed Gonza’s machine… but I use it like a bought one. I occasionally start developing a new reader from scratch, but then become rapidly disillusioned and go back to using a working one. When .Net 2.0’s done (or in later betas), I’ll try it again.)
    • I recommend RssBandit, partially because the name makes me laugh every time I see it.
  • MSN Messenger 6.2
    • for MSN Messenger contacts, because the group handling leaves WM for dead
  • Windows Messenger 5.0
    • for SIP
  • Quiet Messenger Sound Scheme
  • PureText
    • An app that directly pastes rich text as plain text (as if you pasted into Notepad, and then copied and pasted from Notepad to LOB Application X That Can’t Handle Rich Text Input Properly). Picked up as a hot tip from FrankArr, this has made my life 30% more productive since. I’m trying to work out if that means I owe Frank my head, or a leg, or something.
  • Visual Studio .Net 2003
  • Maxthon
    • Groovy tabbed browser.
  • Debugging Tools for Windows
  • Support Tools for Windows

I promise to control my files this time. I promise.

Outlook Calendar Adapter 1.1 for Blogwave

Working from the to do list at the original post, and desperately trying to avoid working on my terrible remote desktop switcher, I’ve updated the pseudo-terrible calendar adapter.

Major New Features:

  • Prettier icon, using the BlogWave Dynamic Wave Device*.

Minor New Features:

  • Ability to pick a specific calendar folder to publish. This is cool for many reasons, not least of which is that you can now explicitly control which appointments you want to publish by having them in this folder. And not marked as confidential, sensitive or private.
    • It might also work to some extent on non-calendar folders, but I’m pretty explicitly looking for Appointment types in a specific date range. I think. YMMV.
  • Stricter enforcement of date ranges.

There are still many rough edges:

  • As an adapter author, I’m not sure how (or if?) I’m meant to tell BlogWave that there’s no data meeting the criteria – BlogWave doesn’t like eating RSS feeds with only a channel and no items. So for now, it fails, and the error is probably harmless. If you had nothing to publish, why worry anyway? 🙂
  • Amazing new-fangled Win Forms UI, in stylish default colours. Enjoy.
  • [20 Sep] Something Happened, and now oItems.Restrict(string s) doesn’t accept any string as being valid, at least not that I can throw at it:
    • For eg:
    • [Start] > ’09/01/2004 08:00 AM’
      System.Runtime.InteropServices.COMException (0xF5920009): Condition is not valid.
    • And others. Nothing seems to work any more…
  • [20 Sep B] Well, looks like it’s just happened to my slightly soiled work computer, and it’s working fine elsewhere. Time to spring clean, methinks.

But all up, it’s fun to play with. For instructions, see the original post.

Download: OLCalendar.zip (Same filename, updated binary).

Actual Desktops, not Virtual Ones

I spent a small chunk of today setting up my new secondary work machine – my plan is to run Virtual PC on it, and use it as my main test box.

I have an LCD monitor that does VGA and DVI inputs. I can switch between them at the push of a button. Unfortunately, the mouse and keyboard don’t follow the screen.

The keyboard is PS2. The mouse is USB, strung off an extension cable and unpowered hub. So far, so good. The KVM I have doesn’t do USB. Not so good. It also doesn’t do DVI, and bluntly, after using DVI for a while, there is no way I am going back to analog signals.

What I wanted to be able to do was to mouse from my regular desktop, either hit a key (KVM style) or mouse to the edge of the desktop, then have the screen change to the next PC, and be able to use the same mouse, keyboard and monitor. I’m aware of KVMs that exist purport to do this “for a small fraction of the cost of a second keyboard, mouse and monitor” but I’m more interested in the zero dollar options.

After looking at most of what was available on the web, I’m back to RDP. At the moment, I’ve configured a shortcut hot key to quickly open a window to the target machine, but I’ve got my heart set on “mouseability” now too. No-keyboard-touch switching between views.

So after work, I spent another reasonable chunk of my evening trying to “whip something up” using VS2003 and the MSRDPClient object. It’s kinda-sort-of-not-really-more-or-less working, but so far it’s a little too clunky to actually be able to use. For anything. Ever.

But it’s fun to try.

 

Fiddling: Outlook Calendar Adapter for Blogwave 0.3

Seeing as Addy was kind enough to include sample adapter code with BlogWave 0.3, my immediate thought was that a Calendar might be cool. Can o’ worms, that. I fiddled with this for the last few nights, and I think I’ve hit the 80/20 point, so I’ve cleaned up the UI, plastered massive warnings on it, and now it’s ready to be seen by anyone not seriously interested in using it.

It’s not designed for unattended use; it uses the simplest possible Outlook automation – no profile selection, no mess, no fuss, as long as the logged on user is the calendar source. Um, and it mostly works at night. Mostly.

Disclaimer: I strongly recommend against using this adapter, for any purpose, ever.

Notes:

  • Private appointments might be published. If you’re even remotely worried about information leakage, don’t use this adapter!
    • I’ve tried to filter out any non-normal-priority items, but there are other considerations, like:
  • I couldn’t easily work out how to access the Label colour (sorry, color) using C# (part of the information leakage issue), so labeling something as Personal doesn’t stop it being published.
    • it does check the sensitivity field for any non-normal value 
  • I couldn’t spot an easy way of persisting custom data from the XML document I passed back to Blogwave; I might work this out at some point. This means that the published information is, well, barren of extra metadata, and/or formatting. I briefly mucked around with CDATA, but couldn’t reliably get it to stick to the feed on its way out.
  • Trying to access the Body property always seemed to trigger the Outlook Security Dialog. So, no body!
  • Either Outlook’s date selection filtering logic is fairly loose, or I’m not doing it right (more likely) – don’t be surprised if something later than the actual date range shows up.

Items I thought about but didn’t/couldn’t/might implement later:

  • Picking a non-default Calendar folder. (Easiest, lowest-hanging fruit, if there’s another revision, this may well be in it). So you can put all the specific appointments you want published in a different folder, then syndicate it.
    • Alternatively, work out how to tell “Personal” from “Important” from “Business”, etc…
  • Some type of support for formatting and/or additional data in the RSS <description/> entry. More metadata is needed to describe an appointment, I feel. (mental note: I didn’t try attribution of the RSS items, cos I assumed that RSS.Net would either dislike it or destroy it – need to check that assumption).
  • Utterly And Totally Enforced Date Range constraints. Another probably-will-do.

Download: OLCalendar.zip . Unzip into the BlogWave Adapters folder, restart Blogwave if it’s running, and it should be good to go.

Debugging a BlogWave adapter…

I’ve been fiddling around with a freakishly terrible Outlook calendar adapter for Blogwave. It’s truly awful, though at the moment I’m not sure if it’s me or Outlook.

Anyway, at the moment it’s pretty close to being nonfunctional (no, that’s not a typo) and as I was working on it on Friday, I hit a persistent problem with BlogWave not liking the RSS produced by my component. (“Object reference not set…” errors- but with no trace information! Bah!)

Addy helpfully suggested that it would probably be best to try building a test harness with the RSS.Net component as that’s what’s used to process the adapter output, and whap – problem solved. Whereas the BlogWave Adapter UI is happy to treat URLs as “just text”, RSS.Net wants them to be System.Uri s, and they have to exist too (while troubleshooting, I tried omitting item links entirely (among other things), and that just abjectly failed as well).

Still, problem solved, now back to fighting with the Outlook object model (“the fun bit”)!