Ray and the Riot Police

I traveled from Frankfurt to Brussels on the morning of 14-Nov (2014). Belgium was kind enough have a transportation strike that day. The trains were not running. This made getting from the airport to the hotel an adventure.

While the trains were not running from the airport, the buses were. I called the hotel to see if they had a shuttle. They didn’t. The person that I spoke with suggested a taxi. I asked about the bus and he recommended against it. I could tell he had no confidence that I could manage with public transportation.

He sighed, then told me that I would need to board the #21 and ride it to Schuman Station. Then walk to the Metro station (subway, not the same as the trains) and…

“Then I take the Metro to Rogier?” I interrupted. I have stayed at this hotel before. I’m not totally uninitiated.

“Yes Misère,” he confirmed. “It will take you one and one half hours.”

He sounded a little more optimistic. I could almost hear him thinking, “Perhaps you will make it to the hotel using public transportation after all. But we will wait. We will see.”

The gauntlet thrown down, I bought a bus ticket. Actually, I bought 5 because the big green OK button on the ticket machine was also a knob.  Turning said knob incremented the number of tickets purchased but the guy at the hotel will never know. Anyway, I followed the flock of annoyed travelers as they redirected from the train to the bus. I find the platform for bus number 21. It was not encouraging. The bus was multi-sectioned and jammed packed. I don’t think that I could have squeezed on, even if I left my luggage behind.

So I waited for the next bus. While waiting, another crowd gathered on the platform about 20 meters closer to the terminal which is exactly where the next bus stopped. By the time I covered the distance, it was clear that the second bus would pack as full as the first.  My bus boarding skills were no match for the Europeans. Perhaps the hotel guy was right? I think about taking a cab but I’d have to drag myself back through the main airport terminal. Plus I would have to admit defeat. I wasn’t that tired…. At least not yet.

The second bus now full, I incredulously watch as several more travelers force their way onto the bus. I wonder if they are causing people to pop out of a door on the other side of the bus. How on earth did that last man fit? Why didn’t I take a cab? That’s when the third bus pulled up behind the second. Unfortunately it is a #12 not #21. Then the driver flips the digital bus number from 12 to 21 and stops the bus right in front of me!

Hesitantly I ask the driver, “Does this bus go to Schuman?”

“Yes,” replies the driver. “We will leave in six minutes.” I board the empty bus.

I find a seat for me and a place for my luggage. Within the next five minutes, a dozen others board the bus but there are plenty of seats for everyone. Someone fishes some peanuts from their suitcase.  Someone else pulls out a sandwich.  I’ve got a granola bar in my pocket that I was given on the plane.  Perhaps if my fellow travelers and I pool our resources, then we can have a pot-luck picnic. What a random thought, I might be more fatigued than I thought.

After about 20 minutes, the bus driver’s cell phone rings. “Ello. Oui…” jabbers the bus driver.

“How odd,” I think. “In the US, I’m pretty sure public bus drivers don’t take calls while they’re driving people around.”

And it’s not subtle. The whole bus can hear the driver talking. Where’s the discretion? The driver sounds very annoyed. But it’s all in French. For all I know, his girlfriend is telling him that she put his stuff on the curb and she never wants to see him again. He sounds that unhappy…. Or maybe it’s just because I don’t understand the words.

Then the bus stops and the driver calls out. “Ok. This is Schuman.”

About 30 of us depart. I thought the bus stops were nice in Brussels and Schuman is a major bus stop. Where’s the shelter thingy? Where’s the sign? How are you supposed to know you’re at Schuman if it does not say Schuman on a sign? For that matter, where’s the side walk? It’s as if the driver decided to  let us out on arbitrary strip of road next to a building instead of stopping at the actual bus stop.

Confused, I follow a group of others who just exited the bus. Some of them have suitcases too. There’s supposed to be a big ‘M’ for Metro around a big staircase leading down under the street. I don’t see any of it. I was in Brussels eight months ago. How much could it change in eight months? At least the herd has led me to a sidewalk and I’m no longer in traffic. After about a block, I cannot identify the group from the bus. They’ve dispersed and I’m too slow. On one shoulder, I have my laptop in a backpack. I am pulling my roll-on suitcase and I have a medium shoulder bag on the other shoulder. One more piece than normal and three more than I wish I was carrying right now.

I spy an elderly lady who also has a roll-on suitcase. She’s not moving as quickly as the others. I decide to cast my lot with her. Hopefully she’s trying to get to the Metro. I lock on and start to follow staying 10 meters back. To le Metro, Madame, to le Metro!
But she doesn’t lead me to the metro. Instead she leads me to, or rather we are blocked by, a protest. Technically we are blocked by the semi-circle of police in full riot gear who surround the protest. The actual protest is inside the police cordon, on the other side of a small cobble stone street. There are hundreds of police standing shoulder to shoulder to contain the protesters. The protester are yelling, beating drums, waving flags and well, protesting. And they seem pretty good at it. So behind the police we stood – literally. Every officer that I can see is facing the protesters.  Effectively, we’ve sneaked up on the riot police.

