# Monday, January 19, 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, January 19, 2009 10:00:53 PM (Eastern Standard Time, UTC-05:00)  #    
# Tuesday, December 02, 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!


Tuesday, December 02, 2008 7:22:26 PM (Eastern Standard Time, UTC-05:00)  #    
# Sunday, November 30, 2008

This has been a very busy fall for me, with more travel than usual. So it was timely to read this article about what got through airport security and what didn't. I actually wasn't worried that the flags, tshirts and pamphlets expressing pro-terrorist views got through ... the mandate is supposed to be to keep out bad items, and your chances of killing someone with a tshirt aren't dependent on what's printed on it. But the 80 ounces of liquid (by using a silly Beer Belly pouch under your shirt) or ordinary water bottles with hand typed Saline Solution labels make me resent every bottle of water, can of coke etc that's been taken from me. And the ID triangle thing was new to me ... in Canada the security people don't check your ID but the airline does, a lot.

You go along, of course you go along. A security type took my passport from me while my stuff was going through the Xray. I asked for it back. She said "you can have it on the other side." I said "you are allowed my boarding pass, but not my passport." She said "you wanna argue or you wanna catch your plane?". Sigh. She gave it back on the other side, but what if she hadn't? They would have all said "oh no ma'am, our staff never take your passport, only your boarding pass."

The article is definitely worth a read.


Sunday, November 30, 2008 10:45:32 AM (Eastern Standard Time, UTC-05:00)  #    
# Saturday, November 29, 2008

Whenever I go to a conference I run into people who make software so differently than I make it. I also run into people who do the same things I'm doing, but they have a name for it and I don't. Someone asked me recently if I "did Agile." I always answer that we're not "formally Agile" which frankly I find very funny. We do have a client though, for whom we ship a new release every month. They ask for things (typically with emails) we design and estimate, together we draw up a list of what will be in the next phase and when it will release, and then we mostly do that. I say mostly because sometimes over the month they change their minds, or their customers impose a business change on them, and we tweak the list a little, but just about every month they get a refresh and their software has evolved to meet their new needs.

So there are plenty of people who will tell me, since I ship every month, I'm Agile. I guess so. But we don't do scrum. We don't do burn lists. We don't do pair programming. We don't have a daily anything. We manage all this with TFS and with a Word document called "phase 13 as approved.doc" that has a table in it listing work items, their descriptions, and their status. We don't really use any of the deliverables or artifacts that are considered Agile today.

So, with that mindset (what makes you Agile) I have two links for you.

First, http://martinfowler.com/articles/newMethodology.html. This is Martin Fowler on agility, the essay he first wrote in 2000. It talks about how requirements change, how people are not all the same, how customers adapt, and so on. To my great surprise it lists the Rational Unified Process as an Agile technique. His conclusion is a damn good one:

So where should you not use an agile method? I think it primarily comes down the people. If the people involved aren't interested in the kind of intense collaboration that agile working requires, then it's going to be a big struggle to get them to work with it. In particular I think that this means you should never try to impose agile working on a team that doesn't want to try it.

Second, http://www.agilemanagement.net/Articles/Papers/CMMIandAgileWhynotembrace.html. Unfortunately the paper is only available as a PDF, but this page has a link to it. The abstract:

Agile development methods and CMMI (Capability Maturity Model® Integration) best practices are often perceived to be at odds with each other. This report clarifies why the discord need not exist and proposes that CMMI and Agile champions work toward deriving benefit from using both and exploit synergies that have the potential to dramatically improve business performance.

OK, so it isn't written in a conversational style, but you know, it makes some really good points. I've just started a project in which we're using the CMMI templates for TFS, just to see what it's like, and we're being our usual "get the detailed requirements and do the design at the last responsible moment" on it (we have sensible phases which makes this possible) and you know what? It's working pretty well.

So, you think you know your methodologies, but I recommend you read both of these papers and then see how you feel. You may be surprised. You may be pleased (I was.) And you may start working more effectively.


Saturday, November 29, 2008 9:11:54 AM (Eastern Standard Time, UTC-05:00)  #    
# Friday, November 28, 2008

So maybe Bill never said "640K ought to be enough for anybody" or maybe he did. Truth is there was a time when we had far far less than 640 to play with, when we had 64 or so and didn't complain, and there are still people and languages that are left over from that time, who treasure every byte and are careful with their allocations. That's mostly just a vestige and not a useful habit, but there is one place where that approach is still right - when every byte of your code will get downloaded every time it is run. In other words, code on a web page that will execute client side. Everything old is new again as you know.

So, how much cool can you pack into a tiny payload? Or as the Mix folks ask,

What could you create for the Web if you only had 10 kilobytes of code? It's time to exercise your minimalist creativity and get back to basics - back to optimizing every little byte like your life depended on it.

