Nerd alert – my D&D character is…

I Am A: Chaotic Good Human Wizard (5th Level)

Ability Scores:
Strength-12
Dexterity-11
Constitution-11
Intelligence-14
Wisdom-13
Charisma-12

Alignment:
Chaotic Good A chaotic good character acts as his conscience directs him with little regard for what others expect of him. He makes his own way, but he’s kind and benevolent. He believes in goodness and right but has little use for laws and regulations. He hates it when people try to intimidate others and tell them what to do. He follows his own moral compass, which, although good, may not agree with that of society. Chaotic good is the best alignment you can be because it combines a good heart with a free spirit. However, chaotic good can be a dangerous alignment because it disrupts the order of society and punishes those who do well for themselves.

Race:
Humans are the most adaptable of the common races. Short generations and a penchant for migration and conquest have made them physically diverse as well. Humans are often unorthodox in their dress, sporting unusual hairstyles, fanciful clothes, tattoos, and the like.

Class:
Wizards are arcane spellcasters who depend on intensive study to create their magic. To wizards, magic is not a talent but a difficult, rewarding art. When they are prepared for battle, wizards can use their spells to devastating effect. When caught by surprise, they are vulnerable. The wizard’s strength is her spells, everything else is secondary. She learns new spells as she experiments and grows in experience, and she can also learn them from other wizards. In addition, over time a wizard learns to manipulate her spells so they go farther, work better, or are improved in some other way. A wizard can call a familiar- a small, magical, animal companion that serves her. With a high Intelligence, wizards are capable of casting very high levels of spells.

Find out What Kind of Dungeons and Dragons Character Would You Be?, courtesy of Easydamus (e-mail)

MyPicasaPictures Part 2: Rolling up my sleeves, sketching out a Spec

I find that the more time I spend detailing exactly what features and behaviours I expect from something I’m building, the faster and more successfully I’m able to actually build the thing I’m seeking.  This is a truism of technology development (and an old boss would say, of project management), whether you’re a one-person shop or a team of thousands.  However, it’s a lesson each person has to learn and digest to be able to figure out exactly what works best for them.

mini “Functional Spec” for MyPicasaPictures

Here’s a list of the features I’ve dreamed up so far, and the priority (1=high, 3=low) I’m personally assigning to them:

  • Pri1: upload a currently-selected Picture to (the default, if such a thing exists) folder/album/library (or whatever Google calls its collections) on the photo-sharing server
  • Pri1: enumerate and select the working folder/album/library when there are multiple folders to choose from
  • Pri1: authenticate to remote server
    • Pri3: cache remote server’s credentials securely, using DPAPI
  • Pri2: view names and/or thumbnails of pictures already in the selected remote folder/album/library
    • Pri3: enumerate and present the other metadata associated with each picture (e.g. Tags) and each folder/album/library
  • Pri2: write the code so that it abstracts the service-specific logic – enabling future versions of this app to easily add support for other server-based Photo sharing sites such as Flickr, Windows Live Spaces, Facebook, etc.
  • Pri2: Assign a new tag for a photo that has already been uploaded
    • Pri3: enumerate existing tags from remote server, and allow user to assign tag(s) from that set (along with new tags not part of the existing enumeration, in a mix-and-match formation)
  • Pri2: collect tags from the user for photo about to be uploaded, and submit the tags simultaneously (if supported by the photo-sharing service) with the upload, or right afterwards (if simultaneous isn’t supported)
  • Pri2: upload a batch of photos all at once (i.e. entire contents of a local folder that has been explicitly selected by the user).  Note: this may not be possible, as buttons or other controls cannot be added to the existing VMC UI.
    • Pri3: pick & choose a set of photos to be uploaded (e.g. subset of a single local folder, subset of photos in > 1 folders)
  • Pri2: delete existing photos in online albums (one at a time)
    • Pri3: delete existing photos in online albums in a batch (e.g. a subset of one album, or a subset of photos that span multiple albums)
  • Pri3: resize the photo(s) before they’re uploaded
    • Pri3: enumerate and present “spinner”-based choices control for the user to select one of the photo sizes “supported” by the remote server (if there’s any sort of default/preferred sizes that the server chooses to assert)
  • Pri3: rename the to-be-posted picture where another of the same name already exists on the remote site

