Cookie Notice

As far as I know, and as far as I remember, nothing in this page does anything with Cookies.


He hates these tabs! Stay away from the tabs!

My preferred KomodoEdit settings. 4 spaces per indent, tabs display as ZERO characters. Don't even show the things. Certainly don't make the Tab key put one in.

My response to editor developers who make my editor add tabs.


Networking Fun

What we have here are two browsers running of a local machine (XP, but that's not important right now), and one X-forwarded from my home, all trying to get to

At work, I cannot go to or At home, I can.

If I can route to home, and home can route to, I should be able to route to And I don't know why I can't.


Terry Childs

The case is in the hands of the jury. I might have missed something, but I don't think I heard of a single action he took that wasn't by-the-book protecting the network that the first-responders of San Francisco use to protect their city. San Francisco jails system adminstrators.

Free Terry

Sour Milk

A co-worker has an HP xw8000 for a workstation. It runs XP, and if you leave XP going, it starts getting slower and such, so she rebooted it.

And it wouldn't start.

That's the beep she got. This is where I came in. I moved it, opened the case, unplugged it, made sure all the cards were in tight — the last time there was a problem with this box, it was a loose video card — and began to check the beep code index.

There's no entry for no beeps.

What am I supposed to do for no beeps? "Hey, guys? I have a problem, so I won't start. No, I won't tell you what the problem is."

So, I told the other tech guy.

He unplugged it and waited until the green light on the power supply went out. I am sure that happened in my picking up and moving, too. Then he plugged it in and started it.

And it started.

The co-worker wanted to know what the problem was, what she did to upset the silicon god on her desktop.

For the life of me, I can't understand what the problem was, much less explain it to someone else. Although, I think I have a start.


The Return of jQuery Madness: SQL Re-Engineering

In response to my previous jQuery Madness post, Leonard said
I had a similar problem with ajax calls. I had jack dropdowns: building, Floor, room, jack. One would populate the next and then the next etc, just like yours, except I didn't automatically pick the top selection.

When making multiple calls to any API/framework/database I always ask myselfr: What do you know when calling the second call, that you didn't know with the first call. The user hasn't put in more data, so is there a valid reason for more load on the other end of the pipe? Could you have done all the work with the first call?

I would suggest re-engineering your calls just a little bit so that when foo is changed, your backend assumes that you will want the first bar/blee/quuz. (similar assumptions for bar and blee).

This way you only need one ajax call per selection onChange.
This seems logical. Remember that at one point, AJAX meant Asynchronous Javascript And XML, and while lots of people have rejected the XML in favor of JSON, RSS, or plain text, making it AJA (see also: Steely Dan). But until this, I don't know that I had really considered the asynchronous part.

As an experiment, I've created a page that loads everything in one page, logging the URLs at the bottom of the page with .ajaxComplete(), and you can really see everything come together in it's own order, not the order I want it to.

I now reveal that foo, bar, blee and bar are really lab_director, request_id, accession_id and barcode. Each lab_director has one or more request_id, each request_id has one or more accession_id, and each accession_id has zero or more barcode. null counts as a barcode. Here's the code I have so far.
SELECT  re.lab_director , re.request_id  , acc.accession_id , bc.barcode
    FROM    requests re     , accessions acc , accession_barcode bc
    WHERE   re.request_id    = acc.request_id
        AND acc.accession_id = bc.accession_id
    ORDER BY lab_director
The problem is, this only works for things that have a barcode. I could get everything but barcodes and add to the data structure as it comes up, but if I could get something like above, except barcode being filled in as null if there's no barcode for that accession_id in accession_barcode.

Any pointers? I don't even know if I could hammer this down to a googlable question.


Graphical Programming

I've worked with it before, 2 years ago when I was working with a defense contractor. There, they used it as a way to not have to write C++, and since they were electrical engineers and not computer guys, I can get not wanting to write C++. That's the closest I've ever gotten to being paid for it myself. But I had enough problems figuring out some problems with the generated code that I soured on the concept of Graphical Programming.

Until LifeHacker came up with solutions for improving your Google Reader feeds, including Yahoo Pipes, which has it's own Graphical Programming bit.

I've done a few. I've taken the Craigslist instrument feeds and searched out organ and Fender (as Fender guitars and amps and Hammond organs are the things I most want), and pulled out Pimp My PC from Butterscotch, as well as FLOSS Weekly from TWIT.TV.

It's a neat thing. I haven't done much more than touch the most simple part of it, so we'll see how it goes, if I can make it do stranger things. But it's a neat idea.


jQuery Madness

I have a foo.

For every foo, I have one or more bar.

Each bar has one or more blee.

Each blee has one or more quuz.

I can get the list of all foos via AJAX, in convenient JSON form. By passing up my foo, I can get a list of all bars associated with said foo. By passing up my bar, I can get a list of all blees associated with said bar. And so on with quuz. With Perl and DBI and JSON, this is relatively easy to do.

Now, I have a web interface for all this, with select dropdowns. When you choose a foo, all the current bar, blee and quuz selects are emptied and refilled.

I start out with a empty position for foos and blank bars and blees, one with no value. When I choose a foo, it gets the bar and fills that select, with the empty position selected. Well, the boss wants it so, if you choose a foo, the top bar is brought up, the top blee of the top bar is brought up, and the top quuz of the top blee is brought up. Thing is, by the time that we're trying to load blee, quuz might've already been starting.

It's the timing of the deal that I think is the problem.


Welcome (Back) To The Working Week

Spent two days off in abstract-land, attending the CERIAS Security Symposium. That's always a good time, filling my head with mind-expanding thoughts that have no real practical application in my life or career.

My friend Patrick also attended, and as he is a systems guy for a defense contractor, there's slightly more practical application for this in his life. Beyond, you know, security being part of everybody's business. He observed what I began to feel last time, that there wasn't much technical in the presentations and a lot was social and/or organizational, with David Bell of the Bell-La Padula model telling us that everything he needed to know about computer security, he learned in 1974. Which adds to my belief that computer security is a solved problem, but implementing and distributing the solution into the real world is not.

Which, if I recall correctly, is why COAST turned into CERIAS in the first place.

When I got back to the office, a co-worker had an interesting problem.

After a reboot, she could not type a password. Nor could I. With neither the user or admin account. This was a graphical-login XP machine, so there was no means to see what the computer thought I was typing. So, I tried the first thing any IT professional tries. I tried turning it off and on again. And it worked. Still no clue as to what the problem was.