Thursday, January 16, 2014

This morning when I was walking from the bus stop to my office, a guy asked me if I could spare a couple bucks so he could go and buy a coffee and some food. "Nope, I can't," I replied, "but we can walk over there together and I'll buy you some coffee and something to eat."

He accepted my offer, so we started walking over there together. Along the way, he asked me a couple times if I could just give him $5. I told him I don't like to carry cash, but I'd buy him some coffee and food.

As we walked up the street, a car parked next to us. I think it was a guy going to work at a nearby construction site. My companion stopped.

"Are you coming?" I asked.

"Maybe this guy can give me some money," he replied.

"C'mon, I'll buy you some coffee," I urged. But he wasn't willing to come with me.

"All right, I'm going to work then," I said. And I turned and left.

I guess he wasn't hungry after all.

Thursday, December 5, 2013

I love the winter weather

It's gotten really cold in Tacoma. I love it.

Thursday, June 20, 2013


Many years ago, I went to see Batman in the theatre. There's one scene where the Joker says, "This town needs an enema".

"Aha!" I thought, "that's how you pronounce 'enigma'."

Many years later I learned it's not.

Suddenly a lot of things started to make sense.

Monday, February 18, 2013

I've been cutting back a lot of good things out of my diet: mainly meat, eggs, and dairy. That's put a kink into my cooking, to say the least.

But I figure Valentine's Day is a special occasion, so I returned (much like a canine to his regurgitation) to my bad habits and made some sticky buns for my wife.

From Valentine's Day Cinnamon Buns

I've been playing with cinnamon buns for the last year or so, and have found they offer a high return on investment. They're not nearly so difficult to make as they look, and almost everyone loves them.

There's some room for variety with cinnamon rolls: I generally make way too much caramel and turn them into a sort of a caramel bun. But recently I've been making a simple butter frosting and serving them that way instead.

From Valentine's Day Cinnamon Buns
Probably my favourite variation is to put raisins in them, although Ames isn't such a huge fan. One interesting twist I tried was chopping a couple apples finely and rolling bits of chopped apple into the cinnamon spiral. That worked out rather well.

I use the simple cinnamon bun recipe I found in A Century of Canadian Home Cooking. The buns are chewy and soft, but they don't age well and feel stale within a couple days. Not like that's generally a problem.

We got up early, made some coffee, and ate fresh hot cinnamon buns. That was a great way to start the day.

From Valentine's Day Cinnamon Buns

Sunday, December 9, 2012

Baking Day

It's only been fairly recently that I realized Americans really don't do butter tarts. You'd think I'd've noticed before now: since I moved to the States I've only seen and eaten butter tarts when I've been home visiting. Apparently they're a Canadian treat, who knew?

If you're not familiar with butter tarts, they're a delectable caramel confection, much like a southern pecan pie, but not as gelatinous. The filling is mainly butter and sugar. When I was growing up, they always had raisins in them, but they're not raisin tarts: the raisins are more of an adjunct than a main ingredient. The end result is a sort of caramel tart with a buttery, slightly gooey center.

From Baking day

Butter tarts aren't for the faint of heart. These little guys are pancreatic death bombs. If you've got blood sugar problems, or if diabetes runs in your family, or if you know someone with blood sugar problems, or if you've ever heard the word "pancreas"; you should probably avoid these guys like the plague. They'll kill you.

But today I was going to be deserted by wife and children for the day, so I decided to do some Christmas baking. And what says Christmas to an ex-pat Canadian, like fresh butter tarts? So I took out Mum's butter tart recipe, got my French press going, put on Christmas with the Academy, and settled in for a baking day.

The first order of business was baking some bread. I've experimented with bread off-and-on for the last four years: I've had some success with yeast breads, but sourdough hasn't been quite so easy. I began a new sourdough starter with the dregs of some beer I made last month, and it's been doing all right. We've made a couple things with it, and last night I decided to make some bread. It was looking pretty good this morning, having fermented all night, so into the oven it went.

From Baking day
It's not amazing bread, but it's the best sourdough I've been able to make yet. I think the problem is that I'm not letting the dough rise sufficiently after I shape it into loaves. I'm pretty good about letting it rise basically as long as it takes, but once I shape it I tend to throw it into the oven. I'm going to experiment with that a little more in the future.

Bread done, it was time to make tarts. I've never made tarts before, of any kind at all. I was planning on using a muffin tin to bake them, but Ames showed me this pan:

From Baking day

I said, "Oh! I didn't know we had a tart pan."

She responded, "This isn't a tart pan."

Not wanting to betray my ignorance, I merely nodded knowingly. I have no idea what kind of pan that is, and am too embarrassed to ask.

At any rate, I took our not-a-tart-pan and started assembling tarts.

From Baking day

The first batch didn't turn out the best. I made two rookie mistakes: first, I over-filled the tarts so that the centers overflowed the shells and left a real mess on my pans.

From Baking day
Second, I let them sit too long before I tried to remove them from the pan. This meant the sugar hardened into a sort of cement, and I ended up tearing several tarts apart trying to get them out of the non-tart pan.
From Baking day