Questions that keep coming to mind

  1. How do I implement client-side support for a SOAP- or REST-based Web Service in MCML apps?
  2. What “model” should I aspire to use for this kind of development? [cf. Gang of Four]
  3. Where will the entry point(s) for this add-in be located?  Steven Harding crystallized a suspicion I had been gathering on this topic – “Unfortunately, you can’t add anything to an existing Media Center interface.  So there’s no “Send This Folder to Picasa/Flickr” possible.”
  4. What exactly is a Start Menu Strip, and why are only two of them allowed at one time (and why does VMC seem to “punt” the oldest one out unceremoniously when a third is added)?
  5. What is the real difference between a VMC application and a VMC “background application” (other than the obvious visibility issue)?  i.e. Under what circumstances would I want to use one approach and not the other?
  6. What does “running on the public platform” mean in terms of (a) additional functionality that’s possible, and (b) what kinds of security restrictions are lifted on apps running on that “public platform”?
  7. If the More Information (“i” button) is so strongly discouraged, how should we provide that kind of “added functionality” in context of the application, ONLY when the user wants it, and WITHOUT cluttering up the UI in a way that makes it harder for most users to get their basic needs met?
    • Should we use a horizontal, multi-layer menu that’s presented on the Recorded TV screen?
    • Should we try the vertical stack of buttons that stay resident for all contexts, such as you see when you browse the detailed info for a Movie?
  8. Why is it that 3rd parties can’t add controls to the VMC UI, but Microsoft gets to change the user experience whenever they please (e.g. with the “Internet TV (beta)” object that quietly inserted itself – without asking, and without giving me any visible way to opt out – on the TV menu strip a few months ago)?
  9. What parts of the VMC UI are off-limits to third-parties?
    • Adding new objects to existing Start Menu Strips?
    • Adding new objects to existing “More Information” context menus?
    • Adding new sorting/filtering options to existing collections of content e.g.
      • I’d love to add “Show only Movies” to the “By Title” and “By Date” choices currently enabled in the Recorded TV collection
      • I’d give my left…toe to be able to sort a TV show’s episodes by the “Originally Broadcast” date, so I could accumulate a bunch of episodes of some show and then watch them in the order they were meant to be seen, not in the order they happen to have been recorded
    • Adding new tiles to the “More Programs” collections that are buried one click away from the Start Menu?

Funny

  • 🙂 “I’ve watched a video on Channel 9 where Charlie Owen and a programmer (Mark Finocchio?) demonstrate how to do basic MCML.  That was slightly more illuminating (though it took 35 minutes to get to the programming), but then I discover that you basically have to create your own buttons from total scratch. It really is back to the ark stuff.”

Painful

  • 😦 “I’ll check in to the ability to catch the More Information button — last I recall the handler is there but didn’t work exactly as planned.”  [sounds like one of those famous understatements of the year…]
  • 😦 “There are only the very basic visual elements – ‘Graphic’, ‘Text’, ‘Colorfill’ and ‘Clip’. Everything complex – like a button, menu, scroller etc. must be built from those four visual elements.” [also see 😦 ]
  • 😦 “This question comes up a LOT.  Enough that I covered it in my blog… Please check out the article called ‘Scope in MCML’.”

Next Steps

Here’s the list of beginner articles I’ve seen multiple folks point newbies at, to get a feel for what I’m about to take on:

  1. VMC SDK‘s “Step-by-Step” walkthrough (linked from the Windows Start Menu once you install the v5.2 or v5.3 SDK)
  2. MCML: UI’s (Steven Harding)
  3. UI Properties: Making UI’s Flexible (Steven Harding)
  4. Model-View Separation (Steven Harding)
  5. Stage 1: A Basic Layout (Steven Harding) through Stage 11
  6. GData .NET client library “Getting Started” guide
  7. cURL client for testing upload of files to Picasa

Source code to investigate: (as it might have some hooks already worked out that I won’t have to learn from scratch)

Outcast Genius? Well, they got it half-right…

Another one of those (not quite) pointless online “tests”, but as always I’m amused by what it thinks it knows about me.

Your Score: Outcast Genius

69 % Nerd, 56% Geek, 52% Dork

For The Record:
A Nerd is someone who is passionate about learning/being smart/academia.
A Geek is someone who is passionate about some particular area or subject, often an obscure or difficult one.
A Dork is someone who has difficulty with common social expectations/interactions.
You scored better than half in all three, earning you the title of: Outcast Genius.
Outcast geniuses usually are bright enough to understand what society wants of them, and they just don’t care! They are highly intelligent and passionate about the things they know are *truly* important in the world. Typically, this does not include sports, cars or make-up, but it can on occasion (and if it does then they know more than all of their friends combined in that subject).
Outcast geniuses can be very lonely, due to their being outcast from most normal groups and too smart for the room among many other types of dorks and geeks, but they can also be the types to eventually rule the world, ala Bill Gates, the prototypical Outcast Genius.

My test tracked 3 variables How you compared to other people your age and gender:

You scored higher than 78% on nerdiness

You scored higher than 80% on geekosity

You scored higher than 91% on dork points

 

Ouch.  I think it was the last one that hurt the most.

Another VSTO app idea? Man, I can’t keep up!

