How Do I Get That Job?

It's a good thing my current gig is winding down, because I just found the job I really want: trash can train engineer! trash can train trash can train

An Ordinary Guy

These'll be the last two David Byrne bike racks I post, because I'm going home tomorrow. I think there are only two more. Maybe I'll get to come back and track those two down.

This one is over on 25th Street between 10th and 11th Avenues. Seemed to be a lot of art/warehouse type space going on. No bikes, though.

The Chelsea by David Byrne

Over in Greenwich Village, I found a heavily used piece of artwork that was not designed by David Byrne. It's called "The Fence Along Washington Square Park." What would Henry James have thought?

Further south from Washington Square, I found the dog. Sure enough, the place was filled with dogs and dog walkers. This was the first rack I came upon that had been decorated by someone other than the original artist (or so I suspect).

The Villager by David Byrne

And so ends our initial tour of David Byrne bike racks. When you're going to pick up an obsession, it's a good idea to pick up one with very few outlets. That way, it's over quickly and you can move on to the next one.

And she could hear the highway breathing

But she couldn't figure out what this is supposed to be. That's cool, though, because it's outside the Museum of Modern Art. By the way, it's on the other side of the MoMA, on 54th Street, not on 53rd Street.

The MoMA by David Byrne

It has been kind of nice to see that every one of these except the one behind the MoMA had something attached to it. This high-heeled shoe had two.

The Ladies' Mile with Luis Vuitton

Here's another shot that shows the shoe a little better.

The Ladies' Mile by David Byrne

happy new year

So I had this great idea. Why don't we take all the funds in Social Security and let people play the stock market with them? I'm sure that'll save Social Security.

So, I was outside the Central Synagogue today, which is a lovely building, and I overheard a man on a cell phone: "Oh, and another non-person on my list is Nancy Pelosi..."

Don't know what he meant, but I doubt it was in the spirit of atonement.

oh, and hey another Baltimore name check. weird.

Far FaFa Far Better

OK, I found it. It was on the other side of 9th Avenue, north of 39th. I was looking for it to be on 39th Street near 9th Avenue.

The Jersey by David Byrne

Since I found that one, I thought I'd go after a second one. I hopped the Subway all the way up to 110th Street, at the northwest corner of Central Park, then walked away from the park up the hill to Amsterdam. There was the coffee cup, sitting in the dark near a scaffold. The scaffold was doing duty as a bike rack, too.

The Coffee Cup by David Byrne

Now, the trip up north wasn't just for your benefit, you understand. It gave me a chance to get into that crepe shop on Columbus that was so crowded the other day. Tonight it was nearly deserted. It's a cozy place with a friendly staff: I know she was just working for her tip, but I sure liked being asked if I was a writer because I was scratching in my journal. (I told her I was a scribbler.)

Oh, but the crepe was divine. I had a roast turkey with peach white wine cream sauce crepe. It came with a bit of salad greens and was more than enough to keep me away from the dessert crepes. I now have a favorite New York City restaurant: Crepes on Columbus, just south of 109th Street.

This is Not my Beautiful Bicycle Rack

Well, it had been my intention to go find a less controversial David Byrne bike rack and put a picture up. Unfortunately, I went to the next closest location (9th Avenue and 39th Street) and utterly failed to find a bike rack shaped like a car.

I have failed you all and I apologize.

The Eyeball of ClearCase is Watching You

ClearCase is Watching

I was IMing someone today about a ClearCase problem and I told her to look for the eyeball. She hadn't looked at the version tree before, so she didn't have any idea what I was talking about. I tried to search the web for a picture of the ClearCase eyeball, but didn't get any quick response, so here is one for my future records.

The ClearCase eyeball is looking at the version of the object that is currently in your view/workspace. If you have so many versions and branches that it's hard to find the eyeball, you can use the flashlight icon to locate it.

Nice Rack

This bike rack is just outside the building where I'm working while in NYC. It's just on the other side of 44th Street. There's no marking on it, so if it weren't for The Wash Cycle, I wouldn't have known this is one of a series of bike rack designs by (Baltimore-raised) David Byrne, former Talking Head.

The Olde Times Square by David Byrne

I'm overwhelmed by the use of bicycles up here in NY. There are a lot of delivery bikers -- food is what I've mostly seen. There are also a great number of bike cabs, probably I've noticed because I'm so close to Central Park this time around. I've also noticed a lot of commuters. As you can see in the picture above, people are serious about their chains up here. I can't imagine carrying that extra weight, but you want to keep your bike safe.

Some people like to decorate their bikes.

And (like anything else in NY), if you leave your bike long enough, someone will decorate it for you.

Why Open Source

I've been a little slow in publicly thanking John Szakmeister, but he is one of the reasons that the Open Source model is so dang attractive. I had a problem with a couple of corruptions in a Subversion repository. If those corruptions had been in a proprietary database, I'd have probably been out of luck. I might have been able to pay someone an awful lot of money from the vendor, but my experience has been that most of the time those people wouldn't be able to help either. Plus, I don't have the spare change. But with this open source project, the repository structure is known to the world, and there are nice people like John out there willing to help.

