Watch those stack traces

by Damon Payne 31. October 2012 16:29

Lately I've been playing a bit of Guild Wars 2. By "a bit", I mean a little more than is healthy given how much other work I have going on at home. It's much less severe than my previous Diablo 3 addiction, but that's like saying I kicked the crack habit and only do morphine now. At any rate, I got to a point the story that seemed unpassable due to app crashes. This was incredibly frustrating because each retry took at least 10 minutes. Each time I sent technical information about the error to the game's creator, and on my last crash I looked through it myself.

TL;DR - don't expose technical details like call stacks to your users.

The non-gamers will have to bear with me for a moment.

The crash happened at the very end of the story event, while my character was using a trebuchet. When you use a trebuchet, the game camera stops following your character and takes up a fixed position relative to the trebuchet. Upon nailing the last bad-guy, a scripted story dialog would start and the game would crash.

The technical information contained in the error report wasn't precisely a stack trace but it was pretty close. The sequence of calls seemed to be encountering an issue looking for a "bone" that didn't exist, so I assume the game is using skeletal animation. There was also some vague items about camera attach, camera follow, and so forth. Figuring I'd use this knowledge to my advantage, I tried the event one more time only this time exiting the trebuchet while the last shot was in-flight so the camera would be following me when the automatic dialog started. Sure enough, I got through the event without crashing.

Popular games get hacked often enough. Web sites get hacked. Bad things happen. This time a gamer got past a bug by inspecting a call stack, but next time someone could create something that ruins characters or steals financial information.

Think about the ways you may unintentionally expose technical details of your software.


Architecture and Design | Gaming

Machine Learning in Action

by Damon Payne 20. August 2012 16:37

I have had a long time interest in Machine Learning. I can trace this mostly back to some influential people in the Metro Milwaukee area who are, as nearly as I can tell, no longer blogging. I had written a few simple things in the past, but wanted a more formal education, so I went old school and started buying books. The first one I picked up is this one:

While I don't know Python, I figured I could pick it up easily while I read the book and learned the more common algorithms. In a way, I was right. Except for some interestingly terse syntax in the Python math libraries it's easy enough for a C# developer with experience in other languages to follow. The way the author has chosen to structure data, though, makes for some brain-twisting translation issues. Lists-of-lists-of-trees-of-dictionaries-of-lists-of-matrices* might be easy to type into Matlab, but it makes for a poor mental model when attempting to describe and understand new concepts. The book has been very useful, however, and I've gotten through k Nearest Neighbor, Decision Trees, and Naive Bayes classifiers so far. I intended to keep reading the book, but also to supplement it with other material to in case I need a reality check on any algorithms in the future.

Also, in a post in the near future, I'll show the model I've developed to work with this kind of data.

* That would be List<List<Node<Dictionary<int,List<Matrix<double>>>>>> in case you were wondering. And, yes, I'm being a little unfair but hyperbole is fun.



You can't not blog

by Damon Payne 20. August 2012 16:33

I have not taken the longest break I've ever taken from blogging since I started in 1998.  This is partly due to some fun things going on in my personal life. This is partly due to fatigue.  This is partly due to a sort of "Technology identity crisis" as I wondered what was next for me. I'm not apologizing for not blogging, but I'm happy to say I have a new direction I'm heading in and it's extremely exciting. I haven't had a lot to say lately, and I haven't been contributing noise because of that.


Blog | Personal

WinJS at FVNUG this Weekend

by Damon Payne 23. April 2012 20:52

This weekend I'll be presenting on WinJS and HTML5 development at the Fox Valley Day of .NET in Appleton, WI

Do you want to build native applications in JavaScript?  The HTML5/CSS/JavaScript stack shown at Build 2011 caused quite a ruckus within the .NET and Web Developer communities. We won’t talk about Plugins vs. HTML5 too much, but we will take a hard look at how well WinJS delivers on the promises of re-using Web Developer skills for Windows 8 and making JavaScript a first class citizen in the Windows 8 ecosystem. Come to this session to explore common smart-client application techniques such as control/UI, navigation, data-binding, service consumption, and more.  XAML developers looking for a peek at the dark side are welcome.

I hope to see you there!

If you're interested, there is also a day long HTML 5 and Azure boot camp coming up too.


Technical Community | windows 8 | WinRT | WinJS

No Games Until May 15th

by Damon Payne 2. April 2012 11:32

While I don't blog or tweet about it much, I'm a gamer.  I like games.  A lot.  I'm a one-game gamer: I tend to play one game exhaustively until it loses its appeal or I've accomplished most of what I wanted to. Being one of my favorite leisure activities, this hobby tends to get in the way of productive work. When I get home and sit down at my workstation it's way too easy to click the Battlefield 3 icon instead of the Visual Studio icon.

Diablo 3 Comes out May 15th

