# Thursday, September 29, 2005

One of the real ironies of consulting life is that when you are super busy doing work, you don't have time to look for the next piece of work. It can cause a really dangerous work hard - no money - take work you really shouldn't - work unhappily - still no real money - cycle. The only way around that is to have the discipline to land project B before project A is finished. The larger you are the easier this is, because if 1/3 of your firm has finished a project and has nothing to do, they can pitch in on whatever the other 2/3 are doing for a bit while you sell the next thing. But at six people, we really don't have that kind of buffer.

Now that I've been doing this for 20 years, and have a reputation, opportunities quite often come to me. That's certainly better than calling around trying to get people to give me work. But even the most golden opportunities come with work attached. "Can you get me a resume by noon?" But I don't have a resume, I have worked for the same company with the same job title for two decades. I can give you a bio that lists my skills and awards and some recent projects I've been on. "Sure!" Only thing is, it needs to be updated, or shortened, or lengthened, or something. It's worse when they want resumes or bios from three or four of us. Or "could you flip through the scope of work and give me a quick ballpark of how much work you think your part will be? We'll write up the detailed estimate together next week." Some truly wonderful stuff just lands in my lap, but all of it requires work to ripen it into fruit. Finding the time to do that work, quickly and responsively, and tailoring the bio or company description or whatnot to the opportunity... that's where contracts come from. Back to work for me.


Thursday, September 29, 2005 4:29:50 PM (Eastern Daylight Time, UTC-04:00)  #    

The wheels of standards committees grind exceedingly fine and slow, but they do grind. Herb Sutter reports that after almost two years and eleven face-to-face meetings, the working group is recommending the C++/CLI standard for binding ISO C++ to ISO CLI (the most popular implementation of the CLI is in the CLR of course) become an Ecma standard. Next stop: an ISO standard.

Congratulations to all involved!

Thursday, September 29, 2005 7:16:59 AM (Eastern Daylight Time, UTC-04:00)  #    
# Sunday, September 11, 2005

We're having a CODE CAMP in Toronto in January! I'm so excited! A Code Camp is a very different kind of community event, and one that can only happen when you have a strong and vibrant developer community. If you've never heard of it, check the Code Camp Manifesto or just Google for it and find people saying things like this:

"the buzz from Atlanta Code Camp is starting to wear off a bit and let me just say I had a great time."

"I laughed, I cried, I found a bunch of new tools to use."

"When I asked him if it was as good as a commercial conference he said that he thought so.  Perhaps even better.  And that comes from a guy who was just at TechEd 6 weeks ago."

Now the deal with Code Camps is that they ALWAYS:

  • Are free
  • Are held outside business hours (typically a weekend)
  • Feature a great variety of speakers and topics (except no marketing fluff allowed)
  • Provide an opportunity to speak for the first time

Many Code Camp attendees have never been to a daytime or paid-attendance event - we don't all work for companies that make that possible, after all. If you've been to plenty of such events, you might consider speaking at this one: an hour on something you know well because you're doing it at work isn't hard at all, really. This is a great chance to "crossover" to the other side of the microphone. If you haven't been to lots of these events -- you've never been able to get to a DevDays or a VSLive, or heaven forbid something out of town with actual travel expenses -- plan now to set aside a weekend in January to fill your brain with free technical content and get to know the developer community in the Toronto area.

Toronto is a large city, over 3 million people, and the "Greater Toronto Area" supports a LOT of user groups:

And out of all these people, who is spearheading the Code Camp initiative? My two co-executives from the East Of Toronto group, that's who! I'm very proud of that. The GTA is full of good organizers and speakers (and has three Regional Directors on top of that) and I know we will be able to put on an amazing day. Right now Jean-Luc is finding a location and sponsors (or Contributors as Code Camp likes to call them) and shortly he'll be gathering speakers. You should use his blog to get in touch. My firm is sponsoring for sure: a Code Camp is a really low-cost event to put on and reaches a number of developers other events never do.


ps: I wanted to say that this would be the first Code Camp outside the USA, but once again Derek Hatchard has shown what a star he is: there will be a Code Camp in Atlantic Canada just next month. Go Derek!

Update: They've had them in the UK too (http://www.developerday.co.uk/ddd/default.asp ... Benjamin Mitchell is the RD involved in those) and in Australia (www.codecampoz.com.)

Sunday, September 11, 2005 10:42:25 AM (Eastern Daylight Time, UTC-04:00)  #    
# Friday, September 09, 2005