I saw on his blog post discussing svn corruption that he's sometimes willing to help, and boy did he. He was friendly and nice and helped me out. All I had to do was be polite. And that's not so hard, is it? I attribute this behavior to the ethos of the open source community.

Thanks John Szakmeister.

Speaking of Baltimore...

It is possible to get crabcakes in New York City, which is probably not surprising. I imagine you can get anything you want somewhere in New York City. This place was selling "Maryland Lump Crab Cakes (2)" for $24.95 and "Maryland Blue Crab" for $24.95/lb, only $3 less than the lobster. Not sure how the second are cooked.

To be honest, I'm living proof that growing up in Baltimore doesn't automatically make you a crab eater. I like me some Old Bay, but generally on pizza or fries. If I kept Kosher, I surely wouldn't be missing the shellfish. Yuck. Still, I felt a little nostalgic seeing blue crabs on the menu.

I wonder if these are from Indonesia like all the ones at Phillips?

When I'm off on travel like this, I try to avoid chains that could just as easily serve me back in DC. Unfortunately, I'm not so great at making decisions, and here in Manhattan there are so many choices that it freezes me up. I walk down a block and think to myself, "Hmm. Pakistani. That could be good. I wonder, though, what's down the next block?" And I wander on and on until I'm so starving, I eat at the first deli that looks like it has good corned beef. How does a deli look like it has good corned beef? It has fresh loaves of rye sitting in the case, not wrapped in plastic, that's how.

So many questions!

I got my serving of wings today, and I've been packing away the bagels at breakfasts. Yesterday, I did about ten miles, walking all the way up through Central Park and then down along Columbus and 9th Avenues. I passed a good looking crepe shop, but the line was nearly out the door. (Which made it an even better looking crepe shop, but I'm not partial to lines when there might be something even better just down the block.) I've had some pizza. I also had some very good Syrian food. So, I eat more when I come to New York, but I've also walked a lot more.

