# Sunday, 25 January 2009

I attended more events than usual in 2008, and I spoke at roughly the same number as usual, for me. But many people are saying they plan to attend fewer events in 2009 than usual, and what’s more they’re saying that might not be a bad thing. In a time when sessions are online, when you can search the web for the blog of the person who wrote the feature you’re interested in, why would you pay for a plane ticket and a hotel room, not to mention a substantial admission fee? I can think of at least three reasons why I do it: for the time spent with likeminded attendees, for the time spent with speakers, and as an oasis from my other obligations that’s devoted to this particular topic. There’s a fourth that you won’t notice unless you go to conferences that are well-curated: somebody is taking the time to select sessions, to select speakers, and even to get the sessions delivered in a sensible order. For more on this point, you should read Andrew Brust’s blog entry on the importance of track chairs in the 21st century.

Kate

Sunday, 25 January 2009 22:27:31 (Eastern Standard Time, UTC-05:00)  #    Comments [0]
# Saturday, 24 January 2009

Short answer: yes, you can open up Visual Studio 2008’s Team Explorer and point it at your not-upgraded-yet 2005 TFS server and be happy. If you are curious about other levels of mixing and matching and compatibility, check Grant Holliday’s chart.

Kate

Saturday, 24 January 2009 22:17:34 (Eastern Standard Time, UTC-05:00)  #    Comments [0]
# Friday, 23 January 2009

I was working on a service recently (pretty cool actually, it is a Windows Service that hosts a WCF Web Service) and I was fiddling with it and installing and uninstalling it, and I was getting frustrated. I couldn’t install the new version because it already existed. I couldn’t uninstall it because it was “marked for deletion” whatever that means. I found a knowledge base article which suggested rebooting my machine. Sure, that’s no trouble at all. Grr. Then I found Avner Kashtan’s blog entry. I can’t believe the simple fix he provides. And it WORKS! Go on, read it there. You’ll thank me.

Kate

Friday, 23 January 2009 22:16:36 (Eastern Standard Time, UTC-05:00)  #    Comments [2]
# Thursday, 22 January 2009

Leon Bambrick, aka Secret Geek, reveals the true differences between small businesses and enterprises. Like Dilbert, it’s only funny because it’s true.

Kate

Thursday, 22 January 2009 22:15:31 (Eastern Standard Time, UTC-05:00)  #    Comments [0]
# Wednesday, 21 January 2009

Continuing my theme of 2008 in review, the year was interesting because it featured the breaking of two rules I have long held to be utterly true. These rules are cynical and depressing and people generally do not want to believe them. I am known for my optimism and yet I assure you these rules are true and you cannot escape them:

  • There is no such thing as a “slow yes”.
  • You will never get paying work (or a sale) from that guy you sat next to on the airplane.

Let’s start with the mythical “slow yes.” All there really is in this world is the “fast yes”, the “fast no”, and the “slow no”. I am sure you have been asked to give somebody a donation, or to buy something, that you didn’t really want to give or buy, and so you said “can you send me a letter about that?” or “can you send me a proposal?” when what you really meant was “can I please get off the phone so I don’t have to face saying no to you?” It’s a “slow no.” We have all done this. Yet for some reason when we are trying to get the sales (or the donations, or to be hired) we get off the phone and tell our co-workers or family or whatever, “Success! He wants me to send a proposal!” or “Score! They’ve got nothing now, but he wants me to phone back in a month!”

I have been a consultant for over 20 years. When people want to hire our firm to help with a problem they’re experiencing, they hire us. Sometimes there’s an RFP to respond to, sometimes they need to show a written proposal to someone, but generally they say “I want you to do this” and then we talk about paperwork. When people don’t particularly want to hire us (and usually that’s because the conversation was my idea, and I am trying to sell work to people who were minding their own business) they ask for proposals, or they say “well, we would have to have a meeting about that but I’m really busy this week so how about I call you in two or three weeks?” This is the start of the “slow no”. They won’t ever say “no” or “go away” but they won’t ever give you work either. You can spend days and weeks and months thinking you are “working on sales” because you are emailing these people and asking if there’s been any change, you’re sending these people generic proposals (because you don’t know their specific problem, and that in turn is because they haven’t told you a problem they want you to solve, and you know why that is? They don’t have a problem they want you to solve), and you’re updating your tickle lists, all of which sure as hell feels like work, but is not in fact accomplishing anything.

