Toxic Toothpaste

OK, maybe not “toxic”.  How about “allergenic”?

I always used to wonder why in the world I got canker sores all the time.  They got particularly bad when I was sick or stressed, but even when I was well-rested and stress-free I would often get them.  As soon as one would heal I’d get another, and it really was unpleasant.

It turns out I’m sensitive to Sodium Lauryl Sulfate (SLS) an “inactive ingredient” in most toothpastes that causes it to foam up nicely when you brush.  Apparently a small but nonzero percentage of the population react poorly to SLS, and canker sores are one of the more common reactions.

It’s difficult to find commercial toothpaste brands that don’t use SLS (although you have to look very closely at the packaging to find it listed) but there are a couple of brands that are SLS-free.  I use a Tom’s of Maine brand that has fluoride (don’t tell the Fiendish Fluoridators)…

… but no SLS.  Ever since I’ve switched to that brand, I haven’t had any problems.  Recently I ran out and had to switch to an SLS-containing brand.  Immediately the canker sores returned.  As soon as I switched back, they went away.

So if you have problems with canker sores or mouth ulcers, try switching to SLS-free toothpaste and see if that helps.  It sure did for me!

Tags:

Logorama

I won’t comment about the Oscars (since I didn’t watch them) other than to say that the fact that Logorama won the best short film category is awesome.

At least for now, it’s available through its homepage (slow, though) and these links:

Part 1

Part 2

Tags:

Service Broker Update

I’m finally finishing up the Service Broker RPC implementation at work.  I’m not 100% done, but I can see the light at the end of the tunnel finally.  As usual, setting up the initial implementation isn’t that bad — it’s linking it into every other aspect of the system where you start to see problems.

The devil is truly in the details.  Now I’m exhausted from two straight weeks of fighting this fire, and I’m sure I’ll be right back at it Monday, trying to finish the last hanging details.

Wish me luck!

Tags: ,

Close Dog

I’ve already written about Katherine’s reaction to having her four lower teeth extracted (“I want glue teeth“).  Lately she’s been a bit more OCD than usual — it comes and goes, but at the moment she really wants cupboard doors closed and pots centered on their trivets, etc.

Robin was privileged to see the newest manifestation of this yesterday.  Katherine was in the office with one of her teachers, working on programs, while Robin was working on the computer.  Also, Aurora (Rora), our female Sheltie, was in the office as well.  And she was panting — likely due to the fact that with all the floor lamps on in that room as well as the computers it turns into a reasonable facsimile of an Easy Bake oven.

This canine behavior, though, was apparently unacceptable to Katherine, so she expressed her objections forcefully:  “Close dog!”  “I want close dog!”  “Yes close dog!”

I’m not sure whether Robin took the dog out of the room or if Rora just settled down and stopped panting, but apparently the problem was solved without the use of duct tape, so all was once again well.

Tags: , ,

So I Rewired It…

One of Katherine’s more annoying recent habits is to flip off the light switch in our office.  That wouldn’t be so bad, except that the switch is a half-hot that controls some, but not all, of the outlets in the room.  My webserver and my own computer are not on it (although the monitor is) but the main email computer and the one Robin uses for her work are on it.

So after about the fifth time Katherine killed power to Robin’s computer this past week I decided to rewire the switch to a flat plate and remove the control over the outlets.  This was a pretty trivial change compared to some of the work I’ve done in our basement over the past couple of years, but it was pretty satisfying.

So far Katherine hasn’t made any comments about the lack of the switch — we were out of the house enough yesterday that I’m not sure she noticed.  I’ll be interested to see her reaction when she finally figures it out — I hope it won’t be to go over and shut down the computers manually…

Tags: ,

Keyword Interface for Conversation Package

Following up on my previous articles on integrating Aaron Reed’s Keyword Interface extension with Eric Eve’s Conversation Package system for conversations (part 1 and part 2), I’ve packaged up the interface code as an extension and submitted it to the archive, so it should be showing up there shortly.

The code is a bit different from what was presented in the articles, due to some changes required because of minor issues with new versions of the extensions it builds upon.  The extension should support both Glulx and Z-code text coloring.

Thanks to Strainer for providing me the kick in the pants I needed to get this done!

Edit:  Due to an apparent bug with the OS/X version of Inform where it perhaps adds the author’s name and the extension name together before comparing against the 51-character limit, I’ve changed the name to “Keywords for Conversation Package”.

Tags: , ,

Hoosegow Wins!

Congratulations to Jack and Ben for another win!  The excellent Hoosegow defeated a deep and strong field to take the $1000 prize in the JiG Casual Gameplay Design Competition.  Congratulations to the other top finishers as well!

The top 4:

  1. HoosegowBen Collins-Sussman and Jack Welch
  2. Fragile ShellsStephen Granade
  3. Dual Transform — Nigel Smith (actually Andrew Plotkin)
  4. Party FoulBrooks Reeves

Tags: ,

Work Overload

No update today! Catch you on Wednesday!

Tags: ,

More Service Broker

After a two-day period of intense hacking, I’ve got the basic architecture of a replacement for our messaging engine working in Service Broker.  It’s fast, lock contention isn’t an issue, and I’m very hopeful that we can not only use Service Broker to replace our messaging engine, but also to reduce our dependence on external apps that poll the database for changes.

Service Broker is not particularly difficult to understand, but getting the syntax right can be tricky.  I ran into several minor stumbling blocks, which I was luckily able to get over quickly:

  1. I did not specify the “no encryption” option on the conversations I opened, so initially messages weren’t being sent due to the fact that I didn’t have a master key set up for the database in question.
  2. My first cut at implementation used the “fire and forget” pattern, where the initiator terminates the conversation immediately after sending.  This is a problem because if the far side needs to return error information to the initiator, it can’t, since the initiator has already jumped ship.  The fix for this is to let the target terminate the conversation and to put a little activated stored procedure on the initiator side to handle any error responses.

After getting past these issues, it was smooth sailing.  I expect to be able to implement the routing logic today, after which it will just be a matter of cleaning it up for inclusion in our software.  We could potentially be running with it in about a week, at least in its 1.0 version, particularly if I go with straight text for the RPC messages rather than have to mess around with XML serialization.  If I were using C# it would be a no-brainer to use XML, but the options available under C++/MFC are less than stellar.

Tags: ,

SQL Server Service Broker

Sorry for the late update; I’ve been feverishly working on a new project at work, using SQL Server Service Broker to replace our older interprocess messaging and database notification system.

Service Broker is a very cool piece of technology, and since it leverages the ubiquity of the database (everyone that needs notifications has connections to our server) we can end up eliminating a huge amount of code by implementing it.  We’re also likely to gain speed, as it will eliminate the single-point-of-contention queue table and the manual polling logic that we were using before.

I’m almost ready to roll with my second proof-of-concept exercise — this one demonstrating a stripped down version of my proposed architecture.  If I can get it to work the way I suspect I can, we’ll be ready to forge full speed ahead to implementation, and eliminate a code structure that ’s been a thorn in my side for almost 10 years!

Tags: , ,

The Quern is Digg proof thanks to caching by WP Super Cache