Today, I took the Subway down to Union Square for my visit to the Strand. (Picked up a half-price copy of Emma Bull's Territory.) The crab restaurant above is on Park Avenue somewhere down near Union Square. I walked back, weaving back and forth between 10th and 7th, probably about 5 miles. Stopped at the flea market in Hell's Kitchen. Didn't buy anything, but it's fun to say Hell's Kitchen. Hell's Kitchen. Hell's Kitchen.

Anyway. I hope there was some sort of manga convention going on, because if not I was probably hallucinating.

Oh, I complained last time about the lack of laundry facilities. It's just a function of not everything being searchable from a Google map. Between 46th and 53rd on 9th Avenue, there are at least three coin operated laundries. I used the one just south of 53rd this morning. It was a little cramped, but the small washers were only $2.00/load. It's open 7-9:30 seven days a week.

A Bunch of Pictures of NYC

I really like steps that end directly in water, as if it is perfectly natural to walk on water or as if the world has been flooded in weird pockets (depending on my mood).

There were bits of light rain, but it was a nice day for walking.

On the way up to Belvedere Castle, I heard an overly precocious little kid ask, "Is that the Bastille?"

Sheesh.

Another thing I overheard in Central Park: A woman to a grumpy-looking man with two dogs, "Don't judge me. You're not smart enough."

If my only data were conversations I listened to in Central Park on Saturday, I'd think that all women talk about is stupid and/or mean things men do and that all men talk about is Mork and Mindy.

At times, the fog made the skyscrapers disappear.

This was a very relaxing place in Central Park. I sat on a bench and watched the boat sail around. If I had realized it, I could have walked just a few more feet and listened to stories being told in front of the Hans Christian Andersen monument.

Honestly, this has got to be the most ignored sign on Earth.

Several of the Subway stations have their own wall art.

Could it Happen?

Carlson Restaurants Worldwide announced last week that it will bow to pressure and change the name of its popular restaurant chain. Religious groups claimed that the use of the G in the restaurant name was a blasphemous use of a signifier for the deity. The TGI Friday's restaurant chain will now be known as WTF.

"What?" said spokesperson Franny Freihoffer when confronted with gasps from reporters. "The F stands for Fridays. Grow up."

If Baltimore is the City that Reads...

NYC is apparently the City that Doesn't Want You to Read.

To be fair, I wish you wouldn't read that stuff, either.

Overheard Today In NYC

As I was walking back from Central Park, a man yelling into his phone: "You want to show righteous indignation!" Yeah. That's the stuff.

Just outside Times Square, two men following me: "I don't care how gay you are. Be as gay as you want to be. Just dance like a man."

Central Park and the Economy

I had a relaxing breakfast in Central Park this morning, down near a waterfall. The sounds of the city were still all around, but it was awfully nice to just sit and listen to the water.

It's surprisingly chilly. Tomorrow I'll bring my sweater. A squirrel dropped a nut on my head, but it wasn't too hard. (The nut, not my head. I have a pretty hard head.)

The hotel is a little too nice, to be honest. I don't like paying for internet and I'd like to just come down for some cold cereal in the morning. Why is it that more expensive hotels charge for things the cheaper hotels give away? The room feels a little European, actually. There's a shower only and the light switch is outside the bathroom. To that extent, it feels like home. Someone "important" is staying at my hotel. There are police and plain clothes folks everywhere. The road has been blocked off a couple of times. I feel tense walking around in the lobby. This could be due to the elevators as much as to the police presence.

The elevators are furnished with little televisions. Since we don't own a TV, that sort of over-energized delivery ratchets up my nervous system more quickly. Imagine being trapped in a small box with no exit and there are CNN talking heads shouting about how the economy is going to kill us all. I'm starting to think we should be preparing for a preemptive strike on the economy if it won't leave us alone.

Then, I imagine someone who owns a TV sitting in front of it all day listening to this fear-mongering. I remember sitting in a hotel in the UK at 9/11 staring in horror at the repeated images of destruction and worrying that the world was coming to an end. Could this now be the time that civilization comes to an end? Now, I have no doubt that this economic problem is serious and needs to be addressed, but I'm a little more conservative in my desire to see the government act or not. I want someone smart to sit and quietly think about it for a while. I don't want these people reacting to a crazy cry to do something, anything, just to appear to be taking action.

So, I would hope that all those people who are only going to pause in their TV watching long enough to react to some poll would shut the box off for a moment and take a walk down the street. You'll see that there are still people out there living: selling stuff, digging holes, holding hands. Maybe you'll come upon a nice bench next to a waterfall, and you can let the sound of the water smooth you like it is smoothing the rocks upon which it is working: slowly, carefully, but irresistibly.

Twilight (Stephanie Myer)

As we pass the halfway marker in the journey from longest day to longest night, I can't help but find my step a little bouncier. My spirits lift as the blanket of humidity is removed. There is a special joy that comes from the added alertness provided by the brisk air. Everything is more awake in the fall; the squirrels scampering on the ground, Prasad sitting up in a tree, birds flapping around in the sky...

I retrace my steps back to a tree where the-kid-with-no-name stands looking up at Prasad. Prasad's glasses are slightly askew, and there are bits of bark on his Dockers. But his tie is crisply knotted.

"How'd he get up there?" I ask. The lowest branch is easily six feet from the ground, and Prasad isn't much over four feet even when his hair is sticking up.

"I dunno. I guess the adrenaline helped."

"Adrenaline?"

"From the fear."

"Fear?" I crouch in a defensive position and scan the surroundings. "Is the cougar back?"

"I think that turned out to be a golden retriever."

"Still. Slobbery. Ick." I stand a little straighter for a second, then I remember Prasad's fear. "Um."

"We need to get him down before his mother calls him to dinner."

"Will she be mad?" I ask.

"No, but I'm looking forward to her naan."

"You're worried about your stomach?" I am appalled.

"She's also making chasni."

This catches my attention. I wonder if I can get myself invited over.

"Now, see here, Prasad," I shout up at him with my best imitation of one of my step-fathers. It seemed like he was never afraid of anything. "We are men, Prasad. We do not cower in pine trees at every --"

"It's not a pine tree," interrupts he-who-cannot-be-named.

"What?"

"It has leaves."

"Who cares what I call the tree? The problem is not the name of the tree. The problem is that Prasad being all up in it is keeping us from chasni."

"I am sensitive to the proper application of nomenclature," mumbles the kid whose name I cannot remember. I make a shushing gesture that I hope is both firm and caring.

"Prasad, tell me what you are frightened of and I will explain to you why you have nothing whatsoever to fear."

A book lands at my feet, startling the squirrel. I sigh with deep theatricality.

"Why do you people keep reading if it affects you so strongly?" I wonder out loud.

"Imagination is a powerful thing," says what's-his-name. "It's addictive."

I stare at him and try to figure out whether he is making fun of me. I decide to let it slide. I pick the book up and turn it over in my hands.

"You're reading this? I thought you only read books for adults."

All I get in response to that is some nonsense mumbling. I think I hear mention of a girl. I suspect it might have been Penny.

"OK, fine," I say. "Doesn't matter. This is easy. There are no such things as vampires and werewolves. You are rational. You know better than that. Now come down out of that tree."

"I don't think it's the vampires he's afraid of."

"No? What is it then, Prasad? I'll admit I found the idea of a 100 year old guy hanging out with a teenage girl kinda creepy, but not frightening in the immediate sense."

No response. I frown a bit. The book was more of a romance than a horror novel, really. And a teenage romance at that. Lots of tension, but no sex. The narrator is an emo girl crying every night because too many boys like her. Disgusting how the hormones --

"Oh," I say out loud. "Your teenage years are just ahead of you, aren't they? Oh, Lord, that is kind of scary." I shake my head sadly.

"Dude," says the kid who is not in the tree. "You're not helping here."

"Hair products," I say. "Social ostracization. Girls. Cars. Angst. Girls. Bullies. Girls."

"Don't listen to him," the kid calls up to Prasad. "He's old. He doesn't remember. It's just a short phase, right? Tell him it's over quickly." He kicks me in the shin.

"Oh, I don't know," I say moodily. "It's not as well-known, but boys have hormonal cycles too. And a need to feel accepted. And loved." I lean against the tree. "Man, you know, I never did learn how to dance or how to talk to girls."

"But you're married."

"Yeah, only because she talked to me. What if she stops liking me? What if all my friends turn out to be monsters? Oh, I don't like this at all."

"What are you doing?"

"What if they're making fun of me behind my back?" I say to Prasad as I settle on a branch a little higher than his. "What if I'm not special? What if nobody notices when I'm gone? What if my shoes aren't as cool as I think they are?"

I sit there staring into space while the kid kicks the book around.

"Hey, where are you going?" I ask Prasad as he starts to climb down.

"I'm going home to dinner," he says.

"What about the fear?"

"You made me realize how silly I was being," he says and laughs. At the bottom of the tree he calls up his thanks for pretending and runs off to dinner. I consider following, but I figure that I'm probably not welcome.

"Pretending. Yeah," I say to myself. I sit in the tree and think about the prom. I'm sure that squirrel is laughing at me.

No Comment

And I Still Haven't Found What I'm Looking For

In what I'm expecting will become a regular feature, I present: Proof of Emergence, or the Nonsensical Nature of the Keywords that Bring People to my Blog

OK, it's not a great title, but still. I'm listing my top ten keywords from the last thirty days. I'm not going to repeat the keywords in this post because I don't want to help push them up so we can have different ones next time around. That's the reason for the image over there.

10, 9 and 7. These three are nice to see. They show that people still come by to see some of my oldest posts when I babbled more about Rational products. These days, I still deal with the Rational tools, but I'm much more liable to say something about an open source tool.

8. It's interesting this pops up so high. The subject is a no-longer-existing farmhouse in Greenbelt that has a history marker in front of the Friday's on 193. I wrote a tale involving the marker and my imaginary friend Izzy. I think the story is OK, but it probably isn't letting the readers learn anything. Sorry about that, folks.

6. I'm not terribly surprised that people are looking for this book, but I was surprised to see that it's driving me any traffic. I did write a book tale about the book, and now that I go look, I see that I am at the top of Google's list for those exact words. Sadly, these are befuddled people who are probably looking for an "incident" instead of a "tale."

5. This one I blogged about not too long ago, so you can see that my own navel-gazing is unending.

4. This is the one that fascinates me. I can't make Google give me any results that link to my pages. If I supply the phrase in quotes, there are only four results. If I remove the quotes and add taleswapper, I get one result: a page with naked women. What? Time to go to Yahoo. Hey, look, Yahoo gives me two results to my site. Neither one of them has these words. This is too weird. Guess I'll have to write something so that people have a reason to find me. Hey internet people! Why are you searching for this weird thing?

3. This one is obvious, but it's also one of the two reasons I'm eventually going to get around to renaming this blog to the Abbot of Unreason.

2. This one generates a list of connections to Shorpy, of which I am myself very much a fan. Go look at Shorpy pictures! But I haven't linked or discussed this particular picture before. Why am I getting search hits?

1. By far the largest keyword hitter, and it's been almost exactly two years since I railed against that company for one little day of pain with their service. It's a valuable lesson to all you people who run companies out there and read my blog: the internet is changing things. Your customers' disgruntlement is no longer fleeting and easily expunged. It is increasingly recorded for all time in the interweb of justice. Sadly, no matter how much you improve, those little hits are going to be out there haunting you. So it's much better to avoid disgruntling the people in the first place. (Actually, I feel kinda bad this is showing up. I don't feel so upset about this any more. But it would be wrong to erase the original post, wouldn't it? That'd be like the Soviets making people disappear from history.) This was on my top ten way back on this exact day in 2006.

Slow Code is Not Lazy Code

Some people are going to tell you that the Slow Code Movement is all about laziness and that adherents just want to cruise by. This is emphatically not so. The Slow Code Movement is about rediscovering the joy of development, but it is not an easy route for the lazy and irresponsible. The rewards of the Slow Code Movement (quality and sanity) come with the cost of added obligation.

Emotional and Technical Debt

One key aspect of the movement is reducing stress by removing the artificial urgency embedded in the typical modern software development project. One necessary approach to this reduction involves the restructuring and redistribution of debt. A project adds to its technical debt every time it decides to "take care of that later." Each one of these postponements of necessary activity ("clean it up later", "think about training after we get through this milestone", "we'll fix it in the mix", etc.) adds to a pile of things that must get done until there is often a pile of things that nobody wanted to do that's higher than the pile of things the customer still wants to see. And this technical debt stack will become a roadblock to future progress that the customer cannot (will not) understand. Your customer's irritation and your stress is the interest accumulated on that technical debt.

Another way of putting it is that the stress-based interest from the technical debt is added to the principal of your team's emotional debt. The Slow Code Movement is all about eliminating emotional debt. Conflicts that arise from rushing around like headless chickens because of an unattainable schedule or other unrealistic expectations store up emotional debt that will come knocking later. Exhaustion results because batteries are never recharged. Attrition and apathy are created from repeated abuse -- ignored opinions (and other forms of disrespect), illogical demands, cascading context switching. These are the dangers of today's Fast Code mentality.

Debt is Hard to Avoid

As the agilists like to say, it isn't about one instead of the other; it's about working toward a preference. The preference in the Slow Code Movement is to avoid technical and emotional debt by not incurring it. Do we believe that these kinds of debts should never appear? In the same way that we understand that mortgages are necessary for purchasing a house but not a good idea for buying fancy shoes, we understand the need for debt but want to encourage its responsible use. There needs to be a match in value between the debt incurred and the thing purchased with that debt. Also, debt must be paid down regularly and with priority. I believe there is interest accumulating on that debt, especially the emotional debt, and it is irresponsible and counter-productive to let it fester.

The Hard Part

So, although debt is sometimes necessary, it is easier to avoid it than to pay it down. And this brings us to the part of the Slow Code Movement that is hard. A primary underpinning of the Slow Code Movement is responsibility. All participants must assume responsibility for the process and resulting product. Only you can affect what happens to you. Each member of a slow code team must be responsible for his or her own estimates, both in terms of making them real and comprehensive and in terms of protecting those estimates. In terms of "real", take the responsibility of understanding what each reader will thing you mean by a task being "done." Include in your schedule time to do even the things you don't want to do but should be done. Do not allow yourself to be tempted into cutting these from your estimate, even under pressure from ill-informed leaders. "It is what it is," is a good mantra for these situations. We have to take responsibility for the debt we agree to take on. If we cannot afford it, if the shortcuts are harmful, we must not buy it. When the leader comes around asking if maybe you could squeeze it in a little faster, if your estimate was responsible then the only responsible answer is "no."

Responsible debt management is an aspect of the Slow Code Movement. And that's dang hard because we all want to shine. We all want to help. We all understand that the leader is under pressure. But if we give in, we give up the right to point fingers.

At the same time, the leaders in Slow Code Movement teams have to be prepared to take the role of a (hard-to-find-these-days) responsible lender. Leaders have to be able to analyze the team's estimates and assess any requests for debt (from inside or out) against its ability to repay. At the end of the day, it is the team that owns and must repay the technical and emotional debt. Don't go financing any junk debt.

As they say, a good leader knows that he/she needs a team ready and willing to engage in the fight after the current fight.

Unexpected EOF with perl-ldap

I guess you can tell from this recent spate of geek posts that I'm getting my hands dirty these days. It's a nice break.

I'm cobbling together a little perl script that searches through an ldap repository looking for a particular user. If it finds the user, it tries to bind again with that user's DN and the password they supplied. (The search for the user's DN is done using a special search user. That shows the user exists. The second bind is to verify that the user's password is correct.)

My code kinda looks like this (there's a use Net::LDAP and a setting of basic variables earlier in the thing):

sub authenticateUser()
{
  # given a username and password,
  # see if the user is valid and the password is correct
  # return empty string on success, error string on failure
  my ($user, $password) = @_;
  my $auth = "Cannot authenticate for some unknown reason";
  my $ldap = Net::LDAP->new( $LDAPURL ); # http://something:10389
  my $msgHash = $ldap->bind ( version => 3 ); # make sure we can get to server
  if ( $msgHash->error ne "Success" )
  {
    # -- could not make initial bind to see if user exists
    $auth = "Bad initial bind: " . $msgHash->error;
  } else {
    # -- connect as the searching user
    $msgHash = $ldap->bind ( "$LDAPBINDDN",
      password=>"$LDAPBINDPSWD", version=>3 );
    if ( $msgHash->error ne "Success" )
    {
      # can't even connect to search
      $auth = $msgHash->error;
    } else {
      # find this user's DN
      my $attrs = [ 'dn' ];
      $msgHash = $ldap->search(
        base => "$LDAPBASE",
        scope => "sub",
        filter => "$LDAPFIELD=$username",
        attrs => $attrs );
      $auth = $msgHash->error;
      # -- if there's nothing wrong with the search, see
      # -- if there was any result
      if ( $auth eq "Success" )
      {
        # -- assume the result is empty
        $auth = "User ($username) not found in $LDAPBASE";
        foreach my $entry ( $msgHash->entries )
        {
          $auth = $entry->dn if ( $entry->dn ne "" );
          # -- the user exists!
          # Now, check that the user's password was correct
          my $userDN = $auth;
          $ldap->unbind;
          $msgHash = $ldap->bind ( "$userDN",
            password=>"$password", version=>3 );
          if ( $msgHash->error ne "Success" )
          {
            # -- password did not pass muster
            $auth = "Incorrect password provided. (" .
            $msgHash->error . ")";
          } else {
            # -- password is good!
            $auth = "";
          }
        }
      }
    }
  }
  $ldap->unbind;
  return $auth;
}

Now, I realize that if you're a real perl geek, you can code that in four lines and add a regular expression for fun, but I like to be able to see the whole logic laid out.

So the interesting thing is that it's working fine on Windows. If I put in a good username and password, I get blank back from the subroutine. If I put in a bad user or a bad password, I get an error message back from the subroutine. Now, I should say that it runs fine on Windows with the perl 5.8.8 and the latest perl-ldap package. I'm having trouble on Linux, but it's with an older version of perl and of the perl-ldap package. Maybe that's the problem.

At any rate, what I get back over on the test server, no matter what user/password combination I use is: "Error message: Incorrect password provided. (Unexpected EOF)".

Not good or fun. I don't have any idea where the unexpected EOF is coming from. However, I know what makes it go away: comment out that bold line in the code above and everything works. Something about making the thing unbind before making a bind with a new user seems to be telling perl something it isn't expecting. I don't know what it is, but I don't care. It gets me moving forward.

Hungry and Espaliered

Dear Fellow Metro Riders,

As I am sure every one of you Metro riders is consistently reading my blog (and I can tell because of how many of you are using blogger's new following feature like a bunch of stalkers), I thought it was time I let you in on two little things you could be doing to make my morning commute more pleasant.

First, you could try not eating on the Metro system. I'm not suggesting this because I am a rules-following slave who insists that if I have to follow the dang rules then everybody else does too. Of course, I am such a person, but that isn't the reason that your following this rule will help me. Also, I'm not particularly swayed by Metro's apparent concern about rats. I'm not really clear on why a rat is any worse than a horde of killer squirrels bent on overtaking my fair city. No. What bothers me is that the smell of your hot and delicious breakfast sandwich is invading my personal space. Your rights end at the nostril of my nose, pal. Some of us are struggling (or trying to struggle, or might want to think about struggling) with a complex diet that does not include stuff that normal people might call "food," and the smell of sausage and egg in the morning is just dang rude.

Also, some of us left the house without remembering to eat and we don't like to be reminded.

At least offer me a bite.

The second thing you could be doing to improve my morning commute, and I know that you are desperate to find ways to improve my commute, which has been much too long while I go to HQ in between trips to New York, is give me my space. Elbow room, son, that's what I'm talking about. Listen, if we're heading away from the city on the Orange line, by the time we get to Clarendon, much of the train is deserted. If we are the only two people in the car, you do not have to continue sitting next to me. I know you're worried I'll be offended or that I'm feeling a little lonely on my slog out to West Falls Church, but really, honestly, the only reason I'm not moving to one of the spacious empty seats available all around us is that you've got me trapped against the window like a, well, I'm having trouble with an analogy, maybe one of those trees that they tie flat to a wall so it grows sideways? At any rate, I won't be offended. Give me some room.

Thanks for listening.

Your fellow commuter,

The Abbot formerly known as Taleswapper.

Maybe It's in the Glove Box

I'm someone who often writes about imaginary people having discussions about books on public transportation, and these stories generally involve the book group freaking out some unsuspecting participant. (Examples here and here. So, I find it surreal when (IRL, as the kids say) someone approaches me on the metro to comment on the book I'm reading.

It happened to me on Thursday. I'm reading The Starship and The Canoe, a book about Freeman Dyson and his son George. The blurb on the front compares the book to the famous Zen and the Art of Motorcycle Maintenance and I picked it up at the Greenbelt Labor Day festival this year, so you can imagine what kind of crowd enjoys this book. The guy who spoke to me fit the bill perfectly. He definitely had the look of the aging and defeated (but still hopeful) hippy. He tapped me on the shoulder on his way off the train. (That was enough to make me jump, it's not unusual for me to shut the world out so much while reading a book that I find myself riding the train all the way to the end of the line and not noticing that I'm back at PG Plaza going into DC when I meant to get off at Greenbelt.

Now that I think about it, I guess I'm starting to look like an aging hippy myself, except I don't have the hair for it any more. I do miss my pony-tail sometimes.

At any rate, he tapped me on the shoulder, pointed at the book, and told me it was a great book. It had changed his life.

What can you say to that?

I mean, I was only half way through the thing, but it wasn't doing anything for me. And even if I were liking it, what's the proper response? Oh, I'm looking forward to that? Or maybe, That's nice for you? You can't really say, Thanks, because what are you thanking him for? That's nice, seems a bit trite. Yeah, I can tell, isn't terribly polite.

Luckily, the train stopped and he was on his way out. I don't suppose my shy smile and nod were taken as rudeness?

I mean, I'm starting to get irritated at the hero-worship in this book. The author seems to me to be in love with George, but frustrated that George doesn't quite fit into the mold he wants. I guess the real problem is that the author is much too present in this book. Also, it's slow. And (at the risk of irritating The Ridger), there were a couple of times when the sentences made me giggle. Two came in adjacent paragraphs:

"At Nanaimo, we left the ferry in my car..."
"In the evening we turned into Beaver Cove..."
which wouldn't have been so funny if they hadn't come one right after the other and if I hadn't been thinking about sentence structure already.

Speaking of Food...

Broke out the bicycle this morning and rode over to meet the Brunette at La Fuente, a Salvadoran restaurant in Beltsville. It recently came under new management and the food has been excellent. I've been introduced to baliadas, which are delicious and terribly-far-off-the-diet-but-I'm-going-to-eat-them-anyway. The flour tortillas are thicker and breadier than our Southwestern kind, almost a flatbread or pancake kinda thing.



8.8/1:50

It is getting to be too long between bicycle rides, but keep in mind that part of the time includes over an hour sitting in a restaurant enjoying myself (read: sitting on my butt eating baliadas).

Ah, the Grumpiness

Pretty grumpy about driving all the way out to West Virginia to sit in the lobby of a hotel for four hours and at the table of a meeting for 15 minutes and not say anything.

The only solution is food:

It's hard to pass up a place that has a special on a dozen hot dogs. I had a kielbasa dog and a (what seemed to me to be authentic) Chicago dog, celery salt and all.

No Books for BookCrossing

Somebody should take some books down to the Queen City Creamery in Cumberland and release some books into the wild. Their holding pen is empty:

I would do it, but Cumberland is only an occasional point on my journeys, and I really, really hope this is my last trip out to Clarksburg for a while.

Getting Loopy

Sometimes, I like to think of this blog as a scratchpad for stuff I'll come back and need later. Here's an example. You can feel free to ignore this post. It won't hurt my feelings.

Not all Korn shells are created equal. I have a customer who has a nice Korn shell script that I've been wrestling to make work on our own Linux box. It turns out that our Korn shell is pdksh, the Public Domain Korn Shell. It's pretty much the same as the standard AT&T Korn shell, but there are little catches from time-to-time. One example is in a loop.

In a ksh script, you can pipe the results of one command into another. For example, if you wanted to read each line of a file and do something with it, you could write:

cat $FILENAME | while read LINE
do
  ...do something with $LINE...
done

That's all well and good. It should loop through all the lines in the file and on each one do something. If you have ten lines in the file, it'll "do something" ten times. One nice thing to do is read all the lines in a file and if they meet some rule, add them to a list in a variable so we can use it later to do other things with. (For example, you might have a list of variables and want to ignore the lines that start with #.) Let's say you just wanted to take each line and add it to the end of a variable. You could do this:

cat $FILENAME | while read LINE
do
  echo "Line: $LINE"
  MYLIST="$MYLIST $LINE"
done

echo "list: $MYLIST"

Running this gives you something like:

Line: stuff on line 1
Line: stuff on line 2
list: stuff on line 1 stuff on line 2

Except...

Except that with pdksh, every time you pipe, you start another process and the process doesn't talk back to its parent. The loop knows what's going on, but once the loop is done, anything it did to variables is lost to the sands of time. On our server, you get:

Line: stuff on line 1
Line: stuff on line 2
list:

Which isn't very useful, since the whole point is to use the variable somewhere else later. If it's empty, I can't do anything with it. One solution is to change from a while loop to a for loop, eliminating the pipe:

#cat $FILENAME | while read LINE
for LINE in `cat $FILENAME`
do
  echo "Line: $LINE"
  MYLIST="$MYLIST $LINE"
done

echo "list: $MYLIST"

Which will result in:

Line: stuff
Line: on
Line: line
Line: 1
Line: stuff
Line: on
Line: line
Line: 2
list: stuff on line 1 stuff on line 2

Sure, the inner loop is run more because it's splitting on each space instead of each line, but the end result is what I'm looking for. Now, I have a place to come back and remember when I need it again.

Waiting for Hanna

And hoping she doesn't have any sisters.

I'm not terribly worried about the upcoming storm. She should have spent most of her energy by the time she gets to us. I did plant these purple plants just this week, and the Brunette thought it would be a good idea to protect them from any heavy downpour.

So tonight I threw a tarp over the purple plants and weighted the tarp with bricks. I hope the bricks don't fly away.

More important, we've been fighting a war with the squirrels over the garden on the service side, so it seemed like a good idea to protect the somewhat fragile pepper and tomato plants with a tarp.

I think we're less likely to lose the tarp in the front because it's so big, but I guess a gust could get under anything.

Blindness (José Saramago)

The configuration manager boarded Acela at Union Station. This was his first ride in business class. The seats were large and appeared comfortable. He paused to consider whether to choose a forward-facing seat or take a position at a table. He noticed the book on a table on the starboard side, so he took the remaining seat. Now the table was surrounded by four. What do you all do? he asked. Why do you want to know? Is this some sort of DC thing, placing profession above -- I think it is because of the book. The book? Yes, this book here, it doesn't name any characters. But it's not all the doctor this and the taxi driver that; there is also the girl with the dark glasses and the boy with the squint. And the first blind man. Oh, yes, we mustn't forget the first blind man. I think it's a way of showing how the blindness was depersonalizing. No, I think it was a way of universalizing the experience. Well, then. We will have to agree to disagree. None of the passengers suggested that they disagree to agree. We all know what the old proverb says. Which proverb? The one I was about to tell you about. The one with the dog and the bone and the bridge? No, not that one, another one. I want to be known as the girl with the swishy skirt, said the girl with the swishy skirt. Oh, no, groaned the man who groaned at everything, we don't have to act like the book, do we? There are no quotation marks, so how do we know who is talking? It's pretty easy most of the time. I think it's just another way of stressing the confusion. I'm not confused. I think he meant in the book. Ah, well, you said he, so we know that wasn't the girl in the swishy skirt who said that. I think all his books are like that, some hardly have any punctuation at all. Did you write a book? She meant the author, I think, but I also think it's funny. You think this is a funny book. Yes, in places, but that's not what I meant. What did you mean? It just has all these quotable bits but it doesn't have quotation marks. Or inverted commas. Right. What's an example? There was this point where everyone was running away from a fire. Hey, this train has electrical outlets. That was in the book? Kinda lame quote if you ask me. No, that wasn't me, said the configuration manager. Stop interrupting, the girl with the swishy skirt said to the man who notices electrical outlets (and groans). The quote was, plant life would behave in exactly the same way, too, if it did not have all those roots to hold it in the ground, and how nice it would be to see the trees of the forest fleeing the flames. Yeah, that's funny. He didn't say the quote was funny. I just liked the feel of it. That might be the translator more than the author. Don't speak of the translator. Why? Because the translator thing is sadder than the whole book. That's a pretty grim book. But with moments of hope. I guess. What about you? Me? Yes, you haven't said much. I'm not part of your book group. Oh, nonsense, everyone is a part of the book group. Well, that's easy to say. It's like the proverb. The one about the chicken and the marmot? No. Look, don't mind him. What shall we call you? The fourth passenger said, "Call me Alice."

And the mobile book group ran screaming from the car.

Demonstration Day

I have a demonstration to perform in about 40 minutes. I'm a little nervous.

I've been writing this promotion/publishing web tool that allows someone to merge files from one Subversion branch to another (push only) and then rsync the result with a server. I'm getting to be proud of it, but it has so many little pieces that I know could be just a little better.

I am wrestling with the urge to go through the code and "pretty things up". Just a tweak here or a touch there and it could be even more flashy and interesting for the crowd I'm going to demonstrate to over the web.

But I'm not going to touch it. Most likely, I could change a few things without introducing any problems, but can I be sure? What if I mucked with something that works fine now and it ends up crashing embarrassingly in 40 minutes? Sure, I could roll back to the earlier revision -- it is an app on top of a version control tool, it had better be well versioned during development! -- but that will only add delay and irritation and fear. And it will make me grumpy.

So, instead of mucking with it right up to the line (this is only the first sprint after all), I've been running through scenarios that I'll demonstrate to smooth my presentation and ensure that things are working one last time. And now, for the next half hour, I'm just going to relax and breathe. That way, I'll be emotionally and mentally prepared for whatever comments come from these folks who have not yet seen anything but a drawing.

That, my friends, is what the Slow Code Movement is all about.

Final Parade Picture

And finally, the one thing I waited the entire parade to cheer for:

street sweeper

As a road cyclist, I appreciate all the work the people driving this machine do. Here's to you, street sweeper people!

Parade Pictures, Part VI

I thought there were going to be some Olympians in this parade?

Oh, and sure there were! The Greenbelt Pride group dressed as Olympians:

I particularly liked the torch.

I'm afraid the biker was going too fast for me to get a picture. Here's a softball player:

And here's a beach volleyball player.

The place in which we sat was nice and comfortable from tree shade, but it made getting a good picture difficult because of all the contrasting light. Still, the parade over all was a lot of fun.

te quiero barcelona

A quick break from the endless waterfall of pictures, because we tried to wash Death Race out of our minds on Sunday:

Vicky Christina Barcelona A Woody Allen film without Woody Allen.
Theater Location: Old Greenbelt
Noise Level: Adequate.
The Skinny: Two women fall for the same man and endlessly analyze the feelings. I guess if I got to direct my own movie, I might want to put Penélope Cruz and Scarlett Johansson in bed together. I don't think any of the characters learned anything, but he did a good job keeping Christina and Vicky's behavior consistent with their personae. And the narrator was annoying. That song won't get out of my head!

Parade Pictures, Part V

Were there any other vehicles? I like me some vehicles.

Aside from all the police cars and fire trucks, there were a few. There was an old car:

And a really old car:

There was a car that protested the war:

And a car that supported the Registrar of Wills. If you just went by this parade, you might think that the Registrar of Wills is the most important elected position in the county. I'm sure she's nice, but I don't get it.

There were ballet dancing Smart Cars:

And weird robotic gadgets from Blair geeks. (Don't get me wrong. My dad was a Blair geek. Goldie Hawn was a Blair, well, whatever she is.)

And stuck at the very back of the line --

oil tanker truck