So when I finally learned this lesson (and I believe I read it somewhere, and fought it for a while, and then came to know it was true) my life got simpler. I rarely phone or email strangers (or even former clients) and try to pester them into giving me work. If for some reason I do, and they’re not very interested in hiring us, I don’t put a lot of time and effort into trying to persuade them otherwise. I assume that people who want to hire us will make the effort to do so. This has lowered my stress tremendously.

But you know what they say about the exception that proves the rule? We got an RFP from some people we didn’t know, through a third party who felt we’d be good for it. It was highly specific about what technology to use – an Access application distributed as a single file to be installed on each workstation, a SQL backend to be shared by all these workstations, no offline story, a VB6 application to run in the system tray and notify you if another user added something to the shared repository you should know about, that sort of thing – and our first guess of effort doing it their way was well over (perhaps even double) what the third party believed was their budget. So we wrote back and declined to bid. Months later, we heard they were putting it out again. So we asked if it was ok to ignore all their tech specs and submit a solution to the underlying business problem, which was well described in their material. They said go ahead, so we did: suggesting a SharePoint store, some workflow to handle their special business rules, and some Reporting Services goodness for the managers. Total cost including buying all the SharePoint licenses at full retail was less than the whispered budget, and we were pulling in a raft of features that they had on their wishlist for v2 such as email notifications when things were changed. It was a great proposal.

Great or not, it got no response. After about 2 or 3 months I wrote to confirm that we didn’t get it. And was told “actually, we haven’t decided yet.” I imagined a conversation in a boardroom somewhere with one person saying “can she not read? We clearly said SYSTEM TRAY!” and another saying “look how much more solution to our problems we will get for the money!” Some more months went by and you know what? We got the gig. Well over a year from the first RFP to being hired for the project. It’s underway now. I will point out that although this was a slow yes, it didn’t get to yes as a result of pestering actions on my part. I patiently waited (while working on other stuff for real clients) and these guys came to me when their process had worked its way through to a decision.

The second rule that sales people need to learn is that those “hey cool your product sounds perfect for us why don’t you drop me an email” conversations on the plane just do not, in general, lead to sales. Again, the guy just wants to be nice and to go away in a pleasant and positive way. Pestering Mr 13B to see if he’s ready to pull the trigger on the order that will save your year may feel like work, but it isn’t getting you anywhere. If Mr 13B wanted your product, he would have taken your card, and he would have emailed you the minute he got his laptop on the network. That silence and absence of emails from Mr 13B is basically “he’s just not that into you” or in this case, your product.

That said, here’s the story that breaks the rule. Sasha, my MVP lead, spent some time last year in a customs lineup, and got chatting with the fellow next to him in line. That fellow needed some mentoring or consulting from a senior person with solid C++ and project management skills who could suggest a good architecture for his new product, and then help to get it built. Sasha took the guy’s card and sent me one of those “X, meet Y” emails. A conversation ensued, followed by meetings, and the end result: the product is very clever and I am delighted to be part of the team that is building it. We ended up with no C++ in the product, but that doesn’t worry me at all. It meets a genuine business need and supports the way people in that business need to do their jobs. And my client would not have found me if he wasn’t willing to chat to a complete stranger about the software he was trying to build.

I still say the rules are true, despite the specific exceptions I met this year. Or more accurately, that the smart way to live your life is as though these rules are true. Selling consulting services is not like selling timeshares or couches. You can’t bully people into it or catch them in a moment of weakness and trick them into saying yes. They have to want to choose you to solve their problems. That isn’t something you can persuade them to want by “following up” every two weeks. So I just plain do not do that. Some folks who I like and haven’t worked with for a while get a note sometimes (especially if I come across something that reminds me of them) but I don’t set out to make people buy our services. I don’t lose sales by spending less time “working on sales” and I certainly don’t lose sleep. If anything it frees my time to talk to people who genuinely want our help. That’s way more fun anyway.

Kate

Wednesday, 21 January 2009 22:14:22 (Eastern Standard Time, UTC-05:00)  #    Comments [0]
# Tuesday, 20 January 2009