I’m an avid user of Attensa for Outlook, a free Outlook add-in for aggregating RSS feeds as folders of “messages” in Outlook.  I like it because it (a) allows me to search my feeds quickly via Windows Desktop Search, and (b) lets me read my feeds whether I’m connected to the ‘net or not.

However, there isn’t currently a free way to read my feeds via a web browser (e.g. from my new iPhone – hee hee!).  Well, I should say I can read my feeds via Google Reader, but my read/unread status doesn’t get sync’ed from Attensa to Google or back.  That means if I bravely skim through a bunch of articles in one place, I’ll likely have to wade through them (or get distracted by them) again in the other.

I had a brainwave today (stand back, that could be contagious) about how to add functionality to be able to sync back & forth, and I think I’ve just dreamt up yet another coding project for myself:

http://supportbeta.attensa.com/thread/1081?tstart=0

I have a pretty reasonable idea how to write managed C# or VB.NET that can integrate with Office via the Visual Studio Tools for Office model.  I’m not unfamiliar with web services, or with the basics of a .NET-based HTTP client [having just wasted a weekend authoring a very rudimentary web site parser].  I am bright enough to imagine that the Attensa add-in exposes a more abstract approach to addressing feeds & articles than just crawling the raw PST file, enumerating folders and addressing message objects directly.

Now what I’d need to know is: is there an Attensa SDK and/or API which I could leverage in an Outlook application add-in using VSTO?  Would there be any advantage to using that abstraction layer, as opposed to just enumerating the PST folders and messages directly?  If the Attensa team only exposed an unmanaged API, would I be creating a performance nightmare to code through that (with all the PInvoke‘ing that is required) rather than just take my chances with the native Outlook object model?

I can even imagine that the Attensa client might provide me a way of finding the translation between “articles from feed ‘x'” and “messages in folder ‘y'”, that relied on Attensa’s internal database, and then I could grind through the Outlook folders themselves.  That’d be a damn sight easier than trying to match up (a) feeds from the Google Reader API (article, wiki) to the folders as they’re named in the PST file, and (b) articles from the Google Reader API to the messages stored in the PST file.  It’d sure help if there was an indexed search capability in (a) the Google Reader API and (b) the Outlook PST object model.

Oh, it’s fun to imagine all the ways I could make my life easier…after six months of hard dev work to get there.  Madman I am.

Yes, in fact I *do* get mistaken a lot for…

Couldn’t help myself, and I was still surprised by the result:

What American accent do you have?

Your Result: North Central
 

“North Central” is what professional linguists call the Minnesota accent. If you saw “Fargo” you probably didn’t think the characters sounded very out of the ordinary. Outsiders probably mistake you for a Canadian a lot.

The Midland
 
Boston
 
The West
 
Philadelphia
 
The Inland North
 
The South
 
The Northeast
 
What American accent do you have?
Quiz Created on GoToQuiz

Lightbulb joke for Dog Breeds

Copied from a post on Craigslist:

QUESTION: How many dogs does it take to change a light bulb?

Golden Retriever: The sun is shining, the day is young, we’ve got our whole lives ahead of us, and you’re inside worrying about a burned-out bulb?

Border Collie: Just one. And then I’ll replace any wiring that’s not up to code.

Dachshund: You know I can’t reach that ****ed stupid lamp!

Rottweiler: Make me.

Lab: Oh, me, me!!!! Pleeeeeeze let me change the light bulb! Can I? Can I? Huh? Huh? Huh? Can I?

Siberian Husky: Let the Border Collie do it. You can feed me while he’s busy.

Jack Russell Terrier: I’ll just pop it in while I’m bouncing off the walls and furniture.

Poodle: I’ll just blow in the Border Collie’s ear and he’ll do it. By the time he finishes rewiring the house, my nails will be dry.

Cocker Spaniel: Why change it? I can still pee on the carpet in the dark.

Doberman Pinscher: While it’s dark, I’m going to sleep on the couch.

Boxer: Who cares? I can still play with my squeaky toys in the dark……

Mastiff: Mastiffs are NOT afraid of the dark.

Chihuahua: Yo quiero Taco Bulb.

Irish Wolfhound: Can somebody else do it? I’ve got this hangover…..

Pointer: I see it, there it is, there it is, right there….

Greyhound: It isn’t moving. Who cares?

Australian Shepherd: First, I’ll put all the light bulbs in a little circle….

Old English Sheep Dog: Light bulb? I’m sorry, but I don’t see a light bulb?

German Shepherd: Alright, everyone stop where you are! Who busted the light? I SAID,”STOP WHERE YOU ARE!!!”

Hound Dog: ZZZZZZZZZzzzzzzzzz

Cat: Dogs do not change light bulbs. People change light bulbs. So the question is: How long will it be before I can expect light?

Heading to Portland, Leaving Microsoft…

