In Which Statements Are Made Against #gamergate

It took me a really long time to write this post. I’ve re-written it several times. Every time I try I can’t quite figure out the best way to put together the things I want to say, so I give up until I think about it again a few weeks later. So instead of putting them together, I’ll just put them apart:

There are many subjects about which I have opinions, of both great and small importance, but I generally don’t feel inclined to share them because, really, who cares? Opinions, assholes, you know how it goes. However in being a member of the games industry, and the spotlight being on the problems women face in the games industry, it seems that I would be complicit in the problems to stand by silently. Of course to really contribute to the solutions will require me to pay attention, learn from women in the industry and apply that knowledge where I can, both as a person and in the games that I help create. But as a starting point, I will simply share my thoughts here publicly, in my tiny little sphere of influence. Maybe that will help, and maybe it won’t, but at least it’s not nothing, and it’s a start.

I think Anita Sarkeesian’s Tropes vs Women in Video Games series is great, informative, and entertaining even though it can be uncomfortable to watch at times. It can be hard to acknowledge that fan service in your favor comes at the cost of marginalizing, exploiting, or excluding over 50% of the population.

If nothing else has come out of the outcry and scandal, it has sparked and encouraged conversation in the media, in the office, among friends and peers, etc. As a result, I have a marginally better understanding of the issues that women face in the industry, and for that I am grateful.

If you approve of or have expended any number of calories in support of the #gamergate “movement” or the harassment of women online or in the physical world, I suggest you take some time to sit quietly and seriously consider your priorities. Bias in gaming journalism? Seriously? I’m a part of the games industry and I don’t even care about bias in gaming journalism. If you’re looking for a cause to champion that might affect real meaningful change in the world, might I suggest girls’ education.

Posted in Game Dev | Tagged , | 2 Comments

Mark of the Ninja AI article published in Game AI Pro

Over a year ago, I submitted an article to a new AI book project by Steve Rabin (of AI Game Programming Wisdom).  That article was on the sensory/detection system we used in Mark of the Ninja, and the book has now finally been published!

Game AI Pro Cover

Game AI Pro: Collected Wisdom of Game AI Professionals

See Chapter 32. How to Catch a Ninja: NPC Awareness in a 2D Stealth Platformer. It was a lot of fun to write and an interesting experience getting the article ready for a print publication.

One thing the writing process really drove home for me was that I am (and I assume most people are) absolutely abysmal at remembering who did what and what ideas were whose on a long project. If it weren’t for Subversion logs setting me straight I probably would have taken credit for things I definitely didn’t write myself. I was quite meticulous about fact checking all of my statements after that, and I gave my coworkers the opportunity to review the article before final submission, so if they let something slip, well… they had their chance!

I’ve only had the opportunity so far to read a couple of the other articles which were in the same section as mine for review purposes, but there’s some really interesting stuff in there, and I’m sure far more in the rest of the book.  I’m looking forward to receiving my author’s complimentary copies to look through the rest of the articles, and also to show off to friends and family.

Posted in AI, Game Dev | Leave a comment

Pocket IRC is Open Source

Seeing as how the Windows Mobile platform for native C/C++ applications has effectively been killed off (at least for consumers) by Windows Phone 7 which runs only managed .NET applications, it seems like as good a time as any to release the code and maybe somebody will find some use for it or learn something from it. [I wrote this post in 2010!]

Continue reading

Posted in C++, IRC, Programming, Win32, Windows Mobile | Tagged , , , , , | Leave a comment

Mark of the Ninja: Best. Game. Ever.

Mark of the Ninja was recently released on Xbox Live Arcade for the Xbox360, and even more recently for Windows on Steam. I was one of the programmers on Ninja, my first project at Klei Entertainment.

I’d just like to take the time to point out that from Oct 24-25, 2012, Mark of the Ninja was the highest rated PC game… ever.

