Saturday, December 31, 2005

Saint Cupcake

Just a short note to recommend a cool place to any Portlanders out there. Saint Cupcake is pretty well exactly what it sounds like--a cupcake shop! A friend brought a bunch of wonderful cupcakes to our holiday soiree yesterday night, and they were great. Beautiful bright colors with sprinkles or coconut... Yummm, cupcakes.

Anyway, if you can check the place out, you definitely should!

Wednesday, December 28, 2005

Review: Montana 1948

A friend of mine with a more literary bend (he has his MFA and teaches English at a local college) loaned me Montana 1948, by Larry Watson. Not my typical fare, but he recommended it highly and pointed out that it was a quick read (it took maybe three hours).

After reading it, wholeheartedly agree with his assessment--what an excellent book! The prose was lean and tight, with pearls of description that brought rural Montana to life through just a few pen strokes. The core of the story is about family relations and the prejudices of a small town. I was impressed by how little time and text it took Watson to establish the complex relationships between the half dozen different family members. He brought them to life in a direct way that I admire.

As the afterward in the edition I read noted, it is also an excellent example of fiction which addresses a difficult subject--specifically the abuse of Native Americans--without preaching. It comes in to tell a story, builds the story effectively, and in the course of that reveals the injustice of the not-so distant past. Montana 1948 is an excellent novel, and I'm going to be looking up more of Watson's work in the near future.

Wednesday, December 21, 2005

A question of character

Stepping back to take the broader view of my story has revealed things I never expected. I backed up to try and find my way around a couple troublesome spots, but in the process unearthed some important motivations for two of the main characters. Some of this existed in very vague form previously, but now I see how I need to crystallize those elements, bring them out clearly for the story to make sense.

I've come to these realizations while filling out a character worksheet that one of my critique group partners passed along. To be honest, I haven't been a huge fan of those types of things before--sometimes it just feels a little too much like "follow step 1, 2 and 3 to a great novel!"--but these questions were definitely worthwhile. Since I don't recall the exact source, I'm not going to post the whole list, but here's a couple that have already strengthened my novel tremendously!

  • What is he afraid of? (I knew part of this, but discovered an entirely new fear that dove-tails nicely with the plot of the novel)

  • What polarizing events are in his childhood?

  • What is the inciting incident which starts the story in motion FOR HIM?
I've filled out the whole sheet for the protagonist and am starting on the primary "villain." I'm really excited about the changes that I've got to make in the novel now!

Sunday, December 18, 2005

CSV RFC

Hmm... all acronyms in a post title. Not sure exactly how I feel about that.

In any case, at work I'm busy creating a file import utility. Part of the requirements was to import Excel generated CSV (comma separated value) files. Seems simple enough, but as it turns out Excel has a number of peculiarities about how it exports that particular format. And nowhere on Microsoft's sites could I find an exact explanation of what they do export.

This all stirred memories of going through a similar rigmarole a couple years go, searching for a CSV spec that just plain didn't exist. But now the story had a happier ending. Although it didn't top out my searches, I did eventually stumble on RFC 4180. This is exactly what I'd been searching for, laying out all the slight peculiarities I'd seen mentioned elsewhere about the format. Plus, now there's a published document to point third parties when describing the format in which they should send data.

The RFC is only at the Informational stage, but it's nice to see someone trying to get more standardization around a long-used, poorly-documented format.

Friday, December 9, 2005

One step forward, two steps back...

This December, I'm stepping back for a while from actively editing my novel, Dreams of a Shaper. I've been revamping a section of the book, ripping out and rewriting about five chapters worth to try and fix some plot issues. However, having brought the new chapters to my critique group, it was apparent that I'd missed the mark. I thought I knew how to fix the section, but it seems like the changes slipped back into similar problems.

For a couple days I was pretty glum about it, but with some motivation from my lovely wife I'm getting excited again. I've realized that I've got more development work to do--both on the characters and the world they inhabit. Some things I know in my head haven't translated onto the page, and the critique group's "gentle" prodding has revealed areas that are hazy even to me. I thought I had the whole thing wrapped up neat as a bow in my mind, but apparently that wasn't the case.

I'm don't know the extent of the plot changes I'll be making, but I do know that the book will be richer, stronger and more fulfilling (to me and to my readers) because of the time I'm taking to back up, rethink and clarify.

Thursday, December 8, 2005

SoapExtension and debugging

On with the technical arcana!

Today I was working on adding e-mail notification to one of our web services when an exception is thrown. We have plenty of other examples of this in our system, but they all involve the global.asax file's Application_Error(). This is a problem because as is clearly indicated in this MSDN article:

A Web application can be comprised of multiple XML Web services, however the Application_Error event within the Global.asax file cannot be used for global exception handling.

The recommended alternative is to write SoapExtension. The instructions are pretty decent for how to get it set up, but once I'd created the class and made the necessary web.config changes, I couldn't hit a breakpoint in the ProcessMessage(). Then I stumbled across this article, which buried near the end had my answer:

Debugging a SOAP extension can be a bit different from how you might normally debug a Web service hosted in ASP.NET. ASP.NET uses the DefaultWsdlHelpGenerator.aspx page as configured in machine.config to display test pages for your Web services. These test pages can be used to invoke your WebMethods, but the test harness does this by making HTTP POST requests to the server rather than HTTP SOAP requests. SoapExtensions only work with SOAP requests, and thus any requests to your Web service made using the default test page will result in your extensions not being used.

I had been using the test pages, and as soon as I changed over to hitting the web service through a SOAP call, all was well with the world.