A few weeks ago, Other Programmer decided to "redesign" the software change request form (which was a monstrosity that no one dared use). During the meeting where they showed the new form, I mentioned that designing such a thing would be a piece of cake in Rails. Lead Programmer asked me to teach Other Programmer how to do it in Rails (Ruby is something we want to "share the love" with soon anyway).

Time passed. We never met about it.

When it came up at meeting earlier this week, we talked about how it might be futile to do such a thing, when there was a plethora of bug-tracking systems Out There. I was tasked with finding one. That's what I did today. (That's all I did today.)

My criteria were: free, web-based, simple (ie: no BugZilla), and clean-looking. After some hours of just looking at everythinig, I narrowed the list down to about 10 prospects on that alone. ...I then tried live demos and/or found screenshots of all the contenders, and showed them to Other Programmer, who helped narrow the list down to 6. I started installing "stuff" at this point, and eliminated a couple more just on merits of being too unix-specific (like RT; yes, it does run on Windows, but I couldn't get it to work within an hour or two, and there were far too many other options to bother digging more deeply than that). So, we had four left. ...A quick meeting with printouts of screens (and armed with a little knowledge of each), Lead Programmer knocked out two of the contenders: Trac, which he thought was "a bit much", and FlySpray, which just wasn't as nice as the others. (For the record: I kinda liked both of them.)

That left two: Gemini and BugNet. Mind you, Gemini isn't "really free", but they offer it for free (well, with the caveat that "some restrictions will apply") to non-profits. ...which we are. BugNet seemed nicer-looking, and Gemini seemed more full-featured. (It's an interesting dichotomy between the eye-pleasing "Web 2.0" look and the dense Microsofty look. The former makes one feel it lacks features, and the latter makes one feel intimidated. There's a happy middle, though, and some sites capture it.)

I did a full install of both of them in a couple of hours, and created databases and test projects and accounts for each. Neither of them is a nightmare to setup, though I did run into a few brick walls with either.

Coincidentally (we weren't using this as a criterion), both were .NET programs. In fact, Gemini uses NHibernate, which we use here at work, as of last week.

We played around with both of them, minimally, and decided that Gemini looks almost as nice, has much better features (better time tracking was the one that Lead Programmer was sold on). Something of a deal-breaker for me, though, was that the text-editor in BugNet is FCKeditor, which doesn't seem to handle FFox as nicely (in fact: I couldn't get it to work in my version of FFox at all, even after a good hour of battling with it).

So: we found a bug-tracking software in a day! ...This was much faster than I anticipated. I'm slightly disappointed that it's not one of the "major" issue-tracking systems (RT, BugZilla, Trac), and I'm slightly disappointed that it's IIS-based and not XAMPP-based. ...But I think it's elegant, and it will do (more than) what we need.

I'm all proud'n'stuff.

All I need to know I learned from Wikipedia

  • The universe is pretty big. And complicated.
  • No matter how closely you look at something, there are new distinctions to make about it.
  • No matter how obscure, small, or insignificant something seems, there's someone who cares about it.
  • Opinions vary. Widely.
  • Some companies are willing to piss off hundreds of people for just one peek at their stuff--which most likely won't lead to a sale, anyway...
  • Some people are just mean sometimes, and try to ruin it for everyone else.
  • A lot of people each doing a little work (and a few who do a lot) makes a huge difference.

A Belated Political Rant

Okay, I know this message is two-plus years late, but:

I just saw a bumber-sticker that said "John Kerry: You decide, I agree." I thought this was positive, until I noticed it was alongside a whole bunch of other conservative bumper-stickers, including "Doing my part to piss off the heritic left."

This frustrates me to the point of pissing me off.

This was a common argument, back when Kerry was running: "he's wishy-washy", was the common refrain. The brunt of this complaint, however, was that he shift his opinion based on the popular opinion.

Let me restate that for emphasis:

Kerry shifts his opinion based on the popular opinion.


Isn't this what an elected leadership is supposed to do?!? Maybe it's just me, but I was under the impression that elected officials were there to represent the people. So how is it bad that a leader is influenced by her constituancy?

It baffles.

Firefox extensions

It's time to take stock of my FireFox extensions, again, since I've shuffled them around quite a bit.

  • Adblock - A completely different way to surf, and there's no turning back. It's amazing how much suckier the web is with banners all over, and you have to use this for a few weeks to feel that pain--when you use someone else's browser!
  • Flashblock - Only see flash when you want to see flash. ...An extremely rare problem with some sites that have "hidden" flash scripts that talk to one another, but it's so rarely a problem that I don't care.
  • BugMeNot - When you want to read that article that requires registration... (Not very often, but oh-so-nice when you do!)
  • Delicious - I jumped on the Delicious (bookmark site) bandwagon some months ago, and I love the fact that my bookmarks come with me everywhere (and I don't need to worry about crashes and the like)...
  • IE View Lite - (website is down at the moment...) Right click on links to "Open in IE". That's all. ...And it's terribly handy here at work, where several apps we use are "IE Only" [rolls eyes].
  • WebDeveloper - I am using this less, now that FireBug does most of this stuff... but it still has some great form-tweaking options, and a nice "View CSS" option, among other things.
  • SessionSaver - Another plug I can't imagine living without--it brings up every tab you had open the last time you ran FFox... and even restores things after a crash.
  • FireBug - "Holy Flurking Schnitt". This does nearly everything you would want when doing webdev. The only problem with it is that it makes debugging in IE incredibly painful! (And, of course, the new Beta has a "lite" version that you can plug into IE, suposedly--I haven't checked that out yet, though...) Damn. Of course, this is only for webdevs, and any webdev reading this already knows about it. ; )
...I am, of course, very satisfied with this set of plugs.

Obsession: RPGs

It's no secret that I obsess about things. That is to say, I get all gung-ho about a topic to the near-exclusion of all else, until I burn out. Then whatever I was working on stagnates... often for many months. This autumn, I burned out on code. It's time for a lull. ...I think I'll start again in earnest in January, but at a sustainable pace. : )

At the moment, I'm burning out on RPGs. Here's a list of some that I've looked (most closely) at, and a brief comment about each of them (minus descriptions--look them up if you don't know them/care):

  • Amber: This is the paragon against which all other RPGs must measure themselves. [satisfied sigh]
  • Ars Magica: I really like the idea of playing multiple characters, but the system didn't interest me at all, peeking at it. Doesn't seem worth it: you could get the effect nicely with any number of other systems. ...Plus Ars Magica is all about spellcasters, which I am not enamored with. I feel a little guilty passing on this one, since it comes so highly-recommended, but... so does HeroQuest, and you won't see me playing that, either: not my cuppa.
  • Battleaxe: Wow, amazing, amazing book. ...But it's a standard hack-and-slash fantasy game, and everyone who cares to play those plays D&D already, so why would this system ever get considered? ...Because it's free? ...How many D&D players do you know who don't already own at least five D&D books? [shrug] Laudible effort... wrong nieche.
  • Blue Planet: Okay, I own it... but wasn't impressed with what I read: waaaaay too equipment-heavy. Still, it's idea-fodder.
  • Burning Wheel: Neat! I bought this one already (actually in a case of mistaken-identity: I intended to buy Nine Worlds), and I'm surprisingly pleased. It's yet another fantasy kind of thing... but it's elegant: a simple system with loads of detail. Also a great value (as I said earlier) at $25 for two nice books. I've browsed them, already, but now I'm giving them a proper read, and finding I rather like it. As I said earlier, though: I doubt I'll ever play it. I'm still happy to own it. Great character-creation system (if a little rigid compared to, say, FATE).
  • D20: [sigh] Do I have to?!? D&D would be great, if it didn't focus so much on feats. Or levels. Or classes. Or half-baked skills. ...So that leaves... ummn... really handsome artwork? Yup. ...I still like the books: superb idea-fodder. Honestly, the books are best-of-breed in that respect.
  • Dogs in the Vineyard: I have it. I've digested it. I like it (a lot). ...but I really need to see it in action before I commit myself to it. It still seems like it could be great, though. I'm not a Western kind of guy at all, so I would play this as more of "Druids in the Vineyard" (a straightforward conversion with deserts to forrests, coats to cloaks (or staves), and guns to magical weapons), but it still seems fascinating.
  • Donjon: kinda neat, for what it acomplishes... but I'm not a big fan of dungeon-crawls, in general. I would play it, if there was interest. ...I wouldn't run it.
  • Everway: Very cool. Light, detailed, and inventive. Too bad it's dead. : )
  • Final Strike: kicks ass, for a lazy sunday night one-shot! Funny sourcebook, easy enough to learn. Interesting mechanic.
  • FATE: I adore this system--I think it's one of the best dice-based games available. I really consider this system "mine". ...meaning, when I think of running a game, this is the second one that pops to mind [cough Amber cough], and when I think about designing a game, this is the first system that I think to emulate.
  • Firefly: Like GURPS, but simpler. It still seems broken to me, and I still think multiple other systems would work better for the setting... notably Dogs in the Vineyard and FATE.
  • FUDGE: I love the mechanic. I dislike the detail. Play FATE, instead.
  • GURPS: I've seen it broken, so I would rather play something else. I've also seen it take five minutes just to calculate all the modifiers for a single roll in combat. How is that fun?!? I'll pass. ...Nice sourcebooks, though. : )
  • Great Ork Gods: A "joke" of a system, perhaps, but it's an awesome joke. ; ) Another "lazy sunday night one-shot" system.
  • Mountain Witch: a whole lot of hootin' and hollerin' over this game, and yet the mechanic is "roll 1d6. The highest roll wins". What ... the .. fuck?!? Why not just play DICELESS?!? (...I will say: I do like the "standoff" mechanic, in concept.) Still wanna play the setting? Play Dogs, but use the Code of the Samurai. Relationship dice match well to Trust, and players make their own Fate as they go. Rock on.
  • My Life With Master: This appears to kick ass, but I don't have it yet. I'll grab it early next year.
  • Nine Worlds: I just ordered it... and it sounds like it kicks even bigger ass. I'm really itching to get my hands on it!
  • Nobilis: Yum. It's not Amber... but close. And the book is just... yum.
  • Paladin: I really, really like this sytem! It allows to open-ended "super" powers, it's very, very simple, and it matches its theme effectively. I love the first half of the system especially... it starts to fade for me a bit after it goes into redemption and the penalties for going Dark. ...it seems to me it should be a constant temptation to go Dark, rather than "I'm out of Light, so I have to". [shrug] I'd have to see it in play for final judgement.
  • Polaris: I'll tell you about it when it comes in, if the spirit moves: I just ordered it yesterday... but it sure sounds spiffy. I made a character for it, once... and I loved that character, but never got to play it. ...So my hopes are (very) high.
  • Pool: Staple. I will definitely play this again, if not "as often as I can get away with it". Absolutely elegant: right to the point. 10-minute chrgen with enjoyable, serious play (as opposed to the Great Ork Gods / Risus / Final Stike kind of one-shot silliness). A gem of a game, for free!
  • Puppetland: I'm actually really itching to play a game of this! Demented and oh-so-cool. It's rules-light, and a friend has a copy, so I'll just borrow it and digest, rather than buying (though it's quite cheap).
  • Risus: Spiral of death makes this not-worthwhile, though I love the "heft" (or lack thereof) of the game. Still, I'd rather play The Pool.
  • Savage Worlds: I'm sure this would be fun, if I were a Gamist hack-and-slasher. I'm not.
  • Snowball: I actually helped playtest this one, back in the day, and really enjoyed it! ...but now that time has passed, I am less enamored with it. It's upfront about being a gimmick... it's the kind of thing you'd play once or twice, just to say you did. And I did. In fact, my chr, a crow, was perhaps the coolest chr I've ever made. Ever. But still, it's just a variation on The Pool... so... I'll just play Pool. : D
  • Sorcerer: I dunno. I didn't like it. Perhaps it's the focus on magic, again. Maybe the game seemed too gritty and negative. But it just didn't float my conceptual boat. I could get in trouble for saying as much, as it's Ron's game, and Ron is The Man. (Really: he's a genious and I love his game reviews: they always seem to resonate with what I like in a game...)
  • Soap: Lots of hype about being a cool, intriguing system. ...but I simply cannot bring myself to play a game based on Soap Operas. Sorry.
  • Trollbabe: Neat idea. ...but not neat enough to make me buy it. The idea can be captured with another system. (Paladin comes to mind.)
  • Universalis: Greatest world-building system ever... and I will always use it as such, period. (I honestly wouldn't consider running a game without using this first to develop the setting) ...now, for actual game-play, on the other hand... no. It's really less of an RPG and more of a "book-writing by consensus". ...Which is neat. ...or, it would be, if I were a writer. : D But the system is still a staple, and every gamer should own a copy.
  • Unknown Armies: Seems superflous to me with Nine Worlds around.
  • Urge: based on Sorcerer, and (IMO) quite a bit cooler... but again, it's perhaps just a bit too negative for me.
Believe it or not, I've actually looked at a whole lot more than this list, but discounted them out of hand for various reasons: a setting I don't like, too complex, or known-to-be-broken. My list is long enough that any reason to cull a system is valid!

...Which leads to the next point, which is: what are my choices? What systems will I lean toward, in the future? An enumerated list, in order of preference:
  1. Amber. (Duh.)
  2. FATE.
  3. Universalis. ...kinda. (Again: only for defining the setting.)
  4. The Pool.
But there are a number of contenders I have yet to test-drive:
  • Dogs In the Vineyard.
  • Paladin.
  • Puppetland / Final Strike / Great Ork Gods (ie: silly, light, one-shot fun)
  • My Life With Master Update: read a thorough review--decided it was too light a system.
  • Nobilis
  • Polaris (Update: bought it, read it, too weird.)
  • Nine Worlds (Update: bought it, read it, too greek!)
I hope to have all of the systems by the end of January... and to play each of them over the next year or so.

...And that's not to say I won't play anything else: I will. ...I'd just rather not. : D

Role-playing is one of the best hobbies available! It's social, it's cheap, and it really gets your imagination pumping. It's also (usually) filled with humor. There are penalties to pay for doing it (meaning it's widely considered lame by normals and it's damn frustrating when you can't play for weeks on end)... but on the whole, I'm quite happy to be a Gamer.