This morning I got an email that my blog was down... turned out that one of the drives in my web server had died. We were in the process of moving everything off that server anyway, to a more modern one, but needless to say this accelerated the schedule a little. While we were at it, we upgraded dasBlog to 1.8. I believe all the comment spam should have gone as part of the upgrade, and from now on you will need to do the Captcha thing to leave comments. If you hate that, email me and we'll discuss it. I sure was hating clearing out the you-know-what.


Friday, September 09, 2005 11:13:08 PM (Eastern Daylight Time, UTC-04:00)  #    
# Monday, September 05, 2005

The Regional Directors had so much fun doing the GrokTalks at Tech Ed USA, we just couldn't leave it as a one-time thing. So at the PDC, we've arranged an event called PDC Underground. While we won't be filming and uploading the talks, we will be able to accomodate an actual audience. If you're going to be in LA, or if you're there all the time anyway, you want to come to this event. Ten RDs, fifteen minutes each, just the essence of what you need to know about one topic.

I'm doing "C++ is alive and well":

Abstract: The "C++ for the runtime" in Visual Studio 2005, C++/CLI, features everything developers love about C++ -- including templates and deterministic destruction -- and everything we love about the CLR -- including generics and garbage collection. This best-of-both-worlds approach enables the fastest and easiest interop between managed and unmanaged code. Preserve your legacy without a port, use the same binaries to support old and new clients, control the cost of interop: that's what C++ does so well.

More details and a registration link at http://www.pdcunderground.com/. If you're a member of a user group in the LA area, contact your leader who probably can get you a button to wear.

See you there!


Monday, September 05, 2005 12:54:03 PM (Eastern Daylight Time, UTC-04:00)  #    
# Wednesday, August 31, 2005

