Sunday, November 30, 2008

Can't Download Purchased Content From Xbox Live?

Problem: On my Xbox I canceled a content download (like the Gears of War Flashback Map Pack). Now the download doesn't show in my history and my redemption code shows as invalid when I try to resubmit it.

Solution: Log on to your Xbox Live account's Purchase History page: http://marketplace.xbox.com/en-US/myAccount/PurchaseHistory.aspx. Find the purchased content (in my case the "Flashback Multiplayer Map Pack") in your history and click "Add to Queue." You'll be able to download it now.

Tuesday, November 25, 2008

Book Review: More Effective C#

More Effective C#: 50 Specific Ways to Improve Your C# by Bill Wagner. ISBN 0321485890

This is a follow on to Bill’s other book, Effective C#, an amazing work that I reviewed on Slashdot when it came out.

More Effective C# continues in the same style as Bill’s first book: short, concise articles around a specific topic you’ll need to pay attention to when figuring out how to write the best C# code you possibly can.

Bill starts off with a deep dive into Generics and some of the many subtleties you need to consider. He points out things like considering how you write generic code in base classes, genericized algorithms, and working with generic interfaces. Bill moves through other broad categories including LINQ, C# Design, and enhancements in the 3.0 release of C#. There’s also a great section on multithreading in C# which hits some great points in this very arcane but critical aspect of development.

This book definitely isn’t a tutorial on C#, but I’d say that it’s critical for all devs regardless of experience, to read through.  I’d also say, although Bill will likely disagree with me, that many of the tenets he puts forth can apply to folks working in other languages on the .NET platform. Even VB devs can learn some high-level concepts from reading through this book.

I can’t recommend this book enough. It’s right alongside Jon Skeet’s C# in Depth and Bill’s Effective C#.

<Disclaimer>Bill Wagner, the author of this great work, is a friend of mine. I got the book for free as a review copy, but not from him. Neither those facts, nor the $0.25 Bill slipped me, have any impact on my review.</Disclaimer>

Monday, November 24, 2008

XBox Problem: Games Not Saving After XBox Upgrade

Problem: XBox games aren't saving after XBox upgrade. I ran through the new XBox experience upgrade a couple days ago, then found that my Halo 3 games weren't saving. I'd have to completely restart the campaign after shutting down the console. Restores to the last checkpoint were working fine when I'd die in the session, but starting a new session reset me back to square one. Sucky.

Solution: Clear the XBox disk cache. Go to the system blade, then memory, then drill down to your hard drive.  Press X, X, Left Bumper, Right Bumper, X, X. You'll be asked if you want to perform maintenance on the drive. Answer yes. The system will clear cache from the disk which solves the problem. NOTE: All game updates will be deleted, which means you'll have to reload them, but that's only a tiny hit for fixing the problem!

Saturday, November 22, 2008

My First Week At My New Job: Telligent

As promised in my farewell to Quick Solutions post, here's a separate post about my new job: Working as a Program Manager at Telligent Systems.

When it came time for me to leave QSI there was really only one place I looked. I opened a conversation with Telligent because I knew a number of the folks who worked there (Leon, Dave, and Dan), and I knew of a lot of other folks there. I knew the folks at Telligent were incredibly sharp and extremely engaged in the community. Furthermore, conversations with Dave and Leon cemented my impression that Telligent approaches development in a vein similar to my own philosophy. Finally, during interviews everyone was open about where the warts in their environment were, and they were looking to get those warts solved.

My kind of place.

I started Monday, 11/17, in a role as a Program Manager. I'm having a bit of a career shift since I'm getting out of the direct line of hands on keyboard for delivery, but I'll be keeping some involvement on the technical side. We're still working out exactly what my areas of responsibilities will be, but it looks like taking over the web services for Community Server will be one step.  I'm also helping with something near and dear to my heart: testing. I'll be helping refine Telligent's pre-delivery testing criteria and toolset which means I'll be playing lots with things like Selenium. I get to work closely with Dave on this which is a huge benefit for me because I've wanted to work with him for about 50 years or so.

As with any first week at a new job, it's been quite a firehose. I'm learning whom to ask what questions of, where to find various pieces of information, and starting to understand what the roadmap looks like. (And it looks wicked cool! Bwaaahaaahaaa!)

So far I really like the culture. Lots of openness, lots of great coordination with remote teams, lots of communication. I've already seen practical examples of how upper level leadership has their head screwed on straight which only cements my initial impressions.

