Scott Hanselman

Best Practices for Individual Contribution

July 22, '09 Comments [27] Posted in Musings
Sponsored By

I just got an email from a GM (General Manager) at Microsoft who is giving a presentation soon about "How to be an effective IC (Individual Contributor)" and he's collecting best practices. He wanted a brain dump from me and others on tips.

Here's my exact email.

NOTE: Dear Reader, you may have heard some of these from earlier blog posts.

Hm, not sure I have enough context from your email to help, but I’ll try, assuming I understand the question. Let me know if I can help in/during your presentation.

  • Consciously manage your personal brand.
    • You work here to help the company, but also yourself. No one will manage your “personal brand” except you. How are you perceived? Do you know? Take negative feedback gracefully, and implement change. Rinse, repeat.
  • Push the Limits
    • Chris Sells told me once, If you’re not getting in trouble with your boss at least twice a year, you’re likely not pushing the envelope hard enough. Two slaps a year might be the cost for 10 successes. If you’re not moving forward, well, you’re not moving forward.
  • Conserve your keystrokes.
    • When you’re emailing a single person or a reasonably sized cc: list, ask yourself, are you wasting your time? Is this a message that 10 people need to see, or 10,000? Is email where you should be spending your time. Actively be aware of the number of people you communicate with , and the relative level of influence. Is a blog post seen by 50,000 more or less valuable than a single email to your skip-level? Only you can answer, but only if you’re consciously trying to conserve your keystrokes. Your fingers DO have an expiration date; there’s a finite number of keystrokes left, use them wisely.
  • Don’t give bile a permalink.
    • While you’re on the clock, think about what you tweet and FB. It only takes one bad link to undo a year’s work. Same goes for tweeting product launches before they’ve launched.
  • Write down what you’re trying to accomplish and hang it on the wall.
    • Make T-Shirts. Tell your spouse and kids. If you’re working towards a goal, tell people. It’ll keep you honest and it’ll motivate you. Saying things out loud help make them reality.
  • Manage Up
    • Are your commitments aligned with your boss and your bosses boss? Do you have visibility into their commitments? If not, ask for them. Make sure your accomplishments are making yourself, and your boss, look good.
  • Have a System to Manage Information Flow
    • If you’ve got 1000 emails in your Inbox, it’s not an Inbox. It’s a pile of crap. Have a system, any system, to triage your work. Any item in your inbox should be processed: Do it, drop it, defer it, delegate it. There are no other actions to take. Are you effectively managing your information flow? Try scheduling time for email on your calendar.

What would YOU send him? What are you Best Practices for Individual Contribution? I'll pass them on if they're awesome.

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.

facebook twitter subscribe
About   Newsletter
Sponsored By
Hosting By
Dedicated Windows Server Hosting by SherWeb

Virtual Camaraderie - A Persistent Video "Portal" for the Remote Worker

July 22, '09 Comments [14] Posted in Remote Work | Tools
Sponsored By

18737888 Working from my home office is nice, even when the babies are pounding on the door screaming, but sometimes I really miss random hallway chatter. The sense of folks around...stopping by your office and saying "hey, I was in the neighborhood."

Chris Sells is in the same boat. For a while we tried to build robots and even lash laptops to the top of Roomba Vacuums. We've tabled those ideas with concerns over security and battery life.

Instead, Phil (in Washington) and I (in Oregon) are trying an experiment. I'm going to be his office mate for a little while. We've each setup dedicated machines in our respective offices with inexpensive but high-res web-cams on each monitor. We'll keep them going during work hours so folks can stop by 42/3839 (his office number) and say hello. Certainly we'll mute it here and there when appropriate, for privacy.

How To Make It Less Creepy

Here are some important points to make, although it might be obvious to you, they weren't initially.

  • We dedicated a machine/camera each to this exercise, rather than using our existing machines. This is important because it reinforces the "Portal" aspect. This is an appliance, a hole in space, not my main, or even secondary computer.
  • The cameras don't point at our faces. Because that would be creepy. If he's my cube-mate, when I look over, I should see the side of his head. In both cases we set it up so we have to push our chairs back and turn our heads to see the other person. Just like a cubicle.

Steps to Making a Portal

We're using Skype for this example, but you can use your favorite Video Calling software, of course. We're NOT using Office Communicator because our machines are not on the domain and they are very locked down. Single-purpose appliances, really.

UntitledFirst, we setup local users, not administrators on each machine. We didn't domain-join the machines, and we set the users to only be allowed to run Skype using Windows 7 Family Controls.