After five years living in Seattle (which my wife considers a pale comparison to Portland), Robin has been offered a kick-butt job at a really cool-sounding law firm in Portland, where she’ll practice tax-exempt and estate planning law.  Obviously we’ll be moving to Portland very shortly (in fact, in the next few weeks it looks like…)

That put me in the difficult position of considering whether to remain with Microsoft or venture out to new horizons.  Working for my current team (Security Accelerators – Security and Compliance) has been awesome, but it just can’t be done when not stationed on campus.  My next-best option would be to re-join Microsoft Consulting Services, but I don’t think I’m ready to go back to a delivery role after a few years of the intellectual rewards of working on the fringes of R&D.  I started my career at Microsoft in MCS Canada (take off eh!), and though I don’t regret those experiences, I’m more interested in making broad impact on the security of large numbers of individuals and organizations than go back to the one-at-a-time approach (not yet, anyway).

Looking around Portland, there’s a lot of high-tech opportunities but the big players are Intel and McAfee.  Against all odds, a really incredible job opening was available in a smallish, growing group at Intel.  Intel seems like a really interesting place to work, and the group I’m joining has their fingers in many pies: product pen testing, product security development lifecycle, product security consulting.  [I’m pretty sure I’m mischaracterizing their efforts but I’ll clear that up shortly.]

So yes, I’m leaving Microsoft and joining Intel!  For those of you that know me personally, this may come as a shock that I’m joining another international corporation (one good friend of mine thought I’d join a Save the Whales or militant tree-hugging organization – heh :), but it’s just too tempting to pass up: leveraging my past experiences in a new environment, learning a whole new set of technologies around hardware development, software & hardware programming, and stepping into a new role with new perspectives, leaders and fresh thinking – how can I beat that?

One of my colleagues asked me to start blogging about life after Microsoft (aka life in my new job), and I think I’ll take him up on that.  It should be fun to reflect on my new experiences, especially after so long in the belly of the Beast. 🙂

I’ve UnDeparted from Microsoft

I’m back, baby!

Due to my recent un-departure from Microsoft, I am now employed again full time, and so far I’m loving the new job!

I’ve willingly rejoined the Borg as a Technical Program Manager on the MSSC (Microsoft Solutions for Security and Compliance) team. I’m once again on campus in Redmond, but this time (cf. my previous career as a member of MCS) I’m not relegated to one of the “satellite” buildings; rather I’m stationed (with the rest of the team) in Building 18 – right on main campus!

The past eight months away from Microsoft has been one amazing vacation, disconnecting from the non-stop email, the petty politics and my growing unease with how little I felt I’d accomplished in five years there. I spent much of that time playing with the dogs (a good thing), getting to know my wife (a very good thing) and teaching myself firsthand that I can survive post-Microsoft. Hopefully I’ve cleared out many of my demons, my fears and my old habits – on to a new and revitalized career.

What will I be doing as a TPM? Well, the MSSC team makes it their mission to develop and deliver “solutions for security” – sometimes humungo series of papers/recommendations/technical knowledge, sometimes focused white papers, sometimes “push-button” apps that solve problems outside the scope of traditional product development. Based on my expertise in data security (& peripherally around data protection), I expect to be contributing to security solutions that help Microsoft’s customers’ data more secure. I don’t know exactly what this means, but I know that it’ll involve a lot of technical depth in technologies like EFS, RMS and Vista’s Secure Startup/Full Volume Encryption. [I’ve only been on board for a couple of weeks, so beyond that only time will tell.]

Anyone out there with any gripes, concerns or ideas for improvement in these and related technologies? You’re more than welcome to drop me a line and I’ll see if I can’t carve out some time to hear you out. With any luck, in my new position, I’ll be able to get good ideas directly into the ears of those who develop those products. How’s that for service? I dare you to suggest something radical to me. 🙂

[Note: this means that from here on, and of course for all posts up to this point, my one nod to the corporate machine is to state for the record that everything I write here is the result of my own personal opinions and cannot be construed as the “official Microsoft stance” on anything, nor can my ramblings be ascribed to my employer in any form or fashion. Everything here should be taken “as-is” (although certainly I believe there’s merit in my leavings), and YMMV. Now go forth and enjoy it!]

I should’ve known I’d be the loner…

You scored as Batman, the Dark Knight. As the Dark Knight of Gotham, Batman is a vigilante who deals out his own brand of justice to the criminals and corrupt of the city. He follows his own code and is often misunderstood. He has few friends or allies, but finds comfort in his cause.

Batman, the Dark Knight

79%

Neo, the “One”

67%

Captain Jack Sparrow

67%

The Amazing Spider-Man

63%

The Terminator

58%

Indiana Jones

58%

Maximus

54%

Lara Croft

46%

El Zorro

42%

William Wallace

38%

James Bond, Agent 007

33%

Which Action Hero Would You Be? v. 2.0
created with QuizFarm.com