Anyone who blogs on technical topics soon notices they get a lot more hits if they wander into non technical areas for a post or two. That’s just because there are more non technical people out there, searching for tips on stain removal or coupons for TGI Fridays, than there are people who want to know how to get a manifest on an executable or how to write a C++/CLI wrapper for native code or what’s coming in Visual Studio 2010. That’s why my top ten posts last year are:

1 - XPS Document Viewer – Nov 19th 2006
I guess people are still getting XPS documents and don’t know how to read them. OK. Not sure why my page would be the one that over 7000 people find, but what the heck, the information is still valid.


2 - Reading Office 2007 files – Nov 23rd 2006
Also from two years ago but people still need to know this. I send people this link whenever I get one of those “I can’t read your attachment because I’m not on Office 2007 yet” replies to an email. I didn’t send it out 4000 times though, so I guess a lot of people are searching for this stuff.


3 - Try Www.mappoint.com – August 18th 2004
I read recently that people don’t seem to realize they can type URLS into the address bar on their browsers, and have their home pages set to search engines, and actually type entire URLS into search boxes so they can click the result. I would deny this could happen, except many years ago I had a client who did just this, so I know there really are people who do this. I also can’t think of any other reason why over 2500 people would read a four year old post comparing MapPoint to MapQuest given that everybody these days uses either maps.google.com or maps.live.com.


4 - Introduction to Workflow in SharePoint 2007 – June 22nd 2006
Yep, workflow was a hugely important addition to SharePoint. We’re loving it in the SharePoint project we’re doing now. Again this is a topic that must surely be better covered somewhere else though. Still almost 2500 people stopped by to learn about workflow – I hope they followed the link to learn more, and learn something a little more recent – say from after the product was released?


5 - How to earn a million Aeroplan miles – Oct 1st 2005
Now this is really non-technical, but it caught my attention and I guess plenty of other people’s too. I have some other blog entries from time to time about Aeroplan miles, but I don’t really cover how to earn them. For that I highly recommend Flyertalk’s Aeroplan forum.


6 - Batch-convert Visual Studio 2005 projects to Visual Studio 2008 – Dec 17th 2007
The most recent entry yet in this top ten. It makes sense that something that gets hits all year does better than something that wasn’t even around for the first half of 2008. And this is a useful tip I haven’t seen many other places. All those searching people should just subscribe to John Robbins – searching only helps you if you know something exists and want to find it. Smart blogs like John show you things you hadn’t imagined existing.


7 - Another Way to Get the Shield on a Button (or Anywhere Else) – Jan 30th 2008
Finally, something from 2008 in the 2008 top ten! And this is a good tip from Daniel Moth. Remember, the shield on a menu item or button doesn’t bring up the UAC prompt any more than putting ... on a menu item brings up a dialog. And nothing puts the shield there for you if you trigger a prompt any more than something puts the ... for you when it sees you have code to show a dialog. All of this is just sensible developer tradition that helps users feel comfortable with the software they’re using. So please play along and help people know what to expect.


8 - Don't compile MFC apps with /clr:pure – Jan 17th 2007
This one seemed like a no-brainer – MFC includes native stuff, /clr:pure means I don’t have any native stuff, but I was getting emails asking for help and this kept turning out to be the issue. So I blogged it. A lot of my blog topics are the answers to random emails I get from people who are looking for help. This way an extra 1500 or so people saw the answer in 2008.


9 - Hot Laptop? Here's a tip – May 14th 2006
It’s still good advice for working with an overheating laptop. I’m not sure if the searchers all had that problem or were using “hot” more metaphorically.


10 - Adding a manifest to a Vista application – Oct 3rd 2006
This is mostly a link over to Catherine Heller’s Visual Studio 2005 instructions, except that I really wanted to call out how much less work it was for Visual C++ compared to C# and VB.NET. Anyway it’s all a ton easier with Visual Studio 2008 these days.


What else can I tell you from my stats? I got almost a million visits over the year, and they averaged 2.71 requests – meaning most folks clicked around a bit once they arrived. That’s heartening. In 2008 I set myself a goal to blog every day. I didn’t achieve that – there were several long gaps in there – but I did post 135 times. I still like the quote from my post on June 1st, resuming after a four-month gap: “Blogging, like speaking at a Quaker meeting, is something one must do only if the spirit moves one.” I’m looking forward to having my spirit move me hundreds of times in 2009.