Metacritic's PC game releases sorted by score, circa Oct 25, 2012.

Metacritic’s PC game releases sorted by score, circa Oct 25, 2012.

Mark of the Ninja ranked #1 at a humble 97/100, beating out such gaming giants as Half-Life 2 and Out of the Park Baseball 2007.

Continue reading

Posted in Uncategorized | Tagged , , , , | 1 Comment


I wrote this little story many years ago.  It was originally posted as a section on the EFNet #winprog channel FAQ.  The oldest copy of the FAQ page that the Wayback Machine has is 2001, so it’s at least that old, if not a bit older.

Since then, I’ve been occasionally curious to see if it ever gained any traction, and so I plug a quoted section of it into Google to see how many hits I get back of pages that have copied it. Doing this just now returned 169 hits. Rarely is it attributed, even to my nickname at the time, and since I didn’t really put any effort into spelling out who wrote it, that’s not surprising.

So now that I have a blog and stuff, here’s me taking credit: I wrote it! Here it is again, formatted for the 2010s, a 10th anniversary edition of sorts.


by Brook Miles

One day a Novice came to the Master.
“Master,” he said, “How is it that I may become a Writer of Programs?”
The Master looked solemnly at the Novice.
“Have you in your possession a Compiler of Source Code?” the Master asked.
“No,” replied the Novice.
The Master sent the Novice on a quest to the Store of Software.

Continue reading

Posted in Programming | Tagged , , | 1 Comment

Memory Sand – Distributed, Peer-to-Peer, Redundant Data Storage In A Can

Time for a bit of futurism.  I would like to propose a technology, and I will call it Memory Sand, you heard it here first!

This is an idea I had quite a while ago, and maybe you or other people have had the same idea or are working on it already, but in the event it’s at least a moderately original concept, I figured I’d throw it out there.

Memory Sand

Computer memory is getting smaller and smaller (or in the case of your typical stick of RAM, we’re packing more and more capacity into the same size device).  SD cards and the like in particular are mostly plastic cases and giant metal contacts wrapped around a tiny chip.

Similarly, data storage has come a long way, we have fancy things like Peer-to-peer protocols, and distributed redundant data storage formats.

Let’s say you took the wrapper off the memory chip and just had the chip, and you let that chip talk to other chips it was in contact with around it, and you have some peer-to-peer software running on each chip, talking to all of the chips around it, and power distribution going on between them all (or provided by the container).  The chips aren’t so much chips any more as they are grains.  Then you pour a few million of them into a jar that provides the power and external interface to whatever computer system is using the memory.  Voila, a jar of memory sand.

Need more storage capacity? Pour in more sand.

Some of your memory sand failing? Pour in more sand.

Need to copy the data? Pour half of it out into another jar, and re-fill both jars with blank sand, the redundancy software in the chips will re-replicate the data out into what is hopefully a complete set in both, assuming you have a high degree of redundancy and error correction to begin with (which of course you do).

Working The Kinks Out

So that’s my great idea.  Now somebody just has to work out a few minor details, like how do you power all of the grains, and how do you make sure all of the grains have a good chance of having a communications link to their surrounding grains, and then you’re set.


Posted in Uncategorized | Tagged , , , , , , , , , , , , , | Leave a comment

Twitter OAuth in C++ for Win32 – Part 3 – Updating Twitter Status

Part 1 covered the OAuth process at a high level, and Part 2 went over the example code in detail.  Here in Part 3, we’ll finish things off by adding support for doing OAuth POST requests, enabling you to update your Twitter status.

The example project and source files are available on Google Code; C++ code for Win32, with a Visual Studio 2008 project file.

OAuth POST Requests

Doing a POST request isn’t much different from doing a GET request, but there are still a few important things that you need to get right and, like all things OAuth, if there is a single character out of place somewhere it won’t work.

Continue reading

Posted in C++, Twitter, Win32 | Tagged , , , , , , | 19 Comments