Second, we made two Skype Users, for example PortalDude1 and PortalDude2. On each desktop we made a new shortcut in the format callto://PortalDude1 and callto://PortalDude2 and set the icons to be large. This way if the connection is dropped, anyone can stop by and start it.

Third, each user should add the other to their contact list and have only one contact.

Fourth, next, go into Skype Options and into Privacy. Set the options such that these are true:

"Only allow people who are in my contact list to contact me"

and

"Automatically answer calls from people who are in my Contact List"

and finally, and most importantly:

"Automatically Send Video"

IMG_0489These are the magic three options. With this setup, your will have one contact, you, and when you call each other the call will be auto-answered and the video will start.

Also, be sure to change your Power Options to make sure the machine doesn't fall asleep!

If you have a fast machine and good bandwidth you'll get 640x480 (DVD quality-ish) although congestion on the network and make this quality level come and go. We're still experimenting with me being VPN'ed in or not and if it improves the portal.

Related Links

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.

facebook twitter subscribe
About   Newsletter
Sponsored By
Hosting By
Dedicated Windows Server Hosting by SherWeb

Hanselminutes Podcast 171 - The Return of Uncle Bob

July 21, '09 Comments [24] Posted in Agile | Podcast
Sponsored By

Robert C. Martin My one-hundred-and-seventy-first podcast is up. Scott and Uncle Bob meet again, this time in Norway and in person. Uncle Bob tries to answer the question Are You Professional. Scott and uncle Bob chat about software craftsmanship.

Links:

Subscribe:
Subscribe to Hanselminutes Subscribe to my Podcast in iTunes

Do also remember the complete archives are always up and they havePDF Transcripts, a little known feature that show up a few weeks after each show.

Telerik is a sponsor for this show!

Building quality software is never easy. It requires skills and imagination. We cannot promise to improve your skills, but when it comes to User Interface, we can provide the building blocks to take your application a step closer to your imagination. Explore the leading UI suites for ASP.NET and Windows Forms. Enjoy the versatility of our new-generation Reporting Tool. Dive into our online community. Visit www.telerik.com.

As I've said before this show comes to you with the audio expertise and stewardship of Carl Franklin. The name comes from Travis Illig, but the goal of the show is simple. Avoid wasting the listener's time. (and make the commute less boring)

Enjoy. Who knows what'll happen in the next show?

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.

facebook twitter subscribe
About   Newsletter
Sponsored By
Hosting By
Dedicated Windows Server Hosting by SherWeb

Upgrading my Lenovo W500 to a OCZ Vertex 250GB SATA II Solid State Disk (SSD)

July 18, '09 Comments [23] Posted in Reviews
Sponsored By

It's an old metaphor I've used for years, originally stealing it from comedian Larry Miller, but it's time to use it again, this time in reference to Hard Drives and SSDs.

The difference between an SSD and a regular Hard Drive is the difference between shooting a bullet and throwing it.

Sweet wondrous universe, it is. Remember that Lenovo W500 from last week? It's a great machine, truly. The best laptop I've ever had.

Here's my Lenovo W500's Windows Experience Index (WEI) under Win7 RC.

Performance Information and Tools (2)

Note the 5.9 under Hard Disk. Here's that same machine using the PerformanceTest Disk Benchmark. My computer is the LAST one in each list, the green one, marked "This Computer." I've compared it with other people's results on the same Lenovo.

PerformanceTest 7.0 Evaluation Version

Looks like 68.6 megs/sec Seq. Read, 43 megs/sec Seq. WRite and 3.5 megs/sec Random Seek+RW.

Here's the same machine after I backed it up with my Windows Home Server, put in an OCZ Vertex 250GB Sata II Solid State Disk (SSD) and restored it.

Aside: Also available in sizes from 32 gig for $300 and up. The 256gig, while spendy, is the best deal. Others, however, prefer the 120gig for about $350 as the best price point.

The drive looks to your machine like an SATA II hard drive and it's already the same shape, so I just plugged it in and it was recognized as a Hard Drive. I didn't need to do anything special to get the computer to "recognize it."

Performance Information and Tools SSD

Notice the 7.3 (out of 7.9 possible) in the WEI now. Here's the PerformanceTest results:

PerformanceTest 7.0 Evaluation Version (2)

Now we see 110.8 megs/sec Seq. Read, 82 megs/sec Seq. WRite and 40.3 megs/sec Random Seek+RW. No physical parts to move around!

