Cards Against Deqmandity

My two very good friends Amanda and Declan are getting married, and to celebrate, Janice and I throwing them a pre-wedding party. (No “bachelor” party tropes here!) By the time this post is published, the party should just be wrapping up, and my favorite surprise should already be out of the bag. Declan and Amanda love games, and Janice and I wanted to have a game-themed part to the party.

GnuPG Dice!

Many months ago, I wrote a little GnuPG-verified dice CGI page for myself and my gaming group to use when resolving gaming situations over email. (Feel free to use it yourself, you can check it out here.) It’s inspired by other verified dice web applications out there. But while other scripts require you check a roll on the site itself, either by cut and pasting into a form, or by finding the roll in a list, I wanted something I could verify easily by looking at the message in my mail reader.

Multi-processor compilation in older Visual Studios

I’m working from home today due to Seattle’s OMGSNOWPOCALYPSE2012. Lamenting the lack of IncrediBuild here at home, I decided to parallelize my builds - if only across four cores instead of across the entire office. Visual Studio 2010 has an option for parallelizing C++ builds within a single project (as opposed to parallelizing the building of multiple projects, which has long been supported) in the project configuration properties under C/C++ → General → Multi-processor Compilation.

NetMon

I’ve been a Wireshark devotee for probably a decade. I’m sure I’ll continue to be a huge fan for everyday use. I had heard stories about Microsoft’s Network Monitor being awesome a few years ago at GDC, but hadn’t actually tried it out until now. I have to say, for developing custom protocol parsers (for debugging the mutliplayer game you’re working on, for example), it wins hands down. I might never write another Wireshark dissector again.

MSVC and Templates

Take a look at this snippet of code. Does it look valid to you? On first glance, it might. But if you run it through your compiler… hmm, wait.. MSVC thinks this is valid code too. template <typename A> class Foo { public: Foo() { Bar<A> b; b.method(); } }; template <typename A> class Bar { public: void method() {} }; int main( int argc, char** argv ) { Foo<char> f; return 0; } I’m sure we all know how MSVC is lax when it comes to using typename.

Fixing Git "out of memory" errors on Windows

Googling around, I found a lot of people had the same problem with Git on Windows that I did: large files (where “large” means above 350MB or so) cause “out of memory” errors. A quick look into the file causing the error, Git.pm (ugh, perl), shows the reason right away: they’re doing nice, small 1KB reads of the file blob in a loop… but collecting the whole thing in memory before writing it all out.

A look at modern DVCSs

I’ve been a user of the Bazaar distributed VCS from Canonical (the company behind Ubuntu Linux) for a while now, at least for my personal projects. When I first chose it, I had already spent some time playing with Darcs for a few small projects. Darcs got its start in 2001 with roots in the GNU Arch project. (Bazaar’s predecessor - also named Bazaar - also has its roots in Arch.

Manifest gotchas

For those of you using Visual Studio 2008, and using it’s C++ TR1 support in SP1, here’s something I wish I hadn’t spent so much time tracking down.. TR1 features only exist in 2008 SP1, but the linker will happily build a manifest to link against the pre-SP1 CRT even if you’re using TR1. Some systems (including your development machines) will have proper side-by-side library redirection from the old CRT to the new one.

©2011-2020 Justin C. Miller.   What a horrible night to have a curse.