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.
Sunday, Dec 23, 2007, 10:13 PM in The 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 laptop PC for $200 + shipping?
Wednesday, Dec 12, 2007, 10:20 AM in The 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.
Then, just to be "cheeky" as my Australian friends say, I composed simple responses in English and translated them to Italian before posting them, you know, pretending I'm smart and international and such like. : )
To be somewhat confident I wasn't asking him for improper knowledge of his dog, I did the Italian to English translation on the translated text and rearranged my English it bit when it wasn't quite right.
All in all, I'd say it worked out pretty well, although I did get some flowers from his dog the other day...
Monday, Dec 10, 2007, 9:00 AM in The 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?"
I can see his point, but I don't see how decades of giving food and support to the 3rd world has helped them to become part of the 1st world. Maybe access to the world's information so that they can educate themselves and learn how to solve their own problems might work a little better. It's worth a try at least.
Friday, Nov 30, 2007, 10:35 AM in The Spout
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:
x^2 +2x + 2 + 3x - 4x^2
it translates into:
If I right-click and choose Simplify, I get the following:
If I right-click again and choose Plot in 2D, I get:
If I've got an equation that I want to solve, I can enter it:
and then right-click and choose Solve for x and get all the possible solutions:
This even works if you have multiple equations with multiple unknowns, which means this is good through at least 8th grade Algebra. Wahoo!
Tuesday, Nov 27, 2007, 7:09 PM in The 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?
Tuesday, Nov 27, 2007, 6:18 PM in The 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.
Obviously, Unix already does just this and I'm jealous. If I had settings stored somewhere I could understand and apps that actually used XCOPY deployment, I wouldn't have to uninstall at all -- I could just delete.
These are the thoughts you have uninstalling VS05 and VS08b2...
Monday, Nov 26, 2007, 12:04 PM in The 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.
Here's the problem. Yesterday, I started reading the most excellent C# 3.0 in a Nutshell online, but the "Text Zoom +" button didn't increase the font size nearly enough for me to read on my giant LCD monitor. So, I started pressing Ctrl+ on IE7 and the text got bigger, but it didn't wrap the text inside the window, instead giving me horizontal scroll bar. This confuses me, because IE wraps text just fine when the window is resized or when the text size changes -- why can't it wrap when the content is scaled?
Anyway, FireFox rescales things very nicely and made my online reading very pleasant.
Monday, Nov 26, 2007, 9:06 AM in The Spout
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.
Monday, Nov 5, 2007, 12:33 PM in The 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?
In the past, I've floated the idea of sending donations in their names to various charities, but that seems kind of like a cop out, as there's no real thought or effort in it. Plus, it's not every much fun to open.
This year, I thought I'd give an hour of volunteer service and then write a little story about it for them to read around the tree in our absence. I'll pick an organization that fits their personality. For my step-mom, I might walk dogs at the local Humane Society (she likes dogs). For my Grandmother, I might volunteer to drive some elderly shut-in on her holiday errands (as I do for her when I can when I'm in town). Then, step-mom and Grandma can hear about how the hour went and share it with whoever they're opening presents with by reading my description out loud. This way, someone gets something they need, I've put in the effort to show my loved on that they really are loved and there's a little something under the tree.
Thoughts? Has anyone done something like this before? Does anyone have any ideas for Portland-area organizations that can help me get my volunteer hours in this holiday season?
Monday, Oct 29, 2007, 6:12 AM in The 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? : )
Sunday, Oct 28, 2007, 8:21 PM in The 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.
Saturday, Oct 27, 2007, 11:49 AM in The 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 MS's 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. : )
Because my current boss cares deeply about making me as successful as I can be, we've talked about me having direct reports. I've done it before and I believe I could do it effectively again, even remotely (I've run successful remote development teams all over the world). However, because of the strong MS bias, I told my boss that I'd only take direct reports that had bought into the downsides of being remote, even if they're local. If I'm not perceived as effective because I'm remote, then by extension, neither will anyone that works for me. My boss hasn't pushed it since our conversation on that matter and frankly, I don't expect to get any reports, but he's surprised me before, so we'll see. : )
Tomorrow: Misc tips & tricks.
Friday, Oct 26, 2007, 11:01 AM in The 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." : )
That's not to say that I wouldn't love a better solution for remote telepresence then I've got. I've tried a number of experiments over the years and right now Scott Hanselman and I are trying yet another one. For me, a basket of laptop that my team can carry to meetings for me that's running Skype for a/v sharing (it works through firewalls and does great noise cancelation), with a high quality pan/tilt/zoom camera I can control from my end is the killer app for remote employees. Scott's got more of a mobile IvanAnywhere mindset, but between the two of us, we hope to cobble together something that closes 80% of the remaining gap I can't close with the communication tips I've listed above.
Tomorrow we'll discuss the career consequences of working remotely at Microsoft.
Thursday, Oct 25, 2007, 7:37 AM in The 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.
Tomorrow I'll focus on remote communication during meetings.
Wednesday, Oct 24, 2007, 11:53 AM in The 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!
Tomorrow: Can You Communicate Effectively From Home?