Overall it's been a pretty good week!

(Plus Telligent uses Exchange, not Lotus Notes. That's the real reason I left QSI.)

Sunday, November 16, 2008

Book Review: Essential WCF For .NET 3.5

I am waaaay behind in posting this one, but here you finally go:

Essential Windows Communication Foundation (WCF): For .NET Framework 3.5by Steve Resnick, et. al. ISBN 0321440064

This book’s very well written and does a great job of explaining a lot of the features around WCF. I like their approach to topics, starting out with basics and evolving from there. For example, right off the bat they do a solid job of showing a service hosted entirely in code, then do a comparable service hosted in IIS. All differences are clearly laid out with some good rationale for either implementation.

This same approach continues through the book, which is something I’m always appreciative about: give me options with clear explanations of why they’d apply, then let me choose which one fits for my environment. The authors even lay out a number of tables throughout the book showing options and alternatives – like the supported features of bindings table in chapter 4.

It’s a solid book for newcomers to WCF or experienced folks looking to brush up on the deltas as WCF moves to .NET 3.5.

Thursday, November 13, 2008

Last Day at Quick Solutions

Tomorrow is my last day at Quick Solutions, Inc. Over the last nearly two years I've had an amazing time working in QSI's Solutions group with some of the brightest, bestest folks in the Heartland region.

Why am I leaving? One reason, and one reason only: I live in Beavercreek, a 'burb of Dayton. QSI is in Westerville, a 'burb of Columbus. This map explains it visually:

That's 166 miles round trip, which is three hours of wearing my car every day if weather and traffic cooperate. At the height of the gas price crunch my monthly gas bill was over $500. That hurt, but the worse hurt was the loss of three hours a day from family time.

My family and I spent a significant amount of time looking for a place to relocate to in Columbus to cut the commute, but the end result was five months of frustration.  We just had too many moving parts in our lives to make a relocation feasible, and there was no way I could continue spending three hours a day driving back and forth to QSI.

QSI's been an amazing place to dock my laptop over the last year and a half. As an aspiring crusty old fart (I've been in the workforce for a loooong time), I can easily and confidently say that QSI is the second best job I've ever had. (First place goes to my 11 years fixing radar and computers while flying on AWACS radar planes.)

My peers at QSI's Solutions group are unparalleled for their involvement in the developer community, which was the main reason I went to work with them. Members of the QSI Solutions group have spoken at EVERY .NET code camp or conference in the Ohio and Michigan area for three years straight, and they've been involved in a large number of events outside that area. QSI Solutions folks presented at six of the 24 sessions at the last Central Ohio Day of .NET; that's 25% of the sessions with a QSI dude or dudette up front showing their great technical chops.  QSI's Solutions folks have presented at nearly every .NET user group in the Heartland district at least once, and in many cases multiple times, over the last several years.

Simply put, if you're at a .NET event of any sort in the region, you're very likely to see a QSI Solutions member attending or presenting. There's no other company, consulting or otherwise, that comes even close to this amount of passionate community involvement and the technical chops to be recognized as thought leaders.

I am awed by the skills and accomplishments of my peers at QSI.  Simply awed. I was fortunate enough to work on several ground-breaking projects with a few of the Solutions folks, and there are a bunch of other folks I wish I'd had the opportunity to work with. I learned many things from many people in Solutions, and I'll greatly miss that interaction.

My managers at QSI earned my respect time and time again on issues I count as fundamental deal-breakers. Empower your people to learn. Give them the confidence to say "I don't know" because that builds credibility with your clients. Encourage them to say "That's wrong" as long as you're helping them to follow that up with "Here's a realistic alternative." I left a company previously because management didn't live up to these kinds of values; QSI exceeded those expectations in every way.

Sure, there are some rough spots at QSI. Every company or group has warts and you're deluded if you think otherwise. None of those rough spots at QSI was a reason for me leaving. Not one. Every issue that I had at QSI was a challenge I felt could be overcome because I worked for, and with, amazing folks. As I said at the top of this blog, the sole reason for me leaving is the commute.

I'm moving on to a position with another great company, and I'll be starting on Monday, 11/17. I'll leave news of that for another post because I really want this post to focus on Quick Solutions.