So I made another batch. This time I greased the pan, carefully measured out a smaller portion of center per tart, and removed them while they were still dangerously hot. The result: I got a decent pan of tarts.

From Baking day
From Baking day

It was frankly pretty nice to taste something so like home. I'd forgotten how great these little guys are. All told, I made something like 30 tarts, and most of them are still intact. I think I'll need to make another couple dozen before Christmas.

Butter tarts out of the way, I got working on dinner: Chicken and Pastry.

From Baking day

Yeah, today was a good day.

There's still a lot of Christmas baking to do. I've not made Stollen yet this year, and I'm planning on at least one batch of ridiculously over-caramelled cinnamon buns. And it seems like I haven't made a pie in years.

But today was a nice way to get into Christmas.

Wednesday, December 5, 2012


I've decided on my favourite pizza toppings. By far, I prefer plain cheese pizza. But if it's gotta be topped, my favourite is pineapple, black olives, green olives, red onion, and jalapeno. Go heavy on the jalapeno. And if you add slices of a garlic clove, it really does get just the tiniest bit better.

Thursday, November 29, 2012


Banner is an ERP system for higher education. It's owned by Ellucian, and enjoys a huge market share.

I work in a Banner school; I'm in charge of Identity Management on our campus. An awful lot of the data we use in the IdM system(s) comes from Banner, so I've been interacting with the system since I've been here. We've been working on implementing BEIS (Banner Enterprise Identity System) for the last several weeks: it's an add-on to the Banner system to allow interaction between Banner and IdM systems via SPML. I thought it might be worthwhile to document some of our challenges and strategies here.

The first thing Ellucian's people tell you is that BEIS is not a turn-key solution. It's really more of a framework and/or API on which you build your solution. So there's significant work to be done implementing BEIS, at least some of which requires some development effort.

The basic idea behind BEIS is to use an Observer pattern so that your IdM system(s) register as Observers of the Banner ERP system and receive notifications of changes. This is absolutely the correct strategy for keeping the ERP data in synch in the IdM, but the implementation details can be a little complicated.

BEIS is based on Oracle Streams. I've worked with Streams a lot in the past: it's impressive what Ellucian's people have managed to get Streams to do for them. The idea behind Streams is that it's an event-based mechanism (like a trigger), but it doesn't happen inline like a trigger does. So a Streams event doesn't have to complete before the transaction is considered committed. So you can think of Streams sort of like a non-blocking trigger.

From the IdM point of view, BEIS basically consists of three parts:

  1. The RA (Request Authority) generates SPML requests. This is conceptually the database, but that's a bit of an oversimplification.
  2. The PSP (Provisioning Service Proxy) acts as an Observer to the RA. The PSP receives SPML requests from the RA as SOAP calls. It extracts the SPML from the SOAP request, validates it, and then extracts a UDC (Unified Digital Campus) document from the SPML. UDC is yet another XML schema.
  3. The PSP has a Provisioning Service Target (PST). Each PST consumes UDC documents, translating those documents to actual changes to the IdM.
From the DBA's perspective, this isn't very accurate: the DBA is a lot more concerned with the RA than with anything else. But from an integration point of view, really only the second and third parts (PSP and PST) matter.

BEIS used Oracle Streams to capture changes in the ERP that need to be sent to the PSP(s). Streams can be a little quirky, but I've become rather fond of it as a technology. When I was a DBA, we used Streams to create real-time reporting replicas of transactional databases under the ERP. I don't think I ever saw Streams get more than ten seconds out of synch, although I saw it crash a few times. At any rate, the data flow looks something like this:

  1. Streams captures a change to a table that's being monitored
  2. Streams sends the change (via a couple different queues) to the RA
  3. the RA wraps the change in SPML, then in SOAP, and sends it to each PSP that is registered for that kind of change
  4. each PSP extracts the UDC document from the SPML + SOAP request and forwards it to the PST
  5. the PST parses the UDC document and fills the request with the IdM datastore

The RA side of things is DBA stuff, it's not terribly appropriate at the moment. But once the RA has been been set up, there is a lot of work that needs to be done to get a PSP and PST working with IdM.

Ellucian provides a sample PSP that runs as a Java web-app. The sample web-app comes as a WAR file and deploys nicely into Tomcat, or presumably any other Java app server. The WAR file provides three basic parts:

  • an in-memory datastore to use as a test environment
  • a very simple web UI to see UDC data in the in-memory datastore
  • a SOAP servlet to receive SPML requests and apply them to the default datastore
According to Ellucian, the sample web-app is supposed to be used as a starting point for a real-life PSP. In theory, a developer should be able to implement the interfaces for the PST appropriately for their own IdM system, wire their implementations into the appropriate application contexts, and recompile the web-app into a WAR, et voila! you're in business!

We didn't find it was that easy, but we have made it work. I thought it might be worthwhile to share some of the challenges and work-arounds we found in the process. This will take some time and space to document. I guess I'm going to have to write a sort of miniseries here...