Joel Spolsky SWEARS by SSDs and told me it was the single most important upgrade one could do to take a machine to the next level. I hear he's bought new ones for his whole office. Expensive, a bit, yes, but it looks like my disk speed will be at least TWICE as fast, so you can do the math as to the number of minutes I'll save per day.

If you value your time at, say, $100 an hour, and you can save 10 min day total, that's $16. The $650 drive will pay for itself in about two work-months. It's worth your money, from what I can tell.

My Win7 laptop boots cold to password in 10 seconds now, enter password, then working desktop in 6 more seconds. Woot. I wish I had money to put an SSD on every machine. Here's hoping the prices go down.

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.

facebook twitter subscribe
About   Newsletter
Sponsored By
Hosting By
Dedicated Windows Server Hosting by SherWeb

Windows Home Server Twitter Notification Plugin

July 14, '09 Comments [7] Posted in Coding4Fun | Home Server | Source Code
Sponsored By

A while back, the very wise Brendan Grant sent me some sample code that would use Twitter to report the health of one's Windows Home Server. I always meant to update the code to use TweetSharp to talk to Twitter, as well as add some robustness for connected/disconnected scenarios, but I'm just never going to get around to it. Instead, here it is as he sent to me.

There's a REALLY vibrant community around Windows Home Server plugins and if you've got a WHS and you want it to do something that it doesn't do, I'd encourage you to jump in.

Even as I'm posting this, I'm sure there are better and more interesting implementations. However, I like what Brendan has done to abstract away the core COM-based API of WHS for use in managed code.

Here's the full program...note again that the PostTweet() method is hacked together and should use a more robust technique:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.IO;
using System.Xml.Serialization;
using Microsoft.HomeServer.SDK.Interop.v1;

namespace Twitter_Test
{
class Program
{
static string username = "";
static string password = "";

static void Main(string[] args)
{
IWHSInfo info = new WHSInfoClass();
//Register application name
info.Init("WHS Twitter Client");

NotificationCallbackClass notificationClass = new NotificationCallbackClass();
//Register notification callback class
info.RegisterForNotifications(notificationClass);

//Check current state
Console.WriteLine("Current State: " + notificationClass.GetHealthState().ToString());

notificationClass.HealthChanged += new EventHandler(notificationClass_HealthChanged);

Console.WriteLine("Monitoring for health changes. Press to exit.");
Console.ReadLine();
}

static void notificationClass_HealthChanged(object sender, HealthChangedEventArgs e)
{
Console.WriteLine("Current State " + e.Health.ToString());
PostTweet(username, password, "Your Windows Home Server's health is now: " + e.Health.ToString());
}

private static Status PostTweet(string username, string password, string message)
{
string user = Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(username + ":" + password));
// determine what we want to upload as a status
byte[] bytes = System.Text.Encoding.ASCII.GetBytes("status=" + message);
// connect with the update page
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://twitter.com/statuses/update.xml");
// set the method to POST
request.Method = "POST";
// set the authorisation levels
request.Headers.Add("Authorization", "Basic " + user);
request.ContentType = "application/x-www-form-urlencoded";
// set the length of the content
request.ContentLength = bytes.Length;

request.ServicePoint.Expect100Continue = false;

// set up the stream
Stream reqStream = request.GetRequestStream();
// write to the stream
reqStream.Write(bytes, 0, bytes.Length);
// close the stream
reqStream.Close();

HttpWebResponse response = request.GetResponse() as HttpWebResponse;

StreamReader sr = new StreamReader(response.GetResponseStream());
string s = sr.ReadToEnd();


XmlSerializer ser = new XmlSerializer(typeof(Status));
object o = ser.Deserialize(new StringReader(s));
Status status = o as Status;

return status;
}
}
}

There interesting part is the Eventing part where he makes changes in your Home Server turn into .NET Events via callbacks. Check the code for details. You can get events when Physical Disks are changed, when Backup States change, or when basically anything happens. There's a number of folks on Twitter already who have their Windows Home Servers tweeting.

If you've got, or you're using a plugin to report your Home Server status on Twitter (or SMS or whatever) leave a comment and I'll update the post! I'm sure there are better solutions than this little sample.

Here's the code if you want it, and remember, it may kill your pets. If so, don't blame me as I'll deny everything. It's a sample you found on the Internet, what did you expect?

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.

facebook twitter subscribe
About   Newsletter
Sponsored By
Hosting By
Dedicated Windows Server Hosting by SherWeb

Disclaimer: The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.