Be clear on one thing: If I lived in Columbus I'd be staying at Quick for a long, long time. Many companies profess to value their employees. Many companies profess to be smart about business. Very few actually live up to those promises -- and Quick is certainly one that does.

If you're looking for a great place to work, I can't recommend Quick enough, either on the Staffing side or in Solutions.  The bar to get in to the Solutions group is high, but they're an amazing, elite group of folks I'm awfully proud to have worked with. I'll miss 'em all. 

Thankfully they're all community groupies so I'll see them all over the place anyway.

(PS: Actually, this whole blog post is a complete lie. I'm leaving Quick Solutions because they use Lotus Notes and Notes sucks.)

Wednesday, November 12, 2008

CodeMash Session List Posted

The CodeMash session list has been posted at our Google Group!

The sucky side of this is that we had to drop submissions by a lot of friends of ours. We had over 300 submissions for 60 slots. That's a tough, tough job to pare that monstrous list down. Good friends, good smart friends of mine didn't get selected, and that hurts.

The good side of this is that we've got an amazing list of sessions and presenters. Uncle Bob Martin. Mary Poppendieck. Richard Campbell and Carl Franklin. Jesse Liberty. Jim Weirich.

And keep in mind that our Precompiler on Day 0 (Wednesday) has a crapload of great tutorials from folks of the same expertise. Whoof!

Go register!

Monday, November 03, 2008

.NET University Schedule Posted

Jeff put up a great site for the various regional events: Start A Fire.

Check out the schedule for the 8 November .NET University event!

Usability 101: Lessons From Odd Places

I spent last week on a Disney cruise vacation and found a usability lesson in a odd place: a coffee machine on board the ship.

I drink a lot of coffee. I have ever since my first winter while stationed in Anchorage, Alaska. Go figure. Coffee urns for large coffee service are well-known, common equipment to a lot of folks. They're simple and have had the same basic features since dinosaurs roamed: a large pot to hold the coffee, an optional heat source to keep the coffee warm, and a simple spigot to dispense the coffee.

The spigot's operation is simple: pull a lever, a valve opens, and a stream of coffee starts to flow. Release the lever, the valve closes, and the stream of coffee stops. It's a simple mechanical gadget that's worked well and is familiar to all regardless of which continent you're on, or what the local language is. You don't need a manual, you don't need a waiter to help.

The Disney Magic, the ship we were on, had some nice-looking coffee machines which appeared to be completely automatic: they looked like they were plumbed in to a water source and were complete with grinders and a brewing system. I never saw an attendant pour in any coffee from another source. The benefit to the Disney crew of this for an operation serving thousands of cups of coffee is pretty obvious: fire and forget. Load up your coffee beans or grounds, ensure the water and electricity is on, then simply monitor to make sure everything's fine.

The usability issue? The spigot. Some engineer thought it would be a great idea to make the valve system electronic instead of mechanical. Then they could set an amount to automatically dispense when someone triggered the spigot.  8 oz. cups are pretty standard, so the engineers could set the dispensed amount to 7.5 ounces and everyone would be happy.

Except 99% of the coffee-drinking populace is used to holding that spigot open with their hand instead of simply whacking it a bit to get the stream flowing.

The results I saw were really amusing, even when it happened to me: Want to simply warm up some coffee in your mug? Not such a good idea, because the dispenser pours out 8 oz., regardless. 4 oz of lukewarm coffee + 8 oz of hot equals 12 oz. total, which is 50% more than an 8 oz. mug will hold.

Stack overflow.

Worse yet, someone's initial instinct in such a situation is that the valve's stuck, so why not work the spigot handle a couple times? Whoops, another 8 oz. of coffee flowing out. Good thing the coffee machines had a plumbed drain, too, otherwise there'd been a tidal wave of coffee flowing over the floor.

Lesson Which Should Be Learned: Think carefully when you're trying to bend users' experience in a concept that's ingrained and accepted for a long time.  We cherish thinking outside the box, and we love seeing UIs or system flows which give us a better experience than we've suffered through previously -- but sometimes some things are better left untouched.

(I also had a rental car which had a fuel gauge that was backwards. Every fuel gauge I've seen since starting to drive a long, long time ago has its Empty side on the left and its Full on the right. The Pontiac G6 we had showed Empty on the right and Full on the left. That's a dangerous change since someone's quick visual glance might lead them to believe they're at 7/8 of a Full tank when they're really 1/8 away from walking...)

Subscribe (RSS)

The Leadership Journey