Face 2 Face Games and Lawrence Whalen

I was in Providence, RI last week for a business trip, and had a few hours
after my meeting before I had to head to the airport. I did a Google search
for game stores near my hotel in downtown Providence, and discovered The
Gamekeeper (unrelated to the Hasbro/WOTC/Game Keeper).

I immediately started talking to the friendly owner, Lawrence Whalen, who gave
some good recommendations on games to buy for a friend who’s birthday was
coming up (Age of
Steam
and
Carcassonne: Hunters and
Gatherers
). Walking
around his small store, I got a bit curious since I saw a nice computer setup
with dual monitors, and I noticed that he was running Adobe Photoshop with
some artwork. Turns out that Lawrence doesn’t just run a game shop, he also
has a game company: Face 2 Face Games. Their
first major project is a re-release of the Sid Sackson Classic I’m the Boss. I personally haven’t played the original, but it looks like a good family
game that might have some mass-market appeal.

Strange Bug in ASP.NET Sample SOAP request/response generation

I encountered a strange bug in how ASP.NET generates sample SOAP
request/responses in .NET 1.1 (this may be the case on 1.0 as well – haven’t
tested). Take a look at this very simple web service, that includes a header:

using System.Web.Services;
using System.Web.Services.Protocols;
using System.Xml.Serialization;
namespace TestHeaderWS {
    public class MyHeaderType: SoapHeader {
        public System.Xml.XmlElement AnyThing;
    }
    public class TestHeaderService: System.Web.Services.WebService { [WebMethod][SoapHeader("MyHeader")][
        return: XmlElementAttribute(Namespace = "")] public string DoSomething() {
            return null;
        }
        public MyHeaderType MyHeader;
    }
}

Now point your browser to http://localhost/TestHeaderWS/TestHeaderService.asm
x
, select the
DoSomething operation, and take a look at the sample SOAP request displayed.
You should see something like this:

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Header>
        <MyHeaderType xmlns="http://tempuri.org/">
            <AnyThing>
                <DoSomethingResult xmlns="">
                    <string>string</string>
                    <string>string</string>
                </DoSomethingResult>
                <string xmlns="">string</string>
            </AnyThing>
        </MyHeaderType>
    </soap:Header>
    <soap:Body>
        <DoSomething xmlns="http://tempuri.org/"/>
    </soap:Body>
</soap:Envelope>

Notice how messed up the sample response is – for some reason, it is embedding
what actually is the result XML (DoSomethingResult) in the header. There are
two triggers to cause this bug (fyi, the service appears to actually work
properly, so this isn’t a big deal).

  1. There needs to be a header with generic XmlElement member.
  2. There needs to be a return: attribute on the operation that has an empty (“”) namespace qualifier. Change this namespace to “foo”, and you’ll see the proper sample response. Strange.

Spring Camping at Devils Lake

We took the short trip to Lincoln City, OR this
weekend for some yurt camping at
Devils Lake. Tent camping in
the spring in Oregon is always a risk (unless you like lying in mud), so
rather than stay home we’ve started exploring the various state parks that
offer yurts
. Hardly roughing
it, but we still cook outside, make s’mores by the campfire, and explore the
waterways in our canoe. I also took some pictures
with my new Nikon Coolpix 2500 digital camera.

Devils Lake was much more interesting than I expected. The fishing was great –
we landed 6 decent size hatchery rainbows (all catch and release with the
exception of one poor guy that didn’t survive a hook swallow – we gave him to
our camping neighbors).