I've worked about 35 hours in the past 10 days, in addition to my normal 40-hour job. When I'm not working, I'm a vegetable: parked in front of the tube, reading a book, or playing Oblivion.

I could certainly have worked more, but consciously chose to break away every now and again: I'm trying dilligently not to burn out. ; )

Following through with my motto of "finish", I have, in spare time, tried to finish watching Scrubs, actually finished Oblivion (albeit using the god-mode cheat, and I was much closer to the end of the game than I thought I was), and reading my Ruby on Rails book (and actually digesting it this time instead of breezing through).

I've also come to the realization that "Finish" is more often a case of "Don't start", so I have been focusing on a few projects at work rather than taking on all of the new opportunities I see crop up everywhere. ...Without going into details, I will say that my last week or two at work has been very, very positive.

Although I would be lying if I claimed I'm not looking forward to a lighter load (which I should have in about a week), I must also admit that I'm actually enjoying having such a full schedule. ...To a point. :)

And, of course, I am refusing to let my full schedule interrupt my Sunday-night role-playing game. We're still playing Continuum, though the plan is to wind this down in the next few weeks, and move to some form of Firefly. (I'm hoping we choose Dogs in the Vineyard as a system--I just ordered the book through mail, though it hasn't arrived yet.)

And the dog is freaking out about DST ending: she's presently bugging me about supper, and she has another two hours to go. : )

Frustrating Perlism


I just spent longer than I wanted to learning how to slice an arrayref.

So, if you slice a normal array like this: @array[$begin..$end], you might want to slice an arrayref like this: $arrayref->[$begin..$end]. But that doesn't work.

You have to slice the transformed ref: @{$arrayref}[$begin..$end].

...Now we know.

A Tip

Resume key words

A clever way to avoid being eliminated by resume screening software is to include a section entitled "Also interested in", "Willing to learn", "Willing to pursue." This is especially helpful for those in industries where certifications and acronyms are common.

(Another find by way of Mr. Godin.)


When the commercial for the Little Mermaid DVD came on, she said, "We don't
need to see that commercial. Don't they know we already bought that movie?"

- Some 4-year-old Girl (found via Seth).

Dried fruit ramblings

You know, I hate packages of dried fruit with 1.5 servings. You can't eat 'em all without getting sick, and if you save them, you don't have quite enough the next time.


Buddha on a turtle's back, eating montmorency cherries!