Yep, it's a contest, with real money prizes ($1500) plus a fully-paid trip to Mix for one winner. The rules:

  • Source files and embedded images for your web application cannot exceed a size of 10 kilobytes (not compiled); only the xaml, cs, vb, or "language of your choice" files and embedded resources are counted against the 10 kilobyte limit. Build instruction files are not counted against the limit (for example, Visual Studio Solution and Project files).
  • Your web application must either use Microsoft® Silverlight™ or Windows Presentation Foundation, as a XAML Browser Application running in Partial Trust or as a ClickOnce application.
  • Your web application cannot include external libraries or assemblies. Data from web services is permitted, provided that you have obtained all consents, approvals, or licenses required to use the data as part of the web application that you create. Although data can be requested, you cannot use services to provide extra functionality.
  • Entries will be judged on originality, graphic design / user experience and functionality.

Gonna enter?


Friday, November 28, 2008 8:57:23 AM (Eastern Standard Time, UTC-05:00)  #    
# Thursday, November 27, 2008

I'm a very positive person, as anyone will tell you who has met me. I actively work at keeping a happy attitude in a variety of circumstances. And it is work, more than just smiling no matter what happens. For example, who you choose to spend time with makes a big difference - spend a conference with someone cynical who keeps saying "what a waste of time this is" and you will skip most sessions and go home saying the conference was a waste of time. Spend your time with someone excited about the material who joins in conversations about what this might mean and where that could take us, and you'll go home excited and rewarded for your week away.

In that spirit I identified immediately with this quote I saw on Scott Berkun's blog:

I hate a song that makes you think that you are just born to lose. Bound to lose. No good to nobody. No good for nothing. Because you are too old or too young or too fat or too slim or too ugly or too this or too that. Songs that run you down or poke fun at you on account of your bad luck or hard travelling.

I am out to fight those songs to my very last breath of air and my last drop of blood. I am out to sing songs that will prove to you that this is your world and that if it has hit you pretty hard and knocked you for a dozen loops, no matter what color, what size you are, how you are built, I am out to sing the songs that make you take pride in yourself and in your work.

Scott has a few more paragraphs, and identifies the speaker, so just to make you click over, I'm not going to. I'll give you a hint though: I saw his son just last month, which I suppose is no coincidence.


Thursday, November 27, 2008 8:44:55 AM (Eastern Standard Time, UTC-05:00)  #    
# Wednesday, November 26, 2008

I mentioned Andy's blog a few entries ago. Now he is selling some funny shirts to raise money for two deserving charities: one that treats and prevents blindness and another that provides low cost prosthetic feet. Excellent causes.


You know you want one...



Wednesday, November 26, 2008 10:39:09 AM (Eastern Standard Time, UTC-05:00)  #    
# Tuesday, November 25, 2008

It seems like every year I read about how something we think is new and exciting, or at least fairly recent, has been kicking around for a long time. (I mentioned video games a while back, for example.) Recently on the same day I read a Jeff Atwood blog entry and a Wired article about Ray Ozzie. Here are some quotes:

From Jeff:

From On December 9, 1968, Douglas C. Engelbart and the group of 17 researchers working with him in the Augmentation Research Center at Stanford Research Institute in Menlo Park, CA, presented a 90-minute live public demonstration of the online system, NLS, they had been working on since 1962. The public presentation was a session in the Fall Joint Computer Conference held at the Convention Center in San Francisco, and it was attended by about 1,000 computer professionals. This was the public debut of the computer mouse. But the mouse was only one of many innovations demonstrated that day, including hypertext, object addressing and dynamic file linking, as well as shared-screen collaboration involving two persons at different sites communicating over a network with audio and video interface.

and from the Wired article, talking about 1973:

Users had direct contact and direct feedback—not just to computers but to one another. "They had this thing called Personal Notes, which you would call email," Ozzie says. "They had this thing called Talkomatic, which is like real-time group chat. And they had this thing called Term-Talk, which was like instant messaging." It was also a way-before-its-time Valhalla of computer gaming. Programmers on the system had gone far beyond the tic-tac-toe and hangman that were popular in other computer centers to pioneer multiplayer online games, notably the Star Trek-inspired Empire. In retrospect, looking at the Plato community was like peeking through a wormhole and viewing the 21st-century Internet—but without the spam, fraud, and commercialism that would come with the real thing 35 years later.

I wonder what technology we're using today that only kinda sorta works and just a few visionaries (eccentrics?) are using it, but 30 or 40 years from now when it's ubiquitous, we'll all be "hey! we had that in 2008! I think I have a screenshot around here somewhere..."


Tuesday, November 25, 2008 10:31:23 AM (Eastern Standard Time, UTC-05:00)  #