spout

September 12, 2015 spout

Choose HTML for UI Development

Choose HTML for UI Development

On Sept. 10, 2015, Winston Kodogo writes:

January 4, 2015 .net spout

Handling Orientation Changes in Xamarin.Forms Apps

Handling Orientation Changes in Xamarin.Forms Apps

By default, Xamarin.Forms handles orientation changes for you automatically, e.g.

ss1[5]
January 2, 2015 .net spout

Launching the Native Map App from Xamarin.Forms

My goal was to take the name and address of a place and show it on the native map app regardless of what mobile platform on which my app was running. While Xamarin.Forms provides a cross-platform API to launch the URL that starts the map app, the URL format is different depending on whether you’re using the Windows Phone 8 URI scheme for Bing maps, the Android Data URI scheme for the map intent or the Apple URL scheme for maps.

This is what I came up with:

January 1, 2015 .net spout

App and User Settings in Xamarin.Forms Apps

App and User Settings in Xamarin.Forms Apps

Settings allow you to separate the parameters that configure the behavior of your app separate from the code, which allows you to change that behavior without rebuilding the app. This is handle at the app level for things like server addresses and API keys and at the user level for things like restoring the last user input and theme preferences. Xamarin.Forms provides direct support for neither, but that doesn’t mean you can’t easily add it yourself.

App Settings

November 1, 2014 spout

Microsoft Fan Boy Goes To Google

Microsoft Fan Boy Goes To Google

In 1992, I was a Unix programmer in Minneapolis. I’d graduated with a BS in Computer Science from the University of MN a year earlier and had written my programming assignments in C and C++ via first a VT100 terminal and then a VT100 terminal emulator on my Mac (running System 7, if you’re curious). My day job was at an AT&T VAR building multi-user voice response systems on Unix System V. My favorite editor was vi (not vim) and, like all good vi programmers, I hated emacs with a white hot passion.

Being bored with my current job, I posted my resume on the internet, which meant uploading it in ASCII text to an FTP site where tech companies knew to look for it. The tech company that found it was Intel. To prepare for my interview in Portland, OR, I went to play with a Windows 3.1 machine that someone had set up in the office, but nobody used. I had a Mac at home and Unix at work and for the 10 minutes that I could stand to use it, Windows 3.1 seemed like the worst of both. In spite of my distaste, Intel made an offer I couldn’t refuse and I found myself moving with my new wife to a new city for a new job and a new technology stack.

July 21, 2014 spout interview

Future Proof Your Technical Interviewing Process: The Phone Screen

In 30 years, I’ve done a lot of interviewing from both sides of the table. Because of my chosen profession, my interviewing has been for technical positions, e.g. designers, QA, support, docs, etc., but mostly for developers and program managers, both of which need to understand a system at the code level (actually, I think VPs and CTOs need to understand a system at the code level, too, but the interview process for those kinds of people is a superset of what I’ll be discussing in this series).

In this discussion, I’m going to assume you’ve got a team doing the interview, not just a person. Technical people need to work well in teams and you should have 3-4 people in the interview cycle when you’re picking someone to join the team.

July 17, 2014 spout

Moving My ASP.NET Web Site to Disqus

Moving My ASP.NET Web Site to Disqus

I’m surprised how well that my commentRss proposal has been accepted in the world. As often as not, if I’m digging through an RSS feed for a site that supports comments, that site also provides a commentRss element for each item. When I proposed this element, my thinking was that I could make a comment on an item of interest, then check a box and I’d see async replies in my RSS client, thereby fostering discussion. Unfortunately, RSS clients never took the step of allowing me to subscribe to comments for a particular item and a standard protocol for adding a comment never emerged, which made it even less likely for RSS clients to add that check box. All in all, commentRss is a failed experiment.

Fostering Discussion in Blog Post Comments

July 11, 2014 spout

Moving My Site to Azure: DNS & SSL

Moving My Site to Azure: DNS & SSL

This part 3 of a multi-part series on taking a real-world web site (mine) written to be hosted on an ISP (securewebs.com) and moving it to the cloud (Azure). The first two parts talked about moving my SQL Server instance to SQL Azure and getting my legacy ASP.NET MVC 2 code running inside of Visual Studio 2013 and published to Azure. In this installment, we’ll discuss how I configured DNS and SSL to work with my shiny new Azure web site.

Configuring DNS

July 8, 2014 spout

Moving My Site to Azure: ASP.NET MVC 2

Moving My Site to Azure: ASP.NET MVC 2

In our last episode, I talked about the joy and wonder that is moving my site’s ISP-hosted SQL Server instance to SQL Azure. Once I had the data moved over and the site flipped to using the new database, I needed to move the site itself over, which brought joy and wonder all it’s own.

Moving to Visual Studio 2013

July 7, 2014 spout

Moving My Site to Azure: The Database

Moving My Site to Azure: The Database

In a world where the cloud is not longer the wave of the future, but the reality of the present, it seems pretty clear that it’s time to move sellsbrothers.com from my free ISP hosting (thanks securewebs.com!) to the cloud, specially Microsoft’s Azure. Of course, I’ve had an Azure account since its inception, but there has been lots of work to streamline the Azure development process in the last two years, so now should be the ideal time to jump in and see how blue the waters really are.

As with any modern web property, I’ve got three tiers: presentation, service and database. Since the presentation tier uses server-side generated UI and it’s implementation is bundled together with the service tier, there are two big pieces to move — the ASP.NET site implementation and the SQL Server database instance. I decided to move the database first with the idea that once I got it hosted on Azure, I can simply flip the connection string to point the existing site to the new instance while I was doing the work to move the site separately.

December 23, 2013 spout

Bringing The Popular Tech Meetups to Portland

Bringing The Popular Tech Meetups to Portland

pdx-tech-meetup-logoI’ve been watching the Portland startup scene for years. However, in the last 12 months, it’s really started to take off, so when I had an opportunity to mentor at the recent Portland Startup Weekend, I was all over it. I got to do and see all kinds of wonderful things at PDXSW, but one of the best was meeting Thubten Comerford and Tyler Phillipi. Between the three of us, we’re bringing the very popular Tech Meetup conference format to Portland.

The idea of a Tech Meetup is meant to be focused on pure tech. In fact, at the largest of the Tech Meetups in New York (33,000 members strong!), they have a rule where it’s actually rude to ask about the business model. The Tech Meetups are tech for tech’s sake. If you’re in a company big or small or if you’re just playing, cool tech always has a place at the Portland Tech Meetup.

December 27, 2011 spout tools

GUI REPL for Roslyn

GUI REPL for Roslyn

If you recall from REPL for the Rosyln CTP 10/2011, I’ve been playing around building a little C# REPL app using Roslyn. That version was built as a Console application, but I’ve refactored and rebuilt it as a WPF application:

image

December 27, 2011 spout

Moving to the Cloud Part 2: Mostly Sunny

Moving to the Cloud Part 2: Mostly Sunny

In part 1 of this now multi-part series (who knew?), I discussed my initial attempts at moving my digital life into the cloud, including files, music, photos, notes, task lists, mail, contacts, calendar and PC games.There were some issues, however, and some things that I forgot, so we have part 2.

Before we get to that, however, it’s interesting (for me, at least) to think about why it’s important to be able to move things into the cloud. Lots of vendors are busy making this possible, but why? There are backup reasons, of course, so that a fire or other natural disaster doesn’t wipe out all of the family pictures. There are also the ease of sharing, since email makes a very poor file sharing system. Also, multi-device access is certainly useful, since the world has moved into a heterogeneous OS world again as smartphones and tablets take their place at the table with PCs.

December 16, 2011 spout

Sells Manor: Running 64-bit Win8 on My MacBook Air

Sells Manor: Running 64-bit Win8 on My MacBook Air

With the exception of //build/, I haven’t really been a public part of the Microsoft developer community for about a year. So, to make up for some lost time, I’m giving a talk about some of the //build/ bits at the Portland Area .NET User Group first thing in the new year. This means that I need a running installation of the Windows 8 Developer Preview on my new laptop, cuz THE MAN took my old laptop back when I handed in my badge (although, to be fair, they paid for it in the first place : ).

My constraints were as follows:

December 14, 2011 spout tools data

Moving My Data To The Cloud: Stormy Weather

Moving My Data To The Cloud: Stormy Weather

For years, I’ve maintained a single main” computer. It was the computer that was the central authority of all of the personal data I’d accumulated over the years and from which it made me uncomfortable to be separated. Because I needed a single computer for everything, it had to work on my couch, on a plane, on a desk and everywhere else I ever needed to go. Also, it couldn’t have a giant monitor or multiple monitors, because it had to go everywhere. All of this was because I needed all of my data with me all of the time.

December 13, 2011 spout telerik

Goodbye Microsoft, Hello Telerik!

Goodbye Microsoft, Hello Telerik!

I have gotten to do a ton of really great things at Microsoft:

  • I got to write a column on WPF and turn that column into not one, but two books.
  • I got the excitement for every blog post in the first two years wondering if this was the one that was going to get me fired. (It was close a few times.)
  • I got to throw several Developer Conferences (DevCons).
  • I got to spin up a completely new community from scratch (“Oslo”).
  • I got to stay up all night erasing the word WinFS” from all of microsoft.com.
  • I got to be part of a Microsoft product team from incubation through startup to product and then to kaput.
  • I got to get ordained as a minister so that I could marry a PM from the WPF team to a PM on the WCF team as part of the talk I gave with Doug Purdy at the 2008 PDC.
  • I got to prepare for that talk with Doug until 4am, then walk back to the hotel, causing people to cross the street to stay away from us. And then I got to give that talk with Doug the next morning right after restoring my copy of Windows that had crashed 30 minutes before.
  • I got to drag Lars Wilhelmsen up on stage to read Norwegian from the Oslo Tour Guide book, only to find I was pointing him at German.
  • I got to throw an SDR.
  • I got to play poker with Microsoft power brokers far above my level (and take their money : ).
  • I got to sleep at Don Box’s house and become an adjunct part of his family.
  • I got to have two design reviews with Bill Gates (as hard as I tried, I could never see him actually enter the room).
  • I got to turn developer feedback into hundreds of bugs across dozens of products.
  • I got code into Vista (and I assume into Windows 7 and Windows 8 as well).
  • I got to work on the team that built the most ambitious set of templates ever shipped with Visual Studio.
  • I got a very quick, very deep education on JavaScript and CSS.
  • I got to help drive the developer story for an entirely new platform: WinRT, WinJS and Win8.
  • I got to lead two product teams through two PDCs (OK, one PDC and one //build/).
  • I got to give the //build/ keynote launching the Visual Studio 11 tools for Windows 8 with Kieran Mockford, who will forever be my //build/ buddy.
  • I got to see how the sausage is made for SQL Server, WCF, WPF, Silverlight, Windows Phone 7, Windows 8 and a host of others. I am forever changed.
December 29, 2010 spout

Enabling the Tip Calculator in Your Brain

I can’t imagine anyone reading this blog needs to read this, but I can’t help myself.

When I was just a wee lad, probably the most valuable thing I learned was how to perform mathematical estimation, the importance of which and several techniques you can get by reading Jon Bentley’s The Back of the Envelope (this essay along with several others, are collected in his most excellent books Programming Pearls and More Programming Pearls, both of which are still relevant a decade later). Not only is estimation generally quicker than running a calculator, but even when you do run a calculator, it helps you figure out when you did it wrong, the latter of which has saved my bacon time and again.

October 27, 2010 spout

A Function That Forces

Far Side - Midvale School for the GiftedAt Microsoft, there’s this passive-aggressive cultural thing called a forcing function,” which, to put it crudely, is an engineering way for us to control the behavior of others. The idea is that you set up something to happen, like a meeting or an event, that will force” a person or group to do something that you want them to do.

For example, if someone won’t answer your email, you can set up a meeting on their calendar. Since Microsoft is a meeting-oriented culture (even though we all hate them), a softie will be very reticent to decline your meeting request. So, they have a choice — they can attend your meeting so that they can answer your question in person or they can answer your email and get that time back in their lives. This kind of forcing function can take larger forms as well. I can’t say that our execs make the decision like this (since they don’t talk to me : ), but it is the case that signing up a large number of Microsoft employees to host and speak at important industry events does have the effect of making us get together to ensure that our technologies and our descriptions of those technologies holds together (well, holds together better than they would otherwise : ).

August 8, 2010 spout

Why can’t it all just be messages?

Why can’t it all just be messages?

My mobile device is driving me crazy.

I have an iPhone 4.0. Normally when it’s driving me crazy, it’s standard stuff like the battery life sucks or that the iOS 4.0.1 update didn’t fix the proximity detection or stop emails I send via Exchange from just disappearing into the ether.

April 2, 2010 spout

College info for my sophomore

I went to a college planning sessions at my sons’ high school not because I’m hung up on getting my Sophomore into a top school, but because I thought I’d get a jump on things. I learned I was actually behind.

For one, I learned that the high school has an online system that will do some amazing things:

March 21, 2010 spout

you may experience some technical difficulties

I’ve been futzing with the site and I’ve got more to do, so unexpected things may happen. Last weekend I screwed with the RSS generator and that caused a bunch of folks to see RSS entries again. This weekend I’m moving more of my static content into the database, so you may see a bunch of old stuff pop up.

Feel free to drop me a line if you see anything you think needs fixing. Thanks for your patience.

March 18, 2010 spout

On Building a Data-Driven E-Commerce Site

On Building a Data-Driven E-Commerce Site
The following is a preprint of an article for the NDC Magazine to be published in Apri.
March 11, 2010 spout

The incomplete list of impolite WP7 dev requests

In my previous list of WP7 user requests, I piled all of my user hopes and dreams for my new WP7 phone (delivery date: who the hell knows) onto the universe as a way to make good things happen. And all that’s fine, but I’m not just a user; like most of my readers, I’m also a developer and have a need to control my phone with code. I have a long list of applications I want to write and an even longer list of applications I want other developers to write for me.

 

March 9, 2010 spout

Creating a Lazy Sequence of Directory Descendants in C#

My dear friend Craig Andera posted an implementation of a function that descends into a directory in a lazy” manner, i.e. you get the first descendant back right away and not after all descendants have been calculated. His implementation was in Clojure, a Lisp variant that runs on the Java VM:

(import [java.io File])

(defn dir-descendants [dir]
  (let [children (.listFiles (File. dir))]
    (lazy-cat
     (map (memfn getPath) (filter (memfn isFile) children))
     (mapcat dir-descendants
      (map (memfn getPath) (filter (memfn isDirectory) children))))))

March 9, 2010 spout

The incomplete list of impolite WP7 user feature requests

When I first moved from the combination of a dumb phone and a separate music player, I had modest requirements: phone calls, MP3 playback, calendar notifications, contact management, email, camera and solitaire. Even asking for only these seven things, my first smart phone was as life changing as my first laptop. I could do a great deal of my work while out and about, allowing me to have a much more productive work/personal life balance.

 

March 3, 2010 spout

Please don’t run apps in the background on my WP7 phone!

When I was but a wee lad, I learned that when it came to my computer, I was often going to be waiting on something, whether it was the CPU, the IO or the memory. Now that I’m all grown up and spending a great deal of time on handheld mobile devices, I’ve discovered a whole new thing I’m waiting on: charging the battery.

February 2, 2010 spout

We need cloud apps to use cloud drives

Reading about Windows Azure Drive reminded me of a conversation I had when I was hanging out with my Microsoft brethren last week. We started by talking about how apps target a particular OS and how Microsoft’s bread-and-butter is making sure that apps continue to work forever on Windows so that our customers can upgrade their OS and still get their work done.

December 20, 2009 spout

Stead Defines ‘Customer’

And here’s one more from the paper file I’m putting into electronic format to reduce the pile of papers in my life:

During the all-associate broadcast, Jerre Stead shared with the team a memo another associate had sent about defining a customer. Here are the highlights:

December 20, 2009 spout

How To Handle Angry Callers in 7 Not-So-Easy Steps

When I was first in technical phone support for the software I was building, I found out that I wasn’t exactly a… um… natural” at putting customers at ease. I used the following information from an AT&T magazine (I was working for a AT&T VAR at the time) in the fall of 1992 to start my education:

  1. Don’t react. Stay calm. When confronted with an irate caller, everyone has the urge to return fire. But don’t fight back. And don’t take it personally, or you’ll become an emotional basket case. Keep relaxed by breathing deeply. And remind yourself that this discussion will not change the destiny of mankind.
  2. Let them vent. Remember, you simply cannot get customers to deal with the logic of a situation until you’ve dealt with their emotions. Trying to attack the problem before people have fully vented their anger or disappointment just won’t work.
  3. Defusing the anger. When a tirade is winding down, try asking - sincerely - Is there anything else?” By this point, they’re usually exhausted and willing to talk. If you hear profanity, try saying: I know the words you’re using right now aren’t directed at me personally.” If the caller replies, Oh yes they are!” you’re no worse off than you were. But generally they’ll apologize, realizing it’s not your fault. At which point, a real dialogue can begin.
  4. What do they want? Once they’ve calmed down, that’s the time to find out what they want: Money back? A defective part replaced? Find out quickly to determine whether you can solve the problem on the spot.
  5. What can they have. Once you’ve figured out what they want, what can you do? This will be set by bounds of your company’s policies - such as warranties or guarantees - as well as any flexibility that management may give you (which should be clearly spelled out).
  6. Customer solutions. Sometimes, the best solution you can deliver is one the customer suggests. And, surprisingly, it can end up being less than what you yourself were willing to offer. Recently, at a major department store, a customer wanted a discounting an imperfect blouse. The cashier was willing to take 35% off the marked price, but first asked the woman what discount she wanted. The answer: 20% off. Of course, some customers will make outrageous demands. In that case, ask them what they’d consider to be a fair solution.” Instead of confronting the customer, this reply opens up the discussion to a more equitable resolution.
  7. Follow up. Don’t make an angry customer even angrier by not doing what you said you’d do. When a promise is made, keep following up internally to be certain that what was promised has been implemented. Even if that means making a minor pest of yourself!
November 22, 2009 spout

Do you know someone that needs dinner this Thanksgiving?

The boys and I were driving past a church with a holiday bizarre, so we stopped by. It was a mix of silent auction, bake sale and a $1 raffle for a turkey dinner with all the fixings. I made several comments about how they could skip the formality of the drawing and to make sure they could read my phone number on the back of my raffle ticket, because I was obviously going to win. They laughed.

When they called this morning to let me know that I had won, they told me that they remembered me and I laughed.

October 22, 2009 spout

The New Microsoft Store Looks Cool

September 15, 2009 spout

The Downside of Transparency

Ever since Chris Anderson built his blogging software and shared it with his colleagues, more and more Microsoft employees has been pushing hard on being as transparent to our customers as we can be. This has been a very much grass roots effort. I remember coming into Microsoft six years ago just when legal was busy giving everyone disclaimers to put on their personal blogs and telling us what we could and could not say. It was always a worry whether the next blog post would get you fired. I got in trouble personally several times, but the brave pioneers before me laid the groundwork for people like me to comment on the internals of Microsoft culture, for Robert Scoble to call Steve Balmer out onto the carpet several times and for Rory Blyth to talk about penises, all on the Microsoft dime. Now blogging is just an accepted way to do things. It’s not even questioned anymore; it’s expected.

July 10, 2009 spout

PowerBoots makes me want to use PowerShell!

I’ve picked up PowerShell half a dozen times or more. The central premise, that I can pipe streams of objects instead of streams of text between programs, is pure genius. However, in the day-to-day, two things make me put it down again every single time:

July 8, 2009 spout

Dynamic Languages: A Separation of Concerns

I saw Nick Muhonen give a talk on the new language features in C# 4.0 last night at the Portland-Area .NET User Group. He did a good job in spite of the constant questions I asked. He showed one example that I found especially compelling:

object GetConfig() {
  return new {
    WindowSize = new Size() { Width = 100, Height = 200 },
    ConnectionString = "...",
    ...
  };
}
April 17, 2009 spout

Win7 killed a feature I love in Vista!

Win7 killed a feature I love in Vista!

All my friends have updated to Windows 7. My 14-year old son is running Win7. I’m the only one I know that’s not running Windows 7. The reason? Windows 7 took away a feature I use all the time, as shown on the right: Search the Internet.

April 17, 2009 spout

Twitter takes a bite out of blogs

At the last DevCon in 2003, blogging was rampant. We had about 100 posts in the lead up to the conference and during the conference itself.

March 15, 2009 spout

Why I Hate My iPhone

Why I Hate My iPhone

I’ve had an iphone for the last coupla weeks and there are some things that drive me crazy about it!

March 14, 2009 spout

How I learned to Stop Worrying and Love the Twitter

How I learned to Stop Worrying and Love the Twitter

Scott Hanselman performed an intervention on me in the mall the other day. I was in denial and while I can’t say I’m fully into acceptance, I’m at least past anger. : )

January 4, 2009 spout

Eat Less and Exercise: Before and After

Eat Less and Exercise: Before and After

A few years ago, I looked like the before” picture to the right. I didn’t look like that all the time, thank goodness — this was some couples’ party and I was doing the ballerina dance” challenge — but as you can tell, I was a tad overweight. Specifically, I weighed in excess of 100 pounds more than the top end of my idea weight range, which put me over 300 pounds.

I had been a skinny kid with a fast metabolism growing up. At 6′5″ it takes a lot of food to get to full grown, even when I had only a medium build (I can’t even claim to be big boned”). In college, living in a fraternity served by a cook that believed fully in the benefits of meat and potatoes and having been born in the Midwest with a gravy ladle in my mouth, I got my freshman 15″ in the first semester and kept on going until I was the jolly fellow you see to your right (complete with the belly that shook like a bowl full of jelly).

November 12, 2008 spout

tvrss.net + uTorrent + FiOS + WHS + 360 = DVR Bliss

So, the other day, Windows XP SP2 destroyed my Windows Media Center Edition install that I’ve been using for years and absolutely loved. It let me record all my favorite shows on two separate tuners and I could watch them on the TV attached to my MCE box, from all the PCs in my house and from my XBOX 360. Losing it was a huge blow, especially since it was clear I’d need to repave and I was swamped with PDC and post-PDC work (damn those MSDN Magazine deadlines!).

A little research revealed the following facts:

September 30, 2008 spout

MS + jQuery: This Is Huge!

Yesterday, the ASP.NET team announced that they were going to ship jQuery, a small, populate open source web client library. And not only is Microsoft going to ship this library, as is, but we’re going to build support into Visual Studio for it, build future versions of our web components assuming it and support it via PSS like any other Microsoft product.

This is huge.

September 5, 2008 spout

I don’t pretend to understand advertising

I’ve always liked the Mac vs. PC ads. They’re clever, they make me laugh and I like both actors (Accepted is very under rated, IMO). Of course, I actually prefer my PC running Windows to a Macintosh (I had a Mac IIcx back in the day), I prefer Vista to XP and I’m a Microsoft employee, so I don’t have any trouble seeing the exaggeration, but there’s always a kernel of truth, which is what makes them funny. The part that kinda annoys me is that Apple seems to be claiming they have no such problems, which is, of course, not true.

The Mac vs. PC ads I understand: they’re meant to put down the PC by having the PC guy look like an idiot, leaving the Mac guy to seem non-threatening and therefore better by comparison.

September 4, 2008 spout writing

Programming WPF goes into 3rd printing

August 27, 2008 spout

Where did my old Word command go in new Word?

I’ve been using Word for a long time and my fingers knew where the commands were that I used even though my brain didn’t. Most of the those commands I’ve mapped to the new Ribbon-enabled Word without a problem, but sometimes I still search. For those times, the Office guys have put up a cool tool that shows me where the new version of each command is located in the new Word. Enjoy.
August 14, 2008 spout

Digigirlz Rock!

I gave a talk to the Digigirlz yesterday and it was a blast. It was 25 high school girls that were on the Microsoft campus all week learning various technologies to promote women in IT. The girls are nominated by their teachers for aptitude and attitude and these girls had both in spades.

Vijaye Raji and I were giving the talk, me primarily the pretty front man while he drove the slides, typed the code and made sure I didn’t get things very wrong (he knew the environment and the language far better than I). We were teaching general programming basics using a variant of BASIC that was especially well suited to new programmers. We spent two hours showing them how to do turtle graphics and how to write a game (Pong) all from scratch and we all had a blast doing it.

June 23, 2008 spout

George Carlin, Rest In Peace

When I was a teenager, some kids were sneaking out to get drunk or have sex. I was sneaking into my parents’ record collection to listen to George Carlin. Unfortunately, unleashing my version of his brand of humor on my peers was one of the things that kept me from being invited for parties or sex, but I still dearly loved the man and was very sorry to hear that he passed away yesterday.

Certain situations still trigger George Carlin responses whether I want them to or not; he is permanently lodged in my brain. And of all the things he’s done, his incomplete list of impolite words is stuck in there furthest (*not* safe for work!).

June 13, 2008 spout

Losing weight the old fashioned way: tonsilectomy

Today is my last day of time off work from a tonsillectomy a week ago Thursday. I’m down to about 20mg of OxyContin/day (from 60mg) and hope to have that down to nothing by Monday (although I still have half a jug for my next party : ).

Why would a grown man fresh off two SDRs and a BillG review feel the need to have his tonsils pulled? Well, I’ve been trying to talk someone into taking them for a coupla years now, even since the recurring strep throat started, but no luck. This time it was because I wasn’t sleeping properly.

May 18, 2008 spout

The Next Generation

When I was in high school, game programmer” meant at best BASIC or at worst 6502 assembly language, but either way, lots of text manipulation. These days, high school-age programmers are going to camps and programming competitions having spent their time in drag-n-drop programming environments like Game Maker. They’ve been doing work flow for 7 versions already!

Yesterday, I was a judge and the keynote speaker at a high school game programming contest. After asking a bunch of the 25 teams questions about their games, I was asked to speak about careers in software to 100 high school computer geeks. My people!

April 30, 2008 spout

Why I Love My Tribe and Want You To Join It!

Recently, I went to lunch with some friends of mine from the DevelopMentor Software days (wow, *that* was a long time ago) and they accused me of radio silence” for the last two years.

What?” I said. I blog all the time!”

March 22, 2008 spout writing

Nobody Knows Shoes: The Book — Pure Genius!

I friend of mine dropped a book with a funny cover in my lap and said, Hey, check this out.” I threw it on my pile and didn’t get back to it for a few days. When I did, I didn’t know what to make of it. It was like The Grapes of Wrath by Rory Blyth, with illustrations by a drunk Salvador Dali.

It took a few pages, but I eventually figured out that Shoes” was a cross-platform GUI framework for Ruby and this 52-page book was a tutorial for it. By page 15, I knew the major concepts. By page 20, I could write my first program. By the end, 30 minutes after I’d started reading, I knew the whole thing.

March 3, 2008 spout writing

Programming WPF: “Programming Book of the Decade”

February 21, 2008 spout writing

Programming WPF enters 2nd printing!

Wahoo! You love us, you really love us! : )

When a book goes to another printing, 100% of the time, there’s a list of errata” (aka mistakes”) that are fixed in the new printing. In this case, neither Ian nor I have any fixes to apply. So, it’s official — the book is perfect! : )

February 20, 2008 spout writing

Bridging object models: the faux-object idiom

My 1997 master’s thesis came online today (he says, trying not to flinch). Here’s the abstract:

Microsoft’s Component Object Model (COM) is the dominant object model for the Microsoft Windows family of operating systems. COM encourages each object to support several views of itself, i.e. interfaces. Each interface represents a collection of logically related functions. A COM object is not allowed to expose multiple interfaces using multiple inheritance, however, as some languages do not support it and those that do are not guaranteed to do so in a binary-compatible way. Instead, an object exposes interfaces via a function called QueryInterface(). An object implements QueryInterface() to allow a client to ask what other interfaces the object supports at run-time.

This run-time type discovery scheme has three important characteristics. One, it allows an object to add additional functionality at a later date without disturbing functionality expected by an existing client. Two, it provides for language-independent polymorphism. Any object that supports a required interface can be used in a context that expects that interface. Three, it provides an opportunity for the client to degrade gracefully should an object not support requested functionality. For example, the client may request an alternate interface, ask for guidance from the user or simply continue without the requested functionality.

COM attempts to provide its services in as efficient a means as possible. For example, when an object server shares the same address space as its client, the client calls the functions of the object directly with no third-party intervention and no more overhead than calling a virtual function in C+ +. However, when using COM with some programming languages, this efficiency has a price: language integration. COM does not integrate well with a close-to-the-metal language like C+ +. In many ways COM was designed to look and act just like C + + , but C + + provides its own model of polymorphism, object lifetime control, object identity and type discovery. Of course: since C+ + is not language-independent or location transparent. it was designed differently. Because of these contrasting design goals, a C+ + programmer using COM often has a hard time reconciling the differences between the two object models.

To bridge the two object models, I have developed an abstraction for this purpose that I call a faux-object class. In this thesis, I illustrate the use of a specific instance of the faux-object idiom to provide an object model bridge for COM that more closely integrates with C+ +. By bundling several required interfaces together on the client side, a faux-object class provides the union of the operations of those interfaces, just as if we were allowed to use multiple inheritance in COM. By managing the lifetime of the COM object in the faux-object’s constructor and destructor, it maps the lifetime control scheme of C+ + onto COM. And by using C+ + inline functions, a faux-object can provide most of these advantages with little or no additional run-time or memory overhead.

COM provides a standard Interface Definition Language (IDL) to unambiguously describe COM interfaces. Because IDL is such a rich description language, and because faux-object classes are well defined, I was able to build a tool to automate the generation of faux-object classes for the purpose of bridging the object models of COM and C+ +. This tool was used to generate several faux-object classes to test the usefulness of the faux-object idiom.

January 17, 2008 spout writing

Bookscan says “Programming WPF” is #3 .NET book!

January 8, 2008 spout writing

WPF Book Easter Egg

Does anyone have both the Anderson WPF book and the Griffiths/Sells WPF
January 6, 2008 spout writing

The Annotated Turing!

I just saw that Mr. Petzold is re-publishing the paper that started computer science and annotating it so that even I can understand it. I can’t wait!
January 5, 2008 spout

Time for some anti-social networking

OK, just after all my friends are on FaceBook, now I’m getting the requests to join Spock.com. I don’t know what Spock.com is, but after the address-book thingie, MySpace, the high school alumni thingie, Friendster (?), the Google ork-something, the business thingie and most recently FaceBook, I’m all done. All I ever do on these sites is approve friends requests! Isn’t there supposed to be some value to it other than that?

Oh, sure, I’ve had a few messages from people I haven’t heard from in a while, but email works for that. In fact, email works for a helluva lot of the internet apps I see today. Plus, most of them just forward web form results to my email anyway! Why do I need a whole other thing when I’ve already got all my friends listed in my address book?

January 4, 2008 spout writing

“So easy to read, it should be illegal”

Thanks very much
January 3, 2008 spout

WHS Continues to Rock My World

In the same way that .NET manages memory for you, Windows Home Server manages storage. All you have to do is tell it the names of shared folders you want it to have and which computers to back up and it will spread it and duplicate it across however many HDDs you have, without you worrying about which actual HDD your Music” folder is on or where your wife’s computer is being backed up to.

Plus, if you have more than one HDD and you have Enable Folder Duplication” enabled for a shared folder, the data in that folder will be shared across multiple HDDs, effectively giving you the benefits of RAID without the config muss and fuss. (It’s my understanding that this cross-HDD data duplication happens automatically for backed up data, but I don’t know how to confirm that empirically without risking the data.  : )

December 27, 2007 spout

Christmas Delight

Not all was gloom and blackness this XMas. Among the new things in our lives, several of them rocked*:

  • Our new HP MediaServer running Windows Home Server is awesome. As a Microsoft employee, I got a killer deal on this server appliance, but knowing what I now know, I’d have paid full price — a whopping $550. In fact, I recently sunk another $200 into it for a memory upgrade and a 750GB HD, bringing it up to 1.25TB.

    WHS keeps all the computers in my house automatically backed up, keeps shared folders duplicated across multiple HDs which can be added via the slide-out drawers in the front of the unit (no muss, no fuss) and serves it all up over the web securely. Plus, it’s platform for add-ins, so, for example, if I want offsite storage of everything on the WHS box in case of catastrophe, I can get KeepValue for a flat $100 year.

  • My youngest’s new Zune 2 is the best MP3 player I’ve ever touched. We got the 4GB version, which is tiny, but still comes with amazing video playback, an FM radio and very intuitive controls. (I know I’m unusual in this regard, but when I first touched the iPod, I had no idea how to make it work and the manual didn’t help.)

    The client software is also a joy to use. The look and feel is unique and simple. Both the client and Zune UIs make me hope that those guys actually are building a phone. I want it.

    Plus, we got a pair of the Altec-Lansing Zune speaker dock from woot.com for $40 and they sound great, worked instantly and come with the cutest remote control. Very nice package.

  • I can’t wait to put my new portable Bosch 10″ Table Saw with Gravity Rise Stand to use (thanks, Babe!). I’ve been remodeling my homes for years, doing as much of it myself as I have time for, but was missing a saw to do straight rips. I’m all set now!

  • My brother-in-law got Rock Band for his family and it *rocks*, especially the tone feedback on the microphone. (I love to sing, which you’ll know if you’re ever trapped in a car with me and Bohemian Rhapsody comes on the radio : )

  • My youngest also got a pair of the Killer Rabbit Slippers, which Chris picked up for me when he and his wife went to Spamalot. I’d covet my son’s new slippers except I love the Goofy loafer Slippers I stole from him years ago. : )
December 26, 2007 spout

The Sidekick Phone Sucks

I brought my son a Sidekick Slide cell phone for XMas this year and I’ve come to the conclusion that it sucks, or at least the way T-Mobile sells it sucks.

When I purchased it, the T-Mobile salesman offered me unlimited data and text messages for an additional $20/month on that line. The phone was an upgrade on our existing family plan, which already has 3000 minutes/month and unlimited text messaging and I don’t really need my son surfing the interweb during class, so I declined. He never mentioned that the phone wouldn’t actually work without this extra money, or I never would’ve purchased it.

December 23, 2007 spout

Posting from my OLPC PC

The form factor is cool, the OS is fine (although I’d prefer Windows) but the chicklet keyboard is worthless. I can literally type faster on my t-mobile dash smartphone. Anyone want an OLPC
December 12, 2007 spout

Conversing In Italian over the Interweb

Yesterday I got an email from a fellow named Corrado Cavalli to whom I sent a free copy of Programming WPF. When he received it and read through it, he posted a note on his web site, which of course, I went to read.

Now, Corrado lives in San Pellegrino Terme, Bergamo Italy, so his blog is in Italian. That didn’t stop me from reading it in English using Google’s language translation page.

December 10, 2007 spout

Give Them a Fish or Teach ’em To Fish?

Dvorak asks this about One Laptop Per Child:

Does anyone but me see the OLPC XO-1 as an insulting let them eat cake’ sort of message to the world’s poor?”

November 30, 2007 spout

MS Math Add-In for Word 2007

MS Math Add-In for Word 2007

I mention this because this is just the thing I’ve wanted to be able to check my kid’s math homework: the Microsoft Math Add-In for Word 2007.

For example, after installing it, I can open Word, press Alt+= to get myself a new equation and then enter:

November 27, 2007 spout

1 Setup == Innumerable Uninstalls?

OK, what’s the deal with installing 1 product (Visual Studio 2008 beta 2) and having to do 22 separate uninstalls?!? How is this a good thing?

November 27, 2007 spout

Why aren’t Windows settings stored in %HOMEPATH%?

Normally, this is the kind of question I’d pose and then provide an answer, but this time I just don’t have one.

If my Word settings were stored in %HOMEPATH%\WordSettings.xml, I could edit the file, back it up, carry it to other machines and generally manage it. Instead, my settings seem to be stored in the Registry, %LOCALAPPDATA% or %APPDATA%, but who knows what’s stored where or how to manage it.

November 26, 2007 spout

I had to load FireFox on my machine yesterday

In general, IE7 more than meets my needs. It shows me the web pages I want and it works well. However, there is one killer feature that FireFox has that I desperately needed yesterday that caused me to load it onto my machine. It’s not my default browser and it doesn’t replace IE7, but FireFox is there and fulfilling my one killer feature needs nicely.

What’s the feature, you ask? Well I’ll tell you: sane content scaling. IE7 has Ctrl+, but it works very poorly, unlike FireFox, where it works fabulously.

November 26, 2007 spout writing

C# 3.0 in a Nutshell, LINQPad and Pure Genius

I absolutely love what the Albahari brothers (Joe & Ben) have done with C# 3.0 in a Nutshell. Not only is their prose concise in a way that mine is not, but I have learned a bunch of stuff about LINQ I didn’t know, they built a tool (LINQPad) that lets you experiment with LINQ interactively in a way that the designers of LINQ themselves don’t support and the tool has all kinds of wonderful features that LINQ, SQL and Regular Expression programmers alike will want to use regularly long after they’ve read the book.

And if that weren’t enough, the tool comes with an integrated tree of samples that follow along with the material in the book, teaching the material from another angle and reinforcing it perfectly. It’s pure genius and if I ever write another book, it’s a model I’m going to follow. Very highly recommended.

November 5, 2007 spout

Volunteering as Christmas Present?

When I was a kid, Christmas was my favorite holiday because my entire family (grandparents, parents, siblings, cousins, aunts and uncles) would get together at our lake cabin, chop wood for the fireplace by day and play games at night, culminating in an hours-long gift opening bonanza on Christmas Eve where each of us would watch the opener open a gift, youngest-to-oldest, one at a time. Did we like opening? Sure, but even better was seeing the look at the person’s face when you’d managed to get them just the right thing because you saw them all the time and you knew what they wanted.

Now, I’m building my own family in Oregon, but I still have parents and in-laws and grandparents that need Christmas presents. Do I know what they want and need? No, because I hardly ever see them. Do I get to see their faces when they open the gifts? No, because I’m in Oregon. Does that get me off the hook? No, because when the presents don’t show up in time, one or two have been known to call and complain. So, what’s a remote relative to do?

October 29, 2007 spout

The Future of Telecommuting

I truly believe that the future of employment will be much more individualistic and that requiring people to move will be an anachronism. Right now, phone + LiveMeeting is about 50% as good as being there; you’re limited in what jobs you can do based on how much a part of your job being there” actually is. We already have the pieces of technology to push being there” to about 80%; we just haven’t put them together yet. When we do, a bunch more barriers are going to come down. Until then, some folks are on the bleeding edge and isn’t that what this whole industry is about anyway? : )

October 28, 2007 spout

Working Remotely for Microsoft: Misc Tips & Tricks

  • I used to drive up because it gave me the freedom of traveling whenever I wanted and I always had a car on the far end. Besides the speeding tickets, the other big problem was the amount of human energy it takes to drive back and forth so often.
  • I’ve taken the train, which I love because of the comfy surroundings and the electron dispensers, but if I want to be at a 9:45am meeting on Monday morning, I have to leave on the 2pm train on Sunday, which really cuts into family time.
  • Now I fly. The drive to the airport is only 30 minutes and I’ve never gotten a ticket along the way. When I get there, I use the express line to Seattle flights and get myself a Chai tea on the far side of security, itself made easy by long practice and my slip-off Crocs. The flight is short and I’ve long ago dropped off luggage that I leave in building 42, so I only have to bring clean undies in my laptop carry-on. When I land, instead of renting a car, I take a cab and get the benefit of the HOV lane when means I can take the 8am flight instead of the 7:30am flight, giving me 30 more minutes in bed. When I arrive, I have a junker freebie car I leave in the parking lot for tooling around town.
  • I split my overnights between my long-time friend and mentor Don Box and a local hotel. I stay at the hotel because I don’t want to overstay my welcome and I stay at Don’s because he and his family have made me feel so at home that I can’t not stay there. As much as Don would prefer I be in WA, he has really gone a long way to enable my lifestyle and I love him for it.
  • Sometimes when I’m on a roll, I’ll keep going long into the night, just like the old days at DM. And sometimes when I’m not feeling it, I’ll take the afternoon off and see a movie with my sweetie. It’s all about the balance.
  • I’ve always had an office for when I’m in Redmond, but I’ve always made sure I was the first guy on the double-up list when things get tight. Now only does this give me more face time when I’m in town, but I look like a hero and the guy who rooms with me only has to put up with me 3 days out of 10. I also let the other guy decide how to lay out the office, since my real office is set up just how I like it at my house. I’ve worked on couches, in the hall, in conference rooms, in the care and at the local Starbucks on 156th. Give me a laptop and wi-fi and I’m good to go.
  • Keep a machine setup inside the firewall. Every once in a while, VPN won’t let you do anything except terminal serve into a machine, at which point you can do anything just like you were there.
  • Make Microsoft pay at least half of your phone and internet bills.
  • Just because you’re working from home, you should expect adequate equipment to be supplied by your employer. Over a 4.5 year period, Microsoft has supplied me with two laptops, a 20″ LCD monitor and a printer-fax-scanner-copier, all in my home office.

Tomorrow, I’ll post the final entry in this series with my thoughts about the future of telecommuting.

October 27, 2007 spout

Working Remotely for Microsoft: What Are the Consequences?

When I went to work for Microsoft without moving up, I knew I was making a tradeoff. Before Microsoft, I spent a lot of time traveling, so MS meant staying home much more with my family. It also meant, because of MSs cultural bias, that my rate of advancement would be considerably slower than it would be if I was local. In fact, I was prepared to be completely unpromoted as several senior folks I trusted at Microsoft promised I would be. As it turned out, even though I came into Microsoft at a fairly high level (high enough that it wouldn’t have been hard to not meet expectations even if I were local), I was promoted. I doubt seriously that I’ll be promoted again, but I never thought I would be promoted at all. In fact, I’ve often referred to my Microsoft job, especially my new one on a product team, as the world’s greatest dead-end job.” : )

I know this sounds bad, but it gives me two freedoms. First, and most importantly, it gives me the freedom to spend evenings and weekends with my family (especially since I shipped the last book I plan on working on for a long, long time) and to put them first. This was the conscious decision I made going it and I’m happy every day that I made it. The second freedom that took me by surprise is that I can focus on the parts of my job that I really love without worrying about picking up tasks just because they’ll look good at review time. It’s almost like I’m one of those Microsofties with fuck you money” without the actual money. : )

October 26, 2007 spout

Working Remotely for Microsoft: Can You Communicate Effectively From Home During Meetings?

Communicating during a meeting is an art unto itself and has its own set of considerations:

  • Learn to love LiveMeeting: If you can’t see faces, the next best thing is whiteboards and what’s on each other’s computer screens. For whiteboards, you really need a video camera, which I’ll talk about later. For desktop sharing, I’ve tried NetMeeting, VNC, Terminal Services (in shadow mode) every version of MS Messenger, Office Communicator, Vista Meeting Space and LiveMeeting and a bunch more I’m not remembering. The only one that works consistently through firewalls (mine and Microsoft’s) and is easy to get bootstrapped is LiveMeeting. Learn how to start a Meet Now” meeting (I have an URL that starts up the Meet Now: Chris Sells” meeting but I have no idea where I got it) and use it! I’ve actually heard Don Box, who hates working with me when I’m not in the room, say LiveMeeting is better than you being here!” And when you’re jointly working on a shared document or shared code, it’s pretty damn good.
  • Get a LiveMeeting monkey: If you’re going to do a remote presentation, make sure there’s someone on the other end with LiveMeeting tested and running that can project your slides for you while you narrate.
  • Learn the short path through LiveMeeting: Microsoft employees, like most humans, don’t like to be distracted by things they don’t care about. They don’t want to install a new piece of software on a machine they just got working again last week and they certainly don’t know how to use it. Make sure you can talk them through the shortest path to getting LiveMeeting installed and sharing their desktops. The first time, this takes 10-15 minutes of disk churn (unfortunately), so ideally you’ll do it before the big meeting.
  • Keep time zones in mind: Martin was at GMT+0. Tim was at GMT-5. Microsoft is at GMT-8, as am I. Being working and available for meetings, phone calls and quick turn emails is important, otherwise, your team is going to start forgetting to include you in ad hoc stuff, as was a problem for Tim and completely impossible for Martin.
  • Meet new people face-to-face: I go up to Microsoft 3 days/2 nights every other week with the idea that I’m not going to get much actual coding or writing done, but I’m going to get face time with new people I need to start relationships with. When they hear you’re remote, most folks at Microsoft will want to postpone the meeting til you’re in town. To make them comfortable with you and to put faces to the voices, that’s a good idea the first time. However, after that, phone calls are just fine, especially when combined with LiveMeeting.
  • Learn your address book: When a meeting room is scheduled, the scheduler doesn’t know the phone number for the meeting nor are they even going to remember that you’re calling in, so you need to know how to get the phone number yourself. At Microsoft, the address book lists conference room phone numbers as conf room [blg]/[room],” e.g. conf room 42/5646″. If you have any trouble or you need someone to call you a cab for the airport on the last day of your trip, you can look up the receptionist for the building you’re in with Reception Bldg [bldg],” e.g. Reception Building 42″.
  • Get your own personal conference call number: If more than one person is calling into a single meeting room, have your personal conference call phone number and code ready. Again, Microsoft issues these to anyone that wants one (and again I can’t remember where I got mine : ).
  • Take meeting notes: If you are finding yourself missing out what’s going on during meetings while you’re on the phone, offer to take the meeting notes. That way, when you have questions, you’re asking as the guy taking notes not the annoying guy who’s too full of him/herself to move.
  • Play solitaire: If you’re not taking notes and you find yourself zoning out during a phone meeting, either because you’re surfing the web or starting to do real” work, you need to do something that will occupy your eyes and your hands while keeping your ears and brain free to pay attention. For that I recommend solitaire or, when I’ve really let my work interfere with my home life balance, I like to put the dishes away or fold clothes. Handy access to the Mute button on your phone covers up the clink” noises. : )
  • Learn to intuit what’s going on to the whiteboard: I find that the single biggest downside to not being there in person, especially on a product team, is not being able to see the whiteboard. Microsoft has a face-to-face, brute force culture; if a design or implementation problem can’t be solved in two sentences in email, that’s cause for a whiteboard scribble session. What I’ve learned, however, is that most such whiteboard scribbles look the same: there are going to be some boxes, some lines and some letters. The most powerful thing about what’s happening on the whiteboard is not the whiteboard itself, but the story that’s told while the boxes and lines are being scribbled. With some practice, you can learn to guess what’s on the whiteboard by listening to the story, even if you have to ask a clarifying question or two. Further, just the mere act of saying something like Well, I’m just guessing, but what I think you think drew is…” More often than not, the folks on the other end of the phone will say something like, Wow. That’s pretty close, Chris, except that…” With a little practice, you too can become a whiteboard whisper.” : )
October 25, 2007 spout

Working Remotely for Microsoft: Can You Communicate Effectively From Home?

Assuming you can focus on work and you can find someone to hire you, effective communication is the next issue you’ll run into. When I was working for DM, practically everyone was remote, so our communication was based on email conversations that would be long and involved, sometimes lasting for days. However, that’s not the case at Microsoft, where brevity in email is valued and meetings are called for the tough issues. How do you fit into this culture? I use several techniques:

  • Over-communicate: I like to check and double check the things I heard and read vs. the things I’ve seeing done. I did X. Can you check it and make sure it’s what we agreed on?” We agree that you were going to do Y. How’s that coming? I looked at that last check-in you made and you seem to be doing Z. Why?”
  • Pick good email subjects: Lots of times, people have so much email, if the subject isn’t relevant, they don’t bother.
  • Keep emails short: At Microsoft, we have literally thousands of mailing lists and it’s not unusual for a single employee to belong to tens of them, generating 200-500 emails/day. If you want to be heard in that ruckus, you have to be succinct. If you get a reputation for long, rambling emails, especially without a summary, your missives will be ignored.
  • Summarize long emails at the top: When I need my email to go over a page, I summarize it at the top with a single sentence or two. That saves folks from having to dig through an email to get the gist.
  • Resend emails: I know Raymond Chen says not to, but if you don’t get an answer to an email, send it again. I can’t tell you how many times the first email was ignored, but the second email was answered.
  • Reply to yourself: If you’re asking a question that doesn’t get answered, follow up with the answer when you get it. I’ve had threads of conversation that were 80% me. At least they’ll see you’re there so they’ll remember to keep sending the paycheck. : )
  • Follow up on hints: Sometimes you’ll see something go by in an email that implies a different understanding than you had when last you talked to folks. For example, you’re expecting to participate in a design review on Wednesday, but someone sends an email including the sentence like, We’ll have to have this question answered by Tuesday’s design review anyway.” In the hallway/meeting/face-to-face communication culture of Microsoft, decisions are made and changed all the time without a written follow-up, but most of the time you’ll see the new data referenced in some kind of way. When that happens, follow up, e.g. I thought the design review was on Wednesday. Has it been changed?”
  • Read those status mails: You’re saving all kinds of time and being more productive by skipping those random conversations in the hallway, so you can afford to actual read your colleagues’ status emails. I also like to follow up on them, asking questions about the stuff I’m curious about. Often it helps me get my own work done and it almost always means I can integrate my work with that of my team’s better.
  • Own the efforts you’re involved in: It’s very easy to get focused on your own work and get out of sync with the team. If you’re dependent on other folks to get their work done so that the thing you’re doing gets done correctly and on time, you’ve got yourself a powerful motivator to communicate.
  • Get everyone on your team to use IM: IM is a wonderful simulation for hallway conversations that works even when the target of your question/comment is in a meeting (it’s common for Microsofties to have their laptops open during meetings). At Microsoft, even if folks don’t have a personal IM account via Yahoo or Live Messenger, they do have one with Office Communicator. If you’re trying to get someone that’s never online with it, instead of sending them an email with your question, send them a link to the Office Communicator installation and a request for them to log in. If that doesn’t work, start calling them and asking them the same thing. They’ll get the hint. : )
  • Pick up the phone: A ringing desktop phone is a novelty at Microsoft that few folks will ignore. Use it to startle them into submission! : )
  • Schedule a meeting for a phone call: If you can’t get your team on the phone for a quick discussion, schedule a 15-minute phone call.
October 24, 2007 spout

Working Remotely for Microsoft: Can I Find Someone To Let Me Work From Home?

Assuming you decide you can and want to work from home for Microsoft, now the trick is finding someone that will take you. The first time, this took me years. As my writing and speaking became more popular, I’d get more regular calls from someone at Microsoft with the perfect job for me.” Each time, I’d ask them if I had to move and when they replied, Of course” as if the entire pool of worthy workers lived in Washington, I’d politely decline. Eventually when the question came up, Sara Williams said, No need to move” and I went to work for MSDN. As is often the case with one’s first Microsoft job, it wasn’t a long-term fit (a software engineer needs to be on a product team!), but finding a product team took me took 6 months of digging. All the groups I talked to wanted me and they all were happy to move me (some even offered to move my extended family up, too, eliminating my main anchor for staying in OR), but culturally they just didn’t know what to do with a remote guy.

Eventually, persistence, and my long experience working remotely, paid off and I actually had two competing offers (and I’m *so* happy about the one I chose). Microsoft has a *ton* of open positions and they get more open about remote employees all the time. Keep at it!

October 23, 2007 spout

Working Remotely for Microsoft: Can You Focus On Work At Home?

First off, I don’t recommend remote work for folks who don’t like spending the vast majority of their time away from their colleagues, sometimes having trouble focusing on the work in favor of household duties or interactions. In fact, the ability to focus on work while at home is the #1 issue you’ll have to face as a remote employee and I’ve seen it drive 80% of folks back to the office. I’ve always been naturally in the 20% bucket on that issue.

As an example, when I first started at DevelopMentor, my office was in an open back room separated from the dining room by a hallway kitchen. My two infant boys had me in clear view when I was handcrafting RPC packets for communication with a DCOM server, hanging on the child gate, crying for me to play with them. My wife also had in plain sight when she wanted something from the high shelf. My family often heard me protest, You know, I am actually working over here!” I eventually built a door, purchased Melissa a stool and learned to be very mushy about the split between work and home life. My family’s actually been very supportive and I’ve always preferred the work environment I’ve established at home over any I’ve ever had from an employer, if for no other reason than my home has my family in it.

October 22, 2007 spout

The Whiteboard Whisperer: Working Remotely for Microsoft

I’ve been at Microsoft about 4.5 years, the whole time a remote employee,” i.e. I work mainly from my home in a suburb of Portland, OR but the teams I’ve worked for have all been based at Microsoft HQ in Redmond, WA.

Microsoft is traditionally a company that moves the bulk of their employees to WA, especially for product team and related duties. Of course, we’ve got subsidiaries and sales world-wide, as well as the occasional technology team in talent hot spots around the world, but there is a large corporate bias towards moving new hires to HQ. In fact, so much so that when we’ve got open spots, I’ve learned not to recommend someone that I know won’t move.

October 19, 2007 spout writing

Fun With GridView*RowPresenter

Fun With GridView*RowPresenter

I was searching for advanced WPF tree samples the other day and ran into the tree-list-view sample:

Notice how the left-most column does the indenting, while the rest of the columns line up nicely. The code for the tree-view-sample is a little C# and a bunch of sophisticated XAML templates I didn’t understand, so I stripped it down to the bare nubbins to discover what was going on. Assume a simple class holding the data:

class Person {
  List<Person> children = new List<Person>();
  public string Name { get; set; }
  public int Age { get; set; }
  public List<Person> Children { get { return children; } }
}

The juicy bit that makes the tree-list view above possible is the GridViewRowPresenter:

<Window ...
  xmlns:local="clr-namespace:WpfApplication10"
  Title="GridView*RowPresenter Fun">

  <Window.DataContext>
    <local:Person Name="John" Age="13" />
  </Window.DataContext>

  <GridViewRowPresenter Content="{Binding}">
    <GridViewRowPresenter.Columns>
      <!-- NOTE: must explicitly create the collection -->
        <GridViewColumnCollection>
          <GridViewColumn Header="Name" DisplayMemberBinding="{Binding Name}" />
          <GridViewColumn Header="Age" DisplayMemberBinding="{Binding Age}" />
      </GridViewColumnCollection>
    </GridViewRowPresenter.Columns>
  </GridViewRowPresenter>

</Window>

Here, we’re creating an instance of the GridViewRowPresenter, which is the thing that the ListView creates for you if you use the GridView. Here, we’re using it explicitly and setting the columns explicitly, binding it to our data and yielding the following:

Notice that we’re showing a single item, arranged as a row of values according to our column definition above. It’s boring and not at all interactive, at least because we don’t have a header, which we can get with an instance of the GridViewHeaderRowPresenter:

<Window.Resources>
  <GridViewColumnCollection x:Key="columns">
    <GridViewColumn Header="Name" DisplayMemberBinding="{Binding Name}" />
    <GridViewColumn Header="Age" DisplayMemberBinding="{Binding Age}" />
  </GridViewColumnCollection>
</Window.Resources>

<StackPanel>
  <!-- NOTE: must share access to same column collection to get shared resizing -->
  <GridViewHeaderRowPresenter Columns="{StaticResource columns}" />
  <GridViewRowPresenter Content="{Binding}" Columns="{StaticResource columns}" />
</StackPanel>

Here we’re creating an instance of the row presenter, passing in a reference to the same columns collection used by the row presenter so that the column sizes and positions are shared between the header row and the row presenters:

If we want more than one piece of data, all we have to do is use an items control with an item template that in turn creates a row presenter for each item in the collection:

<Window.DataContext>
  <x:Array Type="{x:Type local:Person}">
    <local:Person Name="John" Age="13" />
    <local:Person Name="Tom" Age="12" />
  </x:Array>
</Window.DataContext>

<Window.Resources>
  <GridViewColumnCollection x:Key="columns">
    <GridViewColumn Header="Name" DisplayMemberBinding="{Binding Name}" />
    <GridViewColumn Header="Age" DisplayMemberBinding="{Binding Age}" />
  </GridViewColumnCollection>
</Window.Resources>

<StackPanel>
  <GridViewHeaderRowPresenter Columns="{StaticResource columns}" />
  <ItemsControl ItemsSource="{Binding}">
    <ItemsControl.ItemTemplate>
      <DataTemplate>
        <GridViewRowPresenter Content="{Binding}" Columns="{StaticResource columns}" />
      </DataTemplate>
    </ItemsControl.ItemTemplate>
  </ItemsControl>
</StackPanel>

Now, we’ve got a stack panel that combines the header to the grid view rows with the grid view rows themselves, one per item in our collection:

Now on a rush of discovery and simplicity, I took the next step to show hierarchical data, hosting the data in a TreeView control and using a hierarchical data template so that I could build the tree list view shown above with the tiniest bit of XAML and code:

<Window.DataContext>
  <x:Array Type="{x:Type local:Person}">
  <local:Person Name="Chris" Age="38">
    <local:Person.Children>
      <local:Person Name="John" Age="13" />
      <local:Person Name="Tom" Age="12" />
    </local:Person.Children>
  </local:Person>
  <local:Person Name="Melissa" Age="39" />
  </x:Array>
</Window.DataContext>
...
<StackPanel>
  <GridViewHeaderRowPresenter Columns="{StaticResource columns}" />
  <TreeView ItemsSource="{Binding}" BorderThickness="0">
    <TreeView.ItemTemplate>
      <HierarchicalDataTemplate ItemsSource="{Binding Children}">
       <GridViewRowPresenter Content="{Binding}" Columns="{StaticResource columns}" />
      </HierarchicalDataTemplate>
    </TreeView.ItemTemplate>
  </TreeView>
</StackPanel>

Unfortunately, that’s where we run into the limit of what we can do without cranking things up a notch:

 

Beside the border around the tree view (caused by focus), the worst part about our simple tree-list-view is that, while each grid view row has the proper column sizes and relative positions, because the tree does the indenting, all of the columns are offset, not just the first one. The key to fixing this problem is to put the styling for indenting into the template for the first column only using the CellTemplate property of the GridViewRowColumn, taking over the drawing of the tree view items, which is what the tree-list-view sample does.

August 28, 2007 spout writing

“Programming WPF” (finally) shipping!

John Osborn of O’Reilly and Associates had this to say in my morning email:

Congratulations, guys. The book is printed and shipping! Just got my copy this morning and it looks great. A very substantial body of work, to say the least.

Thanks for all of your hard work on this project. Now to crank up the PR machine and make sure no book shelf is without a copy.”

August 17, 2007 spout writing

How to write a book - the short honest truth

I found this on digg.com
August 14, 2007 spout writing

“How you doin’?”

I wanted to figure out how to emit a new CLR type at run-time using Reflection.Emit and Google revealed the following article: Generating Code at Run Time With Reflection.Emit in DDJ.As usual, I skip most of the initial prose to the first code sample (I don’t need some author’s fancy intro — I just want the code!). Then, I’m reading along and I find some phrases I enjoy, e.g.

If you plan on generating lots of calls to Console.WriteLine(), you should be aware that the ILGenerator class exposes a method for just that purpose: ILGenerator.EmitWriteLine() generates the exact same code as our example. (Could this be the first assembler ever devised that includes explicit support for creating Hello, World” sample programs?)”

July 17, 2007 spout writing

Programming WPF, 2e (RTM Edition) on Amazon!

Buy your copy today! : )

P.S. I read the QC1 (Quality Check 1), all 859 pages of it, in two solid days this weekend. I found a bunch of nits, all of which will be fixed before you see it in August. Wahoo!

June 14, 2007 spout

The T-Mobile Wing rocks! ’til the battery dies…

I was really loving my T-Mobile Wing with WM6, Pocket Office, external micro-SD slot, slamming keyboard, beautiful ClearType display, one-handed usage (even though it is a PocketPC, I almost never needed to pull out the stylus), blue tooth (very high quality!), wi-fi, Edge and a slamming keyboard! (yes — it was that slamming.).

Unfortunately, I couldn’t keep it. After four days of the battery going dead after 12 short hours of my normal usage, e.g. email, texting, surfing, etc, it was dead. I turned off wi-fi, blue tooth and DirectPush to no avail. The T-Mobile Wing is just too cool for the battery and T-Mobile didn’t have a bigger one to give me.

May 28, 2007 spout writing

Why do we pick on journalism majors, so?

Here’s another one:

For example, if we had had a background in journalism, we might have used one-based indexing instead of zero-based indexing to…

May 28, 2007 spout writing

Sometimes I crack myself up

I forgot until the copy edit review process that I’d dropped this gem into a footnote:

On August 4th, 1997, the world’s oldest person so far, Jeanne Louise Calment, died at age 122, having taken up fencing at age 85 and out-lived the holder of her reverse-mortgage. Although I firmly believe that Ms. Calment is showing us the way to a richer, longer life, it’ll be a while yet before we need the full range supported by the Int32 class (2,147,483,647 years young).

April 29, 2007 spout writing

On becoming an empty nester…

I submitted the final manuscript for Programming WPF, 2nd edition, by Ian Griffiths and Chris Sells to O’Reilly and Associates this morning for publication. Of course, there’s stuff still to do (today we hit step 8 of 18), but this represents a major milestone in the life of any book.

I have mixed feelings when I finish a book. The last few have been especially intense, as I have a real day job on a Microsoft product-team-to-be, so it’s just been evenings and weekends. With this much work to do, you have to focus hard and the work becomes a part of you. This means that giving it up is also hard. My boys are just now becoming teenagers, so it’ll be a while yet before they leave home, but I imagine I’ll feel the same kind of melancholy I feel now — happy to see something you’ve put so much of your life into make its own way into the world, but hard to have the cord cut.

April 29, 2007 spout writing

Glyn Griffiths: Ian’s Dad and Damn Fine Reviewer

This was an email I sent to Glyn Griffiths, the final external reviewer on the WPF 2ed book before we submitted the final manuscript for copy edit and publication (and which has been posted here with his permission):

Mr. Griffiths, in chapter 7, you had a couple of comments about what happened in the 1ed of the book vs. what we’ve got now in the 2ed of the book. The first such comment was:

April 16, 2007 spout writing

My Foreword To ChrisAn’s “Essential WPF”

Now that Chris Anderson’s most excellent Essential Windows Presentation Foundation has transitioned to the physical world, I thought I’d share my foreword:

Thank God there weren’t more people like Chris Anderson when I was making my living outside of Microsoft.

I work at Microsoft now (two doors down from Chris, in fact), but not all that long ago, I was an instructor at a Windows developer training company. My brethren and I were led by a deep-thinking PhD candidate that applied the same rigor he applied to a scholarly pursuit that had to stand up to the crush or be crushed” mentality of academia. We learned how to think clearly as a defense mechanism and to communicate clearly as a survival technique. If we didn’t do it to his exacting standards, he’d sweep us aside and redo our work before our eyes (we learned to call it swooping” and you worked hard to avoid the phenomenon).

In a similar fashion, we learned to ignore the tutorial and reference materials produced by our vendor of choice, because it was clear that however clearly they may or may not be thinking inside their hallowed walls, it was certain that they weren’t up to communicating it with the rest of us. Arguably, our whole job for close to a decade was swooping” Microsoft itself, redoing their materials in the form of short course, conference talks, magazine articles and books. We called it the Microsoft Continuing Employment Act,” treating it like a pork barrel entitlement program that kept us in the style to which we had grown accustomed.

In fact, we made a nice living traveling the country saying things like, remember to call Release,” avoid round-trips” and ignore aggregation” because these were clear guidelines that distilled for developers what Microsoft couldn’t manage to say for itself. That’s not to say that there weren’t clear thinkers inside of Microsoft (Tony Williams and Crispin Goswell being two of my very favorites), but the gap between the beginner and the reader of such advanced writings was largely unfilled in those days.

With this book, that gravy train has run right off the track. Chris Anderson was one of the chief architects of the next-generation GUI stack, the Windows Presentation Framework, which is the subject of the book you’re now holding in your hands. You’d have thought that the very nature of the architecture job, that is, to make sure that the issues deep, deep inside were solved properly so that others could come along and build the trappings that made it into plain sight, would disqualify him from leading the developer from go” to whoa,” but that’s not the case. Chris’s insight allow him to shine a light from the internals of WPF to those standing at the entrance, guiding you through the concepts that form the foundation of his creation (and the creation of more than 300 other people, too, let’s not forget).

As the author of a competing book from another publisher, I can’t say that this is the only book you’ll ever need on WPF (or they’d have me in front of a firing squad), but I can say this with certainty: it belongs on your shelf within an easy reach. I know that’s where my copy will be.

April 14, 2007 spout writing

Best WPF Resources?

I’d like to provide a list of the best WPF resources, including real-world apps, free web resources, SDK docs, samples, blogs, etc. If you’ve got something that belongs on that list, I’d love to hear about it. Thanks!

April 11, 2007 spout

“Student who needs to interview a programmer”

Jimmy, a very polite 14-year old student of Washington Manor Middle School in California had an assignment to interview a computer programmer. I have no idea how he found me, but I did my best to help him out.

[jimmy] Thanks for your time! Here are the questions…

March 27, 2007 spout

The Microsoft “Sells” Department

So, I’m sitting in my office pair programming with Geoff Kizer when my phone rings. It says Microsoft” on the display, so I figure it’s one of my brethren.

Hello?”

March 10, 2007 spout writing

Programming WPF: Rough Cuts

If you can’t wait for Programming WPF to be on the shelves (I know I’m having trouble), then you can read the chapters as we write them
March 3, 2007 spout

Using my XBox 360 for Corp. Video Conferencing

I’ve been having another adventure in social video conferencing, this time with my team in Redmond. It all started with Doug brought his 360 into our new conference room, which is just an office with a coupla white boards, some comfy chairs and a 37″ LCD panel for projecting.

Once we got the 360, I purchased a year Live Gold subscription and a live camera for $30, turning it into a video conferencing solution. Now, every morning at scrum, I’m sitting in my living room, telling folks in building 42 what I did yesterday, what I’m doing today and whether I’m blocked or not and they can see as well as hear me. When we go around the room, somebody turns the camera for me and it’s my turn when we get to the LCD panel.

January 21, 2007 spout writing

Boogers and My Writing Process

I’m supposed to be writing today, but John (my eldest son) is also doing some writing as part of his homework. However, after watching him struggle with just the topic (the phrase Always aim for the moon. Even if you miss, you’ll end up among the stars” [which isn’t even the correct quote]) to try to write the fully-formed essay, I give him a little lesson about how I write. Plus, since I’m supposed to be writing, this blog post is an excellent avoidance technique.

When I write, I told my son, I have to write giant books starting from empty pages. I can’t just have a topic and start writing, I have to have something to break up the whitespace first. So, as a demonstration of this technique, I asked the fruit of my loins, an apple from my tree, for a topic. He said, without so much as a second of hesitation, boogers.”

January 4, 2007 spout

Five Things You Don’t Know About Me

I’ve been tagged a coupla times, so it’s time I fessed up with Five Things You Don’t Know About Me:

  1. In college, I was in a fraternity and not just a geek fraternity, but an actual, national, recognized social fraternity (Phi Delta Theta). I figured I was geeky enough in high school, so needed a place to learn to at least hide my dorkiness. Obviously, I failed, but it was a very fun four years. : )
  2. In college, I coded in Unix using VT100 emulation software via a modem to my school’s DECs from my Mac IIcx running System 7 (I worked two jobs all summer to earn half of the $6000 it cost me to purchase the thing in 1988). It was the combination of the best programming and best UI experience at the time (although on two separate OSes). After graduation and working a job for a coupla years where I programmed Unix all day, I needed to look at Windows 3.1 for the first time because I had an interview at Intel. I could only stand to use it for about 10 minutes. They hired me anyway as a Windows programmer and, thank goodness, it’s much gotten better. Windows is now my favorite programming and UI experience (and I’ve used both Unix and Mac OS X several times since then to make sure).
  3. I am a fetishist; my fetishes are domain names and phone numbers. I can’t think of a cool domain name without a) checking to see if it’s available and b) purchasing it if it is (the one that sticks in my mind is clownporn.com, but that one was long gone). If I ever have a cool idea for an app, I must first purchase the domain name (I own appsettings.com and I just purchased 16 domain names the other day for another thing I want to do). Likewise, if I see a 7-digit phone number without a 0 or a 1 in it, I am physically compelled to surf to phonespell.org to see what the possible 7 and 8-letter words are (my old home phone number was 642-JOHN, the name of my eldest son). Of course, I’ve written my own program to do the permutations of numbers to letters, but phonespell does that cool dictionary lookup and grouping thing. I also added the phonespell support to Dave’s Quick Search Taskbar Toolbar Deskbar.
  4. I have jumped out of a perfectly good airplane (not Alan Cooper’s plane).It was just before I got married and I took my best man. We both used parachutes. The fall was surprisingly quiet, but the stop at the sudden bottom was unpleasant.
  5. The equal-rights-for-humans theme that sometimes pops up on this site isn’t because I’ve seen friends discriminated against and now I have to change the world (I don’t actually know very many people that are homosexual), but rather because I think it’s the right thing to do.
November 24, 2006 spout

Xbox Video Marketplace Worked Great For Me

I tried the Xbox Video Marketplace on my 360 today. For 160 points ($2), I was able to purchase the season 2 premiere of Venture Bros (which is hilarious, btw) and 17% into the download, I was able to start watching it commercial free. Quality was high and I’m downloading Star Trek: The Enemy Within (a transporter accident creates an evil Kirk) for another $2 as I write this. The next experiment is a movie, but I’ll wait for the wife to come home before we decide which one to pick.

The experience was seamless. Recommended.

November 23, 2006 spout

I’m Thankful for Windows Vista

Of course I have no credibility here (I’m part of the evil empire, after all), but I have to say, I’m really loving the Windows Vista Ultimate RTM. I know the Vista team takes a lot of crap for being late and for not being revolutionary enough, so I thought I’d let the Vista team know that I have yet to find something that isn’t just better in Vista than in XP. Here are a few things I really like:

  • I no longer have to do Ctrl+Esc, R before I can type something to run (I’m a huge keyboard guy); I just have to type Ctrl+Esc and start typing. This savings alone has ruined me for XP. (And before you point out that I can just use Win+R, I don’t like the Windows key: it’s not on all keyboards and it’s not always in the same place.)
  • If I want to search for a program in my voluminous start menu, I just do Ctrl+Esc and start typing. When the list of results contains my target, I press the down arrow to pick the one I want and press Enter when I get there.
  • If I want to search for content on my computer, I just do Ctrl+Esc and start typing (once search is set to index my entire computer — I wish that were the default). If I want to be specific that I just want to search content or file name, I can use the content:” and name:” designators, e.g. content:foo name:foo.cs”.
  • If I want to find a setting in a particular control panel app, I open the control panel and start typing — the results point me at the specific control panel applet and page with that setting.
  • If I want to find something on the internet, I press Ctrl+Esc and start typing, then press the up arrow (to get to the Search the Internet” option) and press Enter, which brings up the results in my IE7 favorite search engine.
  • If I want to find something in my large list of installed programs, I open the Programs and Features control panel and start typing (I found the renamed Add and Remove Programs” control panel by searching for uninstall”).
  • Before you narrow my list of likes about Vista to pervasive search” (which, obviously, I love), I also really like the sidebar. It’s amazing how often I glance over there to get some quick piece of info that’s always being updated for me rather than start some app, interrupting what I’m doing (e.g. lately I’ve been waiting with bated breath for MSFT to hit 30). I’m anxious for lots more sidebar gadgets.
  • I love that the desktop is in the Alt+Tab list.
  • I love the 3D Win+Tab list.
  • The games, both new and old, are uniformly gorgeous.
  • I really love the new look n’ feel, including the animations and the new start menu, both of which I turned off in XP.
  • I love that it just works on my 2-year old Dell laptop w/o any muss or fuss. I only have a Windows Experience Index of 2.0 because of my graphics card, but using Vista is still a very pleasant experience (and I have Aero glass around the edges of my windows and everything).
  • I really love Windows Meeting Space. I’m a big user of Live Meeting because of my remote employee status and Windows MS is a simpler, cleaner, peer-to-peer version of the only parts of LiveMeeting I every actually used, i.e. sharing apps and sharing files. To have it included for free is huge.
  • I love having Media Center included, too.
  • I love that I can do picture slide shows from zip files as well as from folders.
  • I like the new Sync Center, one-stop shopping for my offline folders (which I love) as well as managing my smartphone’s files.
  • I really like the real-time thumbnail of apps when I hang the mouse over icons in the taskbar and in the Alt+Tab/Win+Tab list.
  • I love that .NET 3.0 is included out of the box.
  • I love that every app I’ve tried, including an app I originally wrote for Windows 95, just works.
  • I love that I find new features all the time.
  • As I’ve mentioned, I like the clearification.com site. In fact, I liked it so much, Mel and I want to see Demetri Martin live in Portland. Very funny.
November 22, 2006 spout

Dammit!

There are a very few games I could call great.” Doom (of course). Half-Life 2. Burnout Revenge. Mario Kart. And last week, I added another game: Gears of War. Wow. I’m almost exclusively a first-person-shooter person (although I never liked the Halo series), but GoW has converted me to 3rd person. It rocks.

The one flaw in GoW is that it’s too damn short! I’ve already finished the entire game on casual,” so now it’s time to start over again on hardcore” and begin the n-year wait for GoW 2.

November 13, 2006 spout

Costco + Busted Xbox 360 = Happiness

After a scant 6 months of service, my Xbox 360 yielded up the dreaded to play this disc, put it in an Xbox 360 console” error (where do you think I was putting it?!?), which indicated a problem w/ the DVD drive. Ironically, this only became an issue after playing Gears of War for an hour or so (OMG is that a great game), even though it was happening consistently across my entire game library.

Calling 360 technical support yielded an offer of a repair, if I was willing to pay $140 (+ shipping) and wait 10 days for transit time. Having invested more than $1000 into my 360 and taken it into my home as a family member (ranking just below the kids but well above the dogs in the pecking order), I couldn’t abandon it. This part of my experience yielded a very important lesson:

November 8, 2006 spout

Our Long National Nightmare is Over

Since at least 2001 we’ve been stuck in a quagmire of missteps, indecision, corruption and the eroding of our freedoms. Some of us feared it would never end.

But the US House and Senate are now officially out of the hands of the Republicans, and that’s cause for much rejoicing. Let the balloons drop and the dancing begin! It’s a new age.

November 4, 2006 spout

Pay As You Go Phones For the Boys

Back in writer avoidance mode, I did some research into PAYG phones for the boys based on some recommendations from friends, colleagues and Wikipedia. This is what I found:

Company Entry-Level
Phone Cost
Initial Airtime Additional
Airtime
Coverage
In My Area
Virgin Mobile $20 $20 (100 minutes) $11/hour uncertain
T-Mobile ToGo $30 $10 (30 minutes) $20/hour good
Firefly Mobile $80
(no keypad)
$7.50 (30 minutes) $15/hour reported
Tracfone $20
(shows time left)
$40 (120 minutes) $20/hour reported
Boost Mobile unknown
(bad website)
unknown
(bad website)
$12/hour reported
Cingular GoPhone unknown
(bad website)
$10 (40 minutes) $15/hour +
$1/day for usage
crappy
Verizon INpulse $70 $10 (100 minutes) $6/hour +
$1/day
reported
Net10 Wireless $40
(shows time left)
$30 (300 minutes) $6/hour reported
October 18, 2006 spout

Isaiah Okorie Asks “How do you do what you do?”

From: Isaiah Okorie

Sent: Friday, October 13, 2006 08:06 AM

September 27, 2006 spout

Horning in on Hanselminutes

It took a while, but I was finally able to horn in on an episode of Hanselminutes. Thanks for having me, Scott!
September 8, 2006 spout

Amazon Unbox — what about my TV?

I don’t want to download movies via Vongo or Amazon Unbox to my PC; I want to download them to my TV and smart phone! YouTube works because the videos are short, so watching them on my PV happens right now or not at all. Any movie or TV show service that doesn’t let me play the result on my media center or take it with me on my phone, I just don’t care. Does anyone want to watch 30+ minutes of video sitting at their desk or staring at their lap? I don’t get it…

September 5, 2006 spout writing

Congrats To Mr. Petzold on this WPF Review

In the world of Windows technical writing which has so much competition, there’s rarely any money involved, one dreams for reviews like these from KarstenJ:

Tim Sneath walked into my office the other day and laid Charles Petzold’s Applications = Code + Markup on my desk.  I’m only to Chapter 7 of 31 chapters and I am riveted.  I already have that feeling when reading a great novel when you don’t want it to end.  It actually does read like a novel to me, with a narrative arch as it negotiates its methodical way through the WPF jungle of APIs.”

August 18, 2006 spout

Fixing the Internet

About 18 months ago, I asked for an intern and boy did I get one. He doesn’t want to be mentioned, but he’s done some pretty cool stuff with the site in his spare time (he’s also a very busy web development consultant):

  1. Dug into what it would take to rebuild sb.com from scratch in ASP.NET 2.0 (although we differ on the moral implications of the license on Community Server 2.0)
  2. Updated 404 page that tracks usage on dead/non-existent links, even missing URL #frags
  3. Server-side link and client-side #frag forwarding
  4. tinysells.com implementation (e.g. www.tinysells.com/4) and administration console (i.e. book co-authors)
August 18, 2006 spout

The Internet Is a Meritocracy

It’s easy to think that if you’re already got a high page rank in google, that you’ll get more than your far share of traffic, polarizing the internet into a small number of sites that get all the hits. Luckily, according to Topical interests and the mitigation of search engine bias,” published in the Proceedings of the National Academy of Sciences, that’s not the case:

Our result has relevant conceptual and practical consequences; it suggests that, contrary to intuition and prior hypotheses, the use of search engines contributes to a more level playing field in which new sites have a greater chance of being discovered and thus of acquiring links and popularity, as long as they are about specific topics that match the interests of users as expressed through their search queries.”

August 15, 2006 spout writing

$33 On Bookpool: Windows Forms 2.0 Programming

The nice folks at Bookpool are running a special on Windows Forms 2.0 Programming: only $33! Enjoy.
August 14, 2006 spout

24 and the Comic Book Archive

I’m an avid 24 watcher and one of my favorite parts of the show (offsetting the fact that Jack never so much as cracks a smile let alone giving us a nice Wahoo! I did it! I rock!“) is when one of the technies sends her screen” to another computer. Man! I want that! It’s so often the case that I’ve got a bunch of morning news sites and documents I’m reading through that I get onto one computer in my house and want to send to another computer for reading (maybe it’s the computer downstairs or the Tablet), but there’s no way to do that. I want a little glyph next to the Minimize button called Send that lets me pick a computer to send the screen to.

And what does that have to do with the Comic Books Archive, which was archiving digital images of almost 3000 comic books at last count? These are folks that have figured out how to digitize a specific media and provide a specialized format (the Comic Book Reader format) and provide a specialized reader (cdisplay), which would make an excellent thing to send to a Tablet PC, along with PDFs, Word docs, web sites, 18,000 books from Project Gutenberg, and anything else that you’d like to share between your own computers or those of your friends and colleagues.

August 13, 2006 spout writing

Get ’Em While They’re Hot

Even though the 1st printing was just in May of this year, Windows Forms 2.0 Programming just entered the 2nd printing. Thanks for reading!

August 11, 2006 spout writing

We Sold A Copy of ATL Internals!

You said it couldn’t be done, but ATL Internals, 2e, has a review! Thanks, W.

August 8, 2006 spout

The Media Center PC ain’t a desktop; it’s a server

I’ve seen some flack lately about how the Windows Media Center Edition-style computers haven’t changed how folks consume content. Man, it sure has changed mine. Sure, you can put a MCE box on your desk and watch TV from your chair, but who the hell wants to do that?

A MCE box belongs in a living room or bedroom somewhere or even in a server closet. In fact, while I have my MCE box attached to my bedroom TV, I use it as a media server for music, video, photos and recorded TV shows. My media is available at every PC in my home and at every TV w/ an MCE extender box (I have an XBox on one TV and an XBox 360 on another). This setup allows my media room” to be my entire house and allows my family room media setup to consist of an HDTV and an XBox 360.

August 3, 2006 spout

3 Degrees of Email Separation

Microsoft is a sea of answers if only you can find the right person to ask. In my experience, I get a lot of those incoming questions, both internally and externally. Often, I don’t know the answer, but I can direct the email to someone closer, who will either know the answer or the right person to ask and so on.

Depending on how well a person in this chain is at answering this email, this process can take minutes or days, but it almost always ends up with the person that knows the answer within 3 emails. Often this chain involves an internal mailing list (lots of external questions end up on internal email aliases, insults and all : ), which doesn’t necessarily shorten the chain, but it does tend to shorten the response time.

July 30, 2006 spout writing

Custom Settings Provider in .NET 2.0

I updated the SDK RegistrySettingsProvider to implement IApplicationSettings and built a sample to demonstrate how to integrate it (or any .NET
July 29, 2006 spout

Laura Foy makes on10.net for me

I had my first on 10 experience today (I was following the links to the PhotoSynth stuff) and I have to say, I instantly fell in love with Laura Foy. I know that Erica Wiechers (of The .NET Show and MSDN TV) has a huge geekboy fan base (and it was fun to work with her @ MSDN), but Laura’s interviewing style and her personality made me subscribe to her interviewer-specific RSS feed on 10.

In fact, Laura makes me wish I did something besides developer-related stuff. What do I have to do to be interviewed by Laura Foy?!?

July 23, 2006 spout writing

An Embarrassment of WPF Riches

I just realized that Avalon is getting a book treatment unlike any other topic in my memory:

July 17, 2006 spout

DVD Wars. Huh. What is it good for?

Here’s the thing I don’t get about the next-gen
July 6, 2006 spout

Struggling with NUnit (2.2)

The one where I get System.IO.FileNotFoundException in NUnit in a bunch of different ways and suggest some possible solutions.
July 6, 2006 spout

Struggling with NUnit (2.2)

Struggling with NUnit (2.2)

I had a very unpleasant afternoon trying to get NUnit working, so I thought I’d share my troubles and my solutions (such as they are). A search revealed a lot of folks with the same troubles, but precious few explanations or solutions. The NUnit Quick Start documentation does a wonderful job telling you how to write a simple TestFixture class with one or more Test methods (and even an optional SetUp method). However, as far as I could tell, there wasn’t any part of that tutorial that said “Hey! Add a reference to nunit.core.dll’ as well as nunit.framework.dll’ to your project or neither nunit-gui nor nunit-console will work;” you’ll get a System.IO.FileNotFoundException when you don’t have nunit.core.dll (the Exceptions Details menu item doesn’t help):

June 27, 2006 spout writing

When to ship a book is hard to know these days…

Mr. Petzold beat me to the punch on the Windows Forms 2.0 book and he’s going to do it again on the RTM Avalon book. However, such a thing is dicey, as Mr. Petzold points out.

It was in researching the Windows Forms 1.0 book when I grew to be scared of finalizing a book before the technology was finalized; that’s when they added AllowPartiallyTrustedCallersAttribute and it screwed up the entire No-Touch Deployment story. Toward that end, we didn’t ship the WinForms 2.0 book til after the .NET 2.0 bits went gold and we won’t ship the paper copy of the Avalon 1.0 book til then, either (although I understand ORA is going to be shipping early electronic drafts of our work as we do it). I have to sacrifice 2-3 months on the shelves to my competitors, but I get to be less scared of big, last minute changes.

June 16, 2006 spout

PM Skill #9: Team Off-site

I’ve been doing some design work with a small part of my new team for a few months now and we’ve gotten largely on the same page with each other. However, there were 20-some odd folks that we hadn’t done a good job keeping on the same page, so ChrisAn proposed an off-site. I proposed the format:

  • 45-minute slots for each bucket” of design functionality with the owner of the bucket leading the discussion (my boss, Adam, wanted to make sure that at least half of each talk was *not* lecture from the speaker). Each session was followed with a 15-minute break.
  • 90-minute break-out sessions where each person had to pick their technology bucket and work with the owner to produce a 2-page functional spec and a 2-page technical spec.
May 24, 2006 spout

T-Mobile Smartphone Fun Facts

A coupla weeks ago, the AT&T wireless cell phone reception at my house went through the floor. I called up the nice folks at Cingular and they guaranteed me that my reception would improve if I moved my old AT&T account to Cingular (Cingular owns both, after all). When that didn’t work, I went to the mall, signed up for T-Mobile, went to my house and, when the reception was much better, had em move my phone number over. Since then, I’ve been moving my smartphone along with me (I have a QTEK 8500 on order, but my Audiovox 5600 is still the greatest thing to happen to me since my first laptop). Here’s what I’ve found:

  • To get the data working (assuming you’ve selected that account option from T-Mobile), set up a GPRS connection that connects to the internet and uses wap.voicestream.com” as the Access Point (no user name, password or DNS addresses). There’s no need for a proxy connection, but make sure that your IE connection options use the internet as its network (I mistakenly had it set to WAP at first).
  • To use the phone as a modem for use in connecting to the internet, pair the phone w/ your computer using Bluetooth (make sure to put the phone into discovery mode so that Windows can find it) and then use the new COM port that Windows adds (COM4 on my machine) to set up a dial-up network connection, using *99#” as the phone number (no user name or password). I get this working when I called T-Mobile and they walked me through the setup, even though the Audiovox isn’t a supported phone and the tech support guy had no documentation on one.
  • This isn’t phone related, but once you’ve got a T-Mobile data plan, you should be able to use WiFi from your laptop at a T-Mobile HotSpot by using your 10-digit phone number as the user name and the last 4 digits of your SSN as your password (I haven’t tried this yet, but I plan to!).
May 23, 2006 spout

Don’t want to skew Amazon reviews

While I don’t mind being called tacky by one of this generation’s best technical writers, I do mind the idea that the folks that would abuse the system would skew the Amazon reviews. While I don’t hide the fact that I ask people to post reviews for my book, I’ve always been proud that I’ve never asked them what kind of review to post and, when Amazon’s system had a hiccup recently, none of my books had any reviews posted by me (unlike 50% of the other books on Amazon).

So, the idea that folks would just post a review having not even read the book was something I never considered (and why you don’t want me writing your security subsystem). So, consider this offer rescinded. You can post a review on Amazon or not, good or bad, as you choose.

May 22, 2006 spout

Google’s 2-day interview process

May 22, 2006 spout writing

Post an Amazon review and you get my royalties

Update: Whoops — didn’t think of the ways to abuse this system. I’ve updated the offer here.

If you post a legitimate review on Amazon for Windows Forms 2.0 Programming before the 4th of July, 2006, I will personally send you my royalties for that copy of the book ($4.77 — don’t spend it all in one place : ).

May 19, 2006 spout writing

WinForms 2.0 book @ the printer

WinForms 2.0 book @ the printer

The one where the brothers Sells and I travel to Ann Arbor, MI to see Windows Forms 2.0 Programming being printed. It’s well worth the trip, if you can talk the publisher into arranging it.

May 19, 2006 spout

The Sells Brothers Meet the Edwards Brothers

The Sells Brothers Meet the Edwards Brothers

Years ago, Tim Ewald made an off-handed comment about how cool the real book printing process was and that I should take the boys to see it if I ever got the chance. Two weeks ago, we got the change and this is what we saw.

The printer for Windows Forms 2.0 Programming was Edwards Brothers, Inc. in Ann Arbor, MI. The boys and I took the 8pm flight from Portland, OR to Vegas, then the 11pm flight to Detroit, arriving at 6am, having gotten about 3 hours of sleep during the flight (the boys first redeye!). On the way out the door, we’d been a little rushed (I was trying to finish off the flooring in the new laundry room so that Melissa could have her washer and drier back after its long absence during the renovations), so had left all of the carefully prepared contact info and directions sitting in my office, meaning that the first thing we had to do was to sit in the airport near a hotspot and download driving directions. This and a trip to the restroom for a teeth brushing and a fresh shirt and we had caught our 2nd wind.

We picked up our car and had a very pleasant trip to Ann Arbor, where we stopped at Mike’s Coney Island for pancakes and omelets (I had the pancakes and my youngest surprised the hell out of me by ordering an omelet — they grow up so fast!). We arrived at Edwards Brothers around 7:30a (in some time zone) and learned that they had been in business for a little while longer than Sells Brothers, Inc:

May 12, 2006 spout writing

A C# Bedtime Story Updated for C# 2.0

Seeing a reference to A C# Bedtime Story as a generic definition for .NET delegates in a recent DDJ article inspired me to post the new and improved version that takes into account C# 2.0′s anonymous delegate support. Enjoy.

May 9, 2006 spout writing

ATL Internals, 2e, available for pre-order

ATL Internals, 2e, this time with ATL 8, is available for pre-order on Amazon.com. For those wondering what the world needs with such a book, I refer you to the preface:

.NET has hit the Windows programmer community like a tornado, tipping over the trailer homes of the ways that we used to do things. It’s pretty much swept up the needs of most web applications and service applications, as well of most of the line-of-business applications for which we previously used Visual Basic and MFC.

However, a few stubborn hold-outs in their root cellars will give up their native code only at the end of a gun. These are the folks with years of investment in C++ code who don’t trust some new-fangled compiler switches to make their native code managed.” Those folks won’t ever move their code, whether there are benefits to be gained or not. This book is partially for them, if they can be talked into moving their ATL 3/Visual C++ 6 projects forward to ATL 8 and Visual Studio 2005.

Another class of developers that inhabit downtown Windows city aren’t touched by tornados and barely notice them when they happen. These are the ones shipping applications that have to run fast and well on Windows 95 on up, that don’t have the CPU or the memory to run a .NET application or the bandwidth to download the .NET Framework even if they wanted to. These are the ones who also have to squeeze the maximum out of server machines, to take advantage of every resource that’s available. These are the ones who don’t have the luxury of the CPU, memory or storage resources provided by the clear weather of modern machines needed for garbage collection, just-in-time compilation, or a giant class library filled with things they don’t need. These developers value load time, execution speed, and direct access to the platform in rain, sleet, or dark of night. For them, any framework they use must have a strict policy when it comes to zero-overhead for features they don’t use, maximum flexibility for customization, and hard-core performance. For these developers, there’s ATL 8, the last, best native framework for the Windows platform.

April 18, 2006 spout writing

WinForms 2.0 book just about ready

Mike and I submitted our last round of comments to the WinForms 2.0 book last night. The way it works is, after we submit the final” manuscript, the copy editor has his/her way with it. Then Mike read all 1300 pages, making sure that the copy editor didn’t change the meaning of anything. After that, the publisher moves everything from Word to Quark so that they have the control they need to produce photo-ready copy for the printer and sends us a set of PDFs.

With the PDFs in hand, we both read the ~1000 pages again (the move to Quark puts in the final styles), looking for things that got messed up during the move between software packages or new things that we notice. Theoretically, we’re only checking for formatting, but I always take this opportunity to read the entire book all the way through with fresh eyes (which is why I made Mike do the copy edits — so I had some time away from the book to get fresh again). That yielded about 50 pages of comments for the publisher to apply, including dropping about 5 pages of content that didn’t add enough value to be worth the space.

March 16, 2006 spout

I just watched my son learn to fear the computer

When kids are young, they have no fear of computers or anything else. My eldest, when he was 2.5, knew how to detect what OS he was running (I dual booted Win2K and Win95 at the time), remember which OS his games needed, reboot, choose the non-default OS from the boot menu and start his app like it was the most natural thing in the world. Even though he couldn’t read, he learned all of the functionality of the app by choosing all of the menu items and pressing all of the toolbar icons just to see what they did. He had no fear.

Tonight, my youngest was working in Word, writing a paper that’s due tomorrow (of course). After he was finished digging through the thesaurus on the right-hand side, he wanted to close that part of the window, but accidental pressed the X to close the document he was working on (which, of course, he hadn’t saved). When he was asked if he was sure, he thought he was being asked if he was sure he wanted to close the thesaurus, so he pressed Yes.”

March 11, 2006 spout

My $366 Vista PC

My $366 Vista PC
February 25, 2006 spout

testing

1.2.3…
February 25, 2006 spout

PM Skill #9: Learn From The Masters

Of course, when you’re learning to do something, whatever it is, you should check out how a lot of different folks do it. For example, the author of The Game learned to be a PUA from a variety of sources. One PUA guru of PM love is Brad Abrams and he regularly spills his guts onto his blog (plus, you’ve got to love his numbering scheme…):

February 24, 2006 spout

PM Skill #8: Give Credit Freely

Engineers are people, too, and appreciate pats on the back as much as anyone. In fact, many of us are so socially needy that we’re willing to trade attaboys” for money (and hence the fuel that drives the OSS community).

The beauty: praise is cheap. Blocks of plastic, plaques, bowling night morale events, etc, all cost money and can be the cause of derision as often as pride. On the other hand, sincere praise freely given doesn’t cost a thing, but it’s often much more appreciated.

February 15, 2006 spout

A Reviewing Trick I Learned A Long Time Ago

I learned this way of reviewing artifacts from Cal Caldwell, a friend of mine from my instructor days. The technique is for doing code reviews, but I’m going to be using it later this week for some design docs. Anybody who recognizes this technique can chime in with what it’s called:

  • Every reviewer gets a different hat,” i.e. a POV that they adopt when reviewing, e.g. looking for coding guidelines, looking for readability, looking at a feature from an architecture pov, looking at it from a particular customer pov, etc. Anyone can have feedback on anything, but the idea is that with different folks wearing different hats, you get a greater coverage.
  • Every reviewer brings review comments to the meeting, i.e. you reviewer before hand and only report at the meeting.
  • Every reviewer must start with something nice! Too often, engineers focus on the negative. Saying nice cushions the blow and reinforces the good things so that they don’t get cut.
  • Each piece of feedback will be logged (hopefully by the person that provides it) and spoken to the reviewee, but will not be argued with. If a reviewee disagrees, they keep it to themselves, asking only clarification questions to make sure that they understand the feedback. What feedback is applied it up to the reviewee and any follow up arguments happen offline.
February 15, 2006 spout

Scrum is very focusing

We started using scrum in my group this week and I’m already finding myself pushing aside work that I would normally sign up for in other groups. Scrum gives you to choice of being able to say
February 10, 2006 spout

Multi-Touch Interaction Research

Wow. I wonder how many years that existence of the mouse has set us back because it delayed us from using this.
February 10, 2006 spout

My Favorite Wiki: pinvoke.net

I guess wikipedia is cool, but the wiki that provides a vital service in my life is pinvoke.net, which provides an enormous, user-contributed list of Win32 API mappings for .NET. I find it useful not just because folks are contributing tons of stuff I use, but also because I find it a wonderful place to drop code for my own later use, e.g.

February 3, 2006 spout

PM Skill #7: Use That Meeting Time!

It’s very easy, as the PM, to not want to waste team time in a meeting, letting folks go when there’s still 30 minutes left. In fact, lots of folks will praise you for your short meetings. That’s fine if all of the work for that meeting has been done, e.g. everyone’s reported their status, all of the open questions have been decided, etc.

However, it’s often the case that in these meetings, other issues will come up to be discussed in future meetings to be scheduled at another time. Don’t let your concern for your team mates’ free time tempt you to let em go! It’s hard enough to get the folks you need together in a room. Once you’ve got em there, use em.

January 31, 2006 spout writing

Japanese version of Avalon book

I thought someone might be interested in the Japanese version of our WPF book. Personally, I love
January 31, 2006 spout writing

Pre-order “Windows Forms 2.0 Programming”

I just noticed that Windows Forms 2.0 Programming,” by Michael Weinhardt and Chris Sells, is available for pre-order. I’ve had a lot of requests for info on this book, so now folks can watch this space. Mike and I have finished the copy edit rounds, but we still haven’t seen the final PDFs, so it’s still going to be awhile (hopefully no later than early April).
January 31, 2006 spout

IE7 Beta 2 worth the download

I’ve been using IE7 for the last week or so and it’s definitely worth the download
January 25, 2006 spout

Imperative vs. Declarative

Savas showed me this great example from a book he’s reading. Consider this:

F = m * v

January 22, 2006 spout

Netflix for Books?

I know, I know,
January 19, 2006 spout

I want a service that “rips” books

Assuming the Sony Reader is cool, I still won’t have all the content I want and I certainly don’t want to repurchase all of my books. In the same way copyright law enables me to backup my CDs and DVDs, I want to rip” my books and comics for electronic use. I’d like the same technology that the Google and the Amazon folks are using to digitize existing books (the folks that litter USENIX with copyright materials must have a cool setup, too). My understanding is that, unlike CDs and DVDs, which are easy to read via computer, books are not, so I’ll need a service where I can box up my books and send em for ripping, resulting in a shiny DVD filled with my words and images, ideally OCR’d enough to allow full text search. In fact, after a while, the book rip houses would have most books on file, so I’d only have to prove that I own a book and they could email me the electronic version, saving us both the shipping charges. In further fact, this is an additional service that Google and/or Amazon could provide, since they’re already ripping” the books they sell…

January 18, 2006 spout

I Hate Books

I hate that indexes suck and that they don’t support full text searching across my entire collection.

I hate that I have to guess which ones I’ll need or want so that I can carry them with me.

January 17, 2006 spout

PM Skill #6: Be The Team Mom

In an ideal world, a PM would be able to get together with their team, lead the discussion til everyone agrees what they’re going to do and while they’re doing it, hang out on the beach answering the odd question on their smart phone til the work is scheduled to be done.

At Microsoft, we don’t live in an ideal world.

January 16, 2006 spout writing

A Toast to WPF

A Toast to WPF

Here’s a review you don’t get very often:

Your WPF book is excellent. So good that I actually chose to read it instead of watching in flight entertainment from my trip to London in Dec… I liked it so much that I asked for some champaign, and continued to read it non-stop till I reached London from UK. Here’s a photo. Good job!”

January 16, 2006 spout

PM Skill #5: Unblock Others First

PMs often come from the ranks of engineers who’ve been promoted” (aka taken away from the code to go to meetings). Many fight this trend, reverting to their old close-the-door-and-solve-the-problem habits to solve problems, which, as I’ve mentioned, doesn’t work at all well when you’re managing a team.

Even worse, a PM has to do something that’s very weird to most people — they have to help other folks get their work done before they tackle their own work. I call this unblock others first.” This has implications:

January 12, 2006 spout

PM Skill #4: Exhibiting the Behavior You Want

At our last team milestone, we had stepped up the pace in the last two weeks to make sure that we were done in time for a demo by one of our internal stakeholders (demoing your stuff is a wonderful way to communicate, but having other folks build on your stuff to demo their stuff is even better [so long as they remember to mention your stuff]). When we decided to step up the pace, I let everyone on the team know that I was available 24/7 until the demo, providing all my contact numbers. I was actively working on a chunk of the implementation, so I would send out status and check-in mails whenever I had completed something, often in the middle of the night or early in the morning (I didn’t get much sleep for those two weeks). When folks had questions, I was there to answer them, day or night. I was working long and focused hours and I was making good progress against my goals to meet the deadline for the demo.

In other words, while I never once asked the team to double their work efforts, once we’d all agreed to meet the shortened deadline, I stepped up my pace, let them know I’d stepped up my pace and expected them to do the same. This is the same no matter what behavior you want, whether it’s working long hours (only temporarily, though, else you’ll burn out your team), showing up to meetings on time or getting powered sugar on your keyboard. Some individual members of your team may not change their behavior, but they definitely won’t if you’re not willing to.

January 12, 2006 spout writing

Survey: The Future of Publishing

Karen Gettman, my editor at Addison-Wesley, called and asked me a bunch of questions about the future of publishing yesterday. After our discussion, she asked if I knew anyone else and I volunteered to put a survey up on my web site.

To answer this survey, send the questions below and your answers to Karen.Gettman@AWL.com. Also, include your phone number so Karen can call to follow up (she finds the phone conversations to be most illuminating when it comes to really figuring out how people want to get to info — we spent a bunch of time talking about hardware and software for ebooks). Thanks from Karen for your help!

January 11, 2006 spout

PM Skill #3: Getting Things Done

Fundamentally, a PMs job is to get things done. If you’re going to plan and ship while keeping your team happy, you’ve got to plan, ship and keep your team happy. All of this pre-supposes you can get things done.

Getting things done isn’t magic. For example, I’m sure everyone reading these words can get something done all on their own. However, when you’re a PM, you’ve got to lead a team to get something done and that’s a little trickier. Here’s what I do:

January 10, 2006 spout

A Mac that runs Windows?!?!?!?

Holy shit! I Macintosh that runs Windows!!!

After Jobs’ presentation, Apple Senior Vice President Phil Schiller addressed the issue of running Windows on Macs, saying there are no plans to sell or support Windows on an Intel-based Mac. That doesn’t preclude someone from running it on a Mac. They probably will,’ he said. We won’t do anything to preclude that.’”

January 5, 2006 spout

I’m really digging live.com

I’ve tried all the portal sites at one time or another (yahoo, google, etc), but none of them have ever stuck til now. Since I gave up on subscribing to blogs, I find myself surfing to two sites every day: slashdot.org and live.com. I like getting the news headlines and I really like the gadgets (not one, but *two* versions of Wahoo! [both of which end in tris” for some reason…]).

It’s not perfect (the menu on the left obscures some text, there’s no auto scrolling while you drag and it doesn’t seem to like my smart phone), but it’s definitely sticky,” at least for me.

January 5, 2006 spout

Mobile Movie Listing Sites Compared

On a recent mailing list discussion, folks posted a large number of URLs for mobile movie listing sites. Since searching for movies is one of the things I like to do on my smart phone, I did a quick compare and contrast, looking for the site that would give me a quick list of movies by my house. Here’s what I found:

Yahoo Mobile: once I chose my location, it showed me theaters, not movies in my location. I don’t pick the movie I want to see by theater, I pick it by title and time.

December 29, 2005 spout writing

Dirty Publishing Secret: Indexes Suck

I hate to say it, but indexes are the one place where I skimp when writing a book. I go round and round on sentence structure, figures, story, flow, coverages, what to cover, what to leave out, section headings and all of the other minutia that goes with writing a book, but I never bother with the index.

The index is one of those things where, as an author, you can write the index yourself, complete with page numbers (added manually) or your can let the publisher outsource it (although be careful when signing the contract — some publishers will charge the author the outsourcing fee!). So, for no work, I can get something that’s OK, but generates some complaints (maybe 1 out of 20 is about the index) and let Safari, Amazon and Google be the full-text search equivalent (even good indexes suck compared to that) or I can do a *ton* of work to reduce the number of complaints to 1 out of 30 (this is just a guess but it nicely justifies not doing the work, don’t you think? : ). As it turns out, the publisher will let you proof an index, but I have yet to figure out how to do that.

December 28, 2005 spout

PM Skill #2: Building Consensus

I know the phrase building consensus” is a touchy, feelie term, but it’s the best description of one of the most important skills a PM can have. As a PM, you’ve often got responsibility but no authority, which means you have to spend time convincing everyone that the work you need done is in their best interests to do. Getting a whole group of people pointed in the right direction is the consensus” part. The building” part is how you get there.

One way to build consensus is to hole up in your office for days on end, drafting a plan down to the task and sub-task level, emerging only when you’ve got everything just right, presenting it to the team in one, fell swoop. I’ll call this the engineering way” of building consensus, because it seems to be the first reflex of software engineers new to the PM world. Unfortunately, this way almost never works. The first problem with this technique is obvious: there ain’t no way your plan is going to survive contact with your team. They’ll question the highest level assumptions that affect the next level, which affect the next level and so on. Even if, eventually, your plan was 100% the right one, you can’t just jump to the end game w/o bringing your team along with you. The second, less obvious, problem with this technique is that, while you’re holed up in your office, the rest of the team will have splintered into factions, going in their own directions and building their own ideas of what the team should be doing which you now have to steer them away from.

December 23, 2005 spout

PM Skill #1: Communicate, Communicate, Communicate

I think the title says it all: if you’re a PM, you’ve got to communicate. That includes to your team, your management, your partners and your customers. As I mentioned, I’m a big fan of getting people’s raw feedback with informal chats. I also like to schedule regular 1:1s with as much of the team as I can.

For folks not on the immediate team, I like to give them updates at the ends of milestones in the form of a PowerPoint presentation. The outline often looks like this:

December 22, 2005 spout

PM Skill #0: Know Your Job

I’ve been a Program Manager (PM) at Microsoft now for about 2.5 years. Before that, I’ve been a managing contractor, a lead author, an engineering manager and a chief architect (both for commercial and shared source projects). Over a 12 year career, I’ve not only contributed to lots of shipping projects, but have lead several.

Most recently, I’ve been applying that experience to being a PM on a real Microsoft product team, which is its own unique experience. I’ve only been doing it for a few months, during which I spent a lot of time studying internal PM training materials and asking my exemplar PM brethern how they do it. At the same time, I’ve been helping a colleage get up to speed on just what it means to be a PM, so I thought I’d use this blog for what I think it’s best at — writing down what I believe and having people tell me where I got it wrong. So, consider these posts (like all posts on this site) to start with in my opinion.”

December 18, 2005 spout

How come nobody says “impeach?”

WARNING: This is my political side bubbling over. If you only want fun stuff about my kids or technology, this post ain’t for you.

Clinton engaged in an consensual adult act in the west wing and endured the impeachment process.

December 16, 2005 spout writing

Windows Forms 2.0 Book Samples Posted

Mike did some last minute clean-up and checked in the files, so I’ve uploaded the code sample for the Windows Forms 2.0 book. Enjoy.

December 16, 2005 spout writing

Windows Forms Programming 2005 in C# Submitted!

I packaged off the final chapters, figures and PDF files for submission of the WinForms 2.0 book this morning. Michael made it easy by fixing all the last minute nits I found, producing the PDFs and bundling all of the figure files together (he separated the graphics from the Word docs using a WinForms 2.0 program, of course!).

In spite of the fact that I’ve been working on long-lead prototype coding for the last month and Mike’s been moving to the US from Australia, we managed to get the book submitted a full 15.5 hours early (they meant midnight when they gave us a 12/16 deadline, didn’t they?!?).

November 23, 2005 spout

A C# 2.0 anon delegate “gotcha”

I’m a huge fan of anonymous delegates, but I ran into a gotcha this morning when using anon delegates inside a for-loop:

class Worker {

November 15, 2005 spout

Turning off special features in DVDs and CDs?

Does anyone know if it’s possible to turn off the special PC features of DVDs and CDs? I’d like to avoid Sony-sponsored virus enablers
November 13, 2005 spout

USB HD w/ OS/Apps + FolderShare = Portable Computing?

If you could boot Windows Vista from a USB drive large enough for the OS and apps, like this version of Linux, and log into FolderShare for your data, you could use any computer that allowing booting from USB into a temporary terminal (although device drivers would be a challenge).

November 11, 2005 spout

After the writing is done

Today Michael Weinhardt and I submitted the final chapters of Windows Forms 2.0 Programming in C#” for review. Mike has worked his butt off for the last 20 months to bring this revision about, taking a fresh look at every single chapter, not only for updates to the technology, but also for story. The book is far, far better than it was without him and he deserves your love and praise when the book is released (hopefully in April of 2006).

Since this is Mike’s first book, I imagine he thinks that most of the work is done. Here’s the list of things I sent him that still needs doing:

November 8, 2005 spout

Have I missed anything?

I’ve noticed that various prolific bloggers feel the need to tell me that they’re going to stop blogging for more than 24 hours. That’s one of the things I love about RSS readers: no matter how long someone goes away, so long as I’m subscribed, I here their every utterance.

On the other hand, what I’ve come to hate about RSS readers is that nothing gets by me. Keeping track of absolutely everything was exhausting, so I went cold turkey. I’ve been off #R since I repaved my machine a coupla weeks ago. I still surf to slashdot.org about once/day, but that’s it. No Scobelizer. No Don. No Ian. No Dilbert or Gizmodo or any of the 100s of other items in my OPML that I can’t even remember. No RSS reader of any kind.

October 31, 2005 spout

What’s a group of geeks called?

Sloth of bears.

Army of ants.

October 29, 2005 spout

Testing ASP.NET 2.0 port of sb.com

Pay no attention to the may behind the curtain…
October 26, 2005 spout

The Most Amazing Consumer Experience

I just had the most amazing consumer experience and I just had to share it.

I was looking for the local Mom & Pop computer store in my area and I stumbled across www.puzzlecomputers.com. His site doesn’t mention a store, but I left him a message asking if he could upgrade my computer or point me at the local Mom & Pop. Not only does he do that kind of work, but he came to my house, picked up the two computers I wanted to use as parts, e.g. case, RW-DVD, HD, etc, recommended and purchased the new motherboard, CPU, memory and quiet power supply, put them all together (including modifying my old proprietary Dell case to fit), brought the whole thing back to my house and then spent another hour installing another HD I had lying around. The specs on the parts were 1GB of RAM (upgradeable to 2GB), 2.8GHz AMD processor and ABIT motherboard with all the trimmings.

October 24, 2005 spout

WF Activity Context

I was playing around with a state machine workflow in WF and ran across something that I didn’t except. Apparently if you have a an activity that can be other than a singleton, e.g. inside of a loop or as part of a state machine workflow, then an activity can not be accessed by it’s workflow instance variable. For example, the following works just fine in a sequence workflow:

public partial class Workflow2 : SequentialWorkflow {
private void code1_ExecuteCode(object sender, EventArgs e) {
// Retrieve Comment property from typed event sink (generated by wca)
string comment = this.eventSink1.Comment;
    Console.WriteLine("Order approved w/ comment= {0}", comment);
  }
}

However, in the case where the activity can be executed more than once, it’s my understand that each time through, there’s a new activity object that’s different from the named activity associated with the workflow. To get a hold of the current activity, you have to traverse the activity tree, which you can access in a code activity via the sender’s parent property:

October 24, 2005 spout

Typed WF Communications Details

If you downloaded the samples from my previous two forays into WF communications programming, you probably couldn’t get them to build. The problem is that when I packaged things up, I removed the bin directories. I haven’t figured out just why this causes everything to stop building, but with the help of Dennis Pilarinos, I rearranged the two projects into three:

  1. communications interface (CommunicationLibrary): the data exchange service interface definition, compiles into CommunicationLibrary.dll

  2. communications activities (WorkflowProject1): uses a pre-build step to generate the typed activities generated from the communications library using the wca tool, references CommunicationLibrary.dll and compiles into WorkflowProject1.dll (nice name, eh? : )

  3. application (EventSinkAndMethodInvoke2): the app that uses the typed activities, references both CommunicationLibrary.dll and WorkflowProject1.dll

It’s only by separating the communications activities into a separate assembly that things can build and rebuild reliably. You can download the newly configured code here. Enjoy.

October 21, 2005 spout

I’m starting to speak in numbers

Someone posted an URL to a mailing list I’m on. My response to his post was
October 17, 2005 spout

Web Services and Data Binding?

What does it mean to bind to a web service? It’s not hard to think of taking the result of a web service and binding it as input to some set of controls, but what about changes to that data? Should data from web services be read-only, requiring an explicit call to add, remove or update or should their be some standard WS-CRUD standard? What do you nice folks do?
October 16, 2005 spout

More Workflow Communications Spelunking

Here. The one where I take Dennis’s suggestion, try wca.exe with my workflow communications problems
October 16, 2005 spout

More Workflow Communciation Spelunking

More Workflow Communciation Spelunking

After complaining about the inability to bind directly to event inputs, Dennis suggested I try the Workflow Communications Activity generator utility (wca.exe). If you point it at an assembly that contains interfaces decorated with the DataExchangeService attribute, it will generate typed invoke method and event sink activities for each method and event in the interface. To support this, I moved the communication interface, IOrderService, and types the interface depends on, i.e. Order and OrderEventArgs, to a separate library project and added the following post-build step:

"C:\Program Files\Microsoft SDks\Windows Workflow Foundation\wca.exe"
  "$(TargetPath)" /o:"$(SolutionDir)\EventSinkAndMethodInvoke2"

The reason I added this as a post-build step in the library project instead of as a pre-build stuff in the actual wf app, is because I want to have the types to program against whenever the library changes. However, either way, to get the new activities to show up on the toolbar, you have to build the application. Once I’d done that, I updated my workflow using the typed activities:

October 14, 2005 spout

Workflow Communication Spelunking

October 14, 2005 spout

Workflow Communication Spelunking

Workflow Communication Spelunking

I just an interesting week taking a crash course in Windows Workflow Foundation (formerly WWF, not just WF) programming. My big hang-up was, how do I communicate into, out of and between activities?

I started with Dennis’s explanation of communications into and out of a workflow. The fundamental idea is that, once a workflow has started, you can’t talk to it directly. Instead, you set up a communications interface that the workflow can use to talk to the host and that the workflow can use to watch for events from the host, e.g.

[DataExchangeService]
public interface IOrderService {
  void CreateOrder(string customer, string orderDescription);
  event EventHandler<OrderEventArgs> OrderApproved;
}
October 10, 2005 spout

Open Office is a “real” thing

I use my family as a litmus test of when things are real” or not. None of them have technology backgrounds or training, so if something is real to them, it’s real. For example, it was my grandmother that asked whether she need Windows 95 (she didn’t have a computer, mind you). I head from my folks about spyware and phish attacks. And now, my sister-in-law asked me if she should be upgrading her Windows ME machine to OpenOffice.

Of course, OpenOffice isn’t an OS, but as far as she knows, MS Office is her current OS, so maybe OpenOffice is what she needs.

October 8, 2005 spout

I’m also a huge Ian fan, as you should be

Ian Griffiths, my co-author on Programming Windows Presentation Foundation, is very well worth your attention.

He was a colleague of mine at DevelopMentor and now teaches for PluralSight.

October 8, 2005 spout

I’m a fan

Charles Petzold taught the first generation of real Windows programmers.

Charles Petzold sold so many copies of Programming Windows 3.1 that he broke the MSPress accounting software.

October 8, 2005 spout writing

Wise Advice from Tyler Brown

How can you argue with someone so obviously intelligent?
October 7, 2005 spout

How I Stopped Worrying And Learned To Love the Reboot

October 6, 2005 spout

The Competition

Charles Petzold says he doesn’t envy me. Hell, I’m just flattered he knows my name. Like the rest of my generation, I learned how to program Windows from Petzold.

Still, even though Petzold doesn’t envy Ian and I for writing the beta edition of the WPF book, it hasn’t turned out to be so bad. Oh sure, we wrote against first a creaky CTP, then a slightly less creaky beta 1 RC, but we made it mostly work. Of course, but the time the book was published at the PDC, MS had released a new version, making some of the details of our book obsolete, but not so many that we weren’t able to catalog the changes for readers w/in a week or so of the PDC bits. We’ve also posted samples for both beta 1 and the September PDC and we plan on posting changes and samples for every major version from now til the WPF v1.0 version of the book.

October 6, 2005 spout

How I Stopped Worrying And Learned To Love the Reboot

A while has passed since the 2005 PDC, so I can laugh about it now, but at the time, things were not fun at all.

It started long before the PDC. Doug Purdy and I were asked to do the Avalon/Indigo interop” talk. We got together and I volunteered to PM it (PM is a verb as well as a noun at MS). Over lunch (we both love CPK), we hammered out our ideas for a fun demo that showed off the integration points between these two technologies, split the tasks, set the dates and off we went.

My first task was to gather the graphics we’d need for our Avalon front-end, since neither Doug nor I are artists. I asked newly hired Adam Kinney, who did a fabulous job. Everything good about the app is Adam’s fault. Thanks, Adam! I was also to build a script for our demo that we could run by folks internally, which I did.

October 3, 2005 spout

I don’t ever want to unpack my books

I don’t ever want to unpack my books. Instead, I want a paperback-sized tablet PC whose sole job is to run eReader loaded with all of my books. It’s work like Project Gutenberg, the Open Content Alliance and Safari that may finally make this happen.

However, like my DVD and music collection, I am willing to purchase my book collection one more time in digital form, but only if it is non-DRM’d so that I can use the book where ever I want to. It’s no good to be to be able to read my book at my PC, but not in bed or in line at the airport.

September 30, 2005 spout

I need Outlook’s new anti-phishing support

Forget that my family constantly asks me things like I got an email from eBay today that said my account was closed. Should I click on the link and give them my credit card details?” Forget that I’m constantly having to watch every single link I touch. No, I need Outlook’s new anti-phising protection because with all my computer education and experience, I got bit by an phishing attack.

In my defense, it was the perfect storm opportunity:

September 26, 2005 spout writing

Programming WPF Samples & Change Notes Posted

September 22, 2005 spout

My Product Group Fun: Part 2

September 22, 2005 spout

My Product Group Fun: 2

I am having so much fun, I can’t not tell you about it.

After a few months of wallowing, I found out something about myself: I’m really good at digging into the state of the art, whether it’s one technology or a feature across technologies, if I have a problem I’m trying to solve. However, if I’m just wandering in a space w/o an explicit goal, e.g. give a presentation, build an app, write an article, I’m lost; I just can’t muster any juice. What this means is that when I present my thinking in an area where I’m wandering aimlessly, I’m not married to any of my conclusions. If someone pushes back, I can’t really get behind my conclusions because I just don’t care. If you’re giving a presentation on how you think a certain technology should be used and you don’t have a firm opinion one way or the other, that’s just death.

So it wasn’t pretty for my first couple of months in my new project team. I never felt like I was making any progress because I didn’t understand what problem we were trying to solve. How can you know how much further you’ve got to go if you don’t know where you’re headed?

September 18, 2005 spout writing

Please Post Reviews of Avalon Book

For those of you that reviewed or got free access to our Avalon book while we were still writing it, please please please post a review on Amazon.com
September 15, 2005 spout writing

WPF Book Sold Out Again, More Coming on Friday

You can also order them online. I find that even Thanksgiving is good for gift giving, as is Halloween! What could be better than the gift of knowledge
September 14, 2005 spout writing

Programming WPF: Sold Out @ the PDC, More Coming

All of the initial copies of Programming the Windows Presentation Foundation have been sold out at the PDC. That’s a double edged sword, of course. On the one hand, it’s nice that so many people wanted a copy that they were gone by the time I got to see the remaining display copy on Tuesday after lunch. On the other hand, I want the publisher to have provided enough copies to feed a longer buying frenzy.

The good news is that another, larger shipment of the book will be available @ the PDC in the Marketplace store Thursday afternoon. Please form a line in an orderly fashion and keep the sleeping bags out of the normal aisle of traffic. : )

September 9, 2005 spout

MS Hurricane Katrina Relief Efforts

The following is an internal email published here with permission:

From: Lisa Brummel
Sent: Friday, September 09, 2005 1:54 PM
To: Microsoft
Subject: Update: Hurricane Katrina Relief Efforts

While the effects of Hurricane Katrina will be felt in the Gulf Coast for months and years to come, the contributions and volunteer efforts of thousands of Microsoft employees worldwide over the last week and a half have made a real difference in peoples’ lives. Fortunately, all of our employees in the region are safely accounted for.

I want to thank everyone who has been responding to requests by relief agencies for cash donations to meet the most immediate needs of evacuees. To date, a total of $9 million in cash, technology assistance and support has been donated by Microsoft and by employees. This includes $2 million from Microsoft for relief, recovery and rebuilding efforts, $5 million in technology assistance and support, and U.S. employee contributions totaling more than $1 million, which will be matched by the company.

In the hours and days following the hurricane, hundreds of Microsoft employees have used their creativity and initiative to help speed relief, often doing what we do best — using technology to solve problems and help improve people’s lives. These efforts by our employees are what make Microsoft a special place to work. I wish I could mention everyone by name, but since that’s not possible, let me share a few examples that will give you an idea of the great work people are doing.

  • Jim Carroll, a database architect from Birmingham, Alabama, and a half-dozen other Microsoft engineers from California, Florida, Alabama and Texas, worked virtually nonstop for four days to develop katrinasafe.com, an online tool being used by the states of Louisiana, Mississippi, Alabama and Texas, and by relief agencies to help evacuees find family members separated by the crisis. Since the site went live on Sept. 5, information about tens of thousands of evacuees has been registered on the site, and it’s being updated continuously with information from relief centers across the affected region.
  • Murali Krishnan, a group program manager in MSN, led an effort of about 100 Microsoft employees to build a secure Web site hosted by MSN to accept donations for the Red Cross. Krishnan’s team built the site — donate.msn.com — in just 20 hours, unheard-of speed for a project of this magnitude. The MSN Web site has already generated more than $3 million in donations for the Red Cross.
  • Dawn Gagnon, a mobility solutions specialist in Houston, arranged for the delivery of Microsoft Smartphones to 30 doctors at the main Red Cross medical triage site in Baton Rouge, and 150 Texas National Guard command post leaders being deployed to Louisiana to help with relief efforts. With land lines and switching stations down throughout Louisiana, the Smartphones were a top priority of the Texas National Guard to keep command leaders in touch. A makeshift assembly line of friends, family and neighbors at Dawn’s house worked for 12 hours to activate and charge the phones and make up waterproof bags that included car chargers and extra batteries.
  • John Morello, a senior Microsoft consultant in south Louisiana, saw the need for an e-mail system that volunteers could use to help evacuees connect with people they’d been separated from. The Microsoft Hotmail team created the accounts in under four hours, and this has already helped reunite dozens of families. Suresh Babu, group program manager at Hotmail, then orchestrated a cross-team effort to help tens of thousands of evacuees set up and use free Hotmail e-mail accounts to let friends and family know they’re OK, check in with employers, contact their insurance companies, even keep in touch with other victims of the hurricane.
  • Todd Ellison, a technical account manager in the Houston office working to assist local officials in relief efforts, walked into a wholesale computer parts distributor and asked if they would donate two laptop computers needed by the chief information officers of the City of Houston and Harris County, Texas. Five minutes later, Todd was out the door with two new machines.
  • Bill Steele, an Indiana-based Microsoft developer evangelist and private pilot, has been using his own twin-engine plane to shuttle food and supplies to areas of need. Flying out of Baton Rouge, Bill has delivered 17,500 MREs (Meals Ready to Eat), mostly to the lower part of Mississippi.
  • Steve Lough, an account manager in our federal sales office, led a team of senior Microsoft technologists working in partnership with Intel, Cisco and SBC at the Red Cross headquarters in Washington, D.C. to help create a communications infrastructure for relief shelters, establish computer kiosks for evacuees and Red Cross workers, and dispense financial assistance broadly. Microsoft also worked with the Red Cross to establish a solid core data infrastructure to meet the huge increase in demand on the agency’s IT system.
  • Blacks at Microsoft (BAM) is allocating funds to assist displaced students at historically black schools affected by the disaster, including Xavier University, Dillard University and Southern University of New Orleans.
  • In Redmond, a group of employees is putting together 200 boxes of sanitation and first-aid kits — about a ton of supplies. They’ll be shipped to the Microsoft office in Houston where Microsoft employees will pick them up and take them to a local airport, where four private planes are at the ready to fly the supplies to Baton Rouge. From there, they’ll be picked up by local charities and dispersed to those in need;
  • The folks at Bungie Studios, a Microsoft subsidiary that developed the Halo games for the Xbox, used the Web to sell more than $100,000 Fight the Flood” charity T-shirts online. The proceeds will go to the Red Cross, as will royalties earned from other Bungie Store products sold in September.

In addition, three of Microsoft’s Across America trucks, fully equipped with communications systems and advanced technology, are on their way to Red Cross relief operation centers in the Gulf Region to provide vital coordination capabilities.

Groove is being used by the Red Cross and the Army Corps of Engineers as a collaboration tool to enable communications for multiple partners in the relief effort, and Groove has employees helping on site at the Red Cross.

Our sales force is letting business customers affected by the hurricane know that we’re waiving software licensing fees for up to six months, and making premier support consultants available to help them get their IT systems back up and running.

The speed of these response efforts has been just incredible. I want to acknowledge Ron Markezich, our CIO; Jennifer Heard, GM of the South Central District, as well as Cathy MacCaul, Linda Testa and the Community Affairs team, for coordinating our efforts to support relief organizations, government agencies, educational institutions and customers.

September 6, 2005 spout

I’m in

I feel like I’ve spent the last four days in hibernation, awaking like Rip Van Winkle to an entirely new environment. And while the new environment is still filled with boxes and won’t have internet, cable or phone til tomorrow, it’s still a very pleasant environment, flat so the boys can bike everywhere, near family, very near the schools, filled with friendly people (many of which have already introduced themselves and I’m worked double-hard this time to remember their names) and with plenty of potential for renovation (and the space that’s there is nice all by itself). There will definitely be an adjustment period, but overall, it was very nice to wake up in.

On a personal note, with the move, getting ready for PDC, my son’s birthday, my wife’s birthday and my 14th wedding anniversary, some of my personal relationships have suffered (I’m *so* sorry to have missed last week’s PND!). My have my apologies. I hope things will get better after the PDC!

August 22, 2005 spout

New Contractor Advice: Time Estimation

I got a time estimate from a friend who’s a brand new contractor in the area of home renovation (my wife made me promise to start renovations on our new place immediately as a condition of purchase). He’d already bid me an hourly rate, but I asked for a rough estimate of time spent. He hasn’t yet seen the place (we can’t talk the owner into letting us come over again), but he answered my question anyway, giving me an estimate 5x lower than I suspected it would be (Danger! Danger, Will Robinson!). I replied with the following advise on how a contractor should estimate time for maximum customer happiness (and therefore maximum revenue):

There are two schools of thought on time estimates. One school of thought, which I’ll call bait & switch,” says to knowingly under-estimate so that by the time the customer notices a slip, they’re committed and they continue with their contractor by sheer momentum, hoping it’ll all be over soon. This technique produces customers that either pay more than they thought or that force the contractor to cut corners to meet their initial estimate, lowering the quality. In either case, the customer tends to get unhappy, which hurts repeat business and word of mouth.

August 20, 2005 spout

The List

Lord keep me off of the list of people that don’t have to go through regular security checks:

The Aug. 5 memo recommends reducing patdowns by giving screeners the discretion not to search those wearing tight-fitting clothes. It also suggests exempting several categories of passengers from screening, including federal judges, members of Congress, Cabinet members, state governors, high-ranking military officers and those with high-level security clearances.”

August 19, 2005 spout

Cool New IVR Feature

In a (very) past life, I used to write intergrated voice response (IVR) systems aka voicemail hell.” It may not seem like it, but we spent a *ton* of time trying to make a voice output/12-key input UI as friendly as possible.

However, I never thought of the IVR feature I ran into today. While transfering my utilities to our new address, one of the utilities put me on hold and offered to call me back when it was my turn in line (promising me that I would not lose my place). I’ve got the world’s most perfect cell phone and the world’s most perfect Bluetooth headset, so staying on hold was just as easy as not, but still, that’s a damn cool feature.

August 12, 2005 spout

Chris does the Half Monty

Chris does the Half Monty
August 12, 2005 spout

The Half Monty

The Half Monty

I spent last weekend in Reno with Joel, my fraternity brother, wife’s sister’s husband and business partner (we have an investing business). We’d both been working killer hours lately and we needed a break, so we spent three days on a dirty boy’s weekend” (as another friend called it). We gambled and drank and ate and slept in and took in a showing of The Dukes of Hazzard and, one night, we went to a comedy club. The main act was a fabulous comedian that took his craft very seriously. In fact, he was so committed to what he did, that he went to all the trouble to have his hair cut so that it looked short with it tucked into his hat, even though it was really very long, just so he could whip it out in his act for comedic effect. During his act, he juggled a chainsaw, did an amazing card trick, road a unicycle, played music on the MP3 player he’d plugged into his mic, brought folks up on stage and had us all laughing the entire time. He had this way of bringing folks up on stage where he’d point at a person, ask them their name (e.g. Bob”) and then say, Folks, give Bob a hand as he comes up to help me out with this next bit.” He was a true entertainer.

After he’d had us busting a gut for about an hour, he pointed to me and said, What’s your name?” I answered him and he said, Folks, give Chris a hand as he comes up to help me out with this next bit” and up on stage I went. Now, from a distance, I look fairly normal sized, especially sitting down. Our comedian was a tad on the short size, frankly, so when I walked up on stage, I towered over him and his eyes got real big. Of course, I’m shy on stage, so I didn’t say much, but nodded and played along good-naturedly. I mean, hell, I’d once led an audience into a public pie lynching of a suited marketing person, so I knew the drill.

He looked at me and said, Chris, I want you to follow along with me. Do what I do. If you don’t do what I do, it won’t be funny. The funnier it is, the more likely you are to get laid.” Of course, I was in Reno w/o my wife, so unless Joel got frisky, I wasn’t going to get laid, but that didn’t mean I wasn’t enthusiastic about increasing my chances (and, of course, the audience was egging me on), so I nodded my head earnestly that I would do my best to follow along. He gave me a floppy cabby hat and put a top hat on his own head — I followed along. He did a little bit of spirit fingers” and I followed. He did some hip gyrations; I followed. Of course, the audience was loving this and I love it when the audience is having a good time, so I’m having a good time.

July 27, 2005 spout

Limiting/Monitoring my sons’ access to the ’net?

My 11-year old wants to do email and IM and he’s already surfing the web. Does anyone have any recommendations for good software to limit and monitor his internet access? Thanks!

July 16, 2005 spout

My First MsBuild Task

I wrote my first custom msbuild task this morning. I used the the Extend the MSBuild with a New Task topic from the msbuild wiki and it worked well to get me started. I started with the simplest thing that used at least an input property:

// HelloTask.cs
using System;
using Microsoft.Build.Utilities; // reference assembly of same name
using Microsoft.Build.Framework; // ditto

namespace MyFirstTask {
  public class HelloTask : Task {
    string _who;

    [Required]
    public string Who {
      get { return _who; }
      set { _who = value; }
    }

    public override bool Execute() {
      Log.LogMessage(string.Format("hello, {0}!", _who));
      return true;
    }
  }
}

My task implements the msbuild ITask interface by deriving from the Task helper base class, which provides the Log object, among other things. The only thing I have to do is implement the Execute method, which needs to return true on success. To prove that my task is called, I use the Log object to log a message (I could also log an error or a warning). The public Who property is set from the use of the task in an msbuild file. By marking the property with the Required attribute, I ensure that msbuild itself makes sure that a Who is provided.

July 10, 2005 spout

Enjoying This Moment

Here.

The one where I enjoy the passing of the book writing storm, if only for a moment.

July 10, 2005 spout

Is it creepy that I think this is valid?

I’ve used this technique to keep people from dumping their work on me. Now I’m creeped out about it…
July 10, 2005 spout

Enjoying This Moment

I’m sitting at my computer on Sunday morning with nothing” to do (I mean, I could always work, but my team is good about taking weekends off). This morning comes after 3.5 months straight of evenings and weekends working on the Avalon book (I’m talking 20+ hours/week on the book on top of the 50-60 hours/week I spent getting up to speed on my new job). The final push was this week, which I took as vacation from work (“you took vacation to work!” my wife likes to say…).

Last night, I produced the 2nd draft of my last 1st draft chapter (which I was happy to trim by 17 pages w/o losing anything useful) and composed comments on a 2nd draft of Ian’s chapter that was in my queue.

This morning, I took care of a reviewer comment that’s been nagging me, sent Ian my feedback and composed a detailed schedule of the rest of my day which consists of:

June 23, 2005 spout

My Worst Job

Following Rory’s example, my worst job was where I spent two weeks with a friend working for his dad where the best of our two duties was to mow the doll factory’s lawn (we used to fight over who’s turn it was). The worst of the two duties was to sort leather remnants from the manufacture of furniture and car upholstery by color and texture into giant boxes, from which the underpaid immigrant women would construct dolls.

Talk about mind numbing… It drove home just how important it was to have a college degree.

June 20, 2005 spout

Theoretical Computer Science

accounting is to mathematics as engineering is to computer science.

I’m an accountant sitting in a meeting run by mathematicians. Unless I can use the math to do my double-entry book-keeping, I just don’t care. A mathematician cares only for the power of ideas and never needs to see the numbers.

June 20, 2005 spout

My Weekend

Dear Diary, this is how I spent my Father’s Day weekend:

  • Friday, 7:30am, dropped my family off at the airport so that they could visit relatives in MN
  • Saturday, 1am, sent around the check-in notice for my day job and went to bed
  • Saturday, 11am, woke up in book avoidance mode
  • Saturday, 3pm, started porting styles chapter to Avalon b1
  • Sunday, 4:30am, heard birds chirping, thought it would be a good idea to go to bed, still not done porting styles chapter and my butt hurts from sitting, plan to bring in a butt pillow tomorrow
  • Sunday, 4:31am, reflected on why I’m working so hard on a book when my readers feel the need to compare me unfavorably to certain rotund movie characters, resolve to stop writing books so I can have a life back that includes exercise (and doesn’t include reviewer feedback)
  • Sunday, 9:30am, woke up, called my Dad to wish him a happy father’s day, called my kids to hear them do the same for me
  • Sunday, 10:30am, back at it porting styles chapter (butt pillow in place)
  • Sunday, 1:30pm, finished porting styles chapter, started applying reviewer feedback
  • Sunday, 3:30pm, shipped out 2nd draft of styles chapter for 48-hour quick-turn review, started reading data binding chapter reviews
  • Sunday, 10:30pm, went to bed with data binding chapter only 1/3rd finalized
  • Monday, 5:30am, got up to make the trip to Redmond, didn’t finalize both chapters as per this weekend’s plan, but I’m so happy to not be applying reviewer feedback right now that I have a hard time caring
  • Monday, 1:33pm, composed this silly entry and working happily at my day job where reviewer feedback is not currently a part of my life
June 14, 2005 spout

The End of an Era

Today is Sara Williams’s last day. Sara was the first Microsoft employee that I met. In fact, she was the first MS employee that a lot of people met. She’s been at Microsoft for 14 years, which was long before it was cool for employees to talk to the outside world. She was a key part of MSs Developer Relations Group, whose job it was to do the outside world stuff while the rest of MS stayed inside and slid flat food under the door to each other.

Eventually, like others, Sara grew tired of Microsoft’s insular-ism and specifically our developer network’s unwillingness to embrace the community, so she launched GotDotNet which, inevitably, lead to her taking over MSDN altogether, which she developed Developer Centers and pushed a whole new way for Microsoft to embrace 3rd parties.

June 13, 2005 spout writing

Love Reviewers; Hate Reviews

I took a quick glance at some reviewer feedback for the Avalon book and already I’m trying hard not to hate the folks that send it in. Mean, hateful things like who is this guy?!?” and well, he’s never written a book” spring immediately to mind.

The thing is, reviewer feedback, especially harsh, blunt, spit-in-your-face reviewer feedback, is an extremely critical part of the book writing process (although, ironically, I most hate the reviews that sound like stuff I would write when I review…). Without reviews, authors don’t have any idea how their writing will be received til it’s published and we’re bound to do all kinds of stuff that’s reader or subject hostile that need correcting. Please, feel free to hit me with both barrels when you’re reviewing my stuff; I won’t promise to act on all the feedback, but I promise to consider all of it seriously.

June 9, 2005 spout

Never Give Up, Never Surrender

I was reminiscing today that I’ve been turned away from most decent places in my career:

  • I went to a stupid high school that raised my grades a full letter when I moved there from a decent school system, leaving me ill-prepared for college
  • I was turned away from MIT, CalTech and Stanford out of high school, settling for the U of MN instead
  • I didn’t even qualify for a phone screen from either Apple or Microsoft during or after college
  • I flunked most of my on-campus interviews and instead settled for a full-time position at the start-up where I’d worked during college (I was originally been hired there because it was run by alumni of my fraternity and I worked for beer money)
June 7, 2005 spout

Career Path for Developers?

Pete” email me the following questions:

I’m a senior software developer, age 34, specializing in C# development for Windows Forms / ASP.Net, having come from a VB background. Having had some (if not most) of my enjoyment of development sucked out of me by my current employer, I’m contemplating my next career move.

Thing is (and it’s not just me, several of my colleagues concur), where do I go from here? What is the career path of a software developer? I.e. junior developer, senior developer, guru, author,…? Is there such a thing as a career path for a developer (or anyone, these days)?

I surmise that developers such as myself (4th / 5th gen language developers) may actually be the first at the crest of this particular wave - I guess COBOL developers could have migrated into hardware / system maintenance, but what for folks like myself? I can’t see myself being a developer until I retire (31 years later), but I don’t really want to move into management either (perhaps software delivery manager, but not a full-blown person manager).

Or maybe this is just a mid-life crisis. Maybe those COBOL programmers were thinking the same thing. Maybe you’ve thought the same thing, and said Sod it, I’ll just learn as much as I can and write books.’ Maybe my malaise is indicative of the general malaise within IT at the moment (still suffering from the dot com crash, companies more interested in fixing up their offices than investing in IT, etc), companies not knowing their arse from their elbow when it comes to IT spending, etc.

We live in a world of ever-increasing technology, yet seem to be doing less development? Obviously there are still very clever people out there writing code for phones, text delivery. HDTV innards, etc., but is software development becoming stagnant? Are we still doing the same things with new tools? Why do we still not have modular development? Why are there many standards for Web Services? Where are the really, really cool applications?”

June 4, 2005 spout

More Skype Love

I was chatting with Mike in Australia today and we pulled up Skype as we usually do, cuz it just works, e.g. no connection problems, no echo/feedback problems, etc. However, we couldn’t get video4skype to work, so we tried switching over to MSN Messenger 7. The video worked just fine from MM7, but the audio was terrible, exhibiting volume, echo and feedback problems. So, we used a hybrid, i.e. MM7 for video and Skype for audio, which worked just fine.

This hybrid model is prevalent in my communications recently:

June 4, 2005 spout

Realistic Conference Expectations

I was chatting today with a friend that complained that he didn’t get any deep technical knowledge from a conference talk. I said that he had unreasonable expectations; the most he could expect from a good conference was the following:

  • Networking opportunities (hard for geeks; often works via friend-of-a-friend in bars and restaurants, but only if you have at least one friend and s/he has at least two)
  • Info triggers,” i.e. if you attend a 90 minute talk on MSMQ and you’re having or are about to have a problem that MSMQ solves well, the talk should a) let you know that MSMQ provides a good solution and b) where to go for more info
  • Entertainment (and that’s only the good conferences)
May 31, 2005 spout

Every PC Should Have A Camera, Mic + Stylus

I’ve been doing a lot of remote collaborative communications over the last decade. Email, IM and phone calls literally enable me to be an effective remote employee (along with my wit and charm : ). However, to take it to the next level as MS Communicator, MSN Messenger and Skype get real a/v conferencing and app-sharing features (that actually works through VPN and firewalls), every computer needs some extra equipment.

Most modern laptops come with built-in mics, but very few come with built-in cameras. Why should I have to use a strap-on webcam when the camera lens could be built right into the LCD screen? Plus, the mics and software really needs decent noise cancellation (MSN7 and Skype do this well, but not all apps do).

May 31, 2005 spout

Blogging is not marketing copy!

As soon as corps hire bloggers as part of their marketing budget, they’ve missed the point completely. Marketing and PR folks are chiefly concerned with only saying the good things about their own products and (the good ones anyway) nothing at all about the competitor’s products.

Blogs are about the whole truth, which is why are the best corp bloggers are constantly in fear of losing their jobs.

May 30, 2005 spout writing

URLs in the Footnotes?

Here’s a question for folks. Right now, the 1st edition of the WinForms book has several footnotes like the following that include URLs:

The ntcopyres.exe tool can be obtained from http://www.codeguru.com/cpp_mfc/rsrc-simple.html.”

May 27, 2005 spout

The Logic of Logic

May 27, 2005 spout

The Logic of Logic

My son came to me the other day and said, Dad, I need help with a math problem.” The problem went like this:

  • We’re going out to dinner taking 1-6 grandparents, 1-10 parents and/or 1-40 children

  • Grandparents cost $3 for dinner, parents $2 and children $0.50

  • There must be 20 total people at dinner and it must cost $20

  • How many grandparents, parents and children are going to dinner?

The reason this problem is interesting is because there are 3 variables, but only 2 equations:

May 24, 2005 spout

Frequent Flier Miles Suck (Airlines Suck)

I just called to cash in my Alaska Airlines miles on it’s partner airline Northwest for a trip 5 weeks in advance and they told me that they don’t have any seats available. I know is complete bullshit, because when I search for the flights on the web directly, they’re happy to sell me a seat for the specific day I want.

What they mean is, Oh no, sir, people actually want to pay to fly that day; we couldn’t possible honor our frequent flier commitments to award you travel on that day!”

May 24, 2005 spout

Story-Driven Development

I’m a big believer in the write the story first” method of software engineering. Like client-first development” or the increasingly popular test-driven development,” story-driven development” is about writing what we want from our software before we write the software. This is different from spec-driven development” or even design-driven development” in that I mean actually writing the equivalent of one or more MSDN Magazine articles that you’d like to publish when your product is complete. I can’t tell you how many issues I’m able to work through using this technique and it’s highly recommended if you think in prose. Of course, as the product evolves, so do the articles until the perfect storm happens when the product matches the article and vice versa (modulo bugs, this typically indicates beta 1).

Today, after 5 months of marination, I awoke with the Intro to Our Stuff” article in my head and I’ve started outlining it. This one is really Intro to Our Stuff for Developers” piece, which corresponding Intro to Our Stuff for IT Pros” and Intro to Our Stuff for Business Analysts” pieces that needs to happen, too.

May 12, 2005 spout

Survey: Windows Forms Programming 2ed Length

There has been some publisher/author controversy around the length of the 2ed of Windows Forms Programming. WF2 has essentially doubled in size, so I was happy that it looks like we’re be less than twice the number of pages (700 for 1ed vs. estimated 1200 for 2ed). However, when I sent this estimate to my publisher last month, they were less than pleased. Apparently if you go above 800 pages, that tends to scare people and may cut into sales. Here are the options we wrestled with:

  1. Cut 400 pages of material out of the WF2 book, leaving it on the cutting room floor
  2. Ship a 1200 page WF2 book, increasing the cover price by $10
  3. Move 400 pages of material out of the WF2 book, releasing them as freely available PDF files on the web (continuing to index and refer to this material in the printed book)
  4. Split the book into two volumes, priced accordingly (probably $35 each)
May 11, 2005 spout

Damn I Love Skype!

Skype is the thing that seems to work best for my Australian phone calls (at least once/week if not more) and I love SkypeOut for when I’m just too damn lazy to walk across the room for the phone. If I could use a SkypeIn phone number for getting/sending faxes as well as placing and receiving calls and taking voicemail, I’d have one of those, too (only $4/month!).

That said, MSN7 seems to have fixed the a/v sharing problems through firewalls, so now I use it for that and MS Communicator is damn cool, too.

May 2, 2005 spout

I am not a graphic artist!

Whenever anyone hears that I program Avalon, the first thing they think is, Oh, good, let’s get Chris to create a cool looking UI for us!” They also tend to lump in data visualization expertise and user experience into that mix as well. On the beginning to experienced” scaled, I’d rate myself in the following way on these tasks:

  • Avalon programming: beginner to intermediate, depending on the bit of Avalon you’re taking about
  • Visualization expertise: interested beginner (I’ve attended a 8-hour Edward Tufte seminar, skimmed 3 of his books and wished for something more than the DataGrid)
  • User Experience design: intermediate in the realm of standard Windows applications but beginner when those limitations are removed, i.e. what Avalon enables
  • Graphic art: untalented hack
April 30, 2005 spout

I enjoyed THGTTG

It wasn’t perfect, e.g. lots of the fun bits were gone and at least one sub-plot never got resolved, but I liked the new stuff, e.g. the motivation for the end of the movie and the romance. Bottom line: I laughed a lot. We did have a pretty decent local geek turn-out, so that made it even more fun, but it was a completely watchable movie and I’d definitely see it again.
April 26, 2005 spout

The Value of Scoble

There is huge value in Robert Scoble publicly criticizing his employer’s CEO. The value is this: when the GM of VSTS says ask me anything you want” concerning a recent pricing controversy, you can have confidence that Robert is going to ask the hard questions and push out the results as unedited as MS PR will let him get away with (I detected no edits in this piece). The world may not like the answers he digs out, but because Robert is risk-his-job honest, you have a high degree of confidence that what he says is the truth as he finds it.

Robert Scoble has become the Geraldo Rivera of technology reporting. Even if MS took away Robert’s camcorder, I expect O’Reilly, Fawcette, CNET, ServerSide, CodeProject or any of a number of other technology eyeball companies to hand it right back to him.

April 24, 2005 spout writing

Status of ATL Internals 2e

More people than you’d expect have been asking, so here’s an update on ATL Internals 2e.

This effort actually started in 2003, when Kirk Fertita updated the first 9 chapters to ATL7 as provided in VS 2002. Then he had to go work on his start-up, which represented his only income stream and would’ve gone belly up w/o him (selfish bastard! : ).

April 24, 2005 spout writing

Status on Windows Forms Programming 2e

Jose heard” that I’m working on an update for the first edition of Windows Forms Programming in C# for Windows Forms 2.0 (we’re not updating the VB.NET version due to poor sales for VB.NET-related titles in general). I didn’t mean to keep it a secret; it’s been listed at the top of my writing page for a year or more. : )

While we’ve been working closely together on the update, the bulk of the writing work is being done by Micheal Weinhardt, my main writing partner for the last coupla years or so. He’s got 90% of the book updated for VS05b1 already and is in the process of updating the whole thing to b2. After that, we pass it back and forth between ourselves for review-edit til we’re both happy. By the end of May, hopefully the whole thing will be out for review. After that, we apply reviewer comments and update at each successive beta/release candidate until the Whidbey team decides they’re done, at which point we send it to the publisher and 3-4 months later, it hits the shelves.

April 15, 2005 spout

Now *that’s* how you want a Virtual PC to be!

I was using one of my computers this morning, surfing around, reading my email, getting started with the day, etc. After a bit of fooling about, I went looking for the work I wanted to continue from yesterday. I couldn’t find it. Then I went looking for the program I was using to work on the file. I couldn’t find it.

Just before I was about to reinstall things, I realized — I was running a VPC image, not the computer’s native image. I couldn’t freakin’ tell the difference! Nice…

April 11, 2005 spout

Reviewers Should Be More Like Roger

If you read the April 10th, 2005 review of my WinForms book, it has one feature that most of the other reviews don’t have (and I don’t mean pegging me as a
April 11, 2005 spout

My First Week on an MS Product Team: Wallowing

April 11, 2005 spout

My First Week on a Microsoft Product Team: Wallowing

Last week was my first week on my new team. A lot of interesting things happened, some of which Don has already mentioned. For me, two especially interesting things happened. One, I found out why I was hired, in spite of my preference to work from kitchen most of the time, even though I’m working on a product group (which typically avoids my kind unless they’ve already worked for the team for a long time) and even though I’m working for a manager that’s never had a remote employee (he doesn’t even run IM!). Don’t get me wrong; it’s not like a skated through the interview process w/o passing.” But passing” isn’t enough when you work in a shower optional” environment (my house, not Microsoft : ). My team needs people with a skill that I’ve never seen applied to product development. Most of the people that have this skill are either a) already busy shipping Indigo or b) marked as a target (some of you should feel the laser sights on your forehead : ). The skill is the thing that allows me to write books and articles in my own special way. My team has a name for this skill; it’s called wallowing.”

For my team, the ability to wallow” means the ability to dig into a discipline, any discipline, and wallow like a pig in the mud” in that new discipline, forming questions, getting to the root of things, gathering fragmented truths together into wholes, communicating the truths to each other, gaining intuition, and generally spending time understanding the space without first coming to firm conclusions about what it is that we’re actually going to build. This skill is by far the most important thing I learned at DevelopMentor. The popping” sound I got in my head when I finally figured out COM is something that I’ll never forget (mostly because my head stopped hurting after 6 weeks of hurting very much) and it’s served me well over the years. For example, I wrote my WinForms book not because I had a ton of real-world experience” as my Amazon reviews claim, but because I knew very little about WinForms and was interested in learning. I wallowed in WinForms for 9 months, writing articles and an instructor-led short-course before ever writing a single word in my book. Once I’d wallowed, however, I was able to write the book itself in 5 months.

So, while I’ve used to wallowing as a way to produce talks and prose, it’s not a technique I’ve ever applied to product selection. In the past, I’ve come to a team where the goal was very clearly known, although the details were still up in the air (often ’til they were discovered as coding problems). I’ve even started my own software organization from scratch, but only after the core vision of what needed building came to me whole and I’d already built the prototype. However, with my new team, we’ve got a group of folks actively wallowing in a space, figuring out the right thing to build. This led to some initial frustration on my part.

April 9, 2005 spout

Geeks Rule and MBAs Drool

Eric Sink takes a long, long time to say the following (learn to let go, Chris [1]…):

The following is an example of one of the most common questions I get from developers who are creating a brand new software company:

April 1, 2005 spout

My First New Job at Microsoft

Here. The one where I stop working for MSDN
April 1, 2005 spout

My First New Job at Microsoft

Today’s my last day at MSDN. I will no longer be content strategizing for Longhorn/WinFX or smart clients or acting as liaison between marketing, evangelism and the product teams internally and developers externally. And I’m really going to miss it. MSDN took a flier on me being a successful Microsoft employee in a culture that doesn’t much like remote folk and made a very comfortable home for me. I could’ve gone on for a long time in that role.

Still, I felt another calling. At Microsoft, it seems like all of the action is with the product teams. To come to Microsoft as a software engineer and not work on a product team seemed like starting with the Yankees but never getting out of the dugout.

So, on Monday, I start in DSG (the Distributed Systems Group) aka the team that owns Indigo. I’ll be are looking at ways to extend the notions of modeling that we’ve incorporated deeply into the stack and make them more general” (or so my new boss says). I can’t tell begin to describe how lucky I feel. Not only do I get to be on a real product team, still mostly from my house in Oregon, but I get to work on a very juicy problem. Further, I get to do it with Oliver Sharp, one of the prime movers on the Indigo team, along with a growing group of other people way smarter than I. It reminds me of the heyday of a certain training company with which I once had a deep relationship.

March 30, 2005 spout

Leaders and Legacy

Here. For an internal thingie, I was asked to write a short bio, define what I think a
March 30, 2005 spout

I can feel Avalon changing me…

I can feel Avalon changing me…

I’m writing a tiny little application for my writing on ClickOnce in Avalon. In fact, to demonstrate ClickOnce, the app hardly matters, so I picked something really simple: an excuse generator. I didn’t even have to make up the excuses, as I stole them from an office gag gift two years ago and wrapped them in an excuse web service (which is a whole other story : ).

Binding to Data Defined in Code

The idea was to have an array of excuse strings like so:

public partial class Window1 : Window {
  static string[] excuses = {
    "Jury Duty",
    ...
    "It's Not My Job",
  };

public Window1() {
    InitializeComponent();
    this.DataContext = Window1.excuses;
  }
  ...
}
March 30, 2005 spout

Leaders and Legacy

For an internal thingie, I was asked to write a short bio, define what I think a leader” is, describe my target legacy and list my biggest source of price. This is what I came up with:

I’ve been pretty much everything you can be in the IT industry including author, speaker, consultant, conference organizer, grunt in a start-up, CEO in a start-up, developer, tester, documenter, etc. I’m currently a content strategist for MSDN in the areas of WinFX/Longhorn and smart clients. I’m passionate about building products to make people happier, whether that’s because they’re more productive or because I’ve solved some hard problem or just because they lean back and say cool!” My biggest regret is that I’ve never yet been on a product team at Microsoft; to get the full experience, someday I need to do that! After that, I can retire and write novels from coffee shops around the world. : )

A great leader is someone that inspires you to do things you didn’t even know you were capable of doing.

The legacy I’d like to leave behind is that people can look back at their interactions with me and think that I helped make their lives better, whether it was an answer to a tough question or an insight that they hadn’t had before or a comment that tickled their funny bone.

The biggest source of pride in my life is the family I’ve built with my wife and two sons (the Sells brothers, whence the name of my web site came: www.sellsbrothers.com).

March 29, 2005 spout

La Vida Robot

March 21, 2005 spout

A Coder in Courierland

I always love reading about people that love their jobs. In this case, a Toronto coder gave up half his salary to get out of cubeland and onto the back of a bike as a courier. His descriptions, especially the diary entries at the end, make me pine for the part of my childhood when I’d spend hours on the back of the bike simply because it was the most fun thing I could think of to do. Recommended.
March 16, 2005 spout

I want XBOX Live virtual presence for my PC!

Robert points out a hilarious video of what happens in an XBOX Live session of Halo 2 when the other players find out you’ve fallen asleep. But, even more interesting than that is the ability for that kind of real-world fidelity to make it into a virtual world so that guys from across the country can all haze the guy in his sleep. I want that for my PC!

[via Scoble]

March 11, 2005 spout

Some Of My Favorite Books

Here.

I was just putting together a list of some of my favorite books as recommendations for a gift certificate I sent to a friend as a birthday present. If case you’re wondering (I know you’re all dying to know : ), here’s what I sent.

March 11, 2005 spout

Some Of My Favorite Books

I was just putting together a list of some of my favorite books as recommendations for a gift certificate I sent to a friend as a birthday present. If case you’re wondering (I know you’re all dying to know : ), here’s what I sent:

Thriller/Mystery

  • Angels and Demons,” by Dan Brown, is the prequel to the famous Da Vinci Code and much better, imo.
  • John Sandford’s long series about a millionaire cop in Minneapolis starts with Rules of Prey.” If I were to write my own series of novels, these are the ones I’d emulate.
  • A Time to Kill,” by John Grisham, is his first and by far his best book. The movie’s really good, too.
  • The Bone Collector,” by Jeff Deaver, is the first (and my favorite) in a series about a bitter, suicidal forensics genius that loses his career when an accident turns him a quadriplegic and he has to solve crimes from his bed. Avoid the movie.
  • Tough Guys Don’t Dance,” by Norman Mailer, is my favorite book by this Pulitzer Prize winner. The first chapter starts with a loser waking up from an alcoholic black-out, going out to look for his drug stash, finding his wife’s head instead and spending the rest of the book wondering if he killed her or not. Run, don’t walk, from the movie. If you have to be run over by a bus in the process, consider yourself lucky.

Fantasy

  • War for the Oaks,” by Emma Bull, is about a punk band leader that falls in love with an elf from the St. Paul, MN parks. No matter how many times I read it, but the end I’m always crying (and yes, I’m just that kind of sap).
  • The Silent Tower,” by Barbara Hambly, is the first of a three-part series about a modern day female geek that falls in love with a real wizard from another dimension. The relationship that builds between them is as good as any romance novel I’ve ever read (which is admittedly a small number…)
  • Of course, The Hobbit” and The Lord of the Rings” trilogy, by J. R. R. Tolkien has to be on anyone’s list. If you loved the movies, you’ll love the books. I believe that The Hobbit” is a better book over all; it’s tighter and happier and I’m very much looking forward to the movie, especially if Peter Jackson does it. However, my favorite part of the four books is the coming home” part at the back half of The Return of the King,” which is given a 3-minute scene in the movie (although I admit it’s a nicely done scene).

Sci-Fi

  • On Basilisk Station,” by David Weber, is the first in a long series about a driven, capable woman rising through the ranks of the space navy in spite of the extreme assholes working double-time against her. The main character is so compelling that I cry at the end of 3 of the first 4 books in this series (did I mention what a sap I was?).
  • Ender’s Game,” by Orson Scott Card, is about a boy genius coddled by his sister, tortured by his brother and abandoned by his parents to military school where he saves the world from bug-eyed aliens before he’s old enough for his voice to change. This book is widely regarded as one of the best pieces of modern science fiction that there is. The sequels in the original series are also excellent, but you can skip the other related series w/o missing much.
  • Snow Crash,” by Neal Stephenson, is a classic tale of a pizza delivery man/samurai named Hiro Protagonist” and his virtual reality gear. It’s also one of the seminal works in the cyberpunk” genre.
  • The Running Man,” by Steven King, is about a man that can’t tolerate his place in the society of the future, so rams a commercial airliner into the top floor of an evil television network responsible for man’s downfall (you can see the ending coming a mile away, but it’s still very satisfying). Much, much better than the movie.

Misc.

  • Shipping News,” by Annie Proulx, is an actual Pulitzer Price winner and as such, is different from your average reading” book. However, I love its quirkiness and the movie ain’t bad, either.
  • One L,” by Scott Turow. This is Turow’s first book chronicling his first year in law school. I read this one once every few years or so and it always makes me want to go to law school.
March 2, 2005 spout

IT Industry’s Own Jobs Training Program

My brother graduated from college with a BS in EE in 2000 and was, predictably, unable to find a job competing with certified, experienced engineers willing to work for the same money after the bubble burst. He was fortunate enough to be able to move into his Mom’s basement and get an interest-free loan for an MS in EE that lead to a wonderful job, but if you’re not so lucky (hey! I’ve got next dibs on my Mom’s basement!), then check out TechEngage:

TechEngage is a community-based non-profit organization founded to provide unemployed and under-“employed technical professionals with an affordable opportunity to obtain the high quality training they need to be competitive in today’s tough job market.”

February 23, 2005 spout

On Being Socially Re-engineered

February 23, 2005 spout

On Being Socially Re-engineered

I do not consider myself weak-minded. For example, even though I’ve tried to let it happen, I’ve never been able to be hypnotized. Also, I’m often considered to be close-minded (although I do change my mind when valid arguments are presented, but most folks don’t argue very well, I find). So, why did a terrible High Risk Driver” course change my driving habits?

The course started as you’d expect: a room full of 18-25 year olds that did not want to show up anywhere on a Saturday morning, least of all at the local level 1 trauma center for 8+ hours of lecture. The main instructor was a high-energy trauma nurse that professed an vast personal experience with all things alcoholic. The traffic cop drove a motorcycle, which he made great pains to point out was the most dangerous vehicle to drive, and told a story about how he let a friend of his drive while they were both too tired in spite of his personal expertise in all matter of influence while driving, e.g. alcohol, drugs, cell phones, sleep deprivation, etc.

Of course, there was the obligatory Faces of Death” presentation through-out the day, but they were slides, not videos, so didn’t compare to the movies I saw in driver’s education class at age 16. Even the stories of the people in the pictures, while sad, seemed as much about capricious bad luck as about actual bad decision making. Some of the people from the stories even came to speak to us in their wheel chairs (except one guy that came in a suit and passed his business card around), but by far the most convincing and articulate of this bunch got his injury from a diving accident (that’s diving not driving).

February 19, 2005 spout

I’m with Shawn — Constantine was Good

Here. After a movie dry spell that’s lasted since Thanksgiving, I agree with Shawn
February 16, 2005 spout

Hitchhiker’s Guide Might Not Suck

February 14, 2005 spout

Experimenting with Windows Alternatives

February 12, 2005 spout

Airing The Dirty Laundry

I was sitting at Jim Blizzard’s going away party the other night when my phone rang. This was the side of the conversation that the Portland nerds heard:

Hello?”

What?”

Well,why don’t you have any underwear?”

Put your brother on.”

Why doesn’t your brother have any underwear?”

Well, why does he think he doesn’t have any underwear?”

OK. Put your brother back on.”

Are you sure you don’t have any underwear?”

Look in your hand; is there any underwear in it?”

Then check your other hand.”

OK, how many pairs of underwear are you wearing?”

And how many pairs do you need between right now and the time I get home?”

Good. Bye.”

February 12, 2005 spout

Experimenting with Windows Alternatives

When I used to teach COM, we would brag about its cross-platform-ness, i.e. it worked across Windows 95, Windows 98, Windows NT 4, etc. So, when I’m talking about Windows alternatives, of course I mean Windows XP, Windows XP Media Center Edition, Windows CE and Windows XP Tablet Edition:

  • Windows XP: This is the workhorse of my day and with SP2, it’s even more wonderful than it was before. Love it.

  • Windows XP Media Center Edition: The mix of a pleasing 10-foot UI, picture, music and video playback, content and UI extension, PVR, Windows-based expansion and MCE extenders makes this a fabulous media client and server. Love it.

  • Windows CE/SmartPhone 2003 Second Edition: The 10-inch UI, the built-in apps and services, the extension apps, the internet access and a set of apps optimized for 9-key + joystick input all make this a fabulous user platform that’s replaced my phone, my mp3 player and even my laptop in some cases. Plus, I can build my own apps! I haven’t felt this way since my first laptop freed me from the tyranny of the desktop. Love, love, love it!

  • Windows XP Tablet Edition: I love reading text on this OS. The ClearText, the form factor and the scroll-specific buttons near the screen make it a wonderful reading experience. I also look forward to reviewing articles and book chapters with my tablet. However, I doubt I’ll get to it because I dread picking it up and being faced with all of the text input I’m forced to perform. Unlike the MCE or SP OSes which have been optimized for remote control/keypad input, the tablet is more general purpose and therefore supports far more general purpose applications. This means text input for dialogs and passwords and URLs and all kinds of other things where my poor handwriting is often painful. Of course, handwriting is faster than joystick/keypad input, but because there seems so much more input required in an average tablet session, it seems slower. I with the apps for the tablet were more special-purpose and optimized for stylus-only input. Love it and don’t so much love it.

BTW, I paid $6000 in college for my Mac IIcx that I used to log into the Unix machines in the lab, so I’ve had a full range of computer UI experiences. I do truly love Windows best.

February 11, 2005 spout

i-mate SP3 Smartphone: How do I love thee?

Let me count the ways:

  1. Pocket-sized and no bigger than my old dumb phone and tons smaller than tricorder-sized PDAs
  2. Synchronized calendar, contacts and inbox every 10 minutes everywhere I go
  3. IM and web browsing everywhere I go
  4. 512MB miniSD upgrade (for $60), giving me room enough for 300+ minutes of songs/audio books, making the phone a wonderful mp3 player, both for personal use (via the included stereo headphones) and in my car (via a $3 Radio Shack part, the Audio Adapter 274-373)
  5. Bluetooth headset, freeing me from untaggling wires all the damn time and letting me answer the phone while it’s still in my pocket
  6. Voice tags, letting my dial the phone while it’s still in my pocket
  7. Extensible with inexpensive custom apps of all kinds, including ones I can build myself in native or managed code (and a wealth of development information)
  8. Backlit ebook for darkened movie theaters during the commercials and the slow bits
  9. A quicky flashlight in a pinch
  10. Theoretically acts as a modem for my PC to give it an internet connection via my cell phone’s GPRS service, although I haven’t gotten that set up yet : )
February 11, 2005 spout

Local Boy Does Good

Microsoft’s own Robert Scoble has broken his way into the secular press, with an article in both Fortune (Why There’s No Escaping the Blog) and The Economist (Chief humanising officer). Way to go, Robert!

February 9, 2005 spout

I Think VSLive Is *It*

It’s become apparent to me that for Microsoft-focused non-Microsoft hosted conferences, VSLive is it. I know that in the past that they’ve had financial problems, but I haven’t heard rumors of that for a while. Even more importantly, their attendance numbers and their coverage is top notch for 3rd party Windows developer conferences. If I was going to speak at a wide-reach Windows developer conference that wasn’t a TechEd or a PDC, VSLive would be it.

January 19, 2005 spout

The Reason For Code Access Security

I had a question in my inbox the other day that went something like this:

Since programming within the partial trust sandbox I get by default when using ClickOnce is so hard, why wouldn’t I just kick it up to FullTrust and let the user press the OK button?”

January 17, 2005 spout

Email Throughput

To get technical work done, I sometimes let my inbox fill up beyond what makes my comfortable. Today, that caught up with me, but I plowed into it and handled it like a man:

  • Handled 206 incoming emails (filed, deleted or dealt with in some other way):
    • Started with 47 emails in my inbox
    • Received 177 emails
    • Ended with 18 emails in my inbox
  • Sent 92 outgoing emails
January 2, 2005 spout

Death As A Possible Consequence

January 1, 2005 spout

Death As A Possible Consequence

When something legal comes up, I like to dig into it. For example, I did my own consulting contracts for years, I’ve testified against an Oregon state bill mandating Open Source Software (a bill that was never passed), I wanted to serve on a jury and I’ve recently become very familiar with the Oregon state eviction and small claims procedures for a rental unit I own. I find laws and procedures to be fascinating and, like most things, showing up is 80%.

However, I don’t like the law so much when I’m the defendant, as was recently the case when the state of Oregon was hell bent on suspending my driver’s license. It seems that if you get 4 tickets in 2 years that they like you to stay home for 30 days or at least take the bus more. I’ve had speeding tickets on and off for most of my life, but before this 2-year period which included a total of 6 tickets (thank goodness that the state of Oregon doesn’t count tickets in Washington), I hadn’t had a ticket for about 5 years. Incidentally, if I could manage to spread them out in a Bell Curve instead of in a Mandelbrot Set, I wouldn’t even have to be in this predicament, but natural has it’s laws and who am I to consider myself above them?

Anyway, the tickets should hardly count. One was cuz I didn’t slow down fast enough in one of those coastal towns where half of the tourist revenue comes from their 100 feet of road along the highway that drops from 55 to 25 with a sign posted behind a tree. Another was on the way to Burning Man. Sure, I was going a little fast, but I spent the next week driving the dusty BM roads on my bike — can’t we do some averaging here?!? Another was an actual speeding ticket around town and that one I’ll admit to, but the forth one was when I passed into a turning lane through a solid yellow line in rush hour traffic cuz I wanted to turn left and the line of traffic was way shorted than the line of traffic going straight, so I cheated over a few feet early. I mean, come on, that’s just an efficient distribution of traffic! I was avoiding gridlock! It was practically my patriotic duty to move over into the left lane early!

December 31, 2004 spout

Earthquake Disaster Relief Information

I can’t begin to imagine what the earthquake survivors are feeling after so much death and tragedy. If you can help, please do so.

For more information, you can visit the International SOS organization’s Tsunami Update page and the ReliefWeb site.

December 29, 2004 spout

SlashDot is Wrong: MCE05 Rocks

Here.

I’m a very happy user of Windows Media Center Edition 2005 and have been for some months. Not only does it allow me unfettered access to audio, video and recorded TV from any PC in the house, but with the XBOX Media Center Extender, I can access all of this from any TV in the house as well (so long as its equipped with an MCE Extender). Further, I was able to use MCE to record several episodes of a yoga TV show for my sister-in-law and burn them onto DVDs with an evaluation copy of WinDVD Creator, making her very happy. I don’t know what the content restrictions” who-ha is about, but MCE05 works great for me.

December 20, 2004 spout

We Need NetFlix for TV

Sometimes I miss some made-for-TV movie or series that I’d really like to see and that I didn’t know about before hand so that I could point my ReplayTV or MCE at it. The world needs NetFlix for TV.

December 16, 2004 spout

Deuce Bigalow: European Gigolo

Am I the only one actually looking forward to this movie?

December 16, 2004 spout

Getting Out The Vote: Save Ctrl+F5 in VS05!

When I noticed the behavior that Ian describes in VS05b1 (that Ctrl+F5 no longer works to launch a console app with Press any key to continue…” at the end), I assumed it was a temporary bug. To learn that this feature was removed by design” is devastating. As a presenter and technology experimenter, I’ve probably used this as much as any single feature in Visual Studio with the possible exception of the text editor.

Don’t just site there! Vote to Save Ctrl+F5 in VS05! (I love MSDN Product Feedback : )

December 15, 2004 spout

Snorkeling Is Unbelievably Wonderful

I just got back from a 3-family, 6-day trip to Cabo San Lucas, Mexico (“a pleasant fishing village paved over for tourist hotels”) and it was fabulous. Since it was before the high season,” we had the place practically to ourselves. In fact, even though it was an all-inclusive place, the wait staff probably outnumbered the guests 3 to 1 at any given time. And it wasn’t as if they skimped on the food or the drinks, either! Every day, we had a giant buffet for breakfast, snacks by the pool for lunch and a 3-hour, 5-course meal for dinner. Plus, the weather was great and the pools were heated, so it was practically perfect.

The one blemish was when we drove to La Paz and couldn’t get out again. The detour signs pointed the wrong directions and all of the highways had the same number. We literally left and returned to La Paz 4 times, including the time we had to drive the rent-a-car guy back to his offer when something on the road disabled our car and we had to get a replacement. In 10+ years of business travel, I’ve never taken the comprehensive insurance until that day. I only had to pay for the half of tank of gas that I couldn’t fill up myself because to do so would’ve destroyed the engine (the rental company failed at first to see this as an argument for charging me less than 4x the going rate for gas, but I did eventually talk them down to only charging me 2x the going rate…).

December 3, 2004 spout

Another Reason To Hate The Dentist

Most of the worst experiences of my childhood involve the dentist. I have an active gag reflex and a general aversion to sitting still for long periods with nothing to do but let somebody poke my soft innards with a metal stick, so the dentist chair has never been a good fit for me. Today, I got another reason to hate the dentist.

Because Beaverton does not fluoridate their water and because he’s a nine-year old boy, my youngest son Tom had 4 cavities to deal with today. He was nonchalant about the whole thing for the first hour alone in the chair while I waiting in the sitting room, never expressing concern or doubt about the experience to come, which made me believe that everything was going to be just fine. Even when he started crying a bit, I was able to maintain my seat, knowing that he leaned toward the dramatic. However, when he started screaming, that’s when all 6′5″ and 280 pounds of me barged through the door between the waiting area and the rending rooms, not stopping to ask the women milling around reception if that was OK and conscious but uncaring that the expression on my face stilled them to silence.

December 2, 2004 spout

On Microsoft’s Transparency in 2004

Here.

Sir Black Xero (?!?) has a review of Microsoft’s increasing openness in 2004, summarizing it this way:

November 26, 2004 spout

Hurray for IE QA!

From securityfocus.com:

It appears that the overall quality of code, and more importantly, the amount of QA, on various browsers touted as secure’, is not up to par with MSIE; the type of a test I performed requires no human interaction and involves nearly no effort. Only MSIE appears to be able to consistently handle [*] malformed input well, suggesting this is the only program that underwent rudimentary security QA testing with a similar fuzz utility.

November 25, 2004 spout

Microsoft Amnesty for Software Pirates

November 19, 2004 spout

A Reason For A Home Gigabit Network

I finally figured out why I need a gigabit LAN, especially at my house: the Windows Media Center Extender (mine’s for my XBOX
November 16, 2004 spout

Art Tips for Programmers

As I think I’ve said before, as the capabilities of our UI platform expands, programmers are going to need to know a lot more about user experience and graphic art. Towards that goal, I offer a recent post on Slashdot that provides advise on how programmers can bone up for the latter
November 13, 2004 spout

Outsourcing to Arkansas

I love the idea of outsourcing to rural parts of the country because a) I like keeping jobs in the US if possible (although I’m not a protectionist by any stretch of the imagination), b) it gives the under-employed more choices and c) it’s another step toward my dream employment environment.

I see a future where people are listed like books on Amazon with ratings, reviews, descriptions (aka resumes), prices and availability, to be placed into a shopping cart to form ad hoc project teams based on the needs of the project and not on the locale of the participant or something as restrictive as employer.” I admit that I this article is only a small step and may not even be in the direction I’m hoping for, but as I’d like to live in a rural area (central Oregon) and still get to do interesting work at reasonable pay, I’m more than happy to read into things.

November 11, 2004 spout

ATOM is to RSS as XML is to SGML

Tim Bray finally provides a technical reason for ATOM to exist that I can get behind. Once every RSS
November 11, 2004 spout

A Guy Worth Hiring

This guy deserves a flood of job offers. Make yours good!

November 7, 2004 spout

Concrete Examples of Software Factories?!?

I’ve been reading each of the Software Factories articles with great interest. Part 1 and part 2 did a particularly good job describing the elements of the problem space, I thought. However, when I get to part 3
November 4, 2004 spout

It’s The Thoughts That Count…

November 4, 2004 spout

The Importance of Reputation

Here. The one where my boy is falsely accused of pantsing a kid and avoids suspension because he’s known as a good kid.”
November 4, 2004 spout

Getting My Hopes Up On Episode 3

Dammit. The trailer for Star Wars 3: The Revenge of the Sith, actually looks good! I just know I’m going to get my heart broken again…
November 4, 2004 spout

The Country Has Spoken

This map of physical area that Bush won over Kerry (3.28M vs. 741K square miles) paints a pretty stark picture of just who the country wants to be their president. The choice they made makes me want to emigrate to Ireland with Robert Redford, but that’s another story…

[both links from Rick Childress]

November 4, 2004 spout

It’s The Thoughts That Count…

On an internal mailing list the other day, there was a question asking for how to make a tray notification icon come back up on the try after explorer.exe died and came back to life. Good notification icons do this and the asker wanted to know how to do it for Windows Forms. I had had a dearth of technical work at the time, so decided to dig into the problem and see if I could answer it.

I started with a dim memory of a piece in MSJ by Paul Dilascia on the subject. Searching on msdn.com, I found Paul DiLascia’s 2/99 MSJ C++ Q&A (http://www.microsoft.com/msj/0299/c/c0299.aspx) (emphasis added by me):

provided you have Windows 98 or the Microsoft Internet Explorer 4.0 desktop installed. Whenever Internet Explorer 4.0 starts the taskbar, it broadcasts a registered message TaskbarCreated to all top-level parent windows. This is your cue to recreate the icons. If you’re using MFC, all you have to do is define a global variable to hold the registered message and implement an ON_REGISTERED_MESSAGE handler for it.”

November 4, 2004 spout

The Importance of Reputation

My youngest son was called into the office today for pantsing a kid on the school playground. That is not at all like my son (he’s the sweetest kid you’d ever want to meet), but the principal was new, so she was talking about suspension. Luckily, the secretaries knew my boy, so they were able to point out the inconsistency of that behavior with the reputation he had built in 4 years at the school. It turns out that the pantsed boy was cutting in line in front of my son, who didn’t like it, so pushed him right back out of line again. The cutter” took a swing, my boy swung back and in the process (they’re only 9) they both fell. My son reached out to grab the boy’s shirt to catch himself, not knowing that the other boy was also falling and got the pants instead, causing the aforementioned pantsing.”

The moral of this story is an old saying I heard when I was a kid and have lived by since: If you rise at dawn, you can sleep til noon.” In other words, if you build yourself a reputation for good things, when occasionally you stray, folks will cut you some slack. The converse of this rule is that if build yourself a reputation for bad things, that could well stick with you for a long, long time…

October 25, 2004 spout

Here’s Some Marketing I Can Get Behind

October 14, 2004 spout

Consider Yourself An Artist

d.code has a lot of great stuff to say in his post, but hands down my favorite is this:

How many software developers at Microsoft consider themselves artists first, and software developers second?”
October 14, 2004 spout

Randy Jackson on Pleasing the Gods

Randy Jackson enjoyed my recent .NET Rocks appearance because of my discussion of how I like to learn things. I only remember talking about two strategies: ignoring the docs” and hyperventilating” but his take on it was so beautifully worded, I had to share it with you:

I’m referring to flying in that strata called by some of my PhD’ed friends as the Shirley McLean’ possession experience, where the actual act of jumping in to the unknown pleases the Gods in some twisted way and the outcome is usually beyond our expectations.”
October 14, 2004 spout

A Quote To Live By

I watched the first few episodes of the award-winning HBO series Angels in America” and hated it (but I still love NetFlix for making is so darn available to me).

However, while I didn’t identify with any of the characters (except, potentially, the hot nurse/angel), I did really resonate with one of the quotes, which went something like this (and feel free to correct me if you recognize the quote and I got it wrong):

October 11, 2004 spout

“How is anyone supposed to know that?”

The high priests that run the Internet and the IT industry have betrayed the trust of the secular community.

My wife called me over to her computer the other day when she was worried about an email stating a problem with her eBay account. By reflex, I said, Oh, just ignore that.”

October 11, 2004 spout writing

All The Fun, Half the UK Price

Curt Johnson, my marketing guy at Addison-Wesley, has let me know this morning at the UK Amazon is having a 1/2 price sale on my Windows Forms book this month. Plus, the UK
October 7, 2004 spout writing

You Too Can Be A Technical Writer!

October 7, 2004 spout

Settings, Collections and VS05b1 (oh my)

I sat down to write a new Windows Forms application in .NET 1.1 the other day, but the Visual Studio 2005 beta 1 called to me with its menu strips” and its user settings” and most especially its generics,” and I just couldn’t resist.

To start with, it was such a pleasure to add a menu strip, add in the standard menu items (including graphics), then just strip it down to just the menu items I wanted. Then, as I added new menu items, the menu item object names were set for me based on the menu item text, e.g. startRetrievalToolStripMenuItem instead of menuItem1, which was fabulous. Not everything was wonderful, e.g. I couldn’t drag and drop menu items or use Alt+arrows to rearrange them , but overall the new menu control was a pleasant experience.

Even more pleasant was the app/user settings model. To add a setting to my application, all I had to do was bring up the properties of my project, add a named setting of whatever type I wanted (more on this later) and choose whether it should be an Application setting or a User setting. Both kinds of settings are loaded automatically when the app starts and all I had to do to save them was call Properties.Settings.Value.Save() when my main form shut down. Then, with the settings in place, e.g. MyUserSetting, I could get to it after the app started from anyone in my app with a type-safe access, e.g. Properties.Settings.Value.MyUserSetting.

October 7, 2004 spout

Every Story I’ve Ever Written

I was working with a potential author on an article he’d like to write covering some ground I left uncovered in my original No-Touch Deployment piece for MSDN Mag. Anyway, he sent me the list of topics and then said the following:

There is a fair amount of material here it might benefit from being broken into chunks. I think I will write about small chunks at a time and then we see how much belongs in one article. Rereading your original article it struck me that you had [a] story that held it together, I need to find one for me.”

I’ve heard this kind of thing before, i.e. people ask how I turn a seemingly random set of topics into a story.” I’m all for that, but it’s not really such a chore. In fact, here’s the essence of every technical piece I’ve ever written:

September 29, 2004 spout

BankOne: Special Victims Unit

I have a BankOne Visa card that I use for Sells Brothers, Inc. as a charge card for expenses like computer equipment, technical book purchases and strip clubs (you know — business expenses : ). Apparently somebody got a hold of the number and started making charges with it today. A $19 charge was approved, but the $331 charge swung the BankOne AI software into action and the charge was declined. They called right away to confirm the activity and when I didn’t recognize it, they credited me the $19, canceled the card, put a new one in the mail, sent all three major credit card agencies a notice so that my credit rating wouldn’t be affected and put an affidavit in the mail so that I could swear that the $19 charge wasn’t mine. All of this defense against identity theft cost me 5 minutes on the phone, a few days wait while I receive my new card, a signature and $0. Amazing.
September 6, 2004 spout

The Week Before Burning Man

September 6, 2004 spout

The Week Before Burning Man

I was just listing my activities for the week before Burning Man and amazed even myself:

  • Shopping for and celebrating my wife’s 36th birthday

  • Helping to prepare for and then watching Sells brother #1 test for his Jr. Brown belt in karate (he was amazing)

  • Hosting my aunt and grandmother on a very rare 4-day trip

  • A day-trip to the beach

  • Celebrating the birthday of Sells brother #2

  • Coordinating the update, from my house and at the last possible moment, of more than 100 pages on microsoft.com to reflect the recent announcement of WinFX being made available on down-level versions of Windows (this included 3 all-nighters)

  • Preparing for and running a 2-day garage sale of the stuff I pulled out of my house over the last 8 months in my own personal episode of Clean Sweep

  • Packing for 5 days in the desert (I worried about survival and my wife worried about having enough costumes…)

Of course, after that I spent a week at Burning Man, and today we’re cleaning the playa out of everything, preparing the boys for school, hanging out with the relatives for Labor Day and celebrating our 13th wedding anniversary. Starting tomorrow, I have to figure out what to do with the Longhorn Developer Center now that WinFX will be available on down-level windows, co-author two Avalon books and one Windows Forms book and run the Applied XML Developer’s Conference 5. Should be fun. : )

August 16, 2004 spout

Where Are You In The Software Practitioner Triad

In his piece Software Practitioner Triad (I know it’s old, but I just got pointed to it by Phil Weber), Alan Cooper points out three different folks needed to design and build software:

  • Architect: responsible for determining who the user is, what he or she is trying to accomplish, and what behavior the software must exhibit to satisfy these human goals.
  • Engineer: technical problem solving via experimentation, not fettered with the demands of producing release code.
  • Programmer: producing a shippable product, consisting mostly of protective code that rarely—if ever—executes, but is dedicated to supporting obscure edge cases, platform idiosyncrasies, and error conditions.
August 5, 2004 spout

Mensa Has an Open Enrollment Day

Mensa Has an Open Enrollment Day

I refuse to join any club that would have me as a member.” –Groucho Marx

August 2, 2004 spout

I want remote apps, not remote desktops

Ever since WinXP, I’ve been using Terminal Server a ton. Recently, I’ve been using Virtual PC and when Virtual Server is released, I bet I’ll be using a lot of that, too.

However, as enabling as TS and VPC are, I want more. Instead of logging into a desktop and having the windows trapped on that desktop, I want the windows from a VPC or TS session to just show up on my local desktop, maybe using title bar colors to tell me which ones are running on which machines. I know that X-Windows has provided this for a while, but I want this for Windows. That is all.

July 29, 2004 spout

I Can’t Imagine More Great Hackers

Here. According to Paul Graham, hackers only program Python and never
July 27, 2004 spout

What Makes A Book Successful?

Here. The one where I pontificate like an arrogant windbag on the subject of what makes a book successful
July 27, 2004 spout

What Makes A Book Successful?

I got an email today from a friend who wanted to know what he could do to make the book he had in his head successful. I’ve thought a lot about this topic in the genre of Windows programming (I don’t have a clue how to make your bodice ripper successful), but had never verbalized it til now, so I thought I’d run it up the flag pole and see who burns it.

DISCLAIMER: I make no claim about whether following these guidelines will make your book successful. These are just things that I think about when I’m trying to make my own books successful.

  1. Write a quality book. I know this one goes without saying, but given the state of most books that make their way to the shelves, I thought I’d say it anyway. Karen Gettman, my editor at Addison-Wesley, says it like this, Be the first or be the best.” I’ve never yet had any luck being first, so I really try to be the” book in any given category. For example, I think the 6 guys who read the TAPI book would agree that I really nailed it. : )

    For me, the crux of quality (besides being able to string sentences into paragraphs and chapters in pleasant ways) is writing a book that describes how to do your work with the technology instead of that describes how the technology works. The difference is subtle, but it’s what separates, for example, a book that describes how to build real applications in WinForms using the appropriate tools from a book on the WinForms classes, methods and events. Likewise, the former fills in the gaps when a technology falls short whereas the latter is frustratingly silent on such topics.
     

  2. Have a significant audience. This is the one that’s killed me time and again. The Win95 user book was killed by Internet encyclopedias. The TAPI book was killed by the lack of PC/Telephony adoption. The ATL book was pretty well-received, but the audience was still not the audience size that you’d like (although it still sells nicely and we’re planning on having a 2e in time for Visual Studio 2005 and ATL 8).

    Having a significant audience was the thing that killed my friend’s book dreams when he called. Before our call, he was all excited about his technology (passion is an important part of the writing process and it’s the only thing that can get you through the murderous back-end of a quality book [on the other hand, I understand that people that write crappy books don’t have this problem, so there’s something to be said for that…]). After our call, he had to admit that the market just wasn’t there for anyone to purchase his labor of love once he’d produced it.
     

  3. Own the marketing. The truth is that even though publishers have full-time marketing folks, you are much more likely to know where your audience hangs out and how to reach them then they are. Plus, there are all kinds of guerrilla marketing” things that you are much more able to do than any publishing company. For example, these are some of the things that I like to do:
     

    • Answer questions online in your area of expertise. I’m continually surprised by the number of authors that don’t participate in the communities that support their technology. If you answer questions and then point folks to your book for more details enough times, folks will grow to appreciate your book without ever having picked it up (although don’t just point folks at your book without answering their question — that’ll just make you look like an asshole).
       

    • Ask for Amazon reviews of your book. People often feel the need to say something nice about my book before asking me a related question. In that case, I always take the opportunity to ask them to post a review and give them the URL to do so (the difference between finding my book on Amazon and just clicking an URL can make all the difference between whether they do it or not). I never ask them to post a nice review,” btw. I just encourage them to write what they feel.

      Why do I care about them posting their reviews? According to legend, the number of reviews a book has is a fair indicator of how well it sells, regardless of whether those reviews are good or not. I don’t know if it’s causal, but since I can only influence one of the variables, that’s what I do. Plus, the reviews look good to your family and friends when they pull up your books and since you’re not going to make any money writing a book, you might as well get something out of it. : )

      Why so I want the reviews on Amazon instead of blogs, newsgroups or BookPool? Because everyone goes to Amazon to buy books and that’s where I want them to see the reviews. In fact, if I see a review somewhere else besides Amazon, I’ll ask the reviewer to copy and paste it on Amazon so that all of the reviews are in that one, critical place (providing them the URL, of course, to make it nice and easy for them : ).
       

    • Continue writing in your area of expertise. There’s no better free advertisement for your book than that tiny bio at the end of an article that says Joe Grammer is the author of Essential EDI Programming in a Nutshell in 21 Days for Dummies.” Of course, that pre-supposes that the article is good enough for folks to want to read more of your work, but if it isn’t, you’ve got bigger fish to fry.
       

    • Bang on your publisher. Your publisher has a PR department and a marketing department. Talk to them. Ask them what they’re doing for your book. Watch where they go and make sure your book is represented. Watch where they don’t go and tell them to go there. Make sure your publisher signs you up to revise your book as the technology evolves.
       

  4. Pick your publisher wisely. Speaking of publishers, make sure you choose one you’re going to like. It’s easy to fall into the money trap, especially since every publisher on the planet can provide numbers about how they’re the #1 publisher in some way for your book and you’d be a fool to go anywhere else. Unfortunately, when you do the hourly math, most authors make poverty level money, so why not pick the publisher you’ll like the best? To find out which publisher fits you, you can either write for/flirt seriously with them or ask around. To save you the trouble of the former, I’ll give a brief overview of the publishers with which I’m familiar:
     

    • Microsoft Press. This is the big dog that all the other publishers a) think is given an unfair advantage and b) are constantly trying to get within striking distance of. MS Press is so far ahead on sales volumes that the rest of the publishers are scrambling for #2. I’ve never written for MS Press, but have seriously flirted with them enough to be scared by them. This was years ago before the great opening of MS and things may be different now, but at the time, MS Press seemed keen to fix” my writing to fit the official” story and to be very firm about schedules, neither of which made me happy (I was used to a more loving, lax environment : ). Plus, MS Press is famous for little clauses in their contracts for which authors need to watch (although all publishers do this — watch out for the one called Right Of First Refusal”).
       

    • Addison-Wesley. I’ve written all but one of my real books for Addison-Wesley and they have set the author environment standard against which I measure all others. In the old days, they’d throw advances and even grants at anyone with a pulse and then expect you to take 23.5 months to deliver on a 9-month contract while leaving you free to say pretty much whatever you wanted. Sadly, those days are over, but the idea of letting the author be the ultimate arbiter of what goes on the page has stayed. This comes from editors that are more like project managers in that they send nag emails when you’re late and send chapters off to reviews to gather feedback, but don’t ever really read the chapters (most AW editors aren’t technical). What this means is that you have a lot of freedom as an author until some reviewer you don’t agree with brings up something silly that the editor takes as gospel and whacks you with it.

      Luckily, if you’re writing for an AW series, you’ll have someone technical that can read and review your content, although in this case, you’ll want to make very sure that you see eye to eye with your series editor or you’ll find yourself butting heads.
       

    • O’Reilly & Associates. I’ve only written one book for them and it was a mixed experience. On the one hand, it was the wrong book (it should’ve been a Visual Studio Hacks book, but this was before the Hacks format was invented). On the other hand, ORA editors actually read the book and provide intelligent, thoughtful feedback. I really like that. On the gripping hand, ORA has built its reputation of steady quality by applying heavy copy editing to all of their authors to coerce those that aren’t writers into the ORA voice.” Most of the time, this works nicely. If you pick up any ORA book in any series, you know what you’re getting and lots of people love that (I love a lot of ORA books myself). However, if you’re an arrogant author (like me) who thinks that he writes better than the copy editors, you may be surprised with what the copy editor does to your stuff.

      Also, ORA doesn’t really have series so much as formats, e.g. Nutshell, Hacks, Developer Notebook, etc., so make sure you like the gimmick associated with a format before you sign up for one. To maintain that steady level of quality, they’re going to make sure you stick to the format closely.
       

    • APress. I don’t know a thing about APress except that I like Dan Appleman, Gary Cornell is a character and a half, they seem to have some good books and I’ve never written for them, so naturally I’d like to write for them for some day (I mean, just because my wife doesn’t allow me to fool around outside our marriage, why shouldn’t I be able to fool around in another genre? : ).

July 21, 2004 spout

Hypothetical: What’s Best For Windows Developers?

Hypothetically, if you were a relatively well-known voice in the Windows development community (let’s call her Kris) and you were being pursued as a series editor for two publishers, call them O’Shawnasee Associated (OSA) and Anderson-Manderson (AM), which would you pick?

Suppose that both OSA and AM have a strong existing Windows presence, but AM has the edge in a quality .NET series with a strong voice already at the helm (call her Dawn) while OSA has a more scattered offering spread across format and media types. Would it be better for Windows developers if Kris lent her voice to the AM existing series, reducing the competition for authors between series, or should she work with OSA to gather their Windows editorial vision into a more cohesive whole, requiring developers to make a harder choice between publishers?

July 21, 2004 spout

This is *so* the wrong direction…

I don’t want to turn bits into atoms in 3-5 minutes to hold a book in my hand, I want all my books, papers and mags in electronic format on a pleasant hardware platform! I’m planning on getting myself a tablet PC
June 30, 2004 spout writing

#1 Windows Forms Book

June 30, 2004 spout

#1 Windows Forms Book

Wednesday, June 30th, 2004

I just got word from my publisher that, according to the industry-wide metrics they use, Windows Forms Programming in C# is the #1 seller in it’s category week-to-week by a wide margin over everyone but Petzold (who I’m still beating, but by a smaller margin). And while Petzold has sold more copies overall, he had a 2-year head start on me and I’m gaining. Further, earlier today, Amazon.com had the book listed as the #5 best selling computer book (although it’s at #10 right now with a sales rank of 459 and a ranking of 5 out of 5 with 52 reviews).

I normally try to toot my own horn a little more subtly than this, but the idea that I could learn Windows programming from the best-selling Windows book author of all time and then, 10 years later, beat his sales numbers makes me damn proud. Thanks to all the reviewers and folks that gave me feedback on the materials in my articles, to Shawn Wildermuth and Mike Weinhardt, who actually contributed material to the book and to Addison-Wesley for printing it (and then re-printing it, and then re-printing it… : ).

June 26, 2004 spout

My Experiments In Social Video

June 26, 2004 spout

A Man, A Plan, A Canal, A Librarian!

A Man, A Plan, A Canal, A Librarian!

Saturday, June 26th, 2004

Can’t come up with a better palindrome than a man, a plan, a canal, Panama!”? Write a program and come up with one that’s 17,000+ words. I love computers and what people do with them.

The most extreme thing I ever did along these lines is when my airplane was circling an airport for some unknown reason and the United flight attendant announced a contest to keep our minds off the dwindling fuel and the terrorists on the ground (oh, wait, that’s Die Hard…). Anyway, she offered a free bag of peanuts (or something of equal value) to the person that could come up with the most words of 3 or more letters from the letters in the word united” (Always Be Closing…).

June 25, 2004 spout

My Day With Edward Tufte

June 25, 2004 spout

My Day With Edward Tufte

My Day With Edward Tufte

Friday, June 25, 2004

I spent most of Thursday in a seminar given by Edward Tufte, the author of several seminal books in the area of data analysis and presentation (with another, Beautiful Evidence, in the works). I enjoyed it thoroughly and here’s what I was able to capture:

Tufte’s Grand Principles

The goal of good information design is to minimize the amount of time spent figuring out the design of the presentation of information (or even admiring it) and maximize the time spent reasoning about the information. Good designs should be as nearly invisible as possible.

June 25, 2004 spout

My Experiments in Social Video

June 25, 2004

Because I’m a rarity at Microsoft, a remote employee, I’ve been conducting experiments in social video to increase my presence from afar.

Experiment #1: Mini-Me

My first experiment was a dedicated laptop for IM audio and video that sits on my desk in building 5. The idea was that anyone that wanted to chat with me could wander by my office and start an a/v chat w/ me nearly as easily if I was actually in the office. And then, when I’m supposed to be in a meeting, instead of requiring someone to bring their laptop, with a web-cam installed, and give it up to me for the duration of the meeting so that I could see folks, they could just grab the mini-me” laptop from my desk and bring it to the meeting.

June 16, 2004 spout

The Reason for ATOM

It seems to me that folks embrace ATOM mainly to get away from the guy that’s credited with inventing RSS:

I’m not running for president, I am not a corporate executive, and I don’t tell bedtime stories to adults unless its for fun and they’re friends. I can tell you what it feels like to be me, but I don’t know how it feels to be you. I’m willing to listen, up to a point, but unless your site is hosted on weblogs.com, I don’t understand why you’re hogging the microphone right now. I believe so strongly in the weblog world, that we should be grounded in truth. I think a lot of people participating in this dicussion are not grounded in truth, deliberately so, openly so. Shame on you, I say.”
June 7, 2004 spout

My First Presentation For A Distinguished Engineer

June 7, 2004 spout

My First Presentation For A Distinguished Engineer

Monday, June 7, 2004

Wednesday was a good day. Not only did I get birthday wishes from all over the internet (thank you, Orkut), but I got to give my first presentation to a Distinguished Engineer (or DE, as we call them in humble tones). A DE is the top end of the individual contributor ladder that technical folks who want to stay technical — aka avoid becoming management – are on. Architects, e.g. Don, are one step down on that ladder and Program Managers (PMs), e.g. me, are even further down. In this case, the DE to whom I was presenting is someone that I’ve long respected and who invented and continues to guide my favorite programming language: Anders Hejlsberg.

A couple of weeks ago, Anders was digging through our docs on a topic in which he was interested because of the future directions he’s got in mind for C#. However, the particular information that Anders was looking for wasn’t in our documentation. So, he mentioned that he’d like someone to look into it and get the information for him. As a percentage of the 56K employees at MS, there are a very few DEs, so when one of them mentions that they’d like to see something done, that’s what happens. This doesn’t happens because a DE is your boss or because they decide whether you get a raise or not. This happens because smart technical folks get respect at MS and the smarter you are, the more respect you get. So, when Anders mentioned to BradA that he would like a brief on this technology, Brad found someone to give that brief: me.

June 6, 2004 spout writing

MikeDub On Solving An Instance of Writer’s Block

It has been my pleasure to spend the last 2+ years writing with Mike Wienhardt. I remember fondly his first piece. When I give feedback, I work very hard to let the author know just exactly what I think so that they can bring their work to its highest possible potential. When Mike sent me his first draft, I was as careful as I could be to point out the parts that I liked to let him know that he had real potential, but basically, I ripped it apart. I have literally caused authors to tear up reading my feedback in the past, but I give Mike credit — he turned his piece around and came right back for more. We did this 5 or 6 times, but by the end, his first piece was better than most of the experienced authors filling magazines and web sites. It has been a real pleasure watching him grow into his writing talent and it made me very happy when he accepted the major writing duties on the 2nd edition of Windows Forms Programming in C# and when he took over my Wonders of Windows Forms column.

In his most recent blog post, it was very interesting to read about Mike working his way through the worst part of writing: writer’s block. Nearly all authors get this occasionally and it’s a real killer (and a pox on those authors that don’t suffer from it). It makes me proud to see him so concerned about his writing that he’s willing to share these kinds of experiences with the world. I wish more engineers took that kind of pride in their work. You’re setting an example for us all, Mike.

May 29, 2004 spout

Turning Science Into Engineering

It’s generally know that the thing we call software engineering” is nothing like that. We just don’t have anything like the rigor that real engineering disciplines do and we need them. I wonder if Brian’s quest to understand the real software life cycle and codify them constitutes another step down the road that the other engineering disciplines took to become predictable, schedule-able, reliable, budget-able and robust. I hope so.

May 29, 2004 spout

You Can Actually Schedule Inch-Pebbles

I haven’t read Coder To Developer, but I love the term that secretGeek has pulled from it: Inch-Pebbles.” When I was running DevelopMentor Software I learned to schedule from my then-mentor John Robbins, who learned it at NuMega (of BoundsChecker fame).

John’s insight was that nobody can look at a software release or even a feature and come up with an accurate schedule. Instead, they hold up their thumb in the wind and say, Hmmm… Two weeks.” Of course, it’s never anywhere close to that. However, if you break something down into tasks of 1-2 days, aka inch-pebbles,” those can be accurately estimated and then rolled up into how long each feature and then each mile-stone will actually take (“What? Three months?!? I had no idea…“). Once I learned how to schedule debugging time (rule of thumb: as long as coding time), we were able to schedule our software to w/in a week or two (although John, to show off, would pad a little and pick the day and time and deliver the golden master CD with balloons, champagne and marching band music : ).

May 28, 2004 spout writing

Great Minds…

Here.

I love Luke’s RSS Aggregator [1]. He loves my book. For what more could a man ask?

May 28, 2004 spout

Jury Duty

May 28, 2004 spout

Jury Duty

Friday, May 28, 2004

Today was the first time that I was called to jury duty, even though I’ve been eligible for almost half of my life. I always dreaded being called when I was a consultant because the $10/day didn’t cover a day’s meals, let along the revenue I would miss as the sole breadwinner of the family. However, much like the body puts off illness when you just can’t afford to take the time (stress has its uses), my dread seems to have put off my jury duty til I had a full-time job with enough redundancy to live w/o me for a day or so.

Even when your job pays, most folks seem to want to get out of jury duty in any way possible. George Carlin says that the best way to get out of it is to admit to the judge that you know how to tell if someone is guilty, It’s all in the distance between their eyes…” Personally, I’m a believer in America’s system of justice (I’ve often fantasized about a life as a prosecuting attorney and as a judge), so I didn’t mind serving my turn on a jury. Unfortunately, it was not to be. While I went down to the court house, my number wasn’t even called to appear on one of the two juries needed today.

May 26, 2004 spout

This Absolutely Boggles My Mind

Here.

Steven Edwards is an OSS guy working with the Wine guys to build a new version of Windows from scratch called ReactOS. They’ve got 20-30 people, they’ve been working on it for a few years and they’re 6-8 months away from getting client-side of networking to work to the point that it supports HTTP.

May 25, 2004 spout

Post/Reply Alphabet Soup

Newsgroups, mailing lists, web forums and blogs (with comments) are all very similar. Fundamentally, they’ll all about posts and replies. Sometimes the posts are replicated to servers around the world, acccepting replies in the same way. Sometimes the posts are replicated to a set of subscribers via SMTP and replies come in via POP3. Sometimes the posts are part of a web page and provided via HTTP, using HTML forms to take replies. Sometimes the posts are served up via a centralized server using HTTP + RSS or HTML, accepting responses via HTML forms or the CommentAPI. Fundamentally, it’s all the same thing, though: posts and replies. Why do I have to suffer with the limitations of any one of these protocols just to hang out with my friends to talk shop?

I don’t like newsgroups because I don’t like having a separate reader outside of my mail reader (and NewsGator ain’t anywhere close to what I want yet). Plus, newsgroups are very susceptible to spam, although the MS newsgroups are carefully patrolled to kill it before it spreads.

May 21, 2004 spout

Employers Check References

I got an email asking to serve as a reference for a guy I’d never heard of today. Just so you know, especially in a down economy, employers check references. Also, it’s a good idea to ask a reference between adding them to your resume so they don’t have to respond,
May 21, 2004 spout

Another Killer App for Web Services

May 21, 2004 spout

Strengths and Weaknesses

Friday, May 21, 2004

I took a Gallup questionnaire and 3-hour seminar on the philosophy of strength-based development. The central idea is to identify one’s strengths and concentrate on those. This is opposed to general thinking which says that you should work on your weaknesses. According to Gallup, no one can really change their weaknesses much, but if you focus on your strengths, you can really make a difference in yourself.

As evidence of this claim, Gallup sites a study of teaching speed reading to average and above average readers. The average readers started at 90wpm and the speed reading course increased their speed to 150wpm, an increase of 67%. The above average readers started at 350wpm and increased by more than 800% to 2900wpm. Or, to put it another way, it was 10x more effective to concentrate on a strength than to try to improve a weakness.

May 21, 2004 spout

Another Killer App for Web Services

Another Killer App for Web Services

Friday, May 21, 2004

At the last Applied XML Dev.Conf., I went ga-ga over Amazon’s use of web services in their business and called it the killer app for web services.” Now I’d like to revise my statement: it think that it’s one of the killer apps for web services.

Here’s another one: exposing the functionality of all of those internal corporate services apps that are now exposed as web sites as web services instead.

May 19, 2004 spout

“No coding question unanswered for < 24 hours”

Here.

After the official question was discussed for a good long time — “What more can MSDN do for developers?” — I asked this follow-up question in 3 parts:

May 16, 2004 spout

3 Years of Spouting

Here.

The one where I reminisce on 3 years of The Sells Spout and my blog as a whole and wonder what it is that brings so many people to the site.

May 16, 2004 spout

3 Years of Spouting

May 15, 2004 spout

BBC Coupling: I Laughed ’til I Cried

The American version left me completely cold, but Melissa and I have just watched the 1st season of the original BBC series Coupling and I actually laughed several times til I cried. In fact, there was one phrase that I tried to repeat to my wife because it struck me so hard, but I literally couldn’t say it without losing my ability to speak (btw, the pride of my ear bucket” is the phrase and I’m typing it through the tears).

May 14, 2004 spout

The Advice of Our Fathers

Here.

The one where peanut butter and jelly remind me of my father.

May 14, 2004 spout

The Advice of Our Fathers

Being a Midwesterner, my father is a fairly stoic man and, unlike his son, doesn’t often speak just to hear the sound of his own voice. Still, I’ve managed to pick up a few gems over the years that my own sons are now forced to hear often, like If something is worth doing, it’s worth doing well,” It’s the hard things that are worth doing,” and It’s easy to figure out the right thing to do – it’s the hardest” (do you detect the Midwest work ethic in any of these sayings? : ).

When I was having trouble with a pair of 6th graders (I was a 3rd grader), he said, Don’t start a fight, but make sure that you end it” (that was hard to implement…).

When I went off to college, he said, Don’t go to bed drunk” (I always regret it when I ignore this piece of advise…).

May 12, 2004 spout

Your Should Be Using an RSS Reader for Everything!

Ryan Farley posted today that he agreed with Josh Ledgard who said that you should use an RSS Reader for readings blogs instead of surfing to web pages. Josh finds that when he does this, it focuses him on the interesting posts and doesn’t waste his time reading stuff just cuz it comes from someone that interests you sometimes.

So, RSS Reader: good. Surfing to blogs via a web browser: bad. Duh! : )

May 8, 2004 spout

“Down-to-Earth Marketing”

In a recent post, Brendan Tompkins describes one of my recent Channel9 videos as down-to-earth marketing.” On the one hand, I find that ironic, as that particular video is me talking about the chaos that is MS culture and wondering how we get anything done at all, so if that makes you want to come then you belong here, Brendan. : )

On the other hand, at MSDN we realize that we’re all in marketing. In fact, any individial or organization whose job it is to talk with customers is in marketing. The particular brand of marketing we use at MSDN is not marketing,” i.e. we package up the most technical, straight-forward information we can and get it into the hands of developers so that they can be successful using our platforms. Of course, the desired result is that more developers build most stuff on our platforms that causes more folks to purchase our platforms, which is why it’s a marketing function.

April 29, 2004 spout

“The Great Windows 95 Trade-In Program”

Oh man, Richard Childress nailed it.

We should let people walk into their nearest Comp-U-Buy with their copy of any flavor of Win9x and give them a copy of Windows XP SP2 for free. And, if they happen to need a beefier computer to run XP, and they trade in a copy of Win9x at the time, we should take the cost of the OS off the price of the computer.

April 29, 2004 spout writing

Safe, Even Simpler Multithreading in Windows Forms

Mike Weinhardt adds a 4th installment to my series on threading in Windows Forms by illustrating the BackgroundWorker component from Windows Forms 2.0. I have to admit that after I saw this component, I felt very silly for not wrapping my own code up in this form. Thank goodness for .the Windows Forms 2.0 team. : )
April 29, 2004 spout

You Clever IM People Are Driving Me Nuts!

What is the deal with people like Iristyle, josefiend, Mongo, Moribund the Burgermeister and the cheers component? These are the IM names of my friends” that are currently online in IM. I mean, come on! How the hell am I supposed to find Ethan, Joesephine, Scott, Shawn and Betsy if they hide behind these names?!?

At least Iristyle and josefiend stay the same so that I can learn them, but Mongo, Moribund and cheers are merely temporary based on the quickly changing whims of the people on the other end of the line. I mean, I’m as much in favor of personal expression as the next guy, but not if it stops me from the chief component of the app they’re using, e.g. finding them and actually talking to them!

April 26, 2004 spout writing

Marc Clifton is a Prolific SOB

I first heard about Marc Clifton on his work with MyXaml, a declarative UI language that shares a name and some principles with the XAML declarative language in Longhorn, but that works on .NET now. Until today, I had missed his earlier work on this subject: The Application Automation Layer: Introduction And Design, along with the rest of his 51 articles on CodeProject.com (wow).

I’ve never met Marc, but I’d sure like to. He seems like an interesting guy, both because of his work and because of this statement in his CodeProject bio: Having no formal education in software development, he feels exceptionally qualified to inflict his opinions on the community at large regarding how programming should be done.” Now that’s the kind of attitude I like!

April 26, 2004 spout

Chris Sells on Organized Chaos

The one where I express my surprise that we ever manage to ship anything at all, let alone the best stuff there is.

April 25, 2004 spout

Post/Reply Alphabet Soup

April 24, 2004 spout

Freeing My Mind

April 24, 2004 spout

Freeing My Mind

Saturday, April 24, 2004

I’m a sucker for new experiences. It’s not that I believe that you only go around once,” because I don’t believe that. I believe that our job on this plane of existence is to raise our level of consciousness to the next level and that our souls are recycled from life to life on this plane til we’re ready for the next. So, I figure that anything I don’t get to do in this life, I can do in the next.

And yet, I’m still a sucker for new experiences. In any given 10 years, most folks get 1 year of experience 10 times, but I think I’ve done pretty well at squeezing quite a bit out of my last 10 years. And I hope to continue to do that. For example, this year my wife and I will be attending Burning Man. We’d never been, but a couple of my friends from MSDN are helping us find our footing at what promises to be a very unique experience indeed.

April 21, 2004 spout writing

What’s New in Windows Forms 2.0

Mike and I write our first cut and what’s new and cool in Windows Forms 2.0 in this month’s MSDN
April 16, 2004 spout

The X in XP Stands for “Wow”

I had coffee with Arlo Belshee today. He’s done years of successful XP
April 14, 2004 spout

More On The Quest To Kill Code

April 14, 2004 spout

More On The Quest To Kill Code

Wednesday, April 14, 2004

You’re remember the last installment in my continued quest to find the next big leap in program producing productivity (the last two were OO and managed environments), where I thought I had it all figured out with generic algorithms. All we need is a sophisticated enough environment and wham self-writing, self-maintaining, self-debugging algorithms baby. However, after this evening’s Portland Nerd Dinner (you didn’t pass up a chance to meet Ward Cunningham, did you?), I’m thinking there’s one step in the middle (at least : ).

So, picture the scene. After hearing about a guy that has a fob” on which he has to enter a password to get a 6-digit number that changes every 60 seconds to that he could log into his company’s VPN, declaring that that’s what happens when you let Keith Brown run the world (I love you, man : ), and describing the CSSM (the Chris Sells Security Model — which I can not only implement under .NET, but actually apply to code [maybe I’ll start a workspace…]), I turned to Ward and asked him the same question that I had asked the group from the last PND, i.e. “What’s the next big leap away in development?”, being careful not to give him my thinking from last time.

April 10, 2004 spout writing

I’m Loving the .NET Fx ARM

Here.

The one where I learn a bunch of interesting stuff reading all of the annotations from The .NET Framework Standard Library Annotated Reference in one sitting.

April 10, 2004 spout

I’m Loving the .NET Fx ARM

Saturday, April 10, 2004

I enjoyed the annotations in The .NET Framework Standard Library Annotated Reference so much that I read them all in one sitting (in the bathtub, if you must know…). The annotations are where the authors put in their 2 cents about a particular class, method or property and it was very interesting. Here’s what I learned just from that part of the book:

  • You shouldn’t use ApplicationException for custom exceptions. Derive from Exception instead.
     
  • Because ICloneable.Clone doesn’t define whether it returns a deep or a shallow copy, it’s practically worthless.
     
  • Prefer UTF-8 because it takes up the same amount of space to represent ASCII characters as ASCII, but can also represent all Unicode characters (I knew that UTF-8 took up the same amount of space but hadn’t yet jumped to prefer”).
     
  • I was reminded of the System.Convert class, which does all of the same conversions that the various type-specific ToXxx and Parse methods do, but puts them all in one place.
     
  • There’s another use for the private interface method implementation syntax in C#:
    class Enum : IEnumerator {
      object IEnumerator.Current { get { return this.foo; } }
      ...
    }
    This syntax hides an interface method from general use unless you cast to the interface base class:
    Enum enum = new Enum();
    object obj1 = enum.Current(); // compile-time error
    object obj2 = (IEnumerator)enum.Current(); // this works

    The thing I never thought of that this enables is that it lets you override based on return type, which isn’t normally allowed in C#:
    class Enum : IEnumerator {
      object IEnumerator.Current { get { return this.foo; }
    Foo Current { get { return this.foo; } } ... }

    This private method implementation syntax lets you return the generic type as part of the interface implementation so that you can plug into standard idioms, e.g. foreach, but a more specific type for users of the type directly, saving the cast:

    Enum enum2 = new Enum();
    Foo foo1 = (Foo)((IEnumerator)enum.Current());
    Foo foo2 = enum.Current(); // no cast required
    This will be less interesting as generics take over, but still, it’s a useful trick.
     
  • DateTime is always assumed to represent local time, so if you convert to Universal time twice, you’ll change the value each time.
     
  • Since it’s possible to cast any number to an enum value, e.g. TrueFalseEnum tfe = (TrueFalseEnum)42, make sure to always check that an enum is a legal value. Theoretically this is a pain, but in practice, I tend to check enum values with switch statements, making the default case the error case, so it’s good to know that my code does the right thing.
     
  • The Threading.Interlocked class.
     
  • Jim Miller has way more birthdays than we do. : )
     
  • Jeff Richter agrees with me that the ThreadStart delegate needs an object parameter.
     
  • I should be using CompareInfo instead of ToLower for case-insensitive comparisons (although they don’t show how):
    using System.Globalization;
    using System.Threading;
    ...
    CompareInfo compare = Thread.CurrentThread.CurrentCulture.CompareInfo;
    if( compare.Compare("foo", "FOO", CompareOptions.IgnoreCase) == 0 ) {
    Console.WriteLine("the same"); }
April 6, 2004 spout

Filling in Missing Computer Science Knowledge

April 6, 2004 spout

Filling In Missing Computer Science Knowledge

Tuesday, April 6, 2004

Sometimes I get emails from folks that don’t have a formal computer science knowledge and want the benefits of one w/o actually going back to college. Since I was disappointed in my own formal education (despite going on to better” my BS in Computer Science with an MS), I can understand this desire.

My first thought was the MIT Open Courseware, which has a full course of computer science curriculum. However, while the course material is all there, unless there are officially sanctioned forums for each course, there’s really no place to ask questions even of fellow students.

April 4, 2004 spout

Welcome to 04/04/04

That is all.
April 3, 2004 spout

The Future Is eBay for Services

Here.

With the bottom line more and more important, the era of company loyalty” and guaranteed employment” is long over. RentACoder.com takes this to it’s logical conclusion, matching vendors with jobs and money with qualified folks with the time and willingness to do the job at the asking price. As connectedness improves, the importance of being on site declines, the perfect market for services will develop, giving us eBay for employment.

April 1, 2004 spout

Let There By Light In The Darkness

Here. The one where it’s late, I’m on my 3rd Diet Coke (I never use caffine), I stumble onto a piece of writing I like but have never published and decide what the hell
April 1, 2004 spout

Tune into .NET Rocks Live Tomorrow, 9am PST

On tomorrow’s .NET Rocks Live, Rory and I will be interviewing Tony Bain
April 1, 2004 spout

Let There Be Light In The Darkness

Thursday, April 1, 2004

I wrote this at the beginning of 2002 while channeling my energies into the Windows Forms book. I never published it, but I liked it (and I’m in writer avoidance mode as day #2 past my due date rolls by), so I thought I’d share it:

The Dark Ages, a period of five centuries beginning in 5 AD, marked a time of intellectual darkness and barbarity. A ruling feudal class kept a firm grip on their over-worked peasants in small enclaves eking out a meager living from the soil. Only lonely, isolated monks were able to record knowledge using primitive tools to painstakingly inscribing it into hand-crafted volumes, each unique and each unavailable to their fellow man. Only pilgrims and adventures, willing to endure long journeys and brave many hardships, had the chance of obtaining this secret knowledge. Finally, the Renaissance, brought on by the spread of knowledge in approachable formats using inventions like the printing press, was able to rejuvenate a weary world and bring about a period of intellectual growth and achievement that continues to this day (interrupted only briefly by the Reagan years).
March 30, 2004 spout

Buy My Comic Book Collection

Here.

I’ve had 2600 comic books bagged and boxed in my garage since I’ve had a garage. These are comics that I collected as a kid and had always planned on turning into Benjamins. However, when doing a massive do-it-yourself Clean Sweep on my entire house, I figured it was time. But I couldn’t sell them to a local comic shop, as they can only give me a tiny fraction of their worth, so I immediately thought about eBay. And that’s why the comics have been sitting in my garage for so long. The mere thought of cataloging, assessing, photoing and posting all 2600, even in reasonable groups, was way more work than I was willing to do. And so they sat.

March 28, 2004 spout

Fun Meeting with a Longhorn UX Guy Last Week

Here.

He said, Do you think we should support RSS in Longhorn?”

March 26, 2004 spout

Time-Shifting Radio?

I was reading Paul Vick, who agrees with Carl Franklin
March 25, 2004 spout

Checking Spec. Compliance at Build Time

March 25, 2004 spout

What Every Conference Room Should Be Like

I want all of the MS conference rooms to be like this one
March 25, 2004 spout

Checking Spec. Compliance at Build Time

Checking Spec. Compliance at Build Time

Thursday, March 25th, 2004

Even though Ward Cunningham and I have been living only 4 miles away from each other for some years, I really didn’t know that he lived in in the same state til he sold his soul hired on at Microsoft. Since then, we’ve been meeting at a local Starbucks on a regular basis to shoot the shit in a very DevelopMentor/Tektronix-like way, i.e. ramble on about whatever til we hit on something fun to try. In one of those meetings, we were talking about requirements for a web services API that I’m working on and he took us off on what I thought was a tangent, but turn out to be very cool.

Before Ward set me straight, I thought that Test-Driven Development (TDD) was when I built a little console app to test my APIs. I routinely do this before I write an API so that I can imagine what I wish I had to program against without being encumbered with an existing implementation. Then, I run my console app(s) afterwards for testing and regression testing, but only sporadically. I knew that NAnt let me run these tests into my build process, but since I’m a VS.NET guy and I haven’t done the NAnt/VS.NET integration work that I know I should do, I haven’t done as much with this as I knew I should be. Plus, as it was only me, it didn’t seem like such a big deal.

March 23, 2004 spout

The Next Big Leap in “Programming”

Tonights Portland Nerd Dinner was a barn-burner. Not only did we have the typical geek banter and laughter, but we spend some time on the question I posed the other day about what should replace character stream-based programming.

The problem is that all of the hand-crafting of solutions doesn’t scale. The answer was posed by a fellow nerd who, who pointed out that we’ve already got a model for self-organizing, self-evolving, self-maintaining systems: biology. God didn’t hand code humans and zebras and platypi — he defined a class and instance encoding method (DNA) and an environment to serve as the runtime (Earth) and let us interact with and improve ourselves and our environment over time to solve the problem. What’s the problem? What species survives best on this planet. So far, we’re the winners, but we’ll see what happens at the next ice age or when the next asteroid hits.

March 20, 2004 spout

Programming Stinks

As much as I love writing code, I realized long ago that it’s really the act of bending my computer to my will that I really love. Programming’s just the only way to really do that. After a few decades, you’d have thought we’d have come up with something better. Our industry’s pioneers agree that programming is holding us back, but don’t really know what we’ll use to replace it. Ideas?

March 19, 2004 spout

Review: Hell House

NetFlix brought Hell House” to my house the other day and I just finished watching it (in fact, the credits are still rolling).

Hell House is the name of a specific kind of haunted house” exhibit that some churches run every year at Halloween. This movie is a documentary of the church that originated the practice and is in it’s 10th year, having had 75,000 guests over that period. The hook is that the church puts on little mini-plays showing real-life horrors, e.g. domestic abuse, rape, murder, drunk driving, abortion and, sin-of-sins, homosexuality (which doesn’t hurt anyone, of course, but gets them on the news every year).

March 19, 2004 spout

Have Some of WinFS Today

I have absolutely fallen in love with X1. I don’t search my email, attachments or file system anymore; I just type a few character into filter fields until the results have narrowed enough to show me what I was looking for. This is but a small part of what WinFS is going to enabled and it already saves me hours/month. Highly recommended.
March 18, 2004 spout

Quick Review of 4 California Theme Parks

Just flew in from California… and boy are my arms tired!

We did 4 California theme parks in 4 days and here’s what I thought:

March 11, 2004 spout

Avoid the GAC

Thursday, March 11th, 2004

The .NET Global Assembly Cache (GAC) is a misunderstood and misused beast. For all intents and purposes, it provides what COM and windows\system32 do, i.e. a machine-wide place to drop shared DLLs. Of course, the problems with sharing DLLs in a machine-wide spot is that it leads to a set of well-known problems collectively called DLL Hell.” There are many problems, but the biggest is that when a shared DLL is updated, you’re really updating an unknown set of applications. If the set of applications is unknown, how can you possible test them before making this change? And if you can’t test them, you’re likely to break them. What this boils down to is that any of the shared spots for updates, whether it’s a COM CLSID, windows\system32 or the GAC, are dangerous and should be avoided. And this is why the preferred .NET deployment scenario is xcopy deployment,” i.e. having your own private copy of each DLL that you test and deploy with the rest of your application.

Aha!” you say. “The GAC supports multiple version of an assembly! When a foo.dll is updated to v1.1, v1.0 sits right along side of it so that your app *doesn’t* break!” Of course, that’s absolutely true. But if that’s the case, why do you care? I mean, if there’s a new assembly available but your app isn’t picking it up, what difference does it make?

March 10, 2004 spout writing

WinForms Programming in C# 3rd Printing Ships

Here.

I find it unbelievable that after umpteen books, I finally seem to have blended quality with quantity as the C# version of my WinForms book enters it’s 3rd printing after only 8 months in publication. Wahoo!

March 9, 2004 spout

Study: We’re Eating Ourselves to Death

Here. Ouch. I resemble that remark
March 8, 2004 spout

Putting the Fun Back In Programming

I know that I’m no longer untainted because I work in the big house, but I just don’t get this. Do developers really want to build the same thing over and over, project to project, app to app or do they want to spend their time building cool, new stuff? Is .NET
March 2, 2004 spout

Living Two Lives

Here.

I would say that I’m really living two lives. The first is what you see and today it’s very boring as I’m sitting very still looking at a 14″ LCD panel all day long making almost no noise. When my family comes home, that’ll be more outwardly interesting, but it skips the entire reality of what I’m doing while I live that second life inside the machine.

February 29, 2004 spout writing

Suggestions for WinForms Programming 2/e

Here.

My co-author for the 2nd edition of Windows Forms Programming, Michael Weinhardt, doesn’t have enough to do to with the new features in Whidbey or all of the stuff that I wished that I added to the 1st edition but didn’t. No, he wants more, so he asked me to ask you nice folks what you’d like to see.

February 26, 2004 spout

Same-Sex Marriages *Should* Be Allowed

Being from the Midwest (and big and dumb-looking besides), most folks assume I’m a homophobic. As it turns out, I’ve known a few homosexuals in my life, but not very many. Or rather, I suspect that I know a lot more of them then I recognize, but I never think about it. I never think about it because it doesn’t matter.

Real love is rare enough that people should be able to love and live and *marry* whoever the hell they want to and I resent a government that thinks that they get to decide who’s love counts and who’s love doesn’t count (although I do support parents being able to decide whether their minor children should be able to marry).

February 24, 2004 spout

Of Mixed Career Minds

Here. The one where Microsoft’s up-coming Mid-Year Discussion and a late night IM
February 24, 2004 spout

Of Mixed Career Minds

Tuesday, February 24th, 2004

Don and I have an ongoing debate — whether everyone was put on this planet for one purpose or whether a person gets to choose their path. This all started back in the middle of the bubble where we thought that we were so smart that we could take our success in training and turn our minds to anything we chose. We thought we could be anything, but used to talk most about politics (and Don even promised to get me elected as mayor of Beaverton) and religion (I’d like to get in on the ground floor of one of those free love” cults : ).

Of course, the bubble burst, giving of us perspective on just what part of the success was us and what part was the go-go economy. Now, most of us that used to have those conversations work at Microsoft as a place to keep doing fun work without traveling to globe trying to keep up our old standards of living. These days Don talks about all of us having a specific place in the world and that he’s pretty darn sure that he’s found his (and you should see the guy; he’s in there, fighting for what he thinks is best for the platform and building quite an impressive reputation base to extend his influence wider and wider). He’s also of a firm mind that I’ve found my place and that I should be a s/w guy of some kind for the rest of my life.

February 22, 2004 spout writing

Adding Ref-Counting to Rotor

Here.

Well, I can’t put it off any longer. I wanted to wait til Chris Tavares and I were able to figure out what the problem was, but after months of help from the Compuware guys using a complementary hunk of their latest and greatest profiling software, we’re no closer to finding out what causes the massive slow-down in compiling Rotor when we add our ref-counting implementation to it. The problem, of course, is that if we can’t figure out what the problem is, we can’t optimize our implementation to fix it.

February 5, 2004 spout

Severe Beating Shown, CBS Shocked/FCC Investigates

Or rather, that’s the headline I wish I could post. However, instead of CBS and the FCC getting freaked out about the insane amount of severe violence on TV, available to our children any time of the day or night, they’re worried about 3 seconds of breast. Idiots.

February 1, 2004 spout

On Behalf of Software Engineers, I’m Sorry

Here. The one where an hour of phone support with my step-mom causes me to feel embarrassed about what we put normal humans through to use our software.
February 1, 2004 spout

On Behalf of Software Engineers, I’m Sorry

Sunday, February 1st, 2004

I just got off the phone with my step-mother and boy are my arms tired. She way trying to do a mail merge. I told her about a month ago put data into an Excel spreadsheet in a data-like format (and I sent her an example spreadsheet to start from). Then, after entering the data into her spreadsheet, I recommended to her that she choose Mail Merge from the Tools menu in Word and she’d be home free.

Of course, she wasn’t. For example, after choosing her Excel spreadsheet, she was asked if she wanted to use first name, Sheet1$, Sheet2$ or Sheet3$ as her data. Having zero idea what SheetN$ was, she chose something vaguely human-sounding, which was exactly what she didn’t want, then was frustrated when her data didn’t come up. Later, after going away to buy hundreds of dollars worth of books (none of them telling her how to do Mail Merge using words that she could understand, btw), she opened up her document and was presented with a dialog box asking whether it was OK to run an SQL statement. What’s SQL?” she asked. Nothing that any normal human should ever have to see,” I replied, growing more embarrassed about the state of the output of my industry by the minute.

January 31, 2004 spout

What Would You Save If Your House Was On Fire?

Here. The one where I spend a peaceful Saturday morning contemplating my life’s possessions.
January 31, 2004 spout

What Would You Save If Your House Was On Fire?

What Would You Save If Your House Was On Fire?

Saturday, January 31, 2004

On a recent thread on my favorite mailing list ever, Jon Kale answers the question what would you save if your house was on fire,” which triggered my own thoughts along this line.

Assuming I’ve already made sure that the humans and the pets were out of the house, I’d make sure to grab my Omega X-33 (purchased during the bubble, of course), but since I go almost nowhere without it, it’s not likely to be burned up w/o its owner.

Also assuming I had a set of back-up CDs/DVDs for the last year in my safety deposit box (which I don’t have right now… please excuse the pause while I purchase a DVD burner… OK, $155 got me a top-reviewed DVD+R/DVD+RW drive with 30 blank DVD+RW disks delivered), the thing I would most miss is my book collection. The computer books could be replaced on demand, but my collection of just-for-fun books has literally taken a lifetime to collect and cull down to just things that I really love (click on the picture to get a closer look).

January 30, 2004 spout

MS Blogging About Longhorn 14% of the Time

Here. Just following up again on When In Doubt, Ignore Longhorn
January 30, 2004 spout

Betting on Longhorn-Only?

Here. The one where I address some specifics about what amout of effort you should be putting into Longhorn right now.
January 30, 2004 spout

Betting on Longhorn-Only?

Friday, January 30th, 2004

In response to my post yesterday (When In Doubt, Ignore Longhorn), Shaun asked whether he should be targeting Longhorn-only right now:

[ed: the following has been edited to remove identifying remarks at Shaun’s request]

Thanks for all the great posts and community participation over the past year. Your recent ‘Ignore Longhorn’ post alarmed me a bit. I hope that was not born from some aspect of it being pushed past 2006.

Anyway, I know you are busy, so I will get to the point. We are mid-sized, established s/w company, and a Microsoft shop to the core (SQL Server, Analysis Services, VB, we embed VBA etc…). I am facing a huge decision regarding building our next gen app architecture. We need to ship in 1H 2006, and (IMO) we need to target rich and reach, so Longhorn is on my list of possible directions along with some ASP.NET 2.0 / ClickOnce combination.

I am enjoying working with Longhorn (XAML in particular), but I’m having a hard time shaking the feeling that I am taking too much of a gamble if I go Longhorn-Only, but some of the aspects are just so compelling. On the other hand, I’d hate to make a huge 2-3 year dev investment in ASP.NET only to ship something in 2006 that is not revolutionary/differentiated. I firmly believe our existing 3 million lines of solid COM code has plenty of life in it too.

Any insight or advice you might have would be greatly appreciated. I know it is probably difficult without understanding our company or market, but maybe some general advice to someone who is targeting a 2006 release. I guess my other worry surrounds the Longhorn adoption rate, but obviously none of us can predict that!

January 29, 2004 spout

When In Doubt, Ignore Longhorn

Here.

The one where I list my favorite sources of information for development with today’s shipping .NET Framework.

January 29, 2004 spout

When In Doubt, Ignore Longhorn

Thursday, January 29th, 2004

A guy walks into an exotic car dealer and asks the salesman the price of the fancy new Ferrari in the corner. The salesman looks at him with a sad look on his face, shakes his head and says, I’m afraid, sir, that if you have to ask, you won’t be able to afford it.”

If you’re wondering whether you should be paying attention to the information on Longhorn that has appeared on the web and in the news lately, then you shouldn’t be. Longhorn RTM is years away. This is the most lead time we’ve given on any Windows operating system ever. The reason we did it was so that we could get super early adopters to give us meaningful feedback while we still had enough of the development cycle left to make meaningful changes. If you’re not a super early adopter, than Longhorn is just going to be noise that you should ignore til the beta hits.

January 15, 2004 spout

Bush: Get Your Own Dream!

Here.

It bugs me that Bush would steal JFKs dream of getting off of our planet, especially after we’ve already done it. Why not reach for getting America off of foreign oil by developing alternative energy sources, freeing us from the need to screw around with other countries and making us targets for terrorism? That’s a cool dream. But noooo, you can’t do that one, because you’re just a shill for US big oil!

January 9, 2004 spout

Surprised by Microsoft’s Openness

Here. The one where even I’m surprised at how open Microsoft is willing to be.
January 9, 2004 spout

Surprised by Microsoft’s Openness

Friday, January 9th, 2004

I get a lot of emails from folks surprised about how open Microsoft is being lately, mostly due to all of the blogging we’ve been doing lately (some of us started long before we ever became employees). However, even I was surprised in an internal blogging meeting today filled with a bunch of MS bloggers. During the meeting, we talked about a bunch of the benefits to MS and to our customers. Sara talked about how blogs are driving more traffic to MSDN than our own headlines. Robert described his green, yellow, red” scale for determining whether to blog about something (believe it or not, he does decide not to sometimes : ).

And then Adam Sohn from marketing talked about the need to police ourselves, describing some of the downsides in regards to blowing some group’s launch plans or unconstructively criticizing another group. He preached caution when approaching the line between what was good for the customer and what was good for Microsoft. After listening to what I began to interpret as a message of self-censorship, I asked Adam a warm up, Isn’t it true that a lot of the stuff close to the line’ is what our customers find most valuable?” He agreed that it was. And then I asked Adam my real question, So, when we get close to that line, do we err on the side of our customer or ourselves?”

January 3, 2004 spout

On Genghis, WinForms and How to Move Towards Avalon

Saturday, January 3rd, 2004

Inspired by my pending interview of Don Box, Paolo Severini sent along an interview for me.

Paul: Being a faithful reader of your books, articles and of your blog, I’d like to ask you a few questions about LH, Avalon and the future of WinForms. Before all, let me say that I’m really fascinated by Longhorn, and especially by Avalon. I installed the PDC stuff as soon as I received it through my MSDN subscription and I’ve begun exploring it with pure geek” enthusiasm. Everything is extremely interesting, but I’m now not sure what to do with it.

December 24, 2003 spout

Lending a Helping Hand

Here. Normally I wouldn’t pass along something like this, but this is from my uncle and therefore genuine. If you can lend a hand to his brother
December 23, 2003 spout

Lending a Helping Hand

I know this sounds like spam, but it’s not — it’s from my Uncle Mark, who’s also my godfather and the nicest man I’ve even known:

Chris, I’m writing you to ask your help. My brother Tom was gravely ill. Tom is 55 years old, married with two grown sons. He needed both a liver and a kidney transplant. He just received his transplants. It was by the grace of God just in time as he was within 2 to 3 days of death. He is doing well with no signs of rejection and just some minor complications. Unfortunately, he is nearly bankrupt from all his medical bills. Tom’s life has been marked by several challenges, many overcome through hard work and determination. He is a man of immense spirit and we all love him dearly. This is a challenge he can’t face alone. As you can imagine, our family is very concerned. We pray a lot. We have also undertaken a benefit and raffles for him to help him with his expenses. Right now we’re just trying to help him pay his mortgage and put food on his table. He hasn’t been able to work for three months. He also faces a tremendous bill from the transplant that his health insurance won’t pay.

There are five courses of action I’d like you to consider. First of course is I’d appreciate your prayers for my brother Tom that he continue to recover his health and his finances. The next four things I am asking for is your support of our raffles and benefit.

I would like you to consider purchasing a ticket for what we call the Big Money Raffle”. There will be a limit of 110 tickets sold. First prize is $2000. Second prize is $1250. Third prize is $750. There will be an additional ten $100 winners. Odds of winning some prize are 13 in 110. 3 in 110 chance of bettering your bet. 1 in 110 of winning the top prize. Tickets cost $135 apiece. Much better odds than the lottery. Drawing 1/11/04.

Also available are Quilt tickets at $1 apiece. My sister made the Queen size quilt. Value is somewhere between $1000 and $1500. Drawing 1/11/04.

The third thing I’d like you to consider is if you know anyone among your connections in the computer world who might also like the opportunity to purchase Big Money” and Quilt” raffle tickets. I know you know a lot of people and some of them might be generous of spirit and/or gamblers. I think this time of year people yearn to be of help and service but aren’t often sure what they can do. This is one such opportunity.

The fourth thing I’d like you to consider is helping with the benefit dinner. It will be January 11th. There will be a silent auction. I thought with your connections at Microsoft you might be able to get them to donate something for the silent auction like some software or ?. Mr. Gates has such a wonderful legacy of philanthropy and I’m hoping that may reach down the organization for individuals in need.

Thank you Chris for your consideration. If all you can offer is your prayers I will understand and greatly appreciate them. If you or anyone you pass this on to wish to purchase tickets, checks can be made out to TOM NEEDHAM LIVER TRANSPLANT FUND. Anyone wishing more details can contact me, Mark Needham at 952-226-1769 or e-mail me at emkayen@aol.com. I will be happy to fill out the tickets and return the stubs to them. The information needed is name, address & phone number for both the Big Money and Quilt raffles. The Minnesota lawful gambling exempt permit # is X-34753-04-001.

While I don’t know my uncle’s brother (his part of the family never really mixed with mine for some reason), because it’s important to my uncle, I’ll be purchasing one of each of the two kinds of raffle tickets, publicizing my uncle’s plea on my web site, investigating Microsoft’s matching for charity and, of course, sending my prayers. If any of you is interested in participating in the raffles, let Mark know directly. If you wanted to publicize this on your own web sites or donate something for the silent auction, let Mark know about that, too. Of course, all prayers are warming accepted.

November 30, 2003 spout

Learning to Learn, Part II

Tony R. Kuphaldt, an instructor at Bellingham Technical College in Washington recently emailed me that my Learning to Learn piece spoke to him and pointed me to his web site where he provides a wonderful look at his own experiences in self-teaching. In this paper, Tony describes his insights, starting with an amazing look into my own previous field of employ:

Industry training, at least in its popular form, is roughly based on the model of a fire hydrant: sit in front of it, open the valve, and take a big drink. Due to time limitations, trainers present information at a rapid pace, with participants retaining only a fraction of what they see and hear. What knowledge they do gain seldom passes on to co-workers after the training session, and is forgotten almost as rapidly as it is presented, necessitating continual re-training. … [Students] often leave with the impression of the instructor being something of a genius for being able to present so much information so quickly, and instilling within their own minds a sense of inferiority for not grasping all of it at the delivered pace.”
Further, Tony describes the technique I use to really learn something:
November 29, 2003 spout

The Wonder that is XAML’s Extended Attribute Syntax

The Wonder that is XAML’s Extended Attribute Syntax

Saturday, November 29, 2003

I’ve been playing with GridPanel today and really like how elegant it is. If I say the following:

November 24, 2003 spout

I don’t know UIs, but I know what I like…

I don’t know UIs, but I know what I like…

Monday, November 24, 2003

The user in me sees Longhorn and dreams of software without limits. The engineer in me sees Longhorn and is scared of software without limits. An engineer’s days are defined by requirements and restrictions. Those restrictions come not only from the capabilities of the tools and technologies being bolted together, but also accepted practice. For years, I’ve been comfortable designing rich” client applications because a) my tools and technologies haven’t let me do much that was really rich” and b) because rich” was pre-defined by existing applications.

In fact, when I started programming Windows 3.1, I adopted a single 3-step UI design process:

November 15, 2003 spout

My First Meeting with BillGs Technical Advisor

Here. The one where I meet BillG’s Technical Advisor and am charmed into volunteering for more work.
November 15, 2003 spout

My First Meeting with BillG’s Technical Advisor

Saturday, November 15, 2003

In my continuing quest to take advantage of unique experiences at Microsoft for those that aren’t able to, I spent an hour in a meeting with Bill Gates’s Technical Advisor, Alexander Gounares, earlier this week. Among other things, Alex is responsible for getting answers when Bill asks questions like Hey, what are we doing about adding air conditioning to Windows?”

I’ve had meetings with senior execs at MS before and I always end up saying stuff that upsets them. This time, the guy was so nice, I just wanted to nod my head and do whatever he asked of me. In fact, the thing I volunteered to work on (a vision” whitepaper exploring a new application of technology that’s still under development) wasn’t so much that he asked me to do it, but rather because he asked for a volunteer and made eye contact with me in such a heart-warming way that I couldn’t say no. (Of course, my boss kicking me under the table didn’t hurt, either… : )

November 3, 2003 spout

Time For An Exciting Career In Electronics

Here. The one where blogs and RSS
November 3, 2003 spout

In Search of Expertise

Here. The one where I finally figure out that membership in a profession does not imply expertise in that profession. For those of you saying
November 3, 2003 spout

Time For An Exciting Career In Electronics

Monday, November 3, 2003

Depending on how you look at it, what I’m best at in the whole world has either become completely unnecessary or incredibly easy. The skill that I spent most of the last 10 years learning was to look at a group of types, APIs, reference docs, headers, source code, etc., distill it down to a set of architectural intentions and then to weave a story through the whole thing to make sense of it for developers that weren’t able to glean the intensions themselves (most often because they had real jobs). I call this exhaustive search for intention officially at an end. I’m no longer needed except as a gatherer for those not yet facile in RSS aggregators (which, luckily for me, is still a large number : ).

Blogs like Chris’s, Scott’s and Raymond’s go way beyond the what” that docs and web sites and even mailing lists/newsgroups/web forums have typically stuck with and gone right into the “why.” And not only that, but Chris is actually taking that next step on his blog. In the old days, before my favorite technology company became so damn open, if I wanted to comment on something, I had to painstakingly track down the right people at Microsoft, make friends with them (which first demanded that I learn social skills) and then convince them that someone outside of MS might actually have something intelligent and useful to say. This often involved years of stalking softies in mailing lists and conference halls and now Chris is letting anyone give him feedback to which he actually listens!

November 3, 2003 spout

In Search of Expertise

I had an interesting insight while watching Episode II: Attack of the Clones (I had a hankering to see Yoda kick some butt, OK?!?). The definition of expert is someone that just does whatever it is they do; they don’t think about it. Everyone else is just learning. What drove this home for me was when Anakin heard of his mother being taken and how everyone else had failed or died looking for her, Anakin started out after her without any planning whatsoever. *That’s* an expert. Of course, he had The Force and the rest of us have to live with an average amount of midichlorian, but he’d done what I’ve seen other experts do, too: unconscious competence.

The reason that this is such an insight for me is that for my entire life, I’ve always felt that there were special people in the world that just know what they’re doing. These people worked in companies or were members of a profession and by their association with those organizations, I felt that they must be experts. I mean, how could someone be a member of professional for any length of time and not strive for mastery of the professional? It was watching Anakin that it finally sunk in that mere association is not enough; most organizations, no matter how high their standards, do not stop non-experts at the door. Experts are the ones inside the organizations that rise to the top, that stand out, that set examples for other members. Expertise is the thing that separates a moderately smart person studying up on a topic for a while from someone that really understands something down to their bones. This is what separates me catching up to my financial advisor after 6 months of study from a *real* money manager. That’s what separates a new computer science graduate from me.

That’s not to say that I couldn’t be better than some real” money managers one day or that the new college grad couldn’t be better then me on day one. What it does say, however, is that encountering a true expert is a rare thing. Because of that rarity, I believe that most reasonably intelligent people can, with study and practice, get good at practically anything that they set their mind to. This means that I can, with a reasonable amount of study and practice, check the work of my financial advisor or my accountant or a plumbing contractor and come up with things that they don’t. I know that this is true because I’ve done it (not with the plumbing though, I’m practically clueless there : ). The amount of study I needed to catch up with my professional service provider doesn’t make me an expert, of course, because it’s highly unlikely that either of them is an expert.

November 3, 2003 spout

My First PDC as a Microsoftie

After all the preparation, planning and sheer work, it’s a letdown for the PDC to actually be over. It was an amazing experience for me to be back stage” at a PDC, the only conference I’d spent my own money on for years (although as a speaker, they let me in gratis this year : ).

Things I Heard:

As a Microsoft employee, my job is to listen and take feedback home. Here’s what I heard:

  • Longhorn, Avalon/XAML, Indigo, WinFS, ClickOnce: good
  • Improvements in VS.NET and ASP.NET: good
  • Indigo and ClickOnce on existing versions of Windows: good
  • Avalon not available on existing versions of Windows: not so good
    (Avalon changes things all the way to the device driver level, so retrofitting it to existing versions of Windows is impractical)
  • Not being able to download the PDC Longhorn and VS.NET Whidbey bits: not so good
    (MSDN subscribers can request the CDs to be sent to them)
  • Developers that didn’t go to the PDC and don’t have MSDN subscriptions not getting PDC bits: not so good
    (the public beta in the summer of 2004 will open this up considerably)
  • The Longhorn Developer Center features and content: good
    (whew : )
  • Having all kinds of Microsofties at the PDC and on the newsgroups and mailing lists to answer questions and take feedback: good
  • Publicly contributed annotations on the Longhorn SDK content: good
  • Longhorn bits running under Virtual PC: good
  • Longhorn bits amazingly functional and stable: good
  • Longhorn bits not especially speedy: not so good
    (these are the earliest OS bits we’ve ever given to folks — Longhorn will have years to improve in this and every other regard)
  • Availability of PDC network, both wired and wireless: not so good
    (don’t know why this happened)
  • Stacking up outside the rooms of overflowing sessions: not so good
    (although MS attendees were very good about giving up their seats to paying customers)
  • Microsoft’s commitment to pushing managed code so far into the OS: good
  • Lots of folks interested in contributing to the Longhorn developer community: good
    (if you’re planning something, please let me know)
October 23, 2003 spout writing

MSDN Wants You

Here. Want to write for MSDN
October 20, 2003 spout writing

ASP Alliance reviews WinForms Programming in C#

Here. I don’t know why an ASP
October 20, 2003 spout writing

Every Vain Author’s Best Friend

Here. Rory built me an RSS
October 15, 2003 spout

How Does One Obtain Inside Information?

Here. The one where I list the steps I use to figure out stuff that isn’t documented.
October 15, 2003 spout

How Does One Obtain “Inside” Information?

Wednesday, October 15, 2003

I got an email today from John Reilly today asking me a question I get from time to time:

I got my signed copy of your book. It is a great read. You have information that a friend and I have been trying to dig out for weeks.

Which leads me to our question. How do you find out all those details? They are not to be found in the MSDN documentation, as far as we can tell. Do you just experiment, like we do? We have been unable to find any .NET training that is much more than how to use the IDE. Alan and I crave detail, meat, the stuff of your book. Seriously, how does one obtain this seemingly inside information? We are personally and professionally motivated weenies.

October 10, 2003 spout writing

Amazon giving 30% off WinForms Programming in C#

Here. I think those Amazon guys knew I was talking about them…
October 9, 2003 spout

What Is An RSS Feed?

Here. The one where I describe RSS
October 9, 2003 spout writing

Nice WinForms Reviews in the Blogesphere

Here. I’ve noticed that lots of folks have nice things to say about
October 9, 2003 spout

What Is An RSS Feed?

As a deadline nears and I spend an increasing amount of time avoiding the work I should be doing, I find a finance geek acquaintance of mine asking what an RSS feed is after I implored him to add one to his web site. This is a 20-year old that’s owned stock since he was 11, read 12,000 company reports in 2002, earned 155% on his money is the last 11 months and recently been given his own $35M mutual fund to manage (becoming the youngest ever mutual fund manager). If this guy doesn’t know what an RSS feed is, then I’m guessing at least some of my readers don’t know either (yes, I’m talking to you, Mom). When he asked me what an RSS feed was, this is what I told him:

An RSS feed is a thing of pure beauty. If you’ve ever been to a web site with an orange XML or RSS button, clicking it will yield a page that looks something like this:

xml version=“1.0” ?>
October 3, 2003 spout

My 9-Year Old Has a Cell Phone

Friday, October 3, 2003

Tonight is Friday night, which means the Sells family generally has pizza and a movie at home. However, since we’ve been through most of Blockbuster’s catalog and the boys aren’t quite old enough for most of my DVD collection (9 is a tad young for things like Fight Club…), we thought we’d take in the new Jack Black movie School of Rock. Kids-in-Mind.com gives it a 3.3.3, heavy on the poop jokes (which my sons like) and heavy on the irreverence (which I like), so it seemed like a winner. However, as most movies start between 7-7:30pm and I just noticed it was 6:30p but Melissa wasn’t home with the boys, I started the calling. First was her cell, but I remember her telling me it was out of batteries. Then it was her sister’s house, where she had been, but she had left for a friend’s. Then the friend, but no answer. And then I remembered my son and his cell phone.

My son is 9 years old. He’s been into computers and gadgets of all kinds since before he was 3. A few months ago, he was digging around and found my old Nokia cell phone. It had some cool games, so he charged it up and started carrying it around with him. Then, he wanted minutes so he could make his own calls. So we finally found our way to the local AT&T wireless place (which wasn’t really very local at all) and he spent his allowance money on pre-paid minutes ($10 for 20 minutes). After less than a week, he was down to 8 minutes left. He’s most just calling his friends from our car (where I have my cell in my pocket w/o unlimited monthly minutes) or from our house (where we don’t have long distance, but we do still have a land line), but it’s his phone and his money and it gives him pleasure.

September 29, 2003 spout writing

Creating Doc-Centric Apps in WinForms, part 1 of 3

Here. This 3-part series really belonged as a chapter in my WinForms book, but after doubling the estimated size of the book (not to mention the amount of time it was supposed to take to write it), my publisher was anxious for me to stop writing. For those folks accustomed to the document management support in MFC
September 29, 2003 spout writing

A *royalty* check from Pearson!

Here. Whoa. I just got a royalty check from Pearson today. Right now, it lists my advance for the WinForms book (which may turn into positive money some day), but also includes money from ATL
September 28, 2003 spout

Men Extinct Soon — Only 125K Years Left

Here. As well as women would do without us, it’s clear to me that the two sexes have evolved as a pair, although whether that’ll be enough to make saving us worth the trouble, I don’t know. For example, my wife may well decide to replace me with a footstool to reach things on the high shelves and call it good. : ) [boingboing.net]
September 13, 2003 spout

Google is Scary Smart, or Just Scary…

Here. The one where Google is enormously useful and enormously scary at the same time.
September 13, 2003 spout

Google is Scary Smart, or Just Scary…

Saturday, September 13, 2003

When I was a kid, the source of universal knowledge at home was the set of dusty encyclopedias that my Mom inherited from somewhere. Today, it’s the Internet, via Google. That in itself makes Google the fulfillment of most sci-fi novels’ description of the the-store-of-all-human knowledge (I wish the text of all books were up, but that’ll happen in time…).

Anyway, it didn’t hit me just how comprehensive Google was til I typed in “Joe Grammer” wife’ yesterday (I was calling and wanted to be prepared to address his very nice wife by name in case she answered the phone). In 0.39 seconds, Google gave 45 results, the 3rd of which contained Joe’s wife’s name! It was Joe himself who’d mentioned his wife’s name in a mailing list post but still, that’s pretty damn scary…

September 12, 2003 spout writing

“Move over Petzold, Sells is here.”

Here. I’m sure it won’t last, but the WinForms book has broken 1000 (908) and has an average 5-star rating with three reviews, saying very nice things like: “This book rocks! … All chapters are brilliant.” “The localisation and resource usage in the managed world are clearly described and you won’t lose hours trying to access resources in your code anymore!” “I stayed up all last night reading Chris’ new book… I enjoyed every single page.” And, of course, the quote that makes my life complete: “Move over Petzold, Sells is here.”
September 12, 2003 spout

Respect for Marketing

Here. The one where I take a look at all of the things that the typical marketing guys has to balance and thank goodness I just get to think about developers. : )
September 12, 2003 spout

Respect for Marketing

Even in my short time at Microsoft so far, I’ve have already learned a *ton* from marketing. Of course, I’m working with lots of marketing folks as we get closer to the PDC. Because of my role, I have to worry about what’s good for the developer. Marketing guys, on the other hand, have to balance that with what’s good for the administrator, what’s good for the user, what’s good for the company, what’s good for the shareholders and what’s good for a bunch of other folks I don’t even know about. And, they have to do it for all of the streams of information coming out of the company, which now includes lots of informal streams like newsgroups, message boards, user group talks and blogs. Anyone that can balance all of these folks and still get developers what they need has my unabashed respect.

September 11, 2003 spout

Let us pause on 9/11…

My 8-year old was proud to remind me that today was the two-year anniversary of 9/11. I was surprised that he knew and grateful to his school for taking the time to discuss it. He then went on to tell me how cool he thought the explosions were, which left me less pleased with his school. When I told him about my own experiences that day and how many people died, it immediately took all of the coolness” right out of the day for him.

George Bullock, a colleague at MS who’s birthday happens to fall on 9/11, has also had the “coolness” taken out of the day for him and sent around a mail that starts this way:

Let us pause on 9/11 to remember and honor the thousands killed, maimed, put out of work, and traumatized two years ago; also to honor the heroic, living and dead, who rose to the occasion on that terrible day. May God rest their souls and keep and protect their loved ones. May God also keep and protect our men and women serving here and abroad. Yes, there is much difference of opinion about what’s happening in the world today; nevertheless, I think we all support the men and women of our armed forces and wish them a safe return home. They sacrifice a lot to serve their country.”

Personally, I try very hard not to let the terrorists get to me. Unfortunately, they have. Even time I get the anal probe treatment at the airport or a personal freedom is taken away by the Patriot Act or my sister-in-law is afraid to fly (and flat out refuses to fly on that day), they win. More subtly, ever time a US politician uses terrorism” to push their own agenda, they also win. Please don’t let them win. Have courage. Try to understand what it was that drove them to terrorism to attract our attention. Compare their lives to ours. But don’t let them win. Don’t let them take the right to the pursuit of happiness out of our lives.

September 5, 2003 spout

“Your enquiries frustrate the hell out of me”

Friday, September 5, 2003

I would classify my style of communication as get to conflict sooner rather than later.” A radio DJ once classified engineering abilities as a series of personality flaws that are accidentally useful in today’s IT industry and, arguably, he’s right. For most folks that have to work with me, it’s generally hard at first, but eventually you either love me or hate me (and I continuously work to tip that percentage towards the former : ).

However, it’s the rare individual that can see past someone’s personal communications style and still pull out the value. Alan Cooper is one such person. I was reading one of his books and was so lost that I called and blamed him and his parents. He straightened me out by letting politely me know that he book wasn’t even trying to solve my problems and therefore it’s not surprising that it didn’t. Further, he ended his email like this:

September 2, 2003 spout writing

Holy Cow!

Here. Apparently my book has sold out on BookPool.com already. Cool…
September 2, 2003 spout writing

Windows Forms Programming in C# Sample Chapter

Here. AW
September 2, 2003 spout writing

977!

Here. According to JungleScan.com, Windows Forms Programming in C# has been as well as 977. That’s as well as any of my books in the last year (except Essential .NET
September 2, 2003 spout writing

Book of the Week at ASPExperts.com

Here. I don’t know why ASPExperts.com would designate a WinForms book as
September 1, 2003 spout

Communication Is All

Here. The one where I realize that my sister-in-law is smarter than me (shh… don’t tell…).
September 1, 2003 spout

Communication Is All

It’s amazing to me the  number of problems that can be solved or avoided completely with communication. For example, the prevailing attitude of the day is that children should not be let out of an adult’s sight, in spite of an all-time low in the history of violent crime. Towards that end, and since tomorrow is the first day of school, my oldest boy is currently testing the range of our walkie-talkies to see if he and his younger brother can walk to school. The reason? Because I can communicate with him to know that they got to school OK. I need that communication so that I can continue to be paranoid while still letting him walk the half-mile to school.

Here’s another example: Recently at work there was a minor fracas when group A published their planned work based on group B’s input aka *implicit* buy-in, but without group B’s *explicit* buy-in. This made group B unhappy, because they felt that their input wasn’t been taken (even though it was). The solution? Group A set up a regular meeting to communicate on their various projects with group B, making sure to get everyone’s buy-in explicitly.

Here’s another one: My co-author on the VB version of my WinForms book has been working like a dog on his new job and his new baby and the VB port of my book. However, since most of his communications were with the publishing company directly, I didn’t see most of the work that he was doing and, because of our tight schedule, that caused me to worry that we wouldn’t make it. The solution? I asked him about it and he told me of the pile of work he’d done that I didn’t know about. He also volunteered to make sure to cc me on all of his email related to the book.

August 29, 2003 spout

re: The real goals of marketing?

Here. Sometimes I write something on my spout and it gets a ton of comments on my little homegrown message board (built by The .NET
August 29, 2003 spout writing

Windows Forms Programming in C# on Shelves

Here. My WinForms book for C# programmers should be on the shelves today. I’ve set up the site where you can download the source and report problems. The VB.NET version should be out at the PDC
August 26, 2003 spout

The Man Behind the Motion

Here. What This Is Spinal Tap does for rock
August 25, 2003 spout

Novel Approach to CodeGen

Here. This code generator keeps the template right there with the generated source code. Pretty cool!
August 25, 2003 spout

Perl 6 Essentials. Chapter 1: Project Overview

Here. ORA
August 25, 2003 spout

Another Link In the Chain

Here. The BBC
August 25, 2003 spout

RSS Bandit Implements wfw:commentRss

Here. Dare released a new version of RSS
August 23, 2003 spout

In defense of continued innovation at MS

Here. After watching several people complain about the lack of innovation at MS
August 21, 2003 spout

The .NET Show: Managed Code

Here.
August 21, 2003 spout writing

VS.NET 2003 + Mastering VS.NET

Here. Buy VS.NET 2003 on Amazon.com and get a special deal on Mastering Visual Studio .NET
August 19, 2003 spout

Buffering .NET Console Output

Doing some ad hoc benchmarks, I found that my compute/IO intensive program was significantly slower in .NET than in native C++ (here’s a more rigorous test showing the same thing). However, when the IO was taken out (Console.Write), the test showed that the computation in .NET and in native C++ was nearly the same (with C++ still having a slight edge).

My .NET IO code looked like this:

static void OutputIt(int[] vect) {
  for (int i = 0; i < vect.Length; ++i) {
    if( i > 0 ) Console.Write(”,“);
    Console.Write(vect[i]);
  }
  Console.WriteLine();
}

August 15, 2003 spout

The real goals of marketing?

I’ve long lamented that I have no clue what the basics of marketing are and therefore I’ve been at the mercy of actual marketing people whose skill I can’t judge. In fact, I so miss this important knowledge in my life that I interviewed for a marketing job at Microsoft (although I was in no danger of getting it). A *long* time friend of mine, Dave Stroble, said that I was too “customer-focused” to be in marketing, anyway, and I should be glad I’m not in that field. When I asked how that could be (isn’t customer focus the core of marketing?), he went on to say the following:

Marketing is not about giving the customer what he wants, or even finding out what the customer wants and trying to get engineering to create it. It’s about trying to sell the customer what you already have — whether that’s product, talent, or pre-conceived notions. If the needs of a customer occasionally overlap with an actual product, that’s merely random coincidence.

“Marketing people are customer-focused in the sense of always thinking about why customers aren’t buying enough stuff, and how to get them to buy more. You’re customer-focused in the sense of caring about what customers need, and helping them accomplish it, even if that doesn’t result in selling anything.

But don’t take it so hard. It’s not as if I said you were too honest to be a banker, or too smart to be a teacher. (God, what if girls thought you were too handsome to be sexy?)”

While I find this cleverly stated (even though I’m nowhere near too sexy for girls : ), I sure hope this isn’t the real goal of marketing. My hope is that it’s about taking a solution and letting folks that have the matching problem know so that you can trade your solution for their money and both consider yourselves lucky. Is this a naive view? Anyone with real marketing training want to chime in on the real goals of marketing?

August 12, 2003 spout

I’m no hero

Tuesday, August 12, 2003

In yesterday’s post, I did not mean to imply that I was some kind of internal David against the MS Goliath. I am in the majority of employees when I say that I want to keep in mind what’s best for the customer. The only issues, really, are what is best for the customer and how can those needs be met within the limits of our resources. We do spend quite a bit of time arguing over those, however. : )

August 11, 2003 spout

I speak for the trees

After a few weeks at Microsoft, when I was feeling particularly frazzled with my work and travel schedule, Peter Drayton pulled me aside to reinforce what I’d heard before: the first 6 months at MS suck for everyone; after that, you either hate it forever or you can’t ever imagine working anywhere else. At that point in my budding MS career, I was leaning towards the former. Peter, having been there, said that he’d gotten a piece of advice that had seen him through.

The advice was simple: have an agenda. The idea is, no matter what projects you work on, no matter what groups you go to, no matter what tasks you’re into that day, to have an underlying agenda that pushes you forward and drives your decisions. Businesses call such a thing a vision statement.” Authors call it a story.” Whatever you call it, it’s always helpful to have one and here’s mine:

“Remember what it’s like to not work at Microsoft.”
August 3, 2003 spout

No huggy, no kissy, until I get an RSS feed

Here. The one where I stoop to using a country song to make my point.
August 3, 2003 spout

No huggy, no kissy, until I get an RSS feed

Before RSS took over, I had a folder named Daily” which had links to all of the URLs that I surfed to on a daily basis. One problem was that for the sites that changed daily, it was a pain to decide what was new. An even bigger problem was the ones that didn’t change daily. Eventually, the pain of surfing to them daily was outweighed by the pleasure I would get when those sites were finally updated. A bunch of my friends’ infrequently updated blogs fall into this category (you know who you are : ).

Sure, RSS is useful to track Scoble as he shirks his moving duties, but even more useful to track Tim when he eventually does update his blog. With RSS, I don’t have to experience any pain surfing to Tim’s blog day after day. Instead, I let SharpReader poll Tim’s blog and when it’s finally updated, I’ll know about it. All gain; no pain.

What that means, unfortunately, is that I only read blogs with RSS feeds, because I’ve long ago gotten out of the habit of surfing my Daily” folder. So when Josh Trupin (editor of MSDN Magazine) gave his reasons for being out of the office on Monday, he had to send me an email with a link to the description of his horrific train injury detailed on his blog. As fun a writer as Josh is, I won’t go back (unless Google brings me there) til he’s got an RSS feed. I’ve been hurt before; now I’m older and wiser and require an RSS feed before I’m willing to wed myself to a blog.

August 3, 2003 spout

Positive Affirmation

I woke up at Don’s house one day last week utterly convinced that I was going to win the lottery that day. It was 6:30a, which is early for me, but I had an 8a meeting (*very* early for Microsofties), so I had set the alarm. Tim, who was also staying at Don’s that week and with whom I was sharing a room (separate beds : ) was on Eastern time, so had already accidently woken me at 6a that morning on his way to the door (it’s not his fault; I’m too long for the bed and it’s a tight squeeze to get past me when I’m I’m in it). I must’ve had some strong dream between 6a and 6:30a as I lay there in and out of sleep.

The premonition was so strong that I recalled the epilog from one of the first non-comic Dilbert books in which Scott Adams talked about his belief that there were multiple parallel universi and that by process of positive affirmations, he’d moved his consciousness into one that had attained great success in spite of his abysmal drawing abilities (this was before his TV series was canceled).

So, all morning, in classic positive affirmation style, I had I will win the lottery today” running through my head. It swamped all other thoughts, except those of whether I wanted the annual payment or the lump sum ($25M or $13M, respectively) and how I was going to spend the money.

July 28, 2003 spout

My First .NET Show

In many ways, my list of My First” articles lately have been written out of duty to all of the developers that have always wanted to work at Microsoft, but haven’t yet been able to. I first applied for a job @ MS as a summer intern in 1988. I was turned down while another guy down the hall of my fraternity was accepted. He spent all summer building LCD panels into one giant screen and I spent all summer writing FoxPro code. I wonder if he still works here. I can’t for the life of me remember his name. David something…

Anyway, every time some new, fun, cool opportunity comes up, I feel like I have to take it just so that I can share it with the folks that don’t yet work here (seems like they’re hiring everyone, though, so it shouldn’t be much longer : ). This time, I got to be in an episode of the .NET Show. I was to be 15 minutes of code demo after Brad Abrams and Anders Hejlsberg reminded folks that .NET wasn’t just about web services. There were all kinds of folks that Robert had on tap to give the demo, but they were all busy, so eventually they got to the last monkey in the barrel and had to settle for me. : )

I flew up this morning and had to call MS information: Hi, I’m a Microsoft employee, but I’m new. Can you tell me where to go to get the MS Studios?” This in spite of the fact that I’d been there less than two weeks before! (I’m terrible at remembering anything that doesn’t have a lot of parenthesis and braces in it). They showed me to Green Room #2, where they had some food waiting, just like I was a real “talent”. Maybe the food was really for Brad and Anders. Maybe the food was for Nick Hodapp, Project Manager for Visual C++, who was in the makeup chair when I arrived. Nick was there to remind people that MS is serious about C++ both in the native and managed spaces and to show off the port of Quake II to managed C++.

July 23, 2003 spout

Windows XP Remote Assistance Rocks!

I just had a Windows Moment.” I was on the phone with my Dad who has Windows XP and was having trouble. Since he paid for my computer science degree, he assumes that I’ll be his tech support. In fact, everyone in my family assumes I’ll be their tech support; it’s annoying as hell! I don’t know how support folks diagnose and fix problems over the phone all day long. More than 5 minutes and I’m ready to say, How much was that computer science degree, Dad? I’ll write you a check.”

Anyway, after trying it for about 20 minutes (and failing), I asked him if he had the Remote Desktop settings on his My Computer->Remote tab, thinking that I could use terminal services to solve his problem. Of course, since he was running XP Home, he didn’t, but he did have Remote Assistance. So we tried it. And even though he’s in the back woods outside of Fargo, ND and on dial-up (isn’t this a commercial for Windows XP?), he was able to email me a request for remote assistance (Start->Help->Ask for assistance->Invite a friend to connect to your computer with Remote Assistance) and I was able to connect to his computer (through my firewall!) and solve his problem (half of Office 97 was installed on C: and half on D: and wasn’t happy about it at all).

Wow. That’s a feature that made my life better.

July 23, 2003 spout

Using GotDotNet Workspaces For Commercial Work

Wednesday, July 23, 2003

When I visit Redmond, I share an office with Andy Oakley, the PM for GotDotNet Workspaces. Workspaces was recently released from beta to v1.0 and when that happened, Andy sent around feedback from users.

Of course, folks love it in general (even some hard-to-please MS internals), but I was surprised to see to some folks were using private Workspaces for their team’s main source code base. I shouldn’t have been surprised; this makes a lot of sense. Private workspaces provide a protected space for file sharing, discussion, bug tracking and source code control. The last time I set up a commercial software development team, I needed weeks to get all of this picked out, installed and working and I needed an IT guy to keep it running and backed up. I remember hearing about a 3rd party that was going to bundle all of this together for a fee, but never got around to it. With Workspaces, MS already provides the whole team development environment, including VS.NET integration and a web interface, and it’s free! Plus, with a private workspace, only folks on your team get access.

July 22, 2003 spout

My $5 Digital Music Experiment

I *really* want to own my digital songs, so I’ve been dying for a real site to purchase them one at a time, instead of buying entire albums I don’t want or ripping the songs off of the albums I do own. Towards that end, I was excited about BuyMusic.com and immediately spend $4.95 on five Avril songs. Overall, it was not a happy experience.

What I love about BuyMusic.com is the site:

  • The web site is very usable and full-featured, making finding, listening to and ordering artists, songs and albums easy
  • The price is right: $.99/song and $9.49/album
  • I really wanted to immediately find the web service so that I could write a program to go through my wife’s bootleg mp3s and purchase them
July 17, 2003 spout

My First Visit to MS Studios

I went with Erica Wiechers (.NET Show heart throb) to visit MS Studios today. Ostensively we were there to preview the Applied XML Developer Conference videos, some of which Erica will be turned into MSDN TV episodes. However, as long as we were there, Bob Snyder gave us the nickel tour.

The front entry was even more secure than the normal MS buildings, being encased in wire fencing and not yielding to my badge (we had to be let in from the inside). Once in, it was a big building with lots of open space and fun decorations. I got to see several blueprints of famous imaginary places, e.g. the spaceship from Lost in Space, the Addams Family house and the island from Gilligan’s Island. I got to see the two green rooms where talent” gets ready in the full locker rooms, then relaxes on the coach til it’s their turn (although neither room is green). I got to see all of the studios, including standing on one of BillG’s markers, seeing the set where he interviewed with Larry King and the other set where he recorded his antitrust testimony. I also got to see the set for the .NET Show, which looks like the inside of half of a giant bowl, so that they can blend in custom backgrounds, both physical and logical. I go to see all kinds of cool a/v routing and mixing equipment, putting my one little PC attached to my home theater system seem so pathetic in comparison. I even got to see some live footage of Steve Ballmer that they were filming that day (man, he gets excited when he speaks : ).

In general, I’ve been getting to see and do a lot of cool stuff here at MS. Recommended.

July 14, 2003 spout

Alan Cooper’s Has A Dream

In addition to bending my head back during my flight lesson, Alan Cooper always manages to bend my brain back, too. Here’s a guy that invented drag-n-drop UI development umpteen years ago and he’s been in the business ever since, mostly doing interaction design, but lately trying to tackle the problem of software management. His main thesis is that web designers are called programmers, programmers are called engineers, engineers are called architects and architects are never called.” He justifies this statement by comparing architecture to real-world architecture, which is very different from what the IT industry has co-opted the term mean.

For example, in the world of physical buildings, an architect meets with the clients to understand their needs and listens to their ideas. He then designs a building via a series of increasingly specific sessions with the clients to understand what they need and with engineers to understand what can be done. He uses these interactions to produce blueprints to hand off to the engineer. The engineer decides how to build the building, e.g. what materials to use, what to build or buy, what labor is needed, etc. Before we had mass-produced parts and giant spec books describing every material under the sun, this often required experimentation, which would also feed into the production of a more detailed set of plans to hand off to the construction workers, who do the actual building of the structure. While the structure is built, the engineer and the architect checks in to make sure that things are meeting their requirements and, in fact, it’s the engineer’s job to sign off when it does. Likewise, there are inspectors that check to make sure things are up to code at certain phases of the project.

In the world of software, we’ve got inspectors, they’re called QA staff. We’ve got construction workers, they’re called programmers. We’ve got engineers, they’re called software engineers, even though we have yet to decide what being a software engineer” means (often it’s just another fancy word for “programmer”). We sometimes have architects, but we tend to rely on the combination of engineering and usability folks, most often skipping the usability and most of the contact with the customer altogether.

July 13, 2003 spout

My First Flight Lesson

Normally a title like My First Flight Lesson” would be a metaphor for something else because I’m generally much more engaged by mental pursuits than physical ones. However, in this case it’s literal; Alan Cooper (the Father of VB) gave me a lesson in his plane (a Piper 6-seater).

Tim Ewald and his wife were staying at my house after the Dev.Conf., so Tim and I and the Sells brothers went to the local little airport to pick Alan up when he flew for an Saturday afternoon lark. When we got there, Alan invited us up for a sight-seeing trip. I volunteered to sit in the back with the brothers, giving Tim the front seat, but Alan insisted that I sit up front in the co-pilot’s seat, clearly having something in mind.

After we took off and Alan took us out of PDX airspace at around 2400 feet, he told me to take the yoke because he was turning off the autopilot. After that, he took me through part of a real lesson, including playing with the flaps via the pedals at my feet, banking, trimming, descending, leveling off after a descend and in general, crapping my pants. Flying a plane was not what I expected to do that day, let alone so close to the ground with non-trivial winds and thick cloud cover. Not one do we have plenty of bumps and *sideways* motion to make mere riding a harrowing experience, but I had my boys and Tim in the back with their lives in my hands in the front. I find the sensation beyond my feeble powers of description, but it was fabulous and terrifying and emproudening all at the same time. And at least I had control. All Tim in the back got was the terrifying part!

July 11, 2003 spout

The Killer App for Web Services

After watching Amazon’s amazing presentation at the Dev.Conf., it hit me that Amazon.com is the killer app for web services. Not only are they technically cool, but they have two business models for themselves and their associates built right in:

  1. I can build a business on their back-end data, selling targeted stuff to my customers, using their services to do all the hard stuff on the back end
  2. I can use their front-end to sell my own products

Amazon has turned the infrastructure on which they build their own business into a major revenue generator for not only themselves, but for associates. And, if they wanted to take it further, Amazon could provide all of their payment, distribution and storing/querying data as web services for things that weren’t even available for sale on Amazon.com, e.g. medical supplies or porn, removing the need to build all of these services yourself. In fact, they’re already planning on doing this for payment services.

July 7, 2003 spout

My First Press Contact @ MS

Today I spoke with Todd Bishop, a reporter from the Seattle Post-Intelligencer (“the Seattle PI). He was interested in my spout entries about my initial experiences with Microsoft, specifically the BillG ThinkWeek stuff. He called last week, but I didn’t call him back right away. Instead, I asked my grandboss (my boss was out on vacation) what I should do. I remember during NEO that MS has very clear instructions about when to talk to the press, i.e. never. Of course, some folks at MS talk with the press, but unless it’s specifically part of your job, you’re supposed to refer the press to other folks more trained in the ways of the wily reporter trying to get the dirt on MS.

So, when Todd called and I hadn’t yet made my millions on MS stock options (any day now… : ), I thought I’d ask around first before making any career limiting moves. That was early last week. It wasn’t til today that I got the approval to give the interview. In fact, I’m pretty the MS marketing guy checking on what Todd was up to had a longer conversation than I did. Here’s pretty much the entire conversation (paraphrased from imperfect human memory):

Todd: Thanks for getting back to me, Chris. I’m glad you went though official channels. That tends to make things go easier.”

I thought that was strange. If I was a reporter, I’d want to track down the defenseless MS employee when they were least expecting it. That’s what I figured Todd was up to when he called my direct MS line w/o any introductions. Luckily, I work from home in PDX. Bwa ha ha ha ha!

Chris: No problem, Todd. Sorry it took so long to get back to you. They were clear my first day at MS not to talk to the press unless explicitly instructed and I’m new.”

Todd: Did you get the list of things I’m after? I’ve already written the story; I just want to check some facts.”

Oh sure, I thought. This is Todd buttering Chris like toast…

Chris: Yes. What can I tell you?”

Todd: You spell your last name S-E-L-L-S?”

Chris: Yes.”

Todd: What’s your position at Microsoft?”

Chris: detailed explanation of MSDN, DevCenters (including their need in the world) and how I’m doing the Longhorn DevCenter.

Todd: Can I just say you’re an MSDN Content Strategist?”

Chris: Sure.”

So now the reporter’s got me giving him more info than he actually wants. I’m in trouble…

Todd: And your blog is http://www.sellsbrothers.com/spout?”

Chris: long explanation about how I organize my site, how the Spout is just the editorial section and that I announce everything from all sections on my home page.

Todd: Oh. So your blog is just http://www.sellsbrothers.com. I’ll correct that. Thanks. That’s all I need.”

Chris: Really? I expected to be grilled.”

Todd: Well, you’re lucky you waited. If you’d have called last week, I’d have really hammered you.”

July 4, 2003 spout

Alvio — a very cool place to order computers

Craig [1] (via Brad) found Alvio, a really cool place to order computers online. My favorite is the page that lets me configure a barebones P4 system from scratch [2] and then they assembly it, test it and guarantee it for a year. The thing that I like most about Dell is how easy it is to configure computers online. To be able to configure one from the ground up w/o any OSes et al is *way* cool. [1] http://staff.develop.com/candera/weblog2/permalink.aspx/9090a88d-dd58-4310-bb33-85cdc0b121b6 [2] http://www.alvio.com/smoreinfo.asp?iid=941
June 23, 2003 spout

The Danger of Good Debate Skills

I have been in technical arguments many times where I knew I was right and used every once of my debate skills to convince the other person of their terrible wrongness. This can go four ways:

  1. I’m right and they eventually agree
  2. I’m wrong and I turn to their point of view
  3. They get worn down and stop listening
  4. I’m wrong, but they fail to convince me

Being right is fun, of course, as is finding someone that’s willing to change your mind (lots of folks don’t like to argue). Wearing a person down is no fun at all, but by far the worst is that I’m wrong and I stay wrong. Unfortunately, as a professional communicator for the better part of a decade, #4 is a real possibility and it’s something to really watch out for. Being right is easy. Recognizing that I’m wrong is easy when I’m arguing with someone with good communications skills. Recognizing that I’m wrong when the person I’m arguing with isn’t quite up to the task, that’s hard to detect and fix.

June 22, 2003 spout

Learning to Learn

Sun, June 22, 2003

The most important thing that I’ve every learned is how to learn. I and a few other lucky souls gained this knowledge at the tutelage of one of my mentors, Don Box, during my tenure at DevelopMentor. Not only did I have an amazing thinker to learn from, but I had a enormously difficult topic to learn on: COM.

When I started learning COM in the early ’90s, only a few souls inside of MS really knew it. The only real book in the world on COM at the time was inscrutable and no one with the necessary communication skills and the time to teach COM had yet grokked it fully. Don had written a five-day short course entitled Essential OLE, but only given it a few times, so hadn’t really gotten over the hump (as evidenced by the title of the course). It was my job to become the second instructor on COM at DM.

June 20, 2003 spout

Naming My Feed

Fri, June 20, 2003

When I built the Windows Developer News feed on my home page, it was an attempt to build a Windows equivalent of SlashDot. Unfortunately, I’m not interested in keeping up on all the news in the Windows developer space and the few folks that have stepped up to post on this site are largely spammers (although not all of them). Also, in my own feed subscriptions, I find that the ones I’m most fond of are from individuals, not groups. Plus, my grandboss recently put a fine point on it, I hate the name of your feed. That’s not what it is.“

So, I’ve moved this feed to be just stuff from me. The problem was, I didn’t know what to call it. In addition to posting links to stuff I produce, e.g. tools, writings, editorial, etc., my site’s feed is really about the things that I find interesting and my personal insights, so I need a name that reflects that. Also, I’m a big fan of puns, alliteration and double meanings (the logo has *3* meanings), so a name with those elements was important.

As always, when I’m faced with something like this, I turn to the community, specifically my own readers, who seem to have an unhealthy desire to participate in things like this. When I asked them for their input, I was overwhelmed with more the number of responses; and good ones, too (it probably helped that I was giving away a free seat at the Applied XML Developer’s Conference [July 10th — register now!] to the one I picked)! Here’re some of the best that I didn’t pick:

June 18, 2003 spout

End-To-End RSS + Comments

My RSS 2.0 feed exposes end-to-end support for the comments specifications I’m aware of:

  • The RSS 2.0 element to expose a link for a browser-based UI to view/add comments
  • The extension element to expose the number of comments current made on an item
  • The extension element to expose the URL endpoint for posting comments via the CommentAPI
  • The extension element to expose the RSS endpoint for consuming the comments of an RSS item.

Several other folks are working on producing and/or consuming the extension as well, including Joe, Sam, Scott, JamesS and Kevin. JamesD posted instructions on how to do it with MoveableType. Hopefully Dare, Luke and Nick will follow suit.

June 16, 2003 spout

Releasing Nested Objects in Rotor

Chris Tavares is making more progress finishing up the Ref-Counting in Rotor project:

class FinalizerObj {
  int n;

  public FinalizerObj( int n ) {
    this.n = n;
    Console.WriteLine(“Created Finalizer object {0}”, n);
  }
 
  ~FinalizerObj() {
    Console.WriteLine(“Finalizing finalizer object {0}”, n);
  }
}
 
class FinalizerContainingObj {
  FinalizerObj subObj1;
  int n;
  FinalizerObj subObj2;
 
  public FinalizerContainingObj( int n ) {
    this.n = n;
    subObj1 = new FinalizerObj(n * 100);
    subObj2 = new FinalizerObj((n * 100) + 1);
    Console.WriteLine(“Creating containing object {0}”, n);
  }
 
  ~FinalizerContainingObj( ) {
    Console.WriteLine(“Finalizing finalizer containing obj {0}”, n);
  }
}
 
class TestApp {
  static void Main() {
    for( int i = 0; i < 5; ++i ) LeakAnObj(i);
  }
 
  static void LeakAnObj(int i) {
    FinalizerContainingObj obj = new FinalizerContainingObj(i);
  }
}

Running this app under our ref-counted Rotor yields the following output:

June 12, 2003 spout

Exposing RSS Comments

UPDATE: Since publication, this recommendation has been incorporated into many RSS feeds. You can read the semi-official docs for the wfw:commentsRss element on rssboard.org.

So far, comments have gotten a lot of play in the RSS space:

June 11, 2003 spout writing

.NET Rocks Interview — Chris Sells (Again!)

Here.
June 5, 2003 spout

Ref-Counting + Rotor Status

I just got this email from Chris Tavares (who’s doing the lion’s share of the implementation work to add ref-counting to Rotor):

using System;
class FinalizerObj {
  int n;

  public FinalizerObj(int n) {
    this.n = n;
    Console.WriteLine(“Created Finalizer object {0}”, n);
  }

  ~FinalizerObj() {
    Console.WriteLine(“Finalizing finalizer object {0}”, n);
  }
}

class TestApp {
  public static void Main() {
    for( int i = 0; i < 5; ++i ) LeakAnObj(i);
  }

  static void LeakAnObj( int i ) {
    FinalizerObj obj = new FinalizerObj(i);
  }
}

Under the desktop CLR, I get this:

C:\Home\Chris\Projects\Rotor\src\tests>FinalizerTest
Created Finalizer object 0
Created Finalizer object 1
Created Finalizer object 2
Created Finalizer object 3
Created Finalizer object 4
Finalizing finalizer object 4
Finalizing finalizer object 0
Finalizing finalizer object 3
Finalizing finalizer object 2
Finalizing finalizer object 1
But when I run under Rotor, now I get this:
C:\Home\Chris\Projects\Rotor\src\tests>clix FinalizerTest.exe
Created Finalizer object 0
Finalizing finalizer object 0
Created Finalizer object 1
Finalizing finalizer object 1
Created Finalizer object 2
Finalizing finalizer object 2
Created Finalizer object 3
Finalizing finalizer object 3
Created Finalizer object 4
Finalizing finalizer object 4
Finalizing finalizer object 4
Finalizing finalizer object 0
Finalizing finalizer object 3
Finalizing finalizer object 2
Finalizing finalizer object 1

I obviously still need to figure out how to pull the object off the finalization queue, but that will have to wait until tomorrow night.

Even though they’re being called by us and by the GC, this is the first time we’ve been able to get finalizers working. Wahoo!

June 4, 2003 spout

My First API Review

Wed, June 4, 2003

Maybe you’re getting tired of my posting my firsts” at MS, but that’s the beauty of this medium. I get to say what I feel like and you get to listen or not, as you choose. Mostly this Dear Diary” format helps me to digest the world around me. Many times, the writing itself has helped me to clear my head. If you haven’t tried it yourself, I recommend it.

So, on with my next first.” Today I crashed an API review. I happen to be on a few internal Longhorn mailing lists and recently got an announcement of a new API that was going up for its first review. I didn’t know what to expect, but I hoped at least to see some familiar faces and to introduce myself around.

June 3, 2003 spout

Submitting to Billg’s ThinkWeek

As has been mentioned out in the world, every once in a while Billg takes time to back away from whatever he’s working on to think big thoughts. Employees are allowed to influence those thoughts by sending in papers about whatever they want. I heard about this a few days before the deadline and, as I had an idea for something, I wrote up a quick treatment. In spite of the odds against me, I couldn’t let such an opportunity pass by w/o even trying!

I sent my short piece around internally and, because of it’s length (I only had time to put together 2.5 pages), I expected to get all kinds of feedback of the lack of depth. Surprisingly, I only got one of those and a bunch of positive feedback, including some useful tweaks.

After applying the tweaks and running into the limit of time I could spend on it (I did have any actual job to do, after all : ), I sent my paper to the screener that makes sure that Bill’s not bothered by trivial things, expecting to hear where to file it. But I didn’t hear that. In fact, I didn’t hear anything at all til today when my own patron St. VP thanked me for my submission, being all kinds of vague about whether Bill will be handed my paper or not, but pointing me to some folks internally about making my idea happen. I took this as letting me down gently, but further emails indicated that my paper *had* been sent along to Bill.

June 2, 2003 spout writing

MSDN Article: No Touch Deployment

Here. From JosephCooney: Chris has a new MSDN
May 24, 2003 spout

My First Meeting with a Senior VP

On the anniversary of my first month at MS, I took my first meeting with a Sr. Vice President. I’m told that’s a big deal. One colleague who’d been at MS for a few years said, Wow. You must be important. I expect that the first time I’ll be in a meeting with a Sr. VP will be at my firing.” In my case, it’s not that I’m important (I’m not) that got me involved with such a meeting; it’s that I have recently been asked to participate in a project that needed to meet with the VP to clarify some review feedback . Or, in other words, it was a pretty pedestrian here’s what we’ve come up with since the last time we met” kind of meeting. What made it interesting was that it was with a Eric.

Imagine a company run as a strict meritocracy that’s one of the most important and profitable in it’s industry. Now imagine that this company has been around for a while and has acquired tens of thousands of employees in a multi-layered hierarchy, with only the best and the brightest surviving and the best of the best rising to the top. That’s MS. Billg is layer 1. Eric is at layer 4 w/ a small number of peers. I’m at layer 9 or, as I like to call it, “the bottom.” By all rights, that means that Eric should be 5″ smarter than me, and I can see him fitting comfortably into that category.

Had Eric wanted to shred us, I’m sure he could have. Luckily, it was a nice, calm, productive meeting w/ him cutting quickly to the main points (in spite of the fact that he was reading and making notes on our handouts while still listening to our presentation). He also make some pretty interesting comments, especially considering how little time I’m guessing he’s had to think about the problem space. At least one comment put me on a path that I like much better than the one I was on (although we’ll see how he feels about it at the next review). The comment that startled me most, however, was when he said that he read my site. If this is my last post from inside the big house, you’ll know how much he liked it. : )

May 21, 2003 spout

My First Month @ MS

Wed, May 21, 2003

Today marks the 1-month anniversary of my assimilation. For those expecting references to my scars,” you can be as surprised as I am that there aren’t any. In fact, my coming to MS has not really been a big deal. Oh, folks were nice and I got emails from all manner of internal and external folks with nothing but good wishes, but, somehow, I expected something different. Frankly, given the world’s impression of MS, I think I expected hazing. In fact, I woke up this morning with memories of dreams involving all kinds of bizarre knowledge- and activity-based initiation rites lead by my grand-boss that reminded me of a cross between my college fraternity and Fear Factor (although maybe I was still reliving my MSDN morale event” experience : ).

Why did I expect all kinds of horrible things? Because MS is a very intimidating company; they play to win, seemingly at all costs. This A+ personality trait is certainly reflected inside the company, but there’s something else there, too. The part that surprised me was that job #1 seems to be exactly what I would pick: do the right thing” for the customer.

May 16, 2003 spout

My First Talk As A Microsoft Employee

On Wednesday, I gave my first talk as a Microsoft employee. I was told that the talk was for a bunch of UK folks that needed to be put on the .NET path and could I do 90 minutes on intro to WinForms in a conference room on campus? I can do intro to WinForms material for hours without preparation, so I didn’t do any. Instead, I showed up with my laptop and plugged it into the overhead, where I then spent 10 minutes wrestling to get it out of suspend mode (the world needs faster hard drives!).

While my HD woke up (apparently jet-lagged from the trip between building 5 and building 43), I started warming up the crowd with questions How many of you are C++ programmers? How many VB programmers?” The room was split pretty evenly between C++ and VB, taking half of my jokes away (I’m happy to make fun of either C++ or VB programmers equally, but it’s less fun when only half the room laughs). Plus, these guys were *way* jet lagged, so getting them to even keep their eyes open in the afternoon after they’d arrived was a challenge, let alone getting them to laugh or even engage.

And then, because my HD was still shaking off the dust, I asked Did you hear anything good today?” Predictable, they said that they’d like the story of web services (Don had been there earlier in the morning) and that caused me to launch into my rendition of how WinForms + Web Services provided a wonderful way to keep all of the UI logic on a single machine, as opposed to web applications, where the UI is split between the client and the server. They weren’t biting.

April 25, 2003 spout

My First Week @ MS

Friday, April 25, 2003

After my first week at Microsoft *everyone* wanted to know how it went, both internally and externally. I learned some things:

  • I learned that folks at MS will call a meeting for lots and lots of reasons, including at the slightest sign of confrontation or hurt feelings. For a guy that hasn’t really attended a meeting in the last decade, this is quite a switch : )
  • I learned how to schedule a meeting w/ multiple people and a conference room (listed as conf room in the address book), all with conflicting schedules and all remotely using Outlook Web Access and without a SmartCard (I was pretty proud of that one, actually : )
  • I learned that no one uses the phone for anything — instead, they schedule meetings
  • I learned that it’s the person that wants something that does the actually scheduling of the meeting
  • I learned that it’s OK to open your laptop in a meeting, otherwise when would you get any work done?
  • I learned that it causes quite a stir when you disagree with the technical lead of one of the major pieces of technology that you’re supposed to be taking to the world
  • I learned that it’s darn hard to find out who to talk to your first week, and that you should take your boss to most of your initial meetings so that s/he can make sure you’re getting what you need to get from them
  • I learned that you can mix Exchange and POP3/SMTP to keep your new and your old email addresses going, if you use Office 11 and if you are willing to give up calendar and follow up notifications on your POP3/SMTP account (have I missed something?). I also learned that internal MS support doesn’t help w/ such things.
  • I learned that internal MS support is the greatest support in the whole darn world. These people don’t let you off the phone til everything works. They’re amazing
  • I learned that you can volunteer for absolutely anything you think is cool or important so long as you get everything else done, too
  • I learned that it’s not good to ask for NDA access to super-secret bits for your friends the week before you start working there (OK, I’m pretty sure I knew that before, but I had to try… : )
  • I learned that the right folks hanging out at lunch can make all kinds of interesting things happen
  • I learned that MS and it’s employees is the most charitable company in the country (world?)
  • I learned that the internal resources for MS employees are unbelievable. I could work their my whole life and never take advantage of all of them
  • I learned that it’s important to sign up for your benefits immediately if you’re going to be remote w/o a SmartCard for a while, otherwise your son may wake you up in the middle of the night with a hard toothache and when you take him to the dentist the next day, the dentist won’t be able to confirm your dental insurance (as one example : )
  • I learned that most everyone at MS is very nice (even when they’re telling you to f-off)
  • I learned that everyone (and I’m no exception) has a hard time fitting in at first. One interviewer told me that his first 6 months at MS were the worst of his life. I pray that it doesn’t last that long for me
  • I learned that after the initial period that few that survive it would ever think of leaving. I absolutely see how that could be
April 21, 2003 spout

“Look with favor upon a bold beginning”

A couple of weeks ago, I was having lunch with my wife at a little Chinese restaurant. My fortune was the title of this spout piece. I immediately associated it with my recent job interview at Microsoft and it made me smile. I had already pretty much decided to take the job, but it was nice that the Universe agreed with me. : )

Right now I’m sitting in NEO (New Employee Orientation) for Microsoft employees. Not only is it a cool name, but the nice folks at Microsoft provide a wireless network for new folks that can’t spent hours w/o one (although I’m the only one that’s geeky enough to have his laptop out at the moment : ). I start today as a Content Strategist on the MSDN content team at Microsoft, Corp. I’ll be in charge of the Longhorn DevCenter. A DevCenter is a section of the MSDN web site that focuses on a specific technology area, like the XML/Web Services DevCenter.

Longhorn is Microsoft’s next major operation system (and different than Windows Server 2003, which is the OS that Microsoft is launching this month). I can’t (yet) say anything more about Longhorn except that it’s cool enough that I took a job at MS so that I could get my hands on it. If you are dying for more info on Longhorn, but aren’t quite ready to change your employment arrangements to get it, check out the PDC in October. And, if you stop by and say hi,” I’ll show you the implant scars… : )

April 17, 2003 spout

XML For Humans

When I sat down to write this piece, I didn’t get why the work that Don, Gudge, KeithBa, Yasser, Tim and ChrisAn is doing is so amazing. I mean, I know that they’re smart and I know that they’re building the hell out of their stuff, but why? It seems like everyone that gets into blogging starts by writing their own blogging engine. It’s like C programmers writing editors, C++ programmers writing string classes and XML programmers writing XSD<->Class codegen. Sure, it’s a useful learning tool, but earth-shattering? Worth that much energy from that many guys? When they’re done, what great problems will be solved?

Don’t get me wrong. I love the that the web makes it easy for anyone to not only publish but also get an audience. I also love that there’s a protocol (RSS) that lets me subscribe to my favorite freelance authors in any one of dozens of tools (I’m into SharpReader today). I even like the Dear Diary style of writing because it leads itself to thoughts, feelings and insights that give me greater understanding of not only the topic but the author. As an added bonus, blog entries have turned into everything that’s good about mailing lists w/o the endless angle brackets that remove the need to write in coherent sentences. Blogs feel like the kind of democracy we had that lead to the American Revolution when the world was re-shaped with big ideas, written by great authors.

But does the world need yet another blog engine? Personally, while it’s primitive, I find that FrontPage have served me well as a blogging tool. The mental overhead is small, the development is nil and I get red squiggles. It falls down sometimes, but I’ve spent far less time maintaining the infrastructure for my content than I would if I were to build my own blogging engine.

April 14, 2003 spout

Priceless

  • Running sellsbrothers.com for one month: $150
  • Round-trip ticket from OR to FL to give a 90-minute talk: $1200
  • My son picking me for his famous person” school report: priceless

I don’t know how my son picked up on the tiny bit of fame I’ve acquired amongst a small, strange (but loveable!) group of people, but he did and now he thinks I’m cool. I’m sure it won’t last, but I plan to enjoy it while it does. : )

April 4, 2003 spout

Oregon & Open Source

Friday, Apr 4, 2003

I had an interesting experience yesterday when I was asked by Mike Sax to come to the Oregon capitol building to testify against HB 2892, known as the Open Source Software for Oregon Act. In general, the bill talks about the benefits of open source, open standards and open data formats, most of which I didn’t have any issues with. However, I got up at 6a and drove an hour down to Salem because of the following clause:

“(2) For all new software acquisitions, the person or governing body charged with administering each administrative division of state government, including every department, division, agency, board or commission, without regard to the designation given the entity, shall:

(c) Provide justification whenever a proprietary software product is acquired rather than open source software;
April 3, 2003 spout

Testimony

Chris Sells
Sells Brothers, Inc.
8539 SW 166th Terrace
Beaverton, OR 97007
http://www.sellsbrothers.com
csells@sellsbrothers.com

Oregon State Representatives,

February 18, 2003 spout

Microsoft & Patents

Tue, Feb 18, 2003

The buzz was all around VSLive last week about Microsoft patenting the .NET Framework API. In fact, an eWEEK reporter asked my opinion and this is what I said:

I’m no patent attorney, but in examining the patent application, it looks to me as if they’re claiming a patent for the entire .NET Framework, which comprises the classes that a .NET programmers uses to get anything done. My understanding of the patent laws says that Microsoft has every right to do this, since they invented it. The reason for them to do this is so that they can maintain control of its implementation. Hopefully Microsoft will grant a royalty free license to all implementations of the CLI ECMA standard, which makes up a large percentage of the .NET Framework, or that standard will be worthless.
February 7, 2003 spout

Saving Your Career

Friday, Feb 7, 2003

In response to Never Send An Email In Anger, Lars Bergstrom recommended that I set up a rule that defers sending an email for 1 minute. I set it for 2 minutes under Outlook XP like so:

  • Tools->Rules Wizard
  • New
  • Start From A Blank Rule
  • Check messages after sending
  • Which condition(s) do you want to check? -> None
  • This rule will be applied to every message you send. Is this correct? -> Yes
  • What do you want to do with this message? -> defer delivery by a number of minutes
  • a number of minutes -> 2
  • Finish
February 3, 2003 spout

Let The Language Wars Continue

A friend of mine pointed out to me the other day that the C in CLR stood for Common,” that is, the CLR provides the same services to all languages. In fact, at this date, C# and VB.NET are really just skins” over the CLR and provide nearly identical functionality. With that in mind, why are we still fighting the language wars? There are several reasons:

  • VB and C# programmers are just culturally different. They come from different backgrounds, different educations and different points of view. Remember that VB was initially invented to let non-programmers program. C++ programmers came from folks building operating systems. Those roots are still evident today.
     
  • The VB and C# product teams are different and gain benefits based on how many of each kind of programmer there are. Based on that, do you think that those teams are going to pound the all languages work great under the CLR or the C#/C++/VB.NET rocks” drum? Which message makes you look best at review-time?
     
  • Languages *should* be different. Managed C++ does that cool managed code/unmanaged types thing. Eiffel# does Design by Contract. Perl.NET has obfuscation built in at the source code level, alleviating the need for a 3rd party tool. The fact that VB and C# are virtual clones of each other is a mistake that I hope is rectified. Frankly, I hope that VB goes back to it’s roots of enabling non-programmers, as that’s a huge hole in the current list of managed languages. Certainly C# is going back to its roots by adding generics et al in the next version.

I’ve found that the Common” means that teams can use the same language at more levels of their system, i.e. no more VB for this, C++ for that, script for this other thing. Now it can be all VB or all C# (or almost all, til Yukon ships) and the number of different kinds of programmers needed for a single project goes down. That provides a real benefit to companies trying to keep costs down and quality up while still allowing the team to decide what language features are important to them. This is goodness.

January 24, 2003 spout

OOD (The D Stands for “Dead In The Water”)

Reading a very interesting book which I’ll discuss in a future post, I came to a startling conclusion. As much as I love OO thinking and programming, OO databases are never going to fly. I realize that this may not be so startling considering how long OOD products have existed and how unsuccessful they’ve been so far, but the conclusion I came to was *why* they’ll never fly. The reason is simple: the data itself is more valuable than the programs that use it.

For an OO guy, taught that behavior was everything and data was an implementation technique, that’s a startling conclusion. However, the beauty of a database is that it’s devoid of behavior, or, if there is behavior, it’s layered in on top of the data. Programming languages come and go along with the ideas that underlie them and the applications that are built with them. Relational data, on the other hand, is a model that’s simple enough, but complete enough, to move forward from application to application, accumulating value as you go in the data itself. And, since the relational model is so entrenched, no technology for the last 10 years or the next 1000 would be complete without support for it. Even Microsoft, IBM, GM and AT&T will prove to be less enduring than relational data, the tools to program against it and the tools to slice and dice it w/o programming anything (the latter are amazing strong already and continue to grow).

Data in OO databases, on the other hand, are bound to behavior and worthless for anything but the limited set of applications for whom the behavior was paramount and the data an implementation detail. When things change, as they always do, how are you going to get the data out so you can do things different? You’re going to dump it to the simplest, most complete, most firmly entrenched data format that the world has every known — relational data.

January 23, 2003 spout

Sealed Sucks

I’ve come to the conclusion that the use of the sealed” keyword in C# (and the concept in .NET) should almost never be used, at least on a class. Semantically, sealed applied to a class means that a class cannot be used as a base class. For example, the ImageList class from the System.Windows.Forms namespace is sealed:

public sealed class System.Windows.Forms.ImageList : … { … }

January 8, 2003 spout

New Year’s Resolution

I just flew in from 2002:

and boy are my arms tired! Even I look at that list and think holy workaholic, Batman!” Of course, I couldn’t have done all these things alone. I worked with fabulous co-authors and co-contributors. Thanks to you all and I look forward to working with you again in 2003!

January 2, 2003 spout

Apps Are People, Too

Apps Are People, Too
December 20, 2002 spout

Keep On Cookin’

I got a very nice email today from Ross Lambert:

I’m a new fan of yours, both in terms of your technical abilities and the down-home honesty of your columns in The Spout. I loved Of Eggs and Omelets’, mostly because I could identify with it. My own career has been littered with a lot of broken eggs. I ran my own little software company for nearly 10 years, writing and selling developer libraries for Macintosh developers. Needless to say, the ups and downs of that market were fairly impossible to survive.

So now I am enjoying the Dark Side, as Mac folks would say. I’m a total  .NET-head, hence my fairly recent acquaintance with your work.

Anyway, all that to say Don’t let the turkeys get you down.’ I was a pretty decent marketer; I still write ad copy for different folks from time to time. It was the only way I could manage to survive as long as I did. For what it is worth, I think your approach is innovative and fun. A few anal people will object (it sounds like they already have), but I’ve come to the conclusion that about 2% of the population actually enjoys being uptight and offering angry complaints. You’ll never make those folks happy, and it is just as well to give them a reason to bail out early in the game.”

December 10, 2002 spout

Of Eggs and Omelets

My life has been one long series of experiments. I tried to be a know-it-all jerk in high school and found that this tended to cut into my social life (drastically), so I stopped (or am still stopping, depending on how well you know me : ). I tried to be a ground floor” employee for a small company, but that stopped being fun when the repetition and bureaucracy hit and it became clear that any profits that might someday happen would be kept at the owner level. I tried being an employee for a large company, but when my projects started getting axed based on political winds that, as a low-level grunt, I had no control over, I went looking elsewhere. Then I found DevelopMentor. The combination of working on lots of different things with lots of smart people was something that I loved more than anything I’ve since found.

But even that didn’t stop my experimentation. After teaching and consulting for a while, I decided that instead of just talking about building software, that I would take one of my ideas and build a software development team. There I worked to build the best software development team that I’ve ever had the pleasure to work with and a learned a *ton* along the way. However, the fact that the product itself was a commercial failure didn’t make for lasting employment.

November 27, 2002 spout

My Coding Standards

Wednesday, November 27, 2002

Sometimes it’s like I’m a war veteran in my head. I’ll be going along, minding my own business, when *bang*! out of nowhere, a flashback from my days as the director of a software organization hits me right between the eyes. When it happened today, I thought it would be therapeutic to talk about it instead of trying to bury it when these episodes” intruded on my normal life.

November 11, 2002 spout

Hierarchy Doesn’t Scale

Sun, November 11, 2002

I was just chatting with a friend of mine and he said that he really wanted to write a namespace extension so that he could expose a hierarchy of data in the shell. Back when namespace extensions were introduced with Win95, I thought that everything could be integrated into the shell, making the shell the last application. Sometime in the last seven years, I’ve come to hate that idea. As a hardcore computer geek, I’ve embraced the hierarchy organizational styles in three major applications:

October 26, 2002 spout

A Giant Sucking Sound

Sat, October 26, 2002

While I’m in favor of NAFTA, and free trade over all, it’s certainly not helping US workers. Instead, it favors US corporations as they made use of cheaper labor. Of course, it’s the corporations that also seem to make out on these deals, doesn’t it? Similarly, the other giant sucking sound” I’ve heard lately are my friends moving to Redmond to work for Microsoft. MS is using the recession to cherry pick the best and the brightest in the industry. I can think of almost ten people I know personally that have gone to Microsoft in the last six months. And these aren’t folks that were laid off and had to go, either (even though everyone but Microsoft is laying off). These are good folks that had good jobs, either as employees or as independents. One even owned half of what was my favorite company in the whole world! So why are they doing it? Why are they giving up their old lives to work at MS, often moving to Redmond in the process?

October 17, 2002 spout

Type Safety in a Loosely Coupled World

Tim Ewald gave a very rousing keynote address at the WinDev conference in Boston yesterday. During his talk, he did something I’ve never really heard anyone do convincingly before — he defended the typeless recordset/rowset/dataset style of programming. His justification was that you don’t always need type-safe object models and, when getting a subset of data, they’re often more trouble than they’re worth (do you really want a set of types for every query in your app?).

My standard objection to the just the data, ma’am” style of programming is that I don’t get compile-time type checking. Of course, I can write the code to check all the data I get at runtime, but I don’t like to do that. Instead, I like things like the type safe dataset generator built into VS.NET. However, that damn tool fooled me. I looked at those type safe wrappers and considered that compile-time type checking. Of course, it’s not. Instead, it’s a hunk of code that pretends to offer compile-time type checking, but only really offers run-time type checking, because the data still needs to be coerced at *runtime*.

October 2, 2002 spout

The Fallout Begins

Two months ago, I noted a fall in morale in the IT industry amongst my friends and colleagues. I wondered whether the best people in the industry who’d been fighting for a sane development process, but living without it because people were handing out cars as signing bonuses, would rather not work in another industry when the cars were no longer available and the fight for what was right didn’t seem to make as much difference any more. Yesterday, one of the people that I’d put into the right up there” category, Justin Rudd, announced his intention to pack it in and go back to school to be a doctor.

This kind of thing shakes my own faith. Should I continue to bust my hump on the latest and greatest technologies or ditch it all and start that novel I’ve got in the back of my head? I still really love doing the former, but it seems that everyone has to work a lot harder for a lot less these days. Maybe I just need to readjust my thinking, but damn, being smack dab in the middle of an economic boom really does a number on you! I feel like the guy who found a silver mine in the middle of the gold rush. I don’t have any trouble feeding my family and it’s not fool’s gold, but I still pine for those deep, yellow nuggets…

September 13, 2002 spout

Never Send An Email In Anger

Never Send An Email In Anger

I learned how to write good emails at the foot of the master — Don Box. Whenever we’d decide we wanted something, he’d grab his computer and say, Let’s write the email” and it would be done.

One of the most important things that I’ve ever learned about high-tech communications is to never, ever write an email in anger. Or, to be more precise, never *send* an email in anger. I encourage you to actually write it. It always makes me feel better. But don’t address it, because you want that email to first end up in your Drafts folder and go from there to your Deleted folder. If you address it and mean to press Ctrl+S to Save but manage to press Alt+S to Send by mistake, you might well be looking for work in another industry. If you don’t address it, however, Outlook complains and you can breathe a sigh of relief. Frankly, I wish there was an add-in that protected me even if I ignore my own advice:

September 4, 2002 spout

Attracting and Keeping Good Folks

A friend of mine requested an essay on my thoughts of attracting and keeping good employees. I’ve had the privilege of working with some of the best and the brightest over the years and seeing how companies hire and keep them. My take is that companies that attract the best do so with a reputation of excellence. As one example, Google has kick-ass technology, so I’m sure most of you want to work there (I know I do : ). On the other hand, there are plenty of companies that have a reputation for buggy, unusable software that turn us off, all without ever hearing about the salary and benefits package.

If you can attract good folks, you’ll also attract lots of mediocre folks and some not-so-good folks. There are all kinds of ways to screen these folks out. My favorite is to ask them why?” questions. If they can tell me the name of the operator that appears as a colon between the last paren of a C++ constructor signature declaration and the opening curly place, that’s great. But if they can tell me why C++ has it, and why Java and C# doesn’t, they’re hired. Of course, I let the interview candidate pick their own area of expertise and ask them questions about what they know best to see how deeply they’ve gone in their explorations. The ability to figure out the why” is a necessary skill for folks that you’re going to trust to take vague requirements and come up with Google-like results in an environment where no two consecutive projects use the same set of technologies (or even similar ones, increasingly).

August 30, 2002 spout

Spout — Development for Developers

Here.
August 30, 2002 spout

Development for Developers

I got an email today from David, who says, So, I am looking to see what I can do to develop my skills as a designer. The trouble that I have, is simple. Where does a programmer that is over 40 years old, with a good job, and a good family turn to to learn something like this?”

David, developing in any career means taking risks, trying new things, making mistakes. Some specific things you can do to improve your developer/designer skills include:

August 28, 2002 spout

Newsletters Are Hard!

As I write this, several thousand emails are being sent to the initial list of SellsBrothers News newsletter subscribers. My motive (to let folks know what was happening on the site without having to visit every day) was pure, but if I would have know how hard it was going to be to set the thing up, I don’t that I would have started.

It began with a simple form on the web site to take people’s email addresses, which were in turn emailed to me and sorted into a Outlook folder. When that reached a couple thousand without yet having sent out a single issue, I figured it was time to put it into a real database. So, which a bit of data cleaning through VS.NET and Excel to get the dates right, I plunked it into an Access that would serve as the repository on my ISP-managed site. That was all fine and dandy but for one problem: I had to send emails using the data from my own machine, not the machine with my live site (and therefore the latest subscriber data). Did I really want to download an Access database from my ISP every time I needed to send a newsletter? It won’t be often, I admit, but that still seems wrong, doesn’t it?

August 13, 2002 spout

The Apple and the Tree

Yesterday my eight-year-old and I had the following conversation:

John: Dad, do you know a lot about computers?”
Dad: I know my share.”

August 3, 2002 spout

Industry Burn-Out

Do you feel it? I do and I know that a bunch of my friends do. The whole IT industry is in recovery from the crashing lows that can only happen after impossible highs. In recent conversations, I hear terms like burned out,” bitter” and jaded” coming up again and again in our conversations. Since I got into this industry just as it was idling before take off, I have no frame of reference, but I’m guessing that things will level off at a bit better cash flow than right now, but much better morale.

The question is, how long will it take for the energy and excitement to come back? I know that I’m still healing from a three-year stint on my last big project, and even though I have an itch to try something else, I fantasize about trying my hand at another industry. I always figured that the shake-out would make the bottom feeders leave for something else, but now that we seemed to have settled on good, although not great, salaries and benefits and shaky processes at best, how many of the top folks will just bail from something else? I haven’t actually seen anyone I respect leave for greener pastures, so I’ve got my fingers crossed that things will turn around.

June 27, 2002 spout

Where Do You Find the Time?

I had lunch with a couple of colleagues on the lecture circuit today and after they asked me what I was working on (Genghis, the Web Services DevCon in October, ref-counting for Rotor, a few books, some consulting, etc), they asked where I found the time. Here’s how:

  1. I work with a *ton* of very talented folks. The following are just the ones I’m remembering off the top of my head that I’ve been working with lately: Chris Tavares, Brad Wilson, Shawn Van Ness, Jon Flanders, Don Box, Tim Ewald, all the Web Services DevCon speakers and staff, all the Genghis contributors, Tim Tabor, Michael Weinhardt, Microsoft, Dharma Shukla, Brian Harry, Chris Andersen, Mark Boulter, and, of course, all of my former DevelopMentor brethren.
     
  2. But most importantly, I don’t attend meetings or request vacations or approve vacations or attend meetings or receive reviews or give reviews or attend meetings (did I already say that?) or do any of the other things that employees have to do. Skipping these activities easily doubles or triples my productivity. Of course, I had to give up the steady paycheck to make it happen and it’s not the life for everyone, but it works for me just fine. : )
June 25, 2002 spout

XML & Inclusion

guest editorial by Don Box, Tue, Jun 25, 2002

Chris, I just read your Object vs. XML post on the spout and I’d be pleased if you would allow me to respond with my own personal spoutlet. Here goes:

June 22, 2002 spout

Object vs. XML

I was watching a group of folks present a new XML standard the other day and I realized something for the first time: to XML folk, OO languages are just script-like glue” for connecting XML processing steps, the Unix pipe” of the new millennium, if you will. Integration with OO languages is necessary to enable XML dominance, but that’s an accident of history. In the view of the XML zealot, OO will eventually fall away and only pure, clean XML will be left in its place.

As an OO guy, I find this view disturbing. As a general technology wonk who sees the value of XML, I find this view unrealistic. Just so you XML folks know, OO guys look at XML as a data transfer syntax and that’s all. OO guys are happy that XML is there, but they prefer to stay away from it in favor of their nice, familiar OO environment.

June 12, 2002 spout

Karma

While I definitely do have faith that there is a higher power in the universe (although I haven’t yet decided if the universe is a good place to be or if it’s just a simulation solving some higher level non-deterministic finite state automata), I’m not a religious man. If fact, I consider myself a completely recovered Catholic (I’ve been clean and sober for more than a decade and I never feel the need to go back for another hit off the body of Christ) [1].

Likewise, I’m not a superstitious man. I understand that going under a ladder may cause pain if something drops on me, but not for some other mystical reason. Similarly, breaking mirrors could cut you, but only the most serious of cuts could last for 7 years.

June 11, 2002 spout

Adding Ref-Counting to Rotor

Microsoft has granted Sells Brothers, Inc. a research grant to add ref-counting to Rotor and to study the performance effects. The proposal that lead to that grant is available here. There’s been a lot of speculation about just how we’re planning to add ref-counting to Rotor. Here are the highlights:

  • It’s not just me,” it’s we.” I’ve already have very useful input from several folks, including Jason Whittington, Ted Neward, Ian Griffiths, Serge Lidin, Craig Andera and Bill Conroy. Also, Chris Tavares will be spending most of July doing the actual implementation. If anyone else wants to dig in, feel free! I’m happy for the help and anyone that provides insight will get credit.
     
  • The goal of adding ref-counting to Rotor is to measure the performance effects of a deterministic finalization-like model that we gave up when moving from COM/C++/VB6 to .NET. I say DF-like” because we’re not getting DF, because the price of determinism is that sometimes an object is never finalized, e.g. cycles. We can do better.
     
  • We will not be replacing the existing GCs ref-tracking. It does a fabulous job managing memory and managing cycles and we won’t touch that.
     
  • The ref-counting implementation’s sole job will be to call an object’s finalizer ASAP. Note that this is in no way deterministic.” Plain ref-counting is deterministic in that it calls an object’s finalizer just as soon as there were no more outstanding object references. Cycles meant that this would never happen (deterministically). A hybrid ref-counting/ref-tracking system improves never” to eventually” in the case of a cycle and maintains the ref-counting’s guarantee for ASAP in their absence.
     
  • Even objects that don’t have finalizers will need ref-counts, as they maintain references to objects that have finalizers (and so on).
     
  • Value types will not need reference counts, but when they go out of scope, there will need to be a Release on any object references the value objects contain.
     
  • When the GC kicks in and finally breaks a cycle, it would be nice to release all objects held by the cyclic objects so that they could return to normal ref-counting determinism. However, since we’ve already blown determinism by being in a cycle, this seems unlikely to be very helpful. Also, by skipping this we can keep all of our changes in the JITter and out of the GC, which simplifies the initial implementation.
     
  • We’d plan on adding ref-counting at the runtime level in the JITter so that all languages gain the benefits w/o updating the compilers (or mandating anything special in any language). The real work is figuring out which IL instructions require AddRef/Release calls and getting those calls into the instruction stream. Because of this, we’re not likely to be able to handle tail calls (at least, initially). Anyone with advise in this area would be welcomed with open arms.
     
  • We plan on working nicely with existing IDispose-based code. Since our ref-counting is all about calling the finalizer, if the ref-count gets to zero and there is no finalizer to call, no finalizer will be called. That means that Dispose implementations that call GC.SuppressFinalize will not cause any problems with the ref-counter. Of course, the goal is that the IDisposable.Dispose protocol is not necessary at all.
     
  • As a potential optimization, I have found a nice place to store a 7-bit ref-count in the existing space allocated to every object, so there will be no space overhead, only CPU overhead. However, this narrows the number of objects per  process with synch blocks and/or hash values from 134 million to 1 million. It also narrows the number of referencing objects from the traditional 4 billion to 127. Anecdotally, 127 seems like enough, but it will necessitate the need to abandon ref-counting on any object that reaches 127 extent references. Since most data structures where more than 127 references could happen are parent-child, e.g. every child in a tree with a reference to the root, and this indicates a cycle that can’t be handled by the ref-counting anyway, turning these objects over to the ref-tracking portion of the algorithm seems reasonable. However, we won’t know til we look how many object references an object is going to have, so we’ll track maximum reference counts during our tests to see if this optimization makes sense at all.
May 26, 2002 spout

The Truth Is Not Enough

Watching the final episode of the X-Files, I realized why I don’t like that show. Mulder spends all his time searching for the truth, but even when he finds the date of the planned alien invasion, he doesn’t do anything with it! They’ve spent the last nine years discovering the truth and not doing anything to change it (or, if they do try, they fail miserably). Of course, that’s not the only problem with the show (e.g. why would an alien race powerful enough to do generic engineering to produce the miracle child” or to create super soldiers” or to create the virus in the first place, needs to bother with setting up a shadow government), but it’s the one that bothers me the most.

Just knowing the truth is not enough. You need to act on it.

May 10, 2002 spout

Now the Fun Begins

May 9, 2002 spout

For the Love of the Story

It’s only happened a few times in my entire life, but I want it to happen more. It’s that feeling you get when you’re telling a story, trying to describe a scene or a technology or a something and, suddenly, without warning, it starts to tell you. It happened twice in college in a creative writing assignment: one of those times it actually gripped me from the moment I started writing my life story on a 3x5 card (I remember it started I was an accident.” : ). It happened once while writing ATL Internals: Chapter 7, Collections and Enumerations. And it just happened again while finishing up a writer’s journal entry I started yesterday:

March 13, 2002 spout

This is Not a Blog

Web Logging (blogging) is the wave of the future. Blogging is re-making the internet. Blogging is journalism where everyone is the journalist. Blogging is all that and a bag of donuts.

OK. I guess so. I like blogs. I read a bunch of blogs. But most bloggers feel like they have to update their site at least once/day and most do it far more than that. Because of this, their blog entries end up looking like this:

February 27, 2002 spout

HTTP is Dead?

HTTP is Dead?

Your friend and mine, Don Box, caused quite a stir yesterday with his keynote at European DevWeek in London. Peter Drayton has also written up a summary (which is much more technically meaty), as well as a commentary. There has been some quite spiriting follow up on this talk all over the Internet: the .NET mailing list, the Off Topic mailing list, the REST mailing list and XML Deviant on XML.COM. Also, while I absolutely agree with Don that the way we use HTTP today leads to trouble, I thought that Ian Griffiths, a fellow DevelopMentor instructor, had a wonderful point of view that he allowed me to share:

Guest opinion by Ian Griffiths

February 27, 2002 spout

How Did You Get Your Start?

Standing in the rain, with his head hung low, couldn’t get a ticket, it was a sold out show, heard the roar of the crowd, he could picture the scene, put his ear to the wall and like a distant scream, he heard one guitar, just blew him away, saw stars in his eyes and the very next day, bought a beat-up six string in a second hand store, didn’t know how to play it, but he knew for sure that one guitar felt good in his hands, didn’t take long to understand, just one guitar, slunk way down low, was a one-way ticket, only one way to go, so he started rocking, ain’t never gonna stop, gotta keep on rockin’, someday gonna make it to the top and be a Jukebox Hero….

Jukebox Hero, Foreigner

February 27, 2002 spout

Please Say “Why”

As .NET demands new books and articles and the economy has given a lot of smart folk free time, the world is becoming inundated in .NET books, articles, talks and courses, many of which I am tapped to review. Some are wonderful. Some are awful. Most, however are *almost* good, the path to goodness well within the author’s reach but for the answer to one question: why?”

Most of my feedback is riddled with questions that start with why: Why was it built this way?” Why are there three choices and how do I choose?” Why should I care?” Please, when you write, remember this question and answer it thoroughly and well. The why is *so* much more important than the how. The online documentation for .NET is fabulous for describing the how, once you understand the motivation for this class, that method or the other namespace.

January 22, 2002 spout

A Visit with the Visual C++ Team

I spent a fun two days up at Microsoft last week at the Visual Studio  .NET C++ Authors Summit, wherein the Microsoft team shows us how cool VS.NET is for C++ and browbeat us to write a book on the topic. Since I’m already planning to write ATL Internals, 2/e with Kirk Fertitta, I couldn’t talk them out of the XBox I so richly deserve. On top of that, they tortured me by taking me to the Microsoft store where they have XBox games for only $10! Those bastards…

If you’re a C++ programmer, VS.NET/VC7 brings a lot to the table. And according to Nick Hodapp, a PM on the VC team at Microsoft, many, many of you are C++ programmers. Microsoft quoted some 3rd party studies that say that there are about 3M C++ programmers out there (compared to 5M VB programmers and a whole lot less Java programmers). From a 3rd party survey of VC++ customers, Microsoft found that 90% (!) of them will be doing the same or more VC++ work in the future (about 22 hours/week). They also found that about 75% of VC++ users are MFC programmers (which isn’t growing) and 35% of them are ATL programmers (and is growing). Given the number of ATL7 books shipping right now or in progress (ours and a few more), and the increase in the audience, that made Kirk, my Addison-Wesley editor and me very, very happy.

December 18, 2001 spout

Too Many Secrets

Tue, 12/18/01

During my three years as director of a software project, I learned a lot about people. In fact, I have a little text file entitled My life as a dog” that may find a home on this site one day. However, because of a thread on the Windows Technical Off Topic list, one of the things I learned came roaring back like a bad acid trip.

December 1, 2001 spout

Effective C# Available Today

Sat, 12/1/01

November 16, 2001 spout

Thank You, Don Box

Friday, 11/16/01

Last night, in the middle of .NET Band on the Runtime set, Don announced his retirement from DevelopMentor and training. He’s sorry to be leaving us, of course, as we are to lose him, but he’s excited about doing new things. Running a company gets more consuming as a company gets more successful and Don certainly brought DevelopMentor a great deal of success. And not only did he run his part of the company, but he also brought a amount of rigor and insight to an amazing range of technology topics, including C++, COM, DCOM, RPC, XML, Java and .NET, heretofore unprecedented in the training industry. He turned the phrase them that can’t; teach” on its ear. But these are things that are well-known of Don.

November 11, 2001 spout

If you knew .NET like I know .NET…

Sun, 11/11/01

Many years ago when Java was new, I dove in. My first program I wrote like a C++ programmer and I didn’t get it. Then I rewrote the program as a Java program and it was much nicer, but I still didn’t get it. Then I discovered the lack of deterministic finalization and that’s all she wrote; my C++ thinking turned me away (the fact that Java was ashamed of my favorite platform and, in fact, all platforms didn’t help).

October 17, 2001 spout

Be Your Own Teddy Bear

Wednesday, 10/17/01

According to legend, the TA office next to the Stanford computer science lab is guarded by a teddy bear. Before a student is allowed to consume valuable time asking a question of the TA, they must first explain it to the teddy bear. Apparently the bear is able to answer 80% of the questions that students ask, saving time for the TAs to play Unreal Tournament.

September 17, 2001 spout

Flattery

September 17th, 2001

Is it imitation or nudity that’s the sincerest form of flattery? Either way, it looks like Robert Scoble is naked outside where the neighbors could see (unlike mine, which was inside and very private : ).

September 11, 2001 spout

Give Comfort

Give Comfort

September 11th, 2001

The World Trade Center and the Pentagon were attacked today when hi-jacked commercial airlines crashed into them, destroying both of the towers and damaging the Pentagon. I can’t possibly know what the people who had friends and families in those buildings are going through right now, but my thoughts and prayers are with them. If there’s anything you can do today or in the coming weeks or months to help those people to recover from their loss, please put aside your computers and your work and do it. I will be doing the same. Thank you.

August 23, 2001 spout

Q&A: .NET Cross Language Inheritance?

August 23rd, 2001

Q: D.J. Stachniak writes:

August 17, 2001 spout

Conference.NET: Notes from the Field

August 17th, 2001

In talking to fellow DevelopMentor instructor Craig Andera today, I realized that those of you who didn’t get to attend DevelopMentor’s Conference.NET this week, must’ve hoped that DevelopMentor’s inaugural conference would suck so that you didn’t miss anything good. Well, I’m pleased to tell you that it didn’t suck. In fact, it was awesome. In further fact, I can’t say that I’ve ever had more fun at a conference. Of course, I couldn’t be everywhere, but here’s what happened to me:

August 6, 2001 spout

What I Love Best About .NET

Monday, 8/6/01

DevelopMentor has long attracted smart folks. Really smart folks. These are the caliber of people that forces you to look up every once and a while and question your own worthiness. With this many high-caliber people together, you’d think they’d be able to look objectively at the world and avoid such religious arguments as What’s the best language?”, What’s the best platform?” and What’s the best editor?”

August 3, 2001 spout

Hanging Out My Shingle

Friday, 8/3/01

For the last three years, I’ve been in management. Oh, it started innocently enough. When the team was small, I was only managing a little bit. However, as the team grew and we got closer and closer to shipping our first product, I spent less and less time doing anything technical and more and more time managing. Eventually, I was doing nothing but dealing with the rest of the company and potential customers and enabling” everyone else. Luckily, Don Box, co-founder of DevelopMentor and my long-time mentor, noticed that I’d been swept right out of the things that I loved the most. And he made me an offer I couldn’t refuse…

August 3, 2001 spout

My Favorite Software

Friday, 8/3/01

The following software is what I install on nearly every computer I set up. BTW, I pay for all my favorite software and you should, too. While I am guilty of trying” friend’s software, I own legal copies of every piece of software I use.

August 3, 2001 spout

My Favorite Books

Friday, 8/3/01

When I started writing books, I decided to stop reviewing other peoples’ books. I used to have a list of all of the books in the topic of my current interest and write a little review, either pumping them or panning them (this was long before Amazon.com). Once I decided to write books myself, I figured that there’d be a conflict of interest putting down competing books, so I stopped. However, I’ve had lots of folks ask me for a list of recommended books over the years, so I thought I’d provide one. While I’m still biased, there’s at least less conflict of interest if I just tell you about books that I love (although I’m not so proud that I don’t tag each book URL with my Amazon.com associates ID…).

August 3, 2001 spout

My Favorite Web Sites

Friday, 8/3/01

These are the sites that I visit on a regular basis and like (the sites I visit on a regular basis and don’t like are not listed : ):

June 9, 2001 spout

Choose Your Defaults Carefully

Saturday, 6/9/01

In the last week, I’ve been bitten twice by developers that have chosen defaults poorly and, therefore, have adversely affected my life. The first was on my Nokia phone. I was in a meeting” with some of my key engineers (read: we were goofing off at a movie on a Thursday afternoon), and I had set my phone to Silent mode. Now, I have a Nokia 8260 (blue) that I dearly love. It kicks butt on the silly Ericsson that I used to have. However, I noticed when I came out of the meeting that their had been several calls from my blushing bride. The Nokia is cool not only because it’s small enough to fit into my pocket (where I keep it during our meetings”), but also because it has a vibrate mode. So, I figured that if the phone was in Silent mode, but the phone was still on, if someone called, I’d get the vibrate in my pocket (separate from my change and my keys to honor the spirit of the Nokia Silent profile). Unfortunately, this was not the case. Calls came in, but no vibration was forthcoming. This happened a couple more times in the next few days until I had a free moment to check the settings for Silent mode (ironically this free moment came while waiting for another movie to start today — “Operation: Swordfish,” which I enjoyed, btw). The default for the vibrate setting in the Silent profile was *off*. How could this possibly be right? It’s a phone! It’s on! Sure, I want it silent so it doesn’t bug people around me, but I still want to know when someone calls! Hence the vibrate mode! Needless to say, my blushing bride was less than pleased.

May 16, 2001 spout

Other Blogs

5/16/2001

My spout page is just one of literally thousands of web logs (“blogs”) available on the net. These are a few of the ones that I like:

May 15, 2001 spout

Object-Orientation is Over

Tuesday, 5/15/01

Java, and Java 2.0 (aka .NET), have brought with them the end of object-orientation. Of course, by that I mean that object-orientation is no longer a question — it’s just how we program. Even our scripting languages have classes and objects now. That fight is over, as are the advances in that area. Object-oriented programming, with inheritance, polymorphism and encapsulation, is just the way we do things now and Java and .NET represent the end of that line and the beginning of several others:

May 15, 2001 spout

Rules of Engagement

Tuesday, 5/15/01

This is a page where I can just spout off about whatever. I keep it separate from my Tools page so that you don’t mix up any of my spoutings with facts.

April 21, 2001 spout

From COM to .NET

Saturday, 4/21/01

Enough people have asked me what I think about the transition from COM to .NET that I thought I’d publish my thoughts instead of responding to each individual email. This is the question that finally lead to me publishing this page in the first place.