In terms of my historical game addiction a few titles come to mind: Final Fantasy 7 for the original Playstation nearly ruined a semester of college.  Diablo 2 was an utterly obscene time sink when it came out so many years ago. I've been obsessively following the development and recent release date announcement for Diablo 3, and I have to admit I'm worried. You see, I have kids now. There's a lot going on this year and I can't just drop off the map for long enough to get my initial fix. I must, therefore, maximize my productivity between now and May 15th.

I hereby swear, before these internets, that I will play no video games until the midnight launch of Diablo 3.


Damon | Gaming

Windows 8 CP Challenge [0]

by Damon Payne 1. March 2012 11:32

Like many people, I grabbed the Windows 8 Customer Preview yesterday.  I decided, since I'm at a conference right now, to try to Live in Windows 8 and VS 2011 for the rest of the week until Monday. 

Installation over the top of the Windows 8 Developer Preview from build was quick and painless.  I chose not to log in using my Live account as I don't trust it yet (more on this choice later) and get some basic apps installed such as Metro Twit and Paint.NET.  Generally speaking, I like the look and feel of Windows 8 so far and it seems to run as well as the Developer Preview.  As a keyboard guy without a touch laptop I'm finding things like this article from Tim fairly helpful.  I'll be writing seperate articles on other aspects of Dev 11 and the apps that ship with Windows 8 Consumer Preview as I get time.


windows 8

2012 MVP Summit

by Damon Payne 27. February 2012 17:28

The first rule about the MVP Summit is that you do not talk about the MVP Summit...

I'm back in the Seattle/Redmond/Bellevue area for the 2012 global MVP summit.  Obviously what goes on out here is under NDA so I can't blog about it.  There's a lot of reasons to come out here every year: interact with the Microsoft teams who build the tools I use, connect with other MVPs I might only know through Twitter or their blogs, and recharge.

Here in the afternoon of the first day, I'm already feeling a little more myself.  Conferences like this carry a huge benefit that it's hard to put a price tag on: a chance to step back and reflect, and get re-enganged in your career and your love of technology.  I'm hoping for some serious reduction in Burnout this week, wish me luck!


Technical Community

Speaking in West Michigan on WinRT

by Damon Payne 23. January 2012 10:47

Well this is a little bit of a late notice but the details are now posted on my next talk.  On Wednesday the 25th I'll be in Grand Rapids, Michigan, talking about WinRT and the Windows 8 development ecosystem.


Microsoft shook up the .NET development community at the Build conference last year. What''s happening with Silverlight, C#, and C++? Do I have to build applications in JavaScript and HTML5 from now on? Will I be able to use familiar frameworks for Windows 8 development? Where does WinRT fit into the ecosystem? We will navigate these questions by writing code in several different languages and discussing the unique strengths of the different target platforms available to us.


If you're nearby I hope to see you there!


Technical Community | WinRT

Looking at 2012

by Damon Payne 5. January 2012 14:16
This year I’m taking a new approach to resolutions.  Rather than just make a list of opaque goals, why not try a specialized form of Gap Analysis?  Specifically: what are the differences between my life today and my ideal life? These are the things to work on.  If you don’t know what your ideal life is it’s hard to make meaningful goals.
I’ve already tackled a couple of my big ones in late 2011, namely regular exercise with the right amount of peer pressure so I can't easily get lazy and skip it.I often think about the various obsessions that occupy my time.  You’ve probably heard the saying that no one wishes they’d slept more in college.  I imagine, too, that no one looks back at their life and wishes they’d gotten more Xbox live achievements or beaten more of their friends’ high scores in Orcs Must Die.  Do I really need to watch the Lord of the Rings trilogy on Blu-Ray yet again, even though it’s so damn good?  I find that I can go periods of time focusing only on productive work.  Being productive feels great.  I love writing code for pleasure.  I love fixing clutter around the house:  I recently organized the dry goods in my kitchen and it felt like a Holiday Miracle.  Still, after perhaps 6 days of productive work, I find I must deflate and find myself still playing Battlefield at 3am or watching zombie films with a glass of cognac.  
I try to ask myself a simple question every day: what did I do today that got me any closer to any goal I have?
This could be as simple as not drinking 8 cups of coffee , writing just part of a feature for one of my pet projects, or getting some exercise. I’ve found that I literally have to schedule what I do in my off time every single day of the week or things that are important won’t move forward for months at a time.
I sometimes share my goals here, and sometimes not.  This year is a “not”.  I will say that this year is an intellectual Do or Die moment.  There’s only so long you can daydream and hold resources in reserve for pet projects before it makes sense to ease up and rid yourself of the psychological stress of things left unfinished.



Build and WinRT Talk in Madison

by Damon Payne 31. October 2011 13:34

This week Wednesday, November 2nd, I'll be in Madison, WI with my //Build conference recap and intro to WinRT programming talk.  If you were at the Milwaukee talk, I have some more WinJS goodies and more realistic example applications.  If you plan on attending please register at the Mad .NET web site:

I hope to see some of you there.


Technical Community | WinRT

About the author

Damon Payne is a Microsoft MVP specializing in Smart Client solution architecture. 

INETA Community Speakers Program

Month List

Page List

flickr photostream