“Ok lady, I’ve got your back,” I think to myself. Unless one of those policeman turn around, then, I’m dropping my luggage and running for it. The old lady, jaw set in determination, holds her ground. So do I, because, well, because I don’t have the slightest idea where else to go or what else to do. The bus is gone and I still don’t see the sign for the metro.

We stand there for what seems like a long time. Then a policeman turns around as spies us. Or I should say, “He spies me.”
The old lady can’t be more than four feet tall when she stands straight and she is bent under the burden of pulling her own suitcase. The officer’s gaze is too high. I don’t think he even sees her.

The officer has done nothing except turn around but he looks imposing. He’s tall, young, and quite fit. He’s smartly dressed in black combat boots, navy blue fatigues and a navy blue commando sweater – the kind with smooth nylon patches on the elbows and shoulders. From ankle to mid-thigh, the fronts of his legs are covered with black plastic storm trooper armor. There’s a black night stick tucked into the armor on his left thigh. To finish the ensemble, he’s holding a clear plexiglass version of a Roman soldier shield. You can see through the shield but it’s like looking through a fish-eye lens. The combined effect of the all those shields makes the protest seem like a bizarre human terrarium exhibit.  The officer seems surprised to see me and asks me a question in French.

“Sorry?” is all I can manage in reply.

So he switches to English. “What are you doing here?”

He has the tone of voice that Squidward uses when he says, “Spongebob! Patrick! What are you doing in my bedroom?”

But he also has the same French accent, the narrator in Spongbob uses when he says, “Several bad puns later.”

I am trying to think of just how much of the story to tell him. But I’m also processing an odd assortment of random thoughts. Am I in real danger? Dang, the shoulder strap is really starting to bite into my shoulder. Did I put my laptop in sleep mode instead of turning it off? And lastly, I think that someone should really tell these guys that black and navy blue do not look good together.

Before I can speak, the old lady starts explaining in French. I thought the officer looked surprised to see me. He really didn’t see the old lady standing there and was shocked to discover that a four foot tall old lady was between us. He jumps back in surprise. This is not going well. When he jumps, it causes several other officers to turn. The old lady is now jabbering rapidly in French. She’s pointing in the direction of the metro. Finally a sign for the Metro. Now she’s pointing at me! I’m getting worried. I don’t know the French word for creeper but I’m really starting to regret my decision to follow her. Fortunately the word for metro is the same in English and French. I hear the word “metro” and I join in the discussion.

“Oui. Oui. Metro. Metro.” I begin to shout while wildly waving my arms in the general direction of the metro station. I can’t really explain my behavior. The officer made it quite clear he spoke English perfectly well. I really don’t think I’m helping.

Then it happens, the officers part and the first officer motions us through. The protesters across the street notice us.  They quiet for a moment and stare. The protesters find me a spectacle? How ironic is that? We have to cross into the police line and then cross back out of their ranks in order to get to the Metro station. However, the police on the other side have watched the old lady and me from the beginning. They just make a small gap and let us pass. The old lady and I get to the top of the metro stairs but it’s not over. A crush of protesters arrives via the metro.  They hurry up the stairs to join their peers. They are whooping and trying to unfurl flags. I start to think that it may be safer if I go back inside the ring of riot police but the protester swarm splits and passes to either side. There is an oddly civil quality to this whole thing. The police calmly stand and make their cordon. Protesters join and leave the group almost at random. It’s noisy but they are much better behaved than the crowds at many sports events in the US. Maybe protesting is a non-contact sport in Belgium? [clearly I was wrong on this point]

At last we get to the metro station. I buy my ticket and the old lady heads in the opposite direction. I don’t think there’s any way that she could know how much I was counting on her. Half a dozen stops and one transfer later, I arrive at Rogier station. The escalator was under repair so I carry my luggage up three flights of steps. I exit and walk the block to the hotel. When I get to hotel, I’m soaked in sweat but I’ve made it!

The hotel clerk looks alarmed as he checks me in.

“Is everything OK sir?” he asks.

“It is now I reply. I decided to take the bus from the airport,” I say flatly.

“Misère that was you who called?” he asks. “That was three hours ago. Did it really take that long?”

“It does when you encounter a protest.”

“Ah. You saw the striking transportation workers?”

“Yes. Wait! What? Transportation workers were the protesters?”

“Yes,” the clerk replies. “That is what striking civil workers do in Belgium. They protest.”

“That explains why they were so…civil?” I replied. Nothing else came to mind.

Egad. The next time I see workers striking in Pittsburgh, I’m going to honk, wave, and thank the stars that they aren’t protesting in the middle of the Fort Pitt Bridge during rush hour. You have no idea.

What’s the opposite of half-ass?