Kang Su kicks off his blog (two and a half weeks ago, I can't believe it took me this long to notice) with a big red HIRING in the middle of his first post, then goes on to give you the C++-eye view of PDC including the so-worth-your-while upgrade lab.  Then he tells you how to find out what the Profile Guided Optimization process discovered about your code. Excellent and you know I'll be reading regularly.

Next time I get out to Redmond, though, I am going to have to ask for a tour of the office so I can see where they keep the “your turn to blog regularly” baton or hat or whatever they use. It seems as soon as one or two start, the others all stop. :-(.


Wednesday, August 31, 2005 1:49:30 PM (Eastern Daylight Time, UTC-04:00)  #    
# Wednesday, August 24, 2005

In less than three weeks I will be at the PDC! On the first day, I'll be a panelist at the Women in Technology panel. If you've been to one of these at TechEd, all I can say is PDC isn't TechEd. Things will be a little different this time. Here's the abstract that's going in the guide:

This panel will cover how women have used their intelligence and creativity to excel in the software industry.  Hear from women IT professionals who are successful in a male-dominated industry.  Learn, connect, and engage at this networking panel, where your questions drive the agenda, and hear tips and tricks on how to succeed as a woman developer or technical professional in the computer sciences and technology marketing.  Both men and women are invited to join in the conversation, and learn from each other about how to grow diversity in the IT industry.

One thing that will be the same is the quality of the panelists. I'm not going to brag about myself, but let me tell you the other panelists are fantastic: Angela Mills (Microsoft), Anne Thomas Manes (Burton Group), Dee Dee Walsh (Microsoft), Michele Leroux Bustamente (IDesign Inc.), Shoshanna Budzianowski (Microsoft) and our moderator, Esther Schindler (Ziff-Davis). I've been lucky enough to watch most of them in action before and you're sure to pick up valuable career insight.

And in case that sentence from the abstract didn't quite click the first time, let me paste it again: Both men and women are invited to join in the conversation. See you there!


Wednesday, August 24, 2005 8:55:02 PM (Eastern Daylight Time, UTC-04:00)  #    
# Tuesday, August 23, 2005

Last year I had a marvelous time at Tech Ed Africa, and made the Top 5 list. I am thrilled to announce that I will be there again this year! It will take me about 41 hours to travel from my house to the conference center, and about 36 hours to get home a week later. This place is seriously far from home.

My talks:

Microsoft Visual C++ 2005: A Look at the New Features for Building Fast Native and Managed Code
Whether you build end-to-end applications or components for enhancing larger applications, the new Microsoft Visual C++ 2005 is the power tool for Windows programming. In this presentation we spend extensive time in the Visual C++ 2005 development environment -- highlighting new productivity features -- as we dive into its support for building high-performance, first-class native and managed applications. Learn about native code compiler optimizations, security enhancements, 64-bit development, and support for multiprocessor/grid computing systems. In addition, this presentation demonstrates how Visual C++ 2005 now provides CLR/.NET Framework support that allows it to stand toe-to-toe with any other tool in terms of elegance and productivity… with the additional benefit of high-performance access to native code and the ability to easily move native code to the managed environment.

Microsoft Visual Basic 2005: Application Frameworks and Advanced Language Features
This is a must-see session for Visual Basic developers who are new to Microsoft Visual Studio 2005, and also reviews the major feature changes and additions for beta 2. Take a top-down look at the new application architecture and RAD development enhancements in Whidbey, including several key productivity features that are exclusive to Visual Basic. This session covers the new Visual Basic lightweight application model for client applications, the My namespace, Data, Settings and Resources, and many more features that speed development for connected applications.

Windows Forms: Deploying Applications with ClickOnce
This session covers examples of ClickOnce deployment technology at work in the real-world as well as advanced scenarios, including an in-depth look at leveraging ClickOnce APIs for server-side extensions and on-demand deployment of application components.

Only two things could have made my trip last year better: an extra day to explore and soak in the marvelous place where this conference is held, and a friend from "home" to travel and explore with, to while away the long trip there and back. Can you believe I get both my wishes! I must be living right.

Oh, did you want to register? Too bad, it's sold out. :-)


Tuesday, August 23, 2005 7:30:46 AM (Eastern Daylight Time, UTC-04:00)  #    
# Sunday, August 21, 2005

Gregory Consulting is in its 20th year of operation, and at the moment has six employees. I think it's fair to point out you can't stay solvent over that length of time, meeting payroll, paying rent and ISP fees, without some business sense. One of our most important rules is Fail Fast. If you're doing something that might not work, and it's going to fail, it is so much better to fail in the first week than in the sixth month. This leads to all kinds of useful practises like doing the risky bits first, prototyping, making little proof of concept apps or subapps, and the like. Note that we don't do these things because a Methodology said we should. We do them because our gut or some little voice in our head says “are you sure that's going to work?” and then our brain comes up with a way to fail fast. Of course not failing at all is better than failing, and these techniques can also put you in the delightful position of knowing it's going to work, and just having to write it.

Fail Fast and "let's try it" can also save you a ton of time spent arguing about what's the best way to do something. Last week, I was at a early code review of an partly-written ASP.NET 2.0 application where someone had put some DataSet instances into Session even though they were used only on a single page. I wanted them in ViewState, because sessions expire and you have some hoops to jump through to ensure the work won't be lost. One developer on the team said putting things in ViewState made your pages too big. I said that wasn't an issue for the amount of data in this app. After about ten minutes of "what if someone pulls up the whole department for a year?" back and forth we decided to just try it. It took 30 seconds to flip the code between using Session and using ViewState. And guess what? After disabling viewstate on the grid, which was making both versions of the page really slow, there was no measurable difference (even for a year's data) between the two approaches. So it's going to use ViewState to make the coding simpler. But I would have been happy even if the experiment had shown the ViewState approach was infeasible, because we'd have found out before a hundred pages were coded.

Joel Spolsky says pretty much any methodology makes good software in the hands of those who are good enough to develop methodologies, and they pretty much all can fail in the hands of those who just follow the rules and do what the methodology says. Big complex process (and as we grow, our process naturally gets more complex) runs the risk of becoming opaque to those who are asked to follow it. That's why we like to come back to some touchstones that explain why we do what we do. Like Fail Fast.

Failure can be a good thing. If it saves you from following a doomed path for a year, you're glad to have failed early rather than late. If you can learn from something that didn't work, it will have earned its keep. This morning I read a story by Steven Sinofsky (no longer an entry level programmer :-)) at Microsoft about the failure of a C++ application framework, essentially the first try at what became MFC. He concludes:

When I think back about the dismal failure of our first library ... and how we regrouped, learned lessons, and put those into play, I realized that without that first failure we never would have developed the success criteria that allowed us to build MFC.

I'm never afraid to fail and I am not ashamed when I do. The only shameful things would be to continue to waste time avoiding the final decision that it is a failure, or not to learn from it.


Sunday, August 21, 2005 11:51:49 AM (Eastern Daylight Time, UTC-04:00)  #