Jake Ginnivan's blog

Microsoft Evangelism Academy

I am a little late blogging about this, by last month I attended the inaugural Microsoft Evangelism Academy (#EvangelOz) which was organised by Andrew Coates (@coatsy) and Sarah Vaughan (@sarahvaughan) at Microsoft DPE. The goal of this program is to take 8 of us to the next level with our presenting! It started with 3 days of coaching, it will continue until August 2011 and will include:

  • Monthly conference calls
  • Monthly 1 on 1 catchup over the phone with a mentor
  • 1 day of group training in Melbourne every 2-3 months
  • Talk at UserGroups, Conferences and whatever we can!

I was lucky enough to attend with:

Over the three days I made some new friends, and learnt a lot about the art of presenting. We covered many areas including Motion, Gestures, Eye Contact, Voice, Stance, Visuals, Content and much more.

I found the whole exercise quite challenging and have to say thanks to Steve Herzberg (@nrgsteve) and Melony Dos Remedios from NRG Solutions. They were great mentors, and I look forward to catching up with them again in February!

Hopefully I will post some video’s/pictures of the course over the few weeks, but in the meantime you can have a look at any of the others blog posts about EvangelOz =)

2010 Wrapup

I am a few days late to post this, but oh well =)

2010 was an amazing year for me, I joined Readify in February and have been doing as learning and community work as I can. Last year I managed to present 6 times, and I hope to present more this year.

Presentations

  • April, PerthDotNet VSTO in Visual Studio 2010
  • May, Alt.NET Melbourne TDD, Unit Testing and Mocking
  • June, MOSSIG (Melbourne) Developing Add-ins with VSTO
  • August, TechEd (Gold Coast) Developing with the VSTO Platform
  • November, CodeCampOz (Wagga Wagga) Extending Office with VSTO
  • November, SDDN (Perth) MahTweets for Windows Phone 7

I also attended the Microsoft Evangelism Academy just before Christmas, which was a 3 day intense training course organised by Sarah Vaughn and Andrew Coates from Microsoft DPE with the goal of improving the presentation skills of 8 the lucky people that were selected. Read more about it here.

Open Source Work

  • VSTO Contrib - Collection of libraries which make COM Interop much easier, and add IoC support to VSTO Add-ins (which making it easier to test).
  • Fibre Async Framework - Another Async framework, which runs on Silverlight and WP7 as well as .NET 3.5/4.0. It simply allows you to coordinate async work, or perform work asynchronously. Goals are similar to the Task parallel library in .NET 4.0, but has a simpler API, and works on more frameworks. I would like to think it has a lower barrier to entry than other frameworks due to it’s simplicity.
  • AutoMapper - Added Inheritance to AutoMapper, made AutoMapper feel MUCH more predictable. My fork is available at https://github.com/JakeGinnivan/AutoMapper/ Hopefully the changes will be pulled into the Jimmy’s repository soon =)
  • MahTweets for Windows Phone - Have done a lot on this project, lots of refactoring and cleanups mainly.
  • FunnelWeb Blog -The blog engine that is behind my blog, started by Paul Stovell it is now an awesome open source blog engine based on MVC3.

This year

This year I want to keep up my Open Source work, as well as do more presenting. One of the biggest fails this year is that I have been so busy and have stopped playing Inline Hockey, doing Rock n' Roll and also Ballroom dancing. I will start at least the dancing back up this year.

Look forward to catching up with all the people I have met this year!

RadioButton.IsChecked Bindings

Today I had to build a search screen, it had 3 radio buttons for different types of items to search, and each item had very specific search fields.

On my viewmodel I had 3x IsSearchingBlahItems properties. And bound the IsChecked property on my radio buttons to those properties. I then had some stack panels which were bound to the same properties. Here is what this would look like:

Code Camp Oz 2010

Due to time restraints at the moment this will be a very short blog post.

I have pushed all my latest changes to the VSTO contrib project to codeplex. The url is http://vstocontrib.codeplex.com/.

I will upload my powerpoint deck and release my LinqPad example scripts soon as well.

But to sum up my talk, the VSTO Contrib project makes it easy to:

  • Cleanup your COM References deterministically without cluttering your code
  • Use Ribbon XML ribbons with IoC, view model binding (listens to INotifyPropertyChanged and invalidates ribbon controls when needed) and wires up the current Explorer or Inspector to your ribbon view model.
  • Makes it really easy to use custom task panes, and relate them to ribbons

Adding Inheritance to AutoMapper

Update: This is currently in the Automapper master, and will be included in the v2 release (hopefully Before/After map will also get included, patch submitted).

In my current project, we are leveraging AutoMapper a lot to map our Domain to Dto’s. The major problem we are facing is that our mappings are getting quite complex and bloated, especially for flattened Dtos or Summaries which have properties that cover all the properties from the concrete types they come from. It seemed unnatural that I could define a mapping that looked like:

Quake Style Powershell Console V2

Edit: Updated to fix a problem when there are spaces in the path where Console2.exe is.

I decided I would get this idea working again, when I did, it fell short a few times. I needed a few extra features:

  • Elevated Powershell Console
  • x64 Console
  • I wanted it to work without adding anything to the %path% environmental variable

The goal

win + `

=

Quake Mode Powershell

TechEd 2010

I have been lucky enough to be selected to speak at TechEd this year, and it is only 2 days away!

The backend of my blog blew up a few weeks ago and have been trying to find the time to rebuild it, and I have managed to get it done while fine tuning my talk.

I will be speaking about how to use VSTO as a platform, it is a level 300 talk so expect a lot of code, demo’s and hopefully you will be able to take a few things away. I am really looking forward to this talk and I think that people will be surprised at what you can achieve with VSTO if you know what path to take.

My talk is DEV332 at 8.15 am Thursday morning in Meeting Room 8.

Come listen to DEV332 at TechEd

C# Command Line Argument Parser

I know this has been done to death but nothing I found did the job for me so I started with the one that fitted my needs the most then edited from there.

Original source: http://www.codeproject.com/KB/recipes/command_line.aspx

I have a few specific requirements:

  • It must support lists, or the same argument specified multiple times. If an argument has comma’s in it then it will be treated as a list and split on the comma.
  • It must support paths with a trailing \ ie. –arg:“c:\Users\ginnivanj\My Path\”
  • Has support for flags.

VSTO Contrib

Over the time with working with VSTO, I have created a heap of reusable classes and extensions for VSTO. So I have decided to start a Contrib project.

http://vstocontrib.codeplex.com/

The best class (in my opinion) in the Office.Utility project is the RibbonFactory, it allows you to have a ribbon callback file for each xml ribbon, register all the callback files via IoC (or manually), then the factory will locate the associated Ribbon.xml file and wire up all the callbacks for you. I prefer working with the Ribbon XML model over the designer, but the limitation of only having a single callback class is really annoying. The ribbon factory gets around that

Over the next few months I will write up some more posts about ways to really leverage VSTO, and also write maintainable apps.