Kate

Tuesday, 20 January 2009 22:07:58 (Eastern Standard Time, UTC-05:00)  #    Comments [0]
# Monday, 19 January 2009

2008 was a tumultuous year for me so I thought I would start a new tradition of doing a retrospective post.

In January, I started doing something at Trent that I had never done before in ten years of teaching there a course or two a year – teach the same course twice at once, on different nights in different locations. I think the Tuesday night people got a better course since I in effect rehearsed for them each Monday morning :-). The marking load was a little difficult but I managed it. Also in January I had a geekspeak appearance, and the planning started in earnest for Tech Ed.

In February I spoke at my own user group, which is always a treat, and the Toronto Heroes Happen Here event introduced Visual Studio 2008, SQL Server 2008, and Windows 2008 to Toronto.

March kicked off with SD West, where I did two sessions (Vista programming for half a day, and some Practical VSTS tips) and recorded a video interview. I really enjoyed SD West’s sense of difference – the attendees, speakers, and topics all had a little fresh and unusual twist to me compared to the conferences Microsoft runs. My schedule doesn’t often let me get to third party conferences but it’s definitely enjoyable when it does. Also in March, we closed our Peterborough offices after nearly a decade there, and consolidated back to a single office attached to our home. Times have changed since we set up the Peterborough offices – we have high speed Internet at home, couriers are no longer an important delivery mechanism for us, and we haven’t employed a university student for many years – so we decided paying rent and commuting 45 minutes each way every day was a foolish habit. It really has been one of my best decisions of the year.

April’s big fun was the MVP Summit. My schedule was jam-packed and my only regret was that the C++ team didn’t schedule any boring or irrelevant parts of the day that might have let me go visit another team to broaden my horizons.

In May, Chris Dufour and I held our own Heroes Happen Here launches in Peterborough and Whitby. We had a scaled down version of the Toronto event and enjoyed it a great deal. Then DevTeach came to town – my absolute favourite third party conference always. As well it provided an opportunity for the Canadian RDs to get together and that is never a bad thing!

June, of course, meant Tech Ed. A precon, lunch with Bill Gates, three breakouts, two podcasts, assorted booth duty / ask the experts / etc plus dinners, receptions and side meetings made for a whirlwind week. The sort of thing I work all year to get, to be honest ... I loved it!

I started July by recording a .NET Rocks episode. Another thing I don’t get to do enough of. Then I just settled down and worked on projects for a while. Community activity is always a bit slow in the summer. As my project work intensified (nothing I can announce at the moment) I stayed heads down right through to the end of October when the PDC rolled around. We were all full of pent-up PDC demand after so long without one, and it was good, really good.

Just one week home after PDC, and trying to catch up on that project work, and it was off to Barcelona (maybe for the last time?) for Tech Ed Europe. I would have had an amazingly great time even if I hadn’t placed a talk in the top ten, but I was lucky enough to do just that. The food, the scenery, the weather – I am really going to miss Barcelona.

In December I got back on the community stage by visiting three southern cities to tell the story of Vista Bridge. I got caught in a snowstorm in Baton Rouge, the like of which they get once or twice a century, just to add a little spice to the tale. And that brings us around to the end of the year. What's next?

Monday, 19 January 2009 22:00:53 (Eastern Standard Time, UTC-05:00)  #    Comments [0]
# Tuesday, 02 December 2008

So is there anything you hate more than the old "Unknown Error" when you're doing Sharepoint development? I found this tip on Madhur Ahuja's old blog (he moved it earlier this year) and it's short enough I can paste it here:

Find the web.config for the site you normally use as your development site. Locate this tag:

<SafeMode ... CallStack="false">
and change it to CallStack="true".

Set <CUSTOMERRORS mode="On">to mode="Off".

Set <compilation debug="false" batch="false">to <compilation debug="true" batch="true">

Now you will get the full stack trace as soon as the error is raised.

Works like a charm! Well done Madhur, and thankyou!

Kate

Tuesday, 02 December 2008 19:22:26 (Eastern Standard Time, UTC-05:00)  #    Comments [0]