You've reached the internet home of Chris Sells, who has a long history as a contributing member of the Windows developer community. He enjoys long walks on the beach and various computer technologies.
Wednesday, Jul 21, 2004, 12:41 AM in The 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 soon to test as a candidate (pocket/palm PCs sucked for this use the last I tried). Plus, where does the book data come from for all of these print-on-demand books and why can't I download it?
Wednesday, Jun 30, 2004, 5:08 PM in The Spout
#1 Windows Forms Book
Here. The one where I toot my own horn much less subtly than usual (and I'm not known for subtlety : ).
Wednesday, Jun 30, 2004, 12:00 AM in The 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... : ).
Saturday, Jun 26, 2004, 12:59 AM in The Spout
My Experiments In Social Video
Here. The one where I try a couple of experiments in social video to bring me closure to my friends and get half-way there.
Saturday, Jun 26, 2004, 12:00 AM in The Spout
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...).
Did I put my Tim Ewald-expanded vocabulary to work? Did I scratch words onto a cocktail napkin as fast as I could think of them?
No. In the limited time I had, I wrote a program that would come up with random combinations of letters in brute force fashion, then dumped the unique ones to a file so that I could use Word's spell checker to find the real words. I came up with 32. Did I win?
No. A librarian, using her own expanded vocabulary beat me with 34 (I had been running the program to generate 1000 possibilities to speed testing but forgot to flip it back to 10,000 when it came time to run it for real).
Did I stop there? Did I accept defeat gracefully, especially since it's pretty clear I had cheated in the first place?
No. I went home and learned the STL permutation algorithm and wrote a program that compared against a dictionary from the web to find the 72 words of 3 or more letters in "united" (including asynchronous updates to the UI as possibilities are checked [it takes a little longer, but it's worth it...]).
Now I carry that program on my laptop wherever I go, just in case I run into that damn librarian again...
P.S. I did get to use my program one more time against my mother playing Scrabble. I got my all-time high Scrabble score ever on that day. She still beat me. Did I mention she's got a bachelor's degree in library science? Damn librarians...
Friday, Jun 25, 2004, 6:44 PM in The Spout
My Day With Edward Tufte
Here. The one where I enjoy a day with Edward Tufte even if he unfairly blames PowerPoint for sloppy thinking.
Friday, Jun 25, 2004, 12:00 AM in The 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.
Sounds nice, eh?
Doesn't work.
The reason mini-me doesn't work as a stand-in for me in my office is because there's no standard account I can login with on my desktop, e.g. redmond\guest. The reason a standard account would be nice is so that I can leave it logged in all the time, tie its own .NET Passport to the account and put a shortcut on the desktop to make it IM me in video conference mode (I actually wrote an app that does just that). Unfortunately, it has to be an MS domain account so it has network access and if I leave an anonymous domain account logged in on a laptop all the time, that's an enormous security hole. And if I make folks that want a quick chat with me log in themselves, they'll will have to wait for their domain settings to migrate to the laptop, they'll have to login with their own IM account, they'll have to configure the web cam before using it and they'll have to remember to logout when they leave for the next person. Frankly, I'm not worth all that trouble when they could just call, IM or email me.
So, the mini-me laptop is a bust unless I can figure out a way to get Internet access without Intranet access inside the MS corporate Intranet without requiring everyone to log in w/ their own account to get it. Oh, and it has to be in a way that works with wireless so that they can haul mini-me to a meeting without having to haul along a cable, too.
Experiment #2: Maxi-Me
My 2nd experiment in social video
went quite a bit better. Last week I gave two 1-hour talks back to back to the
AZ .NET User Group, but the trick was, I gave them from my house. The setup was
two computers on each side. One was for NetMeeting app-sharing (using MSN
Messenger to request Remote Assistance works, too, but I can never get MSN
Messenger app-sharing going). The second is for the video (the CPU load was too
heavy to do both on one computer). Voice was done over the phone, which they put
through their PA system. They also had two computers, both attached to video
projectors, broadcasting my screen using one projector and my image using
another (can you imagine how disturbing it must have been to see the giant,
pixelated maxi-me? I shudder at the thought : ).
The app-sharing worked
well, as I was able to easily switch between PowerPoint and a Terminal Services
session to my Longhorn box. The audio worked well because I insisted on 2-way
audio so I could hear them ask questions (I hate talking into silence). The
video was cool, because I could see them raise their hands, drift off, laugh,
etc, but it required somebody sweeping the room on their end periodically
(talking without seeing your audience is slow death).
Overall, it seems
like folks were able to enjoy a remote presenter without too much trouble. Once
I got 'em warmed up, the speaker phone and roving camera made Q&A very natural.
I would try maxi-me again, although I'd love it if I could get mini-me working,
too.
In general, I believe that ubiquitous a/v conferencing is inevitable. I just I'm just a bit ahead of the curve. : )
Friday, Jun 25, 2004, 12:00 AM in The Spout
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.
Tufte: "The point of an information display is to assist thinking. Good design is clear thinking made visible. Bad design is stupidity in action. Chart junk is a good sign of statistical stupidity."
My favorite Tufte term is what he calls designers brought in to make boring numbers look interesting: "chartoonists."
Ed's Grand Principles of Analytical Design
- Show comparisons (this is big theme of Tufte's)
- Show causality
- Show more than 2 variables, as the world we're trying to understand is multivariate
- Integrate word, number and image (this is another big theme)
- Say from where the data came
- The value of an information presentation comes from the quality, the relevance and the integrity of the content, i.e. good design won't fix bad content.
- Use small multiples, e.g. showing multiple pictures of sunspots on the sun over time
- Show and embed scales of measurement because it's an essential part of the context
- Annotate everything and if the audience reads ahead great, they're reading your material
- Use proven design templates (like those in Tufte's books)
Tufte: "Don't let the marketing people corrupt your presentations by eliminating detail. Chances are, the people looking at the information know more than the marketing people. People haven't suddenly gotten stupid just because they come to hear you talk. If people can read the financial tables and the sports tables from the paper, they can get read data from you." (The last point assumes a good design.)
In my own work, I often remove detail for clarity, but I'm very careful to leave enough details to keep context. I admit, it's a fine like to walk and hard to get right.
As a way to pack more data into a small space (and in an attempt to secure his immortality, imo), Tufte was inspired by Galileo's work to create a new kind of graphic meant to be integrated into a sentence as yet another word. He calls them "sparklines" (the sparkline is the graphic before each word):
Sparklines pack a lot of information into a small space and are a cool alternative to graphics that break the flow of thought and need to be called out with a phrase like "as seen in Figure 3." I have a mind to implement them in Avalon when I get a chance.
90% Content
Tufte hates most kinds of user interfaces because they spend too much of the already low resolution screen on "fluff," e.g. menu bars, captions, navigation, etc, and too little on the content itself. As an example, he showed a screenshot of a photo display app that used only 18% of the screen for the actual photos. He wants nearly invisible operating systems and apps and 90% of the screen used for the content. He's a big fan of Google News as a way to pack in a lot of information and he's a big fan of scrolling. For web sites, Tufte recommends only a small set of links at the top of each page for navigation and nothing else. His own site is like this and I have to admit, I like it.
Design For High Resolution
Ed hates low resolution. He wants everyone to design for high resolution to be viewed at 22 inches so you can pack a lot of information in, showing comparisons and causality. He hates PowerPoint because it's made to be viewed from 22 feet and doesn't provide a lot of room for showing dense data, comparisons or causality. It's far easier for humans to make judgments when they can see everything at once instead of sequenced one slide after another (or "one damn thing after another," as Tufte says : ). In general, he believes everything should be printed and that PowerPoint should only be used for showing pictures to an art class. I see his point, but ironically, when he wrote a paper on the problem of PowerPoint to be read at 22", after 3 pages of him blaming PowerPoint for sloppy thinking, I put it down in disgust. If he had had his thoughts put together into PowerPoint-style format, I could have skipped ahead to find his real point, i.e. low resolution makes it hard to do serious analysis.
As a point for Tufte, when producing this summary of my day listening to him, I'm mixing prose, images and references, but I'm not producing it in PowerPoint. According to Tufte, 4 pages of prose is equivalent to between 50-250 PowerPoint slides and I have to admit, it would be hard to convey what I want to say about him in a PowerPoint deck without using a lot of slides and throwing away the subtleties. In general, I believe that PowerPoint is best for reminding the presenter what they want to say and is very poor for the audience. Instead of a slide presentation, Tufte recommends providing the audience 4 pages of prose, which they read 3-5x as fast as you could say it, and then having a conversation. Interestingly, he allowed no conversation during his own presentation but instead talked to various parts of his books and hand-outs.
On the other hand, has anyone even read this far? Would you have gotten farther if I'd have summarized everything in slides, skipping ahead to the juicy bits when you got bored?
Giving Presentations
Tufte has a great deal of advice about how to prepare for and give presentations. To prepare, you must have great content (no amount of design or practice will fix bad content) and spend a great deal of time practicing (especially important if you're not using PPT to remind you what to say). When presenting, follow these rules (these aren't all of my rules, but I agree with them):
- Show up early to avoid problems and greet everyone at the door to learn their names, introduce yourself and begin advancing your cause
- Start talks with The Problem, Why They Should Care and The Solution
- Never start your talk with an apology, as it just make you look pitiful
- Use Particular/General/Particular when presenting information, e.g. start with a particular example of something, generalize it and then show another particular example that shows the same general characteristics (I use this technique all the time and it's very effective)
- Use first person singular only to express opinion, i.e. this isn't a talk about you but about a serious topic
- Give everyone at least one piece of paper (Ed prefers a single 11" x 17" folded in half with 4 sides of content)
- Knowing your content and respecting your audience is more important than knowing your audience if by "knowing" them, you "dumb down" your talk for them
- Avoid project slides (aka PowerPoint or the equivalent)
- Use humor as appropriate, e.g. hyperbole to make a point, but don't tell jokes. "Don't alienate your audience because of a joke. Alienate your audience on the merits on your content!"
- Avoid the use of "he" or "she," e.g. "The user, he takes his mouse and moves it to his menu bar where he makes his manly choice." Use "they" instead.
- Make sure folks know you believe what you're saying by getting out from behind the podium, getting close to people and use appropriate gestures. If you don't believe what you're saying, they're not going to believe it.
- Finish early and something good will happen. No one will ever look at their colleague, commenting on how they wish you had gone on for another 20+ minutes.
I think that Ed has enough good things to say about how to approach the presentation and analysis of data that I would recommend that pretty much anyone involved in the presentation and analysis of information take the time and attend his day-long seminar.
Wednesday, Jun 16, 2004, 3:40 PM in The 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."
This was said after he pulled down 3000 web sites he was hosting with no notice. ATOM is starting to sound more and more attractive...
Because this post has cauesd Mr. Winer to start swearing at me, I thought I'd remind folks of the following:
DISCLAIMER: This is a personal post of Chris Sells as an individual on my own personal web site and does not reflect the views or Microsoft as a whole or any portion of Microsoft.
Monday, Jun 7, 2004, 11:56 AM in The Spout
My First Presentation For A Distinguished Engineer
Here. The one where I get to present a technical topic to Anders Hejlsberg and it changes my brain.
Monday, Jun 7, 2004, 12:00 AM in The 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.
Why me? Well, lately I've been talking to Brad about me doing some more technical work on WinFX and Longhorn. In the past, I've written and spoken a great deal about the good and the bad of various technologies and my thinking was that if I could get into a feedback loop with the product teams so that I could help prevent some the worse bits from making it out the door, giving me the opportunity to write only nice things about our technologies. Brad already runs the WinFX review team that's in charge of making WinFX a nice place for developers to play, so when I volunteered to help with some of that work, it didn't take long for him to take me up on it. And, after a few moments of hesitation when I realized that I only knew a little more than Anders about this particular topic, I jumped at it, digging into the technology, sending "tell me more" and "review these slides, please" emails to the various product groups in charge of those technologies (it's amazing how quickly you get a response when you put "I'm writing a presentation on your technology for Anders and..." into an email : ), revised the slides, woke up in the middle of the night with the perfect set of pictures to illustrate things, etc. In short, it was a blast and I learned a ton (which you know I like : ).
And the actual presentation was even more fun than the preparation. There are three kinds of talks. One kind of talk, which happens 80% of the time, is the kind of talk that doesn't really affect you one way or the other. It kind of blends in with all of the other talks you've given and doesn't really make an impact on you.
One kind of talk drains you completely. This is the talk where you just can't get anyone to notice you at the front of the room and you pour all of your energy into it to make it acceptable at all.
And one kind of talk, my favorite, is when the juices are really flowing and you walk out of the meeting all excited and energized. This is the kind of talk that drives me and my colleagues to all-night diners for a debrief session. This last talk was the kind that I had this time with Anders and a couple of the product teams from around the company. I was really just guiding the discussion, with Anders leading and peppering all of us with wonderful, insightful questions. I had 20+ slides with overview, pictures, details and recommendations, but I only showed 4 of them (3 of pictures and 1 of recommendations). My inability to get through all of the slides didn't matter: Anders got it all. He was interested in some of what I had to say, but also brought up points I'd never considered. What I think should be in our platform was changed by just listening to Anders ask questions. I could feel the synapses in my brain realign. It was amazing.
Things will absolutely change in our platform because of the desires that Anders expressed during my presentation. What a privilege.
Sunday, Jun 6, 2004, 6:47 PM in The Spout
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.
Saturday, May 29, 2004, 1:01 PM in The 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.
Saturday, May 29, 2004, 12:54 PM in The 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 : ).
At the time, we didn't have a name for the granularity that could be accurately scheduled and, since I haven't read Mike's book, I don't know how he defines the term "inch-pebble," but from now on, that's what I'm going to call it and if that's different from what Mike called it, well, then he'll just have to update his definition in his next edition. : )
Friday, May 28, 2004, 6:05 PM in The Spout
Great Minds...
Here.
I love Luke's RSS Aggregator [1]. He loves my book. For what more could a man ask?
[1] I just tried the lastest RSS Bandit -- don't get me started...