To describe someone’s work as half-ass is bad. This got me thinking, is full-ass work better or worse? Perhaps full-ass is redundant and the correct usage would just be ass. As in, “you’ve done an ass job!” Still, is an ass job good or bad? And if an ass job is bad, then that would make a no-ass job good. Right?

Two Hard Things

“There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.”

— Martin Fowler

A Sticker and a Juice Box

It seems to me that many folks believe that regardless of the result or the level (or lack) of contribution, everyone’s a winner. For want of a better name, I call this the sticker-and-a-juice-box phenomena. Here’s why.

Jim is a business partner of mine and one of the most committed individuals I’ve ever met. Anyway, several years ago Jim agreed to be the defensive coach for his son’s pee-wee football team, the Panthers.

On a sunny Saturday afternoon in August, the Panthers played the defending pee-wee champs. From the first possession on, the Panthers trailed a bigger, faster opponent. Then late in the forth quarter, the Panthers’ scored to take the lead. With only minutes left, the Panthers were poised to beat the defending champs.

Jim huddled his defense together and began the “coach speech.” They had practiced hard all week. They knew their assignments. All they needed to do was get out there and play hard for one more series — just two more minutes.

But in the heat of a Georgia August, the last two minutes are about neither skill nor training. They are about drive and passion. In the words of my daughter’s soccer coach, “You’ve got to want it.” And that’s when Jim noticed that one of his players, Carson, was still sitting quietly on the bench.

OK, time out here for just a second, lest you think I’ve lost all perspective. Yes, it is just pee-wee football. Yes, the players are only twelve year olds. No, in the grand scheme of things, even in the small scheme of the day, the outcome of the game is not important. The score should not weigh on anyone: loser, winner, parent, player or coach. In fact, I won’t relay any details about the rest of the game — not even the final score because as I said, the outcome of the game is not important. OK, so back to my story.

Jim calls to Carson to huddle up. Carson doesn’t move, he just looks at his feet.

Jim trots over and says, “let’s go son, your team needs you.”

Carson just shakes his head.

“What’s wrong? Are you hurt?” Jim queries with some concern.

“No coach. I’m OK,” Carson finally answers.

“OK then. Let’s go.”

But Carson doesn’t move. Instead he says softly, “It’s hot coach. I’m tired and I don’t want to play anymore.”

“You don’t want to play? Why not? We really need you,” says Jim.

But Carson replies, “Coach, the team doesn’t need me to play.”

“Sure we do,” Jim replies. “You play a key position in our defense. Without you, I’m not sure we can stop them from scoring. See, we really do need you.”

Carson, looks up from the imaginary spot between his feet and answers with a question of his own. “What happens at the end of the game if we win?”

“You know what happens, Carson,” answers Jim. “The same as we’ve done all season. We’ll shake hands with the other team. Afterwards, the boosters (moms) will have a snack and a drink for you. And everyone on the team gets a sticker for their helmet.”

“OK,” says Carson. “But what happens if we loose?”

“We’ll shake hands with the other team. Afterwards, the boosters (moms) will have a snack and a drink. And everyone on the team will get a sticker for their helmet” answers Jim.

“So either way we all get a sticker for our helmet and a juice box, right coach?”

“Yes,” Jim answers.

“See coach,” says Carson. “It’ll be OK. The team doesn’t need me to play because the score doesn’t matter. We get the same either way.”

And that’s what terrifies me. We have de-emphasized the results so much that our children cannot even comprehend winning and loosing? Everyone wins every time. The reward is no longer connected to the result.

We live in a competitive world. I can assure you that the workforce of other nations plays to win — and for keeps. When contracts go overseas, jobs go overseas. When the factory closes, the jobs are gone and they do not come back. At the end day, we can (and should) congratulate our competitors for their successes. But I’ve got some really, really bad news. There’s no sticker for your hard hat. No juice box will be brought to your cube. And in the global economy, there’s no consolation prize for being second best.

A good collection of tools for software development

Many software development groups, begin with just a few developers. Usually, neither the development process nor tool set is (or should be) formalized. Eventually, as the development teams grows, a degree of formalization becomes necessary. Source code version control is a good place to start. A basic toolkit will also help. In most cases (except for Winmerge really) there are numerous good alternatives. My experience suggests that a myriad of choices may benefit the experienced but can paralyze teams that are just beginning to mature. In that spirt, here is what I would make sure was in place as step one. I find this a workable set but nothing here should be construed as “the only way.”

This is geared towards a windows shop not a linux shop although the basic tool needs still apply.

Here’s my list.

  • Subversion (or Git) for source code management
  • Winmerge for comparing files and merging changes. Winmerge is open source but only available on windows.
  • A full IDE: Eclipse (Java & Perl) or VisualStudio (.Net) – depending on the programming language.
  • Notepad++ – you don’t always need an IDE sometimes you just need a great editor
  • Agent Ransack for searching for and through files
  • A debugger for your programming language
  • A profiler for your programming language