Jul 25, 2012ArticleThe making of Warcraft part 1Before Warcraft became a legend, it was a risky DOS-era experiment. This is how it actually began.
Jul 24, 2012ArticleScaling Guild Wars for massive concurrencyThe Guild Wars scaling trick most developers never think to use: record everything, replay it, and break your servers on purpose.
Jul 23, 2012ArticleDetect client disconnects using named pipes in C#Detecting named-pipe disconnects in C# sounds easy until nothing works. Here's the fix.
Jul 23, 2012ArticleError handling using forever-loopMost error-handling code is messier than it needs to be. This odd pattern cleans it up.
May 03, 2012ArticleReducing perceived latencyPeople hate waiting, even when an app is technically fast. These perception hacks make software feel dramatically quicker.
Apr 06, 2012ArticleWriting Server and Network Code for Your Online GameBuilding online game servers is harder than most teams expect. These GDC notes cover the mistakes that bite first.
Dec 22, 2011ArticleInstalling firewall exception rules programmaticallyWindows firewall rules in installers are more painful than they should be. This is the low-code workaround that saved the day.
Nov 10, 2011ArticleYour new() is not my new()One mismatched `new()` can turn a clean C++ app into a memory-corruption nightmare. This is the trap and how to avoid it.
Nov 04, 2011ArticleUsing transaction rate-limiting to improve service reliabilityOne small rate-limiting change can stop a service meltdown before it starts. This is the reliability fix worth stealing.
Oct 30, 2011ArticleA better way to update SQL stored proceduresThe SQL stored procedure update trick everyone uses can quietly break production. Here's the safer pattern that avoids the outage.