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.
Thursday, Jan 5, 2006, 9:27 AM in The 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.
Google Mobile Search (XHTML): required me to enter "movies <zip>", but once I did, showed me a nice list of movies (in random order) along with running times and a rating (although I have no idea where the ratings come from), the genre and the maturity rating. Clicking on a movie showed me a list of times by theater, an address and a phone number. Once I save the URL into my smart phone favorites, this site could be handy...
Fandango Mobile: crashed when I entered my zip code.
Hollywood Mobile: asked for a zip code, then showed me a list of movies. Clicking on a movie didn't show the theater closest to my house, so that dropped it from my list of potentials.
Metracritic Mobile: shows movie reviews, but doesn't allow me to enter a zip code to show movies near my house.
Moviefone Mobile: can find movies by movie or theater in a cute tabbed interface. However, instead of showing me all the movies, it made me pick by category. Once I picked a category and a movie, it showed the local theaters and times.
IMDB Showtimes & Tickets: until this review, I’ve been using IMDB for my movie times. It's designed for a desktop browser (they don't have a mobile version I know about), but for a given zip code, you get all the movies, the IMDB rating, the maturity rating and the local theaters. You can also choose to look at the results by theater and easily change the day (e.g. tomorrow's movies) or sort by theater. There's a lot of scrolling around on a phone, but before this review, it was the one I used.
Of all of the sites, IMDB has the most capability, but it's awkward on the phone. I think I'm going to see how the Google mobile movie search stands up to regular use.
Sunday, Jan 1, 2006, 9:21 AM in Fun
A Quote With Which To Kick Off The Year
"Health nuts are going to feel stupid someday, lying in hospitals dying of nothing."
--Redd Foxx
Happy New Year!
Thursday, Dec 29, 2005, 11:34 PM in The Spout
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.
Anyway, that's why most indexes suck. Sorry. I think you should read my books cover-to-cover, memorizing as you go, eliminating the need for an index anyway. : )
Thursday, Dec 29, 2005, 8:22 PM
"Conjure our spirits in a magical language called Lisp"
Even the first 10 minutes of the 1st lecture of the MIT lectures on "Structure and Interpretation of Computer Programs" is amazing.
"In Computer Science, we're in the business of formalizing 'how to' imperative knowledge" aka "process."
In the first 5 minutes, I've already implemented my own square root function, which works surprisingly well:
class Program { static double MySquareRoot(double x) { double margin = 0.10; double g = x / 2.0; while( System.Math.Abs(g * g - x) > margin ) { g = (g + x / g) / 2.0; } return g; } static void Main(string[] args) { double x = 44523.0; System.Console.WriteLine("sqrt({0})= {1}", x, System.Math.Sqrt(x)); System.Console.WriteLine("MySquareRoot({0})= {1}", x, MySquareRoot(x)); } }
I can't possibly believe that I would've understood the implications of the lecture as a freshman, but now, it's like Moses and the stone tablets. Priceless.
Thursday, Dec 29, 2005, 2:43 PM in Fun
George Carlin's Incomplete List of Impolite Words
DISCLAIMER: Obviously, this completely violates George Carlin's copyright, but I purchased the $80 CD box set and it wasn't on there, so I feel like I'm owed. Also, the audio is in RealMedia (.rm) audio format, whose player may have been the world's most aggressive piece of mainstream software before spyware became a plague to rival locusts and frogs falling from the sky, but a quick batch processing pass with GoldWave on the one computer in my network with a RealMedia audio codec installed and I've got the MP3 version. Finally, this is completely work unsafe and you shouldn't even think of looking at this web page at work, let alone listening to the file in question.
I can't believe that after all these years, I still find George Carlin's Incomplete List of Impolite Words amusing. It makes Tom Green's Pet Names for Genitalia seem like a poem you'd write on a mother's day card. For your grandmother. On a dialysis machine.
Wednesday, Dec 28, 2005, 11:04 AM in The 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.
My preferred technique for building consensus is what I'll call "the big mess." The idea is you get the team (or a representative sample of the team) into a room and you ask the leading questions, e.g. What are we trying to accomplish? How do we get there? Who does what? How does that fit into the bigger picture? How do we involve folks outside the team? I call this technique "the big mess," because that's how it starts and it only gets better through discussion and debate, led by the PM. One nice thing is that it's usually a lot faster than holing yourself in an office, because you don't have to make all of the planning decisions yourself (sometimes you don't make *any* planning decisions), although you better be a fast hand at keeping track of the team consensus as it builds and playing it back periodically to make sure everyone's staying in sync (Oliver Sharp turned me onto MindJet's MindManager software for this task). One downside of this technique is that it keeps the decision makers on the team from doing anything else while you're hashing through the mess, but the upside of this is that they're not off pushing into a bunch of different directions.
As a tweak to "the big mess" to make it a bit less messy, I like to have a small proposal to seed the process. It's always easier to start a discussion with folks telling you what they don't like about an existing set of ideas then to start with a blank sheet of paper. If this "seed" comes from my mind alone, I stop myself from holing up in my office for days by giving myself only the hour before a mess meeting to prepare such a seed. I can mitigate some of the mess with a seed that I'm willing to dig up, but I actually make things harder if I show up with a fully formed tree that needs chopping down before the team is happy (see "the engineering way" of building consensus above).
If I want to show up at a mess meeting with a seedling, I can spend more time nurturing my budding consensus with a bunch of pre-meeting 1:1 meetings with the decision makers on the team to get their take. This only works if I'm able to come up with something that takes the majority of folks' concerns and ideas into account and if I circle back with folks on refinements to the things we discussed before in the pre-meeting meeting. In this way, things are still a mess, but it's the PM that deals with a large part of it up front.
Ideally, if you have a pre-mess mess (my name for the collection of pre-mess-meeting meetings), you can show up at the mess meeting to merely tweak and ratify, but this is a rare thing indeed. If I were you, I'd be prepared for the mess and use pre-mess discussions as a way to inform how you lead the discussion.
Friday, Dec 23, 2005, 10:34 AM in The 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:
- Milestone Goals
- What we did
- What we learned
- What's next (goals and activities for the next milestone)
This lets folks give feedback on several levels, i.e. did we pick the right goals, did we do the right things, how do we apply what we learned, what should we do next, etc. It also gives them lots of places to tell them how their own work and requirements fits in with ours so that we can make sure we stay in sync.
For these kinds of presentations, you know you're not having them regularly enough if management has to ask for one or if you can't put one together in a day or two. You want folks to see you communicate proactively, not reactively.
For folks on the team, I like to send around weekly (or near weekly) status emails:
Goals
- goal 1 (100% done)
- goal 2 (50% done)
- etc.
Summary
In the last week, we ...Plans
In the next week, we'll ...Tasks (from the bug database)
csells 452 12/13 Post PM Skill #1: Communication
...
I also like to post each status mail internally so that folks can skip a particular status or come into the team later and still get caught up quickly (a SharePoint site is excellent for this).
Often it's the case that team members won't read all (or even most) of your status emails. Don't let that stop you from sending them! At the very least, it helps you keep your head around what's going on and what needs doing. Also, it's comforting for team members and management to know that status is available even if they don't read the emails, because it lets them know that someone is watching the details. Plus, when someone asks a question that's answered in the status, I tend to reply with the status email as an attachment, letting them know that someone's all over things.
Thursday, Dec 22, 2005, 12:00 PM in The 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."
A PM's job is to ship the right thing on time and on budget, while keeping your team happy. There's a lot in this sentence, so let's break it down:
- "ship" -- first and foremost, the job of any PM is to start with a goal, either self-imposed or assigned, and ship an implementation of that goal. If you don't ship, the rest doesn't matter.
- "the right thing" -- unfortunately, shipping ain't enough, you also have to ship the "right" thing by some definition of "right." This is the most ambiguous part of the job, because any one goal can have many, many implementations and even the goal might not be the right one. My personal definition of right includes getting buy in from your team, your management, your partners (internal and external) and your customers (internal and external). You're allowed to do whatever makes all those folks happy (and good lucking finding the intersection : ).
- "on time, on budget" -- this is all about execution. As a PM, it's your job to lead your team through planning, scheduling, resource management and delivery.
- "keeping your team happy" -- this one is hardest for many engineers, because it involves keeping your team happy, focused and productive. There ain't no rule book for this one, although I find a useful technique to be something widely known as "management by walking around." Many folks won't tell you how they really feel in a meeting, but if you can catch 'em on a phone call or in their office, 1:1, they'll give you their real "gut," which is vital to making sure that folks are happy, motivated and on the right track.
I've got more opinions about other vital PM Skills, which I'll post as the spirit moves me, but hopefully at the rate of about 1/day 'til I'm dumped the entire contents of my brain, making room for other things. : )
Tuesday, Dec 20, 2005, 10:29 AM in Tools
New Workspace Link for RegexDesigner
Here.
The nice folks at GotDotNet have decided in their infinite wisdom to move all of the workspaces to a new hierarchy w/o forwarding the URLs and then leaving a message behind indicating that such a thing is temporary to keep users on their toes:
"Operational Troubleshooting in Progress
The Gotdotnet team is aware of the current site operational issues and is working on a solution. Thanks for your patience."
Anyway, due to popular demand, I've updated the GotDotNet workspaces link to the RegexDesigner and other tools. Enjoy.
Tuesday, Dec 20, 2005, 9:47 AM in .NET
MSDN Mag: Top Ten UI Breakthroughs In WPF
It goes without saying that MSDN Magazine doesn't let the authors pick the titles (who can forget Don's The Active Template Library Makes Building Compact COM Objects a Joy? : ), but what Ian and I had in mind here was 10 things that would surprise you when learning WPF and getting them in your face right up front. Enjoy.
Sunday, Dec 18, 2005, 11:35 AM in The 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.
Bush sics the NSA on us w/o due process, starts a war so he can look tough for his dad and continues to dismiss global warming as a myth. Why aren't we impeaching his ass?
Friday, Dec 16, 2005, 5:51 PM in The Spout
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.
Friday, Dec 16, 2005, 8:52 AM in The Spout
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?!?).
I'm so excited to get the book in your hands, that I've asked Mike to check in the files he's got checked out so that we can post the code samples ASAP. It'll still be a while before the book is in your hands, though. We took 22 months to write it, but it's the 3 months it takes to print it that always sticks in my craw the most for some reason. : )
Wahoo (2)!
Friday, Dec 9, 2005, 8:34 AM in Tools
Windows Template Library (WTL) 7.5
It looks like my old friend Nenad Stefanovic is up to his old tricks with a new version of my favorite native framework, the Windows Template Library. This will go nicely with ATL Internals, 2e, which Chris Tavares is finishing up for Brent and me.
Wednesday, Dec 7, 2005, 11:13 PM in .NET
Updated WPF book code samples for Nov CTP
Here. I've uploaded the samples for "Programming Windows Presentation Foundation" ported to the November 2005 CTP. The change notes doc is coming directly (so far, it's a pretty darn short doc).