I spent ~20 hours at work between 6 PM Friday and 10 AM Sunday this weekend. Good times, and by "good" I mean "banging my head against a wall". A decent majority was spent trying to correctly consume our cross-proc communication system, a custom thing which is not documented and may not even be functional. It's sort of like deciding how long you'll wait for the bus before giving up and walking - there's some magic point at which you need to stop trying to understand the semantics of the ServiceID property and instead just stick in another abstraction layer and make a TCP implementation because you know you can get that to work in finite time.
Related: A fun feature of the way the CLR loads assemblies is that if an assembly got dynamically loaded (i.e. Assembly.LoadFrom) and that assembly file is not in the search path, when you deserialize an object of a type from that assembly, you'll get a serialization error even if that assembly is already loaded. It's possibly the most confusing thing ever when code in foo.dll is failing because it can't load foo.dll. A simple fix is to add a handler to the AppDomain.Resolve event and just blindly return your own assembly.
I was pretty proud of myself for my final play in the following game. Down by 34 points with 2 minutes left on the clock, but my rack is pretty good and there are a couple of obvious bingo lanes open. I found one in 51 seconds but I imagine there are more.