(If he farts, and no one's there, does it make a smell?)

He's listening to Nine Inch Nails on his iPod, and snapping one finger to the beat!

(What color was the turtle's shell, before it was born?)

The Buddha is head-banging on a turtle's back, putting away half a serving of montmorency cherries!

More on RPGs

Here's a confession: I never, ever do hit points. Ever. I just declare "you killed it" when someone does damage andd the group is starting to get anxious about the combat.

There are wildly differing opinions on this, and I'm in the minority, but: I believe that it's the GM's job to keep the players alive. (And, yes, there are obvious exceptions.)

D&D can be made not to suck in one of two ways: playing it like it's meant to be played (hack-and-slash treasure-hoarding), or totally ditching the system and concentrating on the role-play. It has a wildly creative setting: it sets the imagination alight. I think it's a great way to escape, on the role-play end of things.

It's also great eye-candy, which is why I've gotten into the miniatures game. (Fucking expensive game, though.)

Other board-games are fun and much easier to arrange with people... but doesn't scratch the itch. At least D&D miniatures does, mostly.


You know, I don't think there's any such thing as a satisfied GM. Players are never focused enough, the world is never detailed enough, the system is never effective enough. The GM's lot is a lowly one.


That's my new motto. ...Rather, that's what it needs to be: "Finish".

I've long had this problem... and there might be a strength related to it that I would be squashing, should I change my ways. But I think it's time to take that leap.

"The essence of strategy is deciding what not to do." (As they say.)


Update: I finished the dishes tonight. ; )


A friend asked me

When you are GMing, do you wing it, or come up with solid plans and subject matter (then wing it if the players take a different direction) or do a combo of the two?
I wing it.

However, I spend a lot of time thinking about the game between sessions. Occassionally, I'll scribble down a few ideas, but generally I leave big decisions about the direction of the game for the morning before, and mull it over through the day. By then, I have a reasonable idea of the main themes: interesting NPCs, interesting settings, and some "plot tricks".

My current GM plans heavily, and it pains me. He spends hours each week preparing for the game, going so far as to print things out, put things in folders, prepare NPC monologues, review all the PC character sheets, etc, etc... But then when the players blow the plan, or glance at the printouts and toss them aside, I think to myself, "Why bother?!?" I feel like my GM is wasting most of his time, and I worry that his feelings are hurt because of it.

On the other hand, I've seen other GMs "wing it", where it didn't work... So perhaps it depends on the GM.

But besides that, the best sessions I've ever played (as opposed to run) were in games that were made up the hour before the game started! ...I used to be into the "independent RPGs" community. ...Generally, we were playing a new game every week. Coming up with the game world was usually half the fun.

I will admit, however, that the wing-it method does make for some awkward pauses: the group has completed the session's themes, isn't motivated to do anything, I don't feel like throwing random encounters at them, and I'm not sure what to do next.

But RPG sessions are usually so casual, that these pauses seem (mostly) to be construed as "time to grab some munchies and chat with friends I haven't seen in a week"... So there's time to think up stuff while the social aspects take over.

In my experience, that's the worst part of RPG'ing as adults: it's so hard to see one another often enough to game that it's the only time you see one another... And the temptation to just "visit" is super-strong. It wasn't a problem in school, because you saw these people nearly every day.

Anyway, I find that prep time is directly realated to frustration with the game. The more effort you put into your game, the more disappointed you are when the group isn't really "into" it. ...Most of the fun of RPG'ing comes not from the GM, but from the dynamics of the group. Let them do the work: you just facilitate.

Maslow (MAZ-lahv)

So, about two weeks ago, a co-worker was talking to me about self-actualization, and mentioned Mazlow's Hierarchy of Needs. I didn't have time, in the moment, to look it up.

Today I peeked at it. And my initial thought is: it's upside-down.

Basic needs are simple to satisfy. And as they are, it becomes more difficult to satiate everything else.

As I started to read the nitty-gritties of the theory, though, a lot of other things bugged me. ...Many of the things aren't needs, but wants. "Security of Employment" isn't a basic need, but one specific to coporate-ruled cultures (though the idea could be re-phrased to something like "social function"). I'm not sure I buy the concept of "status" as its own tier. I also found myself agreeing with the counterpoint, "Wahba and Bridwell (1976) found little evidence for the ranking of needs that Maslow described".

On the other hand, I find I strongly agree with Mazlow on one point: "the study of crippled, stunted, immature, and unhealthy specimens can yield only a cripple psychology and a cripple philosophy." (Motivation and Personality, 1987)

Ajax Scaffold on Rails with SQL Server

I was working on Rails today.

Using SQL Server isn't the nicest thing, with Rails... support is sub-par, but growing. One nastiness I ran into today was after installing ajax_scaffold_generator, having exceptions thrown when it comes to showing the list view. So... I dug around and discovered that sqlserver_adapter (part of activerecord) was recently patched to fix some pagination problems. So I grabbed the new version and put it in place:


Then you can install the package:

ruby gem install ajax_scaffold_generator

...when it's done, run (in your project directory):

ruby script/generate ajax_scaffold Object

(or whatever object you want instead of "Object".)

Very nice.


Introspective week.

[Now Playing: "Square Lamp" by esem... damn, what a fine track this is.]

I've been thinking a lot this week. About work, about quality, about ruby, about miniatures, about drawing... the whole shebang.

Work: I want to write more code. That's the long and the short of it. I'm weak at detail-oriented stuff, and I'm good at algorithms and problem-solving: I should be writing more code. I asked my boss about this today, and he supports the idea; we'll see where that goes. (To be honest, my experiences with such requests are usually taken quite seriously.)

Quality: I went to a local conference regarding the Bladridge criteria yesterday. I rather enjoyed it, though I would argue that I didn't learn anything, really. Rather, it was great idea-fodder, and allowed me some "blocked time" to contemplate how to make use of the criteria at work. ...I also considered working on a "personal criteria" for self-improvement.

Ruby: As I've mentioned, I've been pushing for it at work. There has been surprising support for it, and the lead programmer just asked me to try writing a web-page for a new project using ruby. ...My reflex was to say "no", because I wanted more time to learn it and discover best practices, but I think working on it would be an excellent way to explore the language. The first thing I went looking for was a DBASE-format library... and the first page I stumbled upon was an argument of why the writer had switched from ruby to python. ...And it's a recent article; a well-informed one. His reason, of course, was the robustness of the Py libraries out there.

Of course, this is something that will change with time. ...Or will it? ...I wonder if ruby will really be the last popular language. (Errr... last to rise to power, anyway.) I'm not terribly willing to write new libraries that are missing... I wonder if those who are willing are a dying breed. With the vast libraries available for Java and C++ on the low-end, and Perl and Python on the high-end... It will take a massive force of will to build ruby up to that level. I shudder to think how insurmountable an obstacle that will be for the languages of tomorrow.

Of course, MS has the weight to throw .NET out there, and the world will eat it. (Thank you, MaSter, may I have another?) But that's an exception.

Perhaps that's why DSL's are so popular these days... it's only in the small world of Doman-Specific problem sets that new languages have the ability to emerge.

Of course, the idea of "Very High Level Languages" may be the next big thing. Frameworks on steroids: programming languages built on today's languages. Imagine Rails, but without DHH's "convention over configuration" as a limitation: a meta-language smart enough to look at your database and figure out the schema.

Perhaps I've been drinking the MS water too much lately, since that sounds like "Visual Rails" to me.

Miniatures: Yes. Since playing miniatures with my son a few weeks ago, I've been contemplating building up my own collection. A lot. ...Obessing, really. I've decided to beef up my collection of Star Wars driod miniatures, and for D&D, I'm considering a "Devils and Blues" pool of minis... "blues" being Blue dragons. (The teams in D&D, called "Warbands", are alignment-specific, and blue dragons are LE, like Devils.) ...I'm also big on druids and constructs... but I can't quite come up with a Warband concept that seems solid enough to warrant investing in.

Strangely, my wife doesn't seem disturbed by this, and suggested I just build a collection over time, $20 a month or so. [shrug] I guess I will.

...I tried to stay the urge by installing Neverwinter Nights... but found it didn't scratch the itch.

Drawing: Okay, not much to say here. I've just thought about it a lot, lately. ...I haven't actually drawn much, however. ..A little. Enough to claim "I haven't stopped". But still, it's one of those frustrating situations where you know you should stop thinking and start doing... but something stops you. A Human curse.


For those of you who aren't watching my Flickr stream, please note that I've recently uploaded a bunch of sketches. I'm moderately proud of them.

I plan to put more up, as I do them.

A Javascript Hack (using prototype)

Javascript with Prototype is the next best thing to ruby.

Okay, okay, this is a hack and it's not readable, but I was still tickled when I got this to work:

$A($('newqueuerequest').getElementsByTagName('img')).findAll( function(img) { return (img.src.indexOf("icons/red-x.gif") > -1); }).inspect();

Translation: "Give me a list of all img tags that have a red-x."

(I'm using this to ensure all fields are validated in a form, because the validation is complex.)

Why I switched back to Prototype from YUI

While I love YUI's documentation, I just can't help but prefer this:

function checkExistingNamesRequest(name, value){ var div = 'checkExistingNames_'+name+'_container'; loading(div, "existing "+name+" names"); var myAjax = new Ajax.Updater( div, "./checkExistingNames.cgi", { parameters: $H({ name:name, value:value }).toQueryString() } ); }

To this:

var svrCheckExistingNames = "checkExistingNames.cgi"; var checkExistingNamesSuccess = function(o, n) { if(o.responseText !== undefined) { $('checkExistingNames_'+n+'_container').innerHTML = o.responseText; } } nameHandler = function(o) { checkExistingNamesSuccess(o, this.name); } var clientTest = nameHandler.bind({name: 'client'}); var projectTest = nameHandler.bind({name: 'project'}); var collectionTest = nameHandler.bind({name: 'collection'}); var collrefTest = nameHandler.bind({name: 'collref'}); function checkExistingNamesRequest(n, v){ $('checkExistingNames_'+n+'_container').innerHTML = "Checking existing "+n+" names... <img src='../icons/loading.gif' border=1>"; var test = clientTest; if (n == 'project') test = projectTest; if (n == 'collection') test = collectionTest; if (n == 'collref') test = collrefTest; var request = YAHOO.util.Connect.asyncRequest('GET', svrCheckExistingNames+"?name="+n+"&value="+v, {success: test, failure: test}); }

Which do you think is more maintainable?

(Frickin' Blogger is not meant for code, is it?!?)


I'm sorry, but I just think people are meant to die. Similarly, I believe memory is meant to be volitile. That, I believe, is a contribution to why AI has not come to fruition. Our brains are filtering systems, and computers have not learned what to keep and what to throw away.

When your memory is perfect, you--as a person--are broken. A fascinating paradox.

Ruby (again)

Well, today... I did it.

I asked the Lead Programmer if we could put our foot down and say: "From here on out, we will write for windows in C#, and for the browser in Ruby."

I was surprised I asked... I had been telling myself to hold off on asking that for a few months... but I'm not good at keeping secrets and I'm impatient when it comes to asking questions: especially questions that improve my lifestyle. So... out it slipped.

I was also surprised at his reaction. I expected him to say "No, and shut up about Ruby already, freak!" But he started by saying "that would be cool", and then arguing on my behalf, saying that "we have more Ruby experience than ASP.NET". (ASP.NET is our current alternative, not counting ColdFusion, which... well... is fine for informational websites, but not for doing actual work. And even for informational websites, it's so much more painful than Rails.) He also pointed out the fact that ... well.. Ruby is free. So it's not like it's a risky investment in that respect.

He didn't want to make a decision, but suggested I "call a meeting" with all the programmers (at least the four core programmers), and argue my point.

I've told myself I would hold off on calling this meeting for a week or two.

We'll see how patient I am with that decision.

...Man, I am such a Kool-aid-drinker when it comes to Ruby. ...And Agile. ...And OO.

Does that make me a chump? (Thanks, Andy.)

Speaking of Agile, we had another pair-programming session (actually, trio-programming, yuk yuk) today. Our code is finally starting to "do stuff". It's a scanning program, and we have it building a list of all the items that need to be scanned (for a given order). That was cool. Today we added the functionality that, when you scan one of the items, it "checks" the item off of the list.

When the program worked, all three of us jumped out of our seats, hooting and hollering.

...Made me feel like a toddler who giggles when he hits the button and the catepillar sings an out-of-tune digital song.

We (programmers) have one of the best jobs on the planet.

Speaking of the scanning software, it's actually quite cool: it talks to a table with a list of barcode patterns (because we don't know the acutal number to be scanned, we only know kinda what it's supposed to look like): we read the patterns out of the DB, run through all the items on the order, and when one of the patterns match, we mark that item as "scanned" (which does all the appropriate work, including ticking off the checkbox in the display). The RegEx includes groups, so that a Strategy Pattern can tell the Barcode object what to do with the number it scans, including all kinds of study-specific work. So something like "^6([AP])(\d{5})$" returns two strings, the first of which tells us what kind of drug it is, and the second which bottle number it is. The initial '6' is just a flag to tell us we're scanning a bottle number: we don't need to remember it. ...That's just an example: the code is actually extremely extensible.

We're all rather proud of ourselves, so far. :)


I got paid (for the first time) to write Ruby today.

A co-worker and I set up a new publications database and used Rails to get up the scaffolding for the website.

Of course, the only real "code" I wrote was to display a list of authors related to a partiucular title. I don't have the code in front of me, but it was something like:

<% for author in @title.authors %>
<%= link_to author.fname+' '+author.lname, :action=>'author_show', :id=> author.id %><%= ', ' unless author === @title.authors.last %>
<% end %>

I had to create the title_controller.rb's "author_show" method, which was something like:

def author_show
redirect_to(:controller=>'author', :action=>'show', :id=>params['id']);

...And aside from a "has_and_belongs_to_many" from titles to authors and vice-versa... that was all I had to write to get that functionality (of displaying all the authors for a title).

Of course, I'm a little disappointed that I had to put that "<%= ', ' unless author === @title.authors.last %>" in there. Really what I wanted was a ".join(', ')", but I couldn't get that to work: I'm not familiar enough with link_to and... well... with tying bits and pieces of ruby together.

Even still, the way it is is very readable. (Yeah... that's my excuse, and I'm sticking to it!)

The co-worker that I was helping was very impressed with the amount of ground we covered in the three hours we worked on it, anyway. ...Note that over half that time was wasted trying to connect to the SQL Server database... (Turns out there is not trick to it, just set the type to "sqlserver" and fill out the rest of the fields intuitively!)

On the down side, I was so wrapped up in the project that I totally forgot that I had a date with my wife for lunch--and I was away from my desk, so I didn't get her calls. ...So I'm in the doghouse, now. : | D'oh.

A Wasted Hour

I just wasted an hour looking at this HTML:

...I couldn't figure out why the first set wasn't working (click on the second radio button and the first is still selected), and the second one was.

Then I realized I was using "ID" instead of "NAME" as an attribute.


Weekend Update

Three things to report:

My son and I played three games this weekend. The first was one called Heroscape, and it was the most age-appropriate of the three (we played the "simple" version). I won, but just barely. The second was Dungeons and Dragons Miatures. ...The rules were a little too hard, but he did quite well. And I have to admit: he was faster than I was with the math! He kicked my butt. The third was Star Wars Miatures. He mauled me.

Anyway, this is newsworthy only because I've long felt guilt about not spending enough time "playing" with my son. This was a good start. I have to say I was impressed... he lost the first game very gracefully, he learned the rules fairly quickly, and he didn't do anything overtly "stupid", tactically speaking. He did get overly excited about the game, especially the last one, where he was really wiping the floor with me. ...but that's him: he can't sit still and can't stop talking. ; )

I had a medical "slip" this past week. Last week, the doctor upped my dosage of Levothyroxine from 100 micrograms to 125. ...I had been having these occasional episodes of lightheadedness and chest "weirdness", that I couldn't quite describe. After the dosage changed, I started having them all the time. (Well, okay, several times an hour.) I noticed that if I took my pulse while these were happening, my heart-rate was all screwy. So I looked up cardiac arhythmia on Wikipedia and, lo and behold, this is a symptom of hyperthyroidism.

But it didn't stop there. Since I work with a dozen pharmacists, I asked around about it. I also work with six people who either have a thyroid imbalance or their spouse does... and I learned that the way my doctor was giving me my medication was prone to heart palplitations: this is why people normally start at very low levels of thyroxine and titrate up to the levels they need.

Anyway, I called the doctor--we was out--but another doctor at the office told me to go back to 100 micrograms, and to make an appointment for when my regular doctor gets back. I did both. The heart palpitations are completely gone now (three days later). All is well again.

It looks like I really will be using ruby at work! On Thursday, I had a meeting with all the other programmers about a new web-project that the center will be doing, and I argued for heavy use of Ajax. I showed my own code as an example--they were all very impressed--and then I showed the programmer who will head the new project how I was accomplishing it with Cold Fusion. I went on to explain a lot of the leg-work I was doing in CF was built-in to Ruby on Rails, and he was totally sold. We will pilot Rails next week, doing some pair-programming.

Not only that, but the center's lead deveopler asked me to schedule some sessions with the other programmers to teach them Ruby (and Rails), so we can all add it to our arsenal.

(I don't know if I logged this or not, but we recently switched from Visual Basic to C#, and have started pair-programming in it: it's insanely fun. Ruby will only be an improvement.)

With RubyCLR coming to maturity, and Ruby in Steel another option, I can't think of any reason why we wouldn't use it. A lot.

The lead programmer and I have already been joking about using IronPython (their main site isn't up at the moment). I wouldn't mind that. ...Though I admit, I've got a bias for Ruby at the moment. ;)

Perl is beautiful, and I will always love it... but I have come to admore "real" OO programming, and while it's possible in Perl... it's hackish.

Perl 6, of course, will be a god-send. ...But I am not holding my breath.

Ruby is, IMO, currently the most ideal scripting language. Java's bulky, and C# is... well... Microsofty (but I do enjoy it). C++ still reigns supreme in terms of speed and capability... but I'm a high-level programmer. ...But, most importantly, Ruby is fun, and has an amazing community. And Rails is pretty slick. : )

Another MS Gripe

What the fuck is it with GRIDVIEWS?!?

...Honestly, when was the last time you visited a website or used an application that had a FUCKING GRIDVIEW?!?


SQL Server vs MySQL

MySql supports dates. Really.

MySql exports CSV (without needing a GUI).

MySQL is free.

MySQL has excellent documentation, also free.

MySQL is programmer-friendly. SQL Server is a GUI with some half-assed database code underneath it.


A Possibility

A co-worker just asked me to look at his database ERD--a butchered version of Northwest Pubs (one of Microsoft's example DBs), to handle VA publication references.

I thought, "whoa, he could have this up in running in a few hours with Rails." I've been trying to sell rails to this co-worker for over a year now, so when I told him my thought this morning, he was prepared for it: ruby wasn't a foreign concept to him anymore. His response was "that's what I wanted to hear!".

We're scheduling some pair-programming to give it a whack in the near future.

Another co-worker overheard the conversation. ...He then asked me what I thought about another web-application...

[writhes hands insidiously]

Mouse Over

What's the fsck'ing point of a mouseover image?

...I mean, I could understand if you have some complicated imagemap, where it's not entirely clear where one "button" ends and another begins... but you can't really use a mouseover image in those cases. (Not on an HTML page.) Mouseover images are used in well-segmented menus, where the user is plainly aware of which option their mouse is hanging over.

So what's the point of making that option "glow"?

Dog on the Loose


...We just had our first "escaped greyhound" experience. ...Since we live in a city, this is a scary thing.

Fortunately, Talulla wandered about a block before stumbling into a fenced yard, where I "grabbed" her (of course, that doesn't imply any running--running after a dog is dumb). I tried to lure her with dog treats, but she wasn't having it. En route, she chased one cat under a car (pissing off one neighbor), and attracted the attention of two or three other neighbors. On her "walk of shame" back to the house (after I had her on lead), she had a run-in with a pair of black-labs... fortunately the owners were there to quell the bigger of the two.

Eeesh. Quite an adrenaline rush, that. ...And now she's tasted freedom, as it were, and we'll have to be doubly vigilant.



This is an open invitation to all of my listeners to "play" exquisite corpse. (A friend of mine--who's reading this--introduced me to the concept many years ago, but I've never actually tried it!)

Here's my thought:

  • Pick a pen, one that you're comfortable with, that I can find in a store, and is dark enough to photograph well. Tell me what the pen is. (I'd like things to match.)
  • Buy a padded envelope, and some standard 3x5 index cards (blank on at least ONE side), if you don't have them.
  • Draw something unusual (using said pen) on one of the index cards, and make sure the illustration "bleeds" over at least one edge of the card.
  • For each edge you drew over, line up a blank index card against it. Continue all of the bleeding lines onto the next card, but just barely (so I can see where to begin my lines).
  • Number the back of each card. Keep a "map" of which number cards line up with which.
  • Keep the original card you drew on, and mail me the "edge" cards to me. Email me for my address, if you don't have it.
  • Upon receiving the cards, I'll do pretty much the same: I'll continue on the card(s) you sent, and bleed lines over onto at least one other card, number the new cards, and mail them to you.
I've really started to itch to draw more, lately... and thought this would be A) fun, B) good practice, and C) a way to "connect" with friends/family.

Code-writing euphoria

I have a CGI that wants to validate a series of fields using Ajax.

I'm currently testing out the YUI toolkit. ...To be honest, I prefer Prototype, but I do want the breadth of knowledge to use both (and, next, I'll pick up dojo).

Anyway, back to the fields: there are three of them: client, project, and collection. I need to test if any of these fields have already been used (meaning: what the user enters must be unique), and I'm using Ajax to test this.

At first, I had a rat's nest of code, with basically a callback, handler, and response function for each one of the three. This, of course, made my teeth itch.

I tried refactoring, but I ran into the ubiquitouos scope problem in JS: I needed a closure around my "name".

After wrestling with it for two hours, this is what I ended up with, and it works beautifully:

// Check the existing names (client, project, collection):
var svrCheckExistingNames = "checkExistingNames.cgi";

nameHandler = function(o) {
checkExistingNamesSuccess(o, this.name);

// Stolen from Prototype:
Function.prototype.bind = function(obj) {
var method = this,
temp = function() {
return method.apply(obj, arguments);
return temp;
var clientTest = nameHandler.bind({name: 'client'});
var projectTest = nameHandler.bind({name: 'project'});
var collectionTest = nameHandler.bind({name: 'collection'});

function checkExistingNamesRequest(n, v){
$('checkExistingNames_'+n+'_container').innerHTML = "Checking existing "+n+" names... <img src="../icons/loading.gif%27" border="1" />";
var test = clientTest;
if (n == 'project') test = projectTest;
if (n == 'collection') test = collectionTest;
var request = YAHOO.util.Connect.asyncRequest('GET', svrCheckExistingNames+"?name="+n+"&value="+v, {success: test, failure: test});
...Why is it such a PITA to post code on Blogger? ...There must be a trick I'm not getting. (I'm using blockquote tags for nesting here!)


Okay, so I need to shut up about Seth Godin, already.

But he linked to a list that I enjoyed and want to refactor:

  • Real security comes from improvement. I once said "you don't ride an economy, you build it", and this is what I meant by that, in a less universal way.
  • Everything is version .9. ...which is a neat way of saying "nothing is perfect, keep improving."
  • Flexibility and efficiency are rarely mutual. Godin's point was different: he suggests that flexibility is "better" than honing a process... but that's for a marketer, and I'm looking for more universal advice. As a programmer, sometimes I want an efficient algorithm, sometimes I want a flexible set of tools. Each has its place.
  • Bet on change, in social situations. ...as opposed to mathematical. By the way, I hate the saying "eveything is math": bullshit.
  • Creation requires iteration and influence. ...a better version of an old quote I used a lot: "Man does not create, he re-arranges". Creativity is the result of small changes to something old, influenced by something different. Enough of those changes, and it becomes its own, new entity.
  • Success abhores compromise.
  • Appreciate what you can, and endure the rest. And that, ladies and gentlemen, is a code to live by.

Administrative Action

I was told to be careful of what I say about the gummit.

That's a fair comment. But I admit I'm not terribly worried, and for two reasons. First, what I said is "true" (in the sense that I strongly believe it), and I would welcome the chance to discuss it with superiors. ...In fact, I considered it before writing the message. ...At the same time, I know it would go nowhere. For someone to take my comment seriously, they would have to strongly believe it too, and take up "the crusade", as it were... and I don't see my superiors caring enough about that problem to bother. (Honestly, I doubt I would, either, in their position--too much risk for too little reward). The bottom line was that I wanted to rant about a situation that cannot change, given the current "mood" of the country.

Secondly--and I want to speak on this--the gov't doesn't generally take action against individuals: they would rather institute policy.

I mentioned earlier (if I recall) an article about the difference between legal rules and principles. A refresher, as I understand it: principles are descriptions of what is right and wrong: situations that should be avoided. "Avoiding car accidents" would be a principle, roughly. Rules are guidelines for achieving the principle. "You must use your turn signal 200 feet before your turn" is a rule.

What I have long hated (and never really found the words to express) is that Joe Average is only aware of rules. Americans have a love affair with rules. Our kids are shooting other kids, let's ban guns. Kids aren't taking school seriously, let's make them wear uniforms. Someone tried to blow up a plane with fluids, let's ban fluids. Someone spent an entire day looking at nudie pictures on flickr... let's block flickr from the company!

Of course all of these things are wrong; they are problems. And of course they need to be solved. But creating rules isn't the way to solve them. I would go so far as to say they are profoundly unfair to the majority of people who understand the principle.


I wish I didn't need to be so verbose. Somehow Seth Godin says things like this (well, not quite like this, but other important, meaningful things) in a succinct, almost zen-like way. I wish I had that ability!

I'll continue pondering that...

The Neverending Story

Flickr is blocked.

I feel like Atreyu in The Neverending Story. I work for the gov't, and they have pretty serious filters on what you can view from the web. Until recently, flickr wasn't blocked... this was handy, because one could, say, go grab some CC-b photos for use in documentation or what-not, to spice things up. ...Well, no longer.

But worse, it's now interrupting my RSS-reading. I subscribe to several flickr feeds... and now the photos don't show up (and if I try to view them in another window, of course, I get the full error message). This is seriously disruptive to my feed-reading! I would say that about 1/3rd of the posts I see are pictures. I spend about 10 seconds looking at each. The other 2/3rds of my feeds are programming: c#, ajax, ruby, patterns, refactoring... and Seth Godin, whom I consider "work-related" in the sense that he's semi-motivational. ; ) I consider it part of my job to stay on top of these things.

I thought engagement--involvement--at work was a good thing. The fact that most of the feeds I'm on are work-related indicates that I'm dedicated to my job.

But now I feel like it's not worthwhile to do RSS! Sure, there was the occasional post that I couldn't open from work before... but now it's a full third of my stuff. I can't just click through them, either--I want to see these photos (which is why I subscribed), so I would have to mark each of them "unread" every time.

I'm ranting.

The point is simple: employees should be encouraged to engage fully in work. This implies integrating their work life and their home life. Blocking websites inhibits this ability.

Of course I can hear the argument: "VA resources are for official use only; private use is a violation of blah blah blah."

Tighten the screws, big brother... the more you twist, the more we hate you.

Pisses me off.

Holy Flurking Schnitt

(Turn off your speakers before you watch it: stupid rock music.)

It's amazing what people will specialize in. I shudder to think that, someday, this kind of card-handling will be considered "weak".

While I'm posting, I'll admit that I've fallen into the pit of internet video-watching. : ) I can remember laughing at the very idea of it, some years ago, thinking that there was no way the internet would be fast enough for video to be a viable "everyday" media.

Interesting times ahead. ...And a little scary, too.

An Age-Old Roleplayer's Lament

Found this on a WotC page:

A famous baseball radio announcer once claimed that anyone who tuned into his show hated him and every word he said until he gave them the score. I think it’s a little like that in a way for D&D players. Each game session, players can seemingly resent every plot and subplot, they hate every NPC, until finally the sweet release of combat comes heralded in by those two wonderful words: Roll Initiative.
...This is one of the main reasons I dislike D&D.

Mind you, I'm a biug believer in the old writer's adage: start with important action. As true in RPGs as in writing. But the assumption that D&D is nothing but a combat system... that bugs me.

Of course, this comes down to the age old debate of Naritivist/Simulationist/Gamist theory. But the assumption that D&D must be Gamist all the time is what wrecks it for me.


Simple Question

I got sucked into reading a news article on Bush's speech yesterday. (Not worth linking to.) It makes me sick to my stomach, quite literally, to read these things, and yet I still do. [sigh]

I have one question. It's the same question I've been asking for quite some time now:

What does "win the war on terrorism" mean?

Bluish-white Collars

An interesting article at O'Reilly led me to consider the difference between white-collar and blue-collar work.

Taking a white-collar job is the default path for a "normal" person, one less concerned with self-improvement and more concerned with enjoying life. When I was growing up, and such were the decisions my peers and I had to make, I considered blue-collar a brutish, manual life devoid of intellectuality, and I wanted nothing to do with it. It was with much disdain that I took my first job, which was in construction... and I was very quick to abandon in for a nice, quiet retail job (a book store clerk). To me, white-collar work was "winning", blue-collar was "losing". I dreaded manual labor.

Today I think quite differently about blue-collar work, considering it admirable, creative, and engaging.

I work a white-collar job, and as I look around me now (and the same has been true at my other jobs), I see a rather typical distribution of intelligence, as I would label it.

I suppose that's one of the reasons I miss college life. Professors, in my experience, are the types of people who engage me, even challenge me. While I work with some very intelligent people right now, it's a different type of intelligence, one that I do not relate to as strongly.

I can 't quite put my finger on it...

My Space, Your Space, MY Space, YOUR Space!

My father just got burned for leaving a critical comment on a popular photo site. You know, one of the sites where you upload your photos for others to comment on? Yeah.

I sympathize with him. I was chased off of deviantart.com (before it was a smut-site) for commenting on a poem. ...Slightly different case, since my comment was re-writing the poem... but I don't want to get into details.

The result was that I was mobbed by the person's followers, as was my father for his comments. ...And, coincidentally, my wife was just telling me about a friend of hers was mobbed for a negative review on Amazon.com.

My thought for the day is that perhaps what causes this behaviour (besides the basic law that people are stupid and obnoxious) is a sense of space and ownership. ...When we leave comments on a person's page, it's on their page... it's in their space. We're pissing on their lawn.

I wonder if these events would occur as frequently if it became a habit for critiques to be posted on our own pages. For example, if I had created a post in my own space, linking to the bad example of poetry, and added my own comments... would that have saved me from being mobbed?

Hmmmn. ...I'm not sure it would have, in my case. ...Yeah, as I think about it, the other person would still have seen my post, and he/she would have posted about it, and then the same flock would have decended upon my site.

Okay... so perhaps there's really just no room for critique in Web 2.0.

People are stupid and obnoxious!

The Most Important Thing You Will Read Today

Seth Godin:

Marketing (the use of time and money to
create a story and spread it) works. Human beings don't make rational
decisions, they make emotional ones, and we've seen time and again that
those decisions are influenced by the time and money spent by
So, assuming you've got no argument with that (and if you're a marketer
who doesn't believe marketing works, we need to have a longer
discussion...) then we get to the next part of the argument:
Your marketing changes the way people act.

...Please read the rest of this post. I think it's one of the most important things Seth has written about.

This ties in quite nicely with The Corporation, which is one of the most important books I've read.

On the Media

My father and I have been talking recently about movies and
television.  He made the excellent point that (paraphrased) "it's okay
to think deep thoughts about the media--it's a moden totem."

Things rings true with an ongoing conversation I've had with my wife,
where I posit that "stars" (popular people) hold a similar role in our
modern psyche that ancestors
held in the psyches of our predecessors. Instead of tribal elders
telling us the stories of the heroics of our ancestors, we watch the
media telling us stories about our (fictional) heros.

Following that thread a little ways, I argue that it's one of the
reasons we want to know personal details of famous people: we consider
them, in a convoluted way, members of our "tribe".  Just as tribesmen
would ask the elders to give details about ancestors that have passed,
we seek information on these heros.  The problem is that, despite being
conceptual tribesmen, they are real people.  They're very much not
in our tribe!  And sometimes we forget that, and we end up with front
page news about drunken misadventures and other side-effects of being real people.

This isn't what I wanted to write about.  I wanted to say that media
(film and television) are important to us, whether we want them to be
or not.

But I don't think I have this all sorted out in my mind.  More meditation on the matter is required.  ...I'll just have to go watch more Farscape...

(It's research, honey!)

powered by performancing firefox

Playlist for a Friday Afternoon

Just thought I'd randomly post the next 20 songs on my playlist. (Well, sort of. I'm presently on track 5 of this list.) ...Nothing "deep" here: it's just a global shuffle. Still, it gives you an idea of what I'm listening to these days.

Playlist files:

  1. Afro Celt Sound System - When You're Falling - featuring PGabriel (6:46)
  2. Toad The Wet Sprocket - Stories I Tell (5:35)
  3. Vibrasphere - San Pedro (8:39)
  4. Aaron Jasinski - HyperHoly (7:09)
  5. .j0r0 - modes - mode 1 (6:59)
  6. Introspective - Gewesen (Part 2) (16:12)
  7. Spyra-03- Future Of The Past - Non disperde nell ambiente part 2 (13:33)
  8. DaveBrubeckQuartet-Take Five (5:27)
  9. Toad The Wet Sprocket - Nightingale Song (2:03)
  10. Nuclear Ramjet - Folding Time (Ambient Version) (6:35)
  11. alexey v - s.o.s (4:02)
  12. Boards of Canada - sunshine recorder (6:12)
  13. Shpongle - Turn up the Silence (3:21)
  14. Nine Inch Nails - All The Love In The World (5:15)
  15. FahrenheitProject-PartFive-10 - Hol Baumannn - Final (5:14)
  16. Toad The Wet Sprocket - Butterflies (4:26)
  17. esem - instlr (4:14)
  18. kilowatts - linquini breaks (6:17)
  19. Afro Celt Sound System - House Of The Ancestors (8:03)
  20. Red Hot Chili Peppers - Naked In The Rain (4:25)

Health Scare Officiall Over

Good news: the doctor who said "you need to see a specialist" just called me.  Apparantly, the specialist he wanted me to see just called him, and, looking at my bloodwork, said "Uhhh, dude: it's totally his thyroid, he doesn't need to see me".  (Well, more or less.)

So, basically, it's:

...and we all lived happily ever after, thanks to Levothyroxine.

The End.

Sociological Spiders

Whoa.  Huge find: a species of spider that cooperates like ants.

That's truly amazing... I wonder what kind of genetic differences they display from related, non-social species...

powered by performancing firefox

A Closer Look at Thyroxine

From wikipedia:

"The thyronines act on the body to increase the basal metabolic rate, affect protein synthesis and increase the body's sensitivity to catecholamines (such as adrenaline)."  (Empahsis added.)

No wonder my inhaler made me so bloody dizzy the other day.  The medicine I'm taking is actually just a dose of thyroxine (thus the name, "Levothyroxine").

Other than that, I just feel profoundly funky, and I was browsing this article trying to figure out why.  ...Apparantly there are a myriad of possible reasons for it... my entire system is being mucked with at a very low level.  I'm not sure I'm enjoying it.  ...Though I do feel much better than a month ago, there's a bunch of bizarre side-effects that seem to be concomitant.  [shrug]

powered by performancing firefox


As I might have explained before, hypothroidism is a condition, not a diagnosis.  I got my diagnosis today: hashimoto's thyroiditis.

This is good news.  It's the most common cause, and it "just" means my immune system attacked my thyroid.  Realtively common, and not "serious"... it could have been a lot, lot worse.

Treatment is totally making me feel better.  Sore throat, and I still can't fully stretch my major muscles... but I'm just a completely different person.  Getting a lot of comments at work: about showing up in T-shirts instead of sweaters, about being animated, about seeming "cheery".

Good stuff.

powered by performancing firefox

On The Mend

I feel 100% better.

Not 100%, but 100% better.  My cramps are much more "dull", and there are fewer of them.  I have more energy.  I have body-heat.  I have hunger (I didn't realize just how not-hungry I had been)!

There are only three things I have to complain about right now:

  • My inhaler does evil things to me, when I use it, now.  I just used it for the first time since starting, and I've never come so close to passing out.  I need to talk to the doctor about this.
  • My wife was violently ill the other night.  Violently.  It was even painful to listen to.  Sheesh.  Poor thing.  She seems to be much better today, but... wow.
  • My neck.  It's swollen.  No, not my thyroid: it's the lymph-nodes.  Painful.  Dry throat, too.  But I'll take this over muscle cramps and fatigue any day of the week (and twice on Sunday, which it is).

powered by performancing firefox

Beliefs (courtesy of Seth)

Seth Godin says:

People don't believe what you tell them.

    They rarely believe what you show them.

    They often believe what their friends tell them.

    They always believe what they tell themselves.

...isn't that just perfect?  (Seth is The Man.)

powered by performancing firefox

Personal Kiss Of Death

Observation #1: parallel-processing is not my strength. I handle things so much better when I focus on them individually, and not let myself do "a little of this, then a little of that".

The reason for this truth might be in part because of:

Observation #2: My strength is improving things, not finishing things. I'm never content with anything: it's part of my mantra of continuous improvement. Here's one of those areas of contradictory virtues: it's a virtue to be receptive to continuous change, and it is a virtue to get things done, and be satisfied with them as-is... but these states cannot co-exist. Socially, I think people are dispersed along the spectrum... and I tend to lean very heavily toward the improvement end. So be it. But... heh... in improving myself... heh... I do need to try harder to complete things.

The solution there might be to focus more seriously on iterations. Hmmmn. I need to ponder that, but I like the sound of that. Smaller increments of improvement. I like it!


So my wife and I did a little homework on my pathology last night. I came up pretty much blank: all of the myopathologies I could discover were either genetic (and I've no history of family members with MD or anything like it), or temporary.

My wife, on the other hand, hit the nail on the head right away: it's gotta be the hypothyroidism. And this suggests that the neurologist who wants to send me to the expert is freaking out for nothing.

...And thus causing me to freak out for nothing.

So, if this article is right, it's probable that in the next few months, the muscle pains should start to resolve themselves. Months? Argh. ...But, still, that's quite a bit better than ending up in a wheelchair, which is the endpoint for most of the other myopathies. : )

Medical Update

Honest and Transparent, right?

First, the good news: I'm feeling some slight effects of the hormone therapy... I'm slightly less cold (still sweater-wearing, but starting to roll up my sleeves more often), and today I was actually hungry, which hasn't happened in a long time. I'm also mostly getting by on only 8 hours of sleep each night. Small indications as these things may be, they're good signs.  Now the bad news. I enjoy telling stories, and rather than just announce things, I'm going to explain exactly what transpired.  This will make it seem a bit hyper-dramatic, for which I apologize... but, dammit, I yam what I yam.

Today I had my appointment with the neurologist to run some test on my muscles involving needles and shocks and other forms of anti-fun.

It didn't go as planned.

I got there, the nurse asked me to don The Gown (you know the one), and I sat there, cold and full-bladdered, for quite some time, worrying about the nature of the test. Eventually, Herr Doktor comes in and immediately looks red-faced, shakes my hand and says "I'm not going to run the test."

He explains that the test involves poking with lots of needles, and that there are two reasons that this is bad.  The first, he says, is that he doesn't want to risk any kind of irritation or side-effects of said proddings, because of the second point, which is: the doctor to whom he is going to refer me to "likes to run this test himself", and may want to biopsy the muscles.   And it would be bad to have irritations that limit the sites from which the biopsies can be taken.

Caveat: when one hears the word "biopsy", one thinks cancer, and there's no indication of that.  So stop thinking it.  These biopsies serve a different purpose.

"What I think the endpoint of your condition will be", he explains, "is that you will have to be seen by this specialist at the university medical center."  I have seriously elevated "CK" levels in my bloodwork (I forget the exact numbers, but they were double the normal high), and I am slightly anemic, which he says indicate--this is a mouthful--"statin-induced myopathy".  Statins are a drug used to treat high cholesterol... When I first experienced muscle pains, it was on statins, and it's because of the pains that I stopped (and the pain stopped).  The weird thing is, the muscle pain came back a good four months after I had stopped the second statin I tried (we tried two flavors of them), and thus I thought the muscle pains were coincidental with, not causal of, the statins.  And the doctor says, this indicates a serious problem.  (Though he won't say more than that.  As I said in an earlier post... he's clearly not a speculative person.)


Then he gets a shade redder and explains that "these people are very hard to get an appointment with".  It should be a week, I find out from his secretary, before I even get a callback to make an appointment, nevermind actually have one.

He concluded by giving me another neurological once-over, and again confirming that, nope, nothing grossly neurological was going on here: it's purely muscular.

So, with that, I'm back in the dark, worried about what it is my body's up to... and playing an obnoxious waiting game.  While I understand preference needs to be given to the people who are in more serious conditions, it's unfortunate that the people who catch these things early essentially have to risk those conditions in the waiting.  Our society is so far off-track for preventive care, it's frightening.

So... I'm frustrated.  And stressed.  But, truth be told, my muscles (and joints) really have only gotten worse, while other signs of improvement are cropping up... so there are possible indications that there's a secondary problem, here, so I'm taking him seriously.

Unfortunately, the nature of his breaking this news to me was such that it caught me completely off-guard, and I didn't have a chance to ask two of the things I had planned on asking: what I could be doing to manage the condition, and whether or not the joint pain was myxedema (and, if so, what to do about it).

As usual, I will keep you posted.


So, as most of you were told during my trip, I have been diagnosed with hypothyroidism. And--surprise--the muscle pain is caused by muscular breakdown.

I just spoke to my doctor about it, and he says that my TSH levels are "through the roof", and were "one of  the highest levels he's seen". He admitted to regret and dismay ("I'm just kicking myself for not seeing it") and not having run the TSH test earlier. For those of you in the know, the actual TSH number is 331.  ("Generally, a normal range for TSH is between 0.3 and 3.0 mIU/mL" - ibid)

He's going to start me on medication for that tonight. He thinks this should affect everything: the muscles, the hypercholesterolemia... the gamut.  He's not discouraging going to see the neurologist about the muscle-scan next week, though--just in case.  He'll follow up with me in two weeks and if things aren't really improving, we'll shift to an endocrinologist and keep digging... but he's got a few more tests to run himself to rule out the usual causes of hypothyroidism (follow the earlier link to see a few--hashimoto's is the first we'll look into).

So: relatively minor problem.  Not completely in the clear (nor the know) yet, but it could be as simple as "yup, this fixes everything!"  We'll see in two weeks.

Interestingly, I presently find myself most looking forward to not being cold.  Though today, it's really the stiffness that's been bothering me most.

Good Nudes

I've had a couple of good days, pain-wise. That's good news. Of course, it's been somewhat muffled by an increase in my difficulty articulating. But that's very slight, and continues in the "just obnoxious" vein.

But further good news came from the nurse just recently: apparantly the bloodwork came back with lots of flags raised. This is good for three reasons.

  • It will mean a much easier path to diagnosis,
  • I feel somewhat vindicated in that this isn't "just in my head", and
  • I may yet have an episode of House modeled after my case.
(That's a joke, son. Laugh.)

I'm flying tomorrow, so I won't get a chance to talk to any of the doctors until Thursday, in all likelihood, but at least now I'm on a path to somewhere, as opposed to wandering aimlessly about the first layer of hell. :)

I'm really quite prepared for my trip tomorrow, so I'm planning on just finishing the handfull of dish-washing I need to do, and then relaxing for the evening with a piece of cheesecake I bought on my way home. It was a productive day at work: I didn't get done everything I wanted to, but I solved an unexpected, interesting problem at the end of the day (caused by a very naughty scoping problem with dBase), and problem-solving is one of the best drugs known to geekdom, so I'm still high from it.

I finished reading Mind Hacks (link below), and so I switched to reading Tao of Photography for real (again: link below). I'm really enjoying it, so far.

If I shut up right now, I'll even have time for a movie before bed. So... g'night. I won't be blogging for the next week, mind you... but I'll be seeing many of you in the coming week! Looking forward to it!

Political Observation

(Health update: tough weekend. Upper-body now aches about as much as lower, especially when stretched. Got my first abdominal cramp... wasn't that painful, but it has me worried about the "spread" of the cramping. I spent the majority of my time resting as a result. Still nothing major to report, though: it's just pain, and it's still managed.)

I often fume about Politics in the shower.

It is, perhaps, a particuarly bad habit: a nasty way to start the day (mad), and I often wonder how much of a "right" I have to a political opinion, really. But that's an observation for another day. At the moment, I just want to point out one "conclusion" I came to.

A prevailing attitude on the right, it seems to me, is If we don't do it, someone else will. ...The implication being, for example, if we raise minimum wages, then other countries will have an unfair advantage and they'll do better than we in the market. Put another way, if we don't pay shit for shit jobs, some other country will, and we lose.

The analogous attitude on the left, it seems to me, is no one else is going to do it, so we have to. The exmple here being, to use the above case, market forces won't give shit jobs living wages, so we have to accomodate.

My personal opinion? ...Well, of course, you all know me well enough that I don't have to say "the latter", and it's true, that's where my heart lies. But, deeper than that, I think the "right" answer is actually--and it pains me to say this--both.

I--personally--am a liberal. But I also believe that we have to make room for and find ways to reconcile the folks on the right to do the nasty things they do. They keep us moving forward, and we clean up the mess. It isn't easy, it isn't pleasant... but I think that's the only way that society as a whole can progress, ugly as it may be.

Man, do I hate saying that. The answer should be, take care of one another, not every man for himself. Sadly, it seems to be nature's way that either path leads to a dead end. Only both leads forward.


List of Symptoms

I don't think people are clear what I'm going through, based on some recent comments.

It's currently not too bad. As I keep telling people, I'm "fully functional", so keep that in mind as you read this. Also, my mental state is 100%. No fogginess, no forgetfullness (no more than usual).

I just spent quite some time looking for medical terms for my symptoms. There aren't any that I like, other than a few that are less than helpful... but I'll use those where I can, and describe things as I observe them everywhere else.

I'm going to use a 10-point pain scale. 1 is "no pain". 10 is "maximum pain"... the pain after which one goes into shock. It's moot to measure above this... getting a hot poker in the arm may not be as "painful" as disembowlment, but is it worth measuring at that level? No. You just shut down, there. I watched my wife reach that level during childbirth. It's not fun.

  • I sleep a lot. This week, it varied from 8 hours (and I woke up unsatisfied) to 13 hours (and I woke up wishing I could sleep more, but functional). When I'm awake, I feel tired... not to the point where I'm afraid I will spontaneously fall asleep. ...It takes me a good 30 minutes to actually get to sleep, because of discomfort and the need to quell the mind. I have used the word "fatigue" for this, and I think that's wrong.
  • My muscles hurt. This is called "myalgia", which is not to be confused with fibromyalgia. Right now, I'm at a 3. This is typical, though some days are a constant 4, but more days are a 2. So, at complete rest... it hurts, but not much. At rest, I will spontaneously get little throbs of higher pain, but nothing beyond a 4.
  • I get cramps. They are brief... I don't usually need to go through the "relax the muscle, then stretch it slowly" routine. They do hurt, but to varying degrees: from 4 to 6 on the scale. These "real cramps" happen about 1-4 per day. They're usually in the calf... sometimes in the thigh, occasionaly in the groin, rarely in the back, arms, hands, and neck. The rare ones hurt most. All cramps invariably cause me to shout out in pain, and I usually violently flinch.
  • Sometimes, I feel like I'm *about* to get a cramp. It comes in the form of a sudden, sharp pain, but not terrible: 3 or 4. I wince visibly. This causes me to flinch, to immediately stop the use of the muscle (say, dropping down a few inches in stance to shift weight from one leg to the other). Rarely, these "warnings" actually lead to a cramp. ...Like the other day, I was rushing down the hallway of our house, and got a "warning", so shifted to the other leg--which then gave a warning: I was doomed. Both calves cramped. Ouch. Anyway, these "warnings" are very frustrating, because they're not real cramps, and they happen very frequently (pretty much every time I stand up or sit down... sometimes when I'm just walking, often when I'm using my arms too much, and so on).
  • I have what I believe could be termed "perceived muscle fatigue". Meaning, when I'm doing something like... brushing my teeth... my arm will start to burn and I feel like I just can't continue the motion. Factually, I can, it just increases the pain. This is also very frustrating. It sets in within a few seconds, and the pain increases until I stop... depending on how long I hold it, it can reach up to a 5 or 6 on the scale (it holds there for as long as I can endure that level--which is high enough that I'm whimpering), but I have to be pretty determined to go much past 4. :) Resting for a few seconds allows me to have a second go, but I don't last as long... and it keeps getting worse. (As I'm typing this, in fact, I'm resting every half-sentence or so for a few seconds.) Note that this doesn't always happen. Sometimes, I can walk a mile without much trouble. I managed to "mow" the front lawn yesterday... but that hurt a lot (5). Sometimes, I'll decide to "check" how long I can hold my arm up, and I won't have any problems at all! ...It seems to be random, though some days are better than others. It also depends on what muscles I'm using and how easy it is to "shift" to other muscle groups to compensate.
  • I have joint stiffness, slowness, and a lack of agility which I still believe is best described as feeling like I just came in from the cold. It affects my typing speed, my ability to pick up small objects, shuffle cards, speak clearly (though people have been telling me I sound fine, so this may be more perceptual than real), tap to music, play the piano, brush teeth (barring the fatigue, above), and sundry other little things. Frustrating but not debilitating.
  • I'm cold. It's over 90 degrees today, and I'm perfectly comfortable wearing my fleece pull-over over my T-shirt, under which I have a second t-shirt. If you've seen the news, you know it's been about 100 degrees out lately... in that heat, I do take off my fleece. ;) But I almost never sweat.
  • Hypersensitivity of my hands and feet. I don't know what that's about. They're tingly, and I feel like I can sense every nook of my socks and every bump in the texture of the keyboard. This seems counterintuitive to the "clumsiness" that one would have coming in from the cold, but there you have it.
  • Hypercholesterolemia. Clearly.
  • Anxiety. It comes in waves. I usually get rid of it with logic within a few minutes--at most an hour.
  • Slight (and I mean SLIGHT) visual disturbances. I see things moving out of my peripheral vision much more than usual, I see stars now and then (just one or two), I sometimes focus more slowly than I feel I should, and I'll occasionally have a "throb" of vision, where--if I'm reading text, say--it will appear that a cluster of three or four words will "bulge" out at me, as if magnified. Kinda like a lens effect in Photoshop, or one of those "magnifying glass sphere" screensavers. ;) I don't think much of these: I suspect they are side-effects of tiredness, and they are MINOR. (Notice how I'm stressing MINOR.)

That's it. That's an exhaustive list of my current condition. Despite advice not to, I've done some Wikipedia digging, and I'm conviced that my symptoms do not match any known diseases well enough to self-diagnose any of them, because I do NOT show key symptoms of any of them--just these silly, piddly, side-effecty type things that could mean anything... and there are a girth of things to test. I'm glad that my neurologist has ordered such a swath of tests, since there's just a metric buttload of things that could be wrong, and it would be nice to exclude them.

I'm still not willing to discount environmental causes, and I'm still not willing to discount psychological causes. And if I were a betting man, my money would actually be on the latter, combined with something that's creating the hypercholesterolemia.

Wow, that took WAY longer to type than I expected, so I've really gotta boogie back to work. Eep.