Jinxed

Yesterday I cheered because I had to wait about 15 minutes instead of the typical 40 – 60 for the privilege to board a bus home, if you can call that dirty rotten wheeled can a bus. The fare is about 10 times the one of the train or its replacement buses, the units are gross and very poor maintained but their seats don’t murder my back as much as the others do. So I suck it up.

Just as we were exiting the highway and before entering into the city the engine stops with noises that lead one to believe it either run out of fuel or some air got into the diesel lines. For all I care it could be both.

Fuck.

10 times.

Somehow this is a grossly exaggerated notion within the software community but in every field we find people that performs better (by some measure) than the average by a very high margin.

I witnessed that with my very own eyes and they are not magical creatures. There’s a lot written about them but they tend to share some common traits of overachievers that make the real difference from the rest:

  • They have a clue about what they are doing.
  • They are focused.
  • They work on things that matter.

(Or as Yosef puts it in http://yosefk.com/blog/10x-more-selective.html, things that aren’t going down the toilet. I like it when he says, “The hardest part of “managing” these 10x folks – people widely known as extremely productive – is actually convincing them to work on something. (The rest of managing them tends to be easy – they know what’s what; once they decide to do something, it’s done.“)

Now, I’m not the brightest bulb but when I tackle a problem I try as much as I can to understand its domain. I ask myself frequently if there’s a better way to approach it, as it’s very rare to come across something so unique that nobody worked on anything that barely resembles it (or that can be applied to the current problem).

I’m working on a system that it’s getting older but the foundation is solid and it shows. Everything makes sense, even if you have no idea about a piece is often it can be found in an intuitive way and the core looks beautiful, even if it’s made with dying technologies. The architecture is very well designed and implemented.

But then people came and started adding little things here and there without very much thought. They built XML files concatenating strings, they copied the routines into 34 (that’s real) places and each one has a little difference (that’s kinda ok, they talk to things so horrible that can’t process CDATA fields and use a custom encoding instead). The idea of having all the common stuff in one place never crossed their minds or, shiver, use a standard library (they existed and were mature back when those things were implemented).

They also wrote lots, and lots, of functions like (php):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
private function frobnicate($the_frob)
{
    // Selects the baz of the frob.
 
    // If it's one kind of baz
    if($the_frob->is_of_type('one kind of baz'))
    {
        return $this->baz = 'Baz1';
    }
 
    // If it's a special baz
    if($the_frob->is_of_type('a special baz'))
    {
        return $this->baz = 'Special';
    }
 
    // If it's a straw one
    if($the_frob->is_of_type('a straw one'))
    {
        return $this->baz = 'nuts';
    }
 
    // ... snip about 200 lines of the same ...
 
    return $this->baz = 'the default value';
}

And this is repeated in about 56 places, intertwined with many more conditionals. I only hope this was generated code and not typed by hand.

Anyway, I nuked it and turned that wall of if statements into:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
private function frobnicate($the_frob)
{
    // Selects the baz of the frob.
 
    $map = array(
        'one kind of baz' => 'Baz1',
        'a special baz'   => 'Special',
        'a straw one'     => 'nuts',
        // ... you get the picture ...
    );
 
    foreach($map as $type => $baz) {
        if ($the_frob->is_of_type($type)) {
            return $this->baz = $baz;
        }
    }
 
    return $this->baz = 'the default value';
 
}

And that’s even not clever (table driven programming has been around for quite some time).

I mean, after doing it three times I question if there’s a better, more concise way of expressing the same. But for some people that moment never comes.

Focus.

These days I’m having trouble to keep focused for more than four hours straight, make that six in a very very god day. I guess that’s a given with age and more responsibilities. Doing boring stuff doesn’t help either, but it’s a good incentive to finish as soon as possible without mistakes.

Do things that matter.

This deeply touches me.

Nowadays most of the stuff I do at work to put food on the plate is meaningless and boring to death. It makes life easier for a lot of people but nothing will change if it goes away overnight. Many will cry but nothing terrible.

It doesn’t give me a technical challenge any more. At best it teaches me patience and how to deal with utterly broken and stupid systems that were not designed to be used (not by computers and certainly not by humans). It drains my energy and I’m past the point where it makes sense to put up with it.

It doesn’t make the world a better place, not even by chance.

Do I do things that matter? Yes, on weekends and sometimes by night.
Can I make a living out of them? Not now.
Not yet.

Shelling out.

I was re-reading (again, I forgot how many times) one of my favourites writings of Scalzi, “Being Poor”.

It opens with the line “Being poor is knowing exactly how much everything costs“.

A couple of months ago I changed my phone for a new one. I’ve switched from a flip-phone (a Sony R306) to a Motorola MotoG. On the way I lost five days of runtime on a single charge and that peace of mind that I can bump it into everything without caring that much or that I can leave it unattended on a table and no one will part with it (and also the AM radio).

On the other paw, it is developer friendly, has a ton of shiny and distracting things and syncs without a hitch.

Back again to what made me think of it.
It is advertised as a cheap entry level phone and it kind of is on other countries. At the exchange rate and taxes back then I paid a fair price compared to what it would cost had I bought it on an foreign shop.

However, it is not (at least to me) worth what it costed if I only wanted a phone to IM and talk instead of a development tool. It was more or less the same amount of money that I spend on three months of food. Many people earn less than that sweating blood on never ending days.

On a few minutes I traded money worth three months of food for a device that fits in my palm. It was an investment that paid for itself in a few weeks but I still feel quite strange.

Jinxed.

So, my car sort of appeared.

Without its five tyres, the stereo and speakers, (ok, a cheap one but enough to listen some music), the ashtray and cigarette lighter. Among other things were missing some clothes (a hoodie I really liked and spares for a couple of days), a mix-cd one of my best friends made for me and a cheap spray of vanilla with a touch of chocolate. At one point the ceiling was dismantled because now it feels quite loose. Someone cleared the odometer and made about 100Km after that. Someone else decided that it was funny to cut the drivers seat belt. Oddly enough, the fire extinguisher and the jack were spared.

It was also filled with ashes. That brought back memories of a past I thought long forgotten. No matter how many cans of disinfectant I used or how hard I scrub I still felt dirty, dirty deep inside me. Like it was written with fire on my soul.

I also wrote ‘bribes’ for the first time on my accounting books.

On top of that my laptops power brick died but it was just a matter of a quick splice near the strain relief.

Yay.

Things are looking different today…

Clearly I’m a glutton for punishment.

Today I decided that I can’t have enough and it was time to upgrade my distro so I can play with newer things (and also because google was nagging me to use an updated browser).

I did a dist-upgrade and that not only completed without a hitch but I also had a bit more of free space afterwards. Previously I hammered the thing and then just gave up all hope.

I’m starting to like this new future were things work like they should.

Now that I jinxed it I went full steam with a do-release-upgrade. It is downloading 3277 files at the blazing speed of 20 kB/s.

Let’s see if I still have a working machine by monday.

Things I hate this month.

Printers and insurance companies.

So, it happened that I needed to print something at the last moment and the printer refuses telling me that it is out of toner. The funny thing is that it ‘knows’ this just by counting the amount of pages printed and I can certainly tell it is not true, as it still feels quite heavy. But, if I command it to print a self test page it cheerfully goes on. I am just one bit flip away of using it but no time to play with its innards.

Almost two months after I was rearbumped both insurance companies (Copan and Federación Patronal. I despise you.) play dumb and try to put the blame on each other. And I am getting increasingly impatient and angry.

Meanwhile, our car is still wrecked. I’m just going to fix the lock on the trunk so it closes properly again. Lately I was thinking on selling it and buy something more family-friendly (and comfortable) and performing all the needed repairs costs way more than what the increase on the sale price can be. I don’t really care what the broken windows theory says about it.

Shafted.

A wonderful rainy night of July I stop as the semaphore turns red. The car behind doesn’t and stomps on my back. So does the one behind it. I file complaints against both insurance companies. After a month and a half both decide that it is not their responsibility and start playing games. Meanwhile the back of my car is still trashed.

So, Copan and Federacion Patronal, even thou you treated me well when doing all sorts of boring paperwork at your premises, I do not like you. Not a single bit.

Ayer me olvidé una zapatilla en tu casa…

… no sé qué pasa .

Most of the times I sleep at someone else’s place I forget something, like a sock or a handkerchief. Some do that on purpose to have an excuse for coming back but I’m a different kind of creep. I’m just Clumsy.

Last weekend I forgot an Ankh Cross.

It’s been a while since I had time to make something, take pictures and write about it so I’ll just post some old ones from the making of said cross. The rest can be found at flickr.

Ankh made out of scrap aluminum from a hard disk

Title courtesy of Mostruo! – Tu culpa

The root of all evil.

I just love when I forget to add ‘volatile’ and the compiler happily optimizes away a chunk of code.

After staring for a while at the screen trying to figure out why it doesn’t work as expected I went for a quick nap. When I got back I noticed several warnings about it that were invisible to my eyes before.

Installing Flumotion on Debian Jessie.

Being on the edge sometimes hurts.

I grabbed https://github.com/inaes-tic/flumotion and https://github.com/inaes-tic/flumotion-ugly

just to be greeted with

AttributeError: 'EPollReactor' object has no attribute 'listenWith'

Instead of force-installing an older (<=11) python-twisted I fetched http://twistedmatrix.com/Releases/Twisted/11.1/Twisted-11.1.0.tar.bz2 and http://twistedmatrix.com/Releases/Web/11.1/TwistedWeb-11.1.0.tar.bz2.

Uncompressed, did python setup.py build && python setup.py install.

And the thing worked.

 

The bragging tax.

This is no news but I don’t get people. I really don’t.

When a potential client approached me for a quote normally I gave two estimates. One if I am allowed to write something about it and another one (substantially higher) if they refuse.

I never said a word about open sourcing it, naming names or something like that.

Most of the time I explain, as politely as I can, that nobody is going to ‘steal’ they wonderful idea. And also that it is just a very simple variation on stuff found on textbooks and, the only original thing they did was to put a company logo on it.

It is such a shame that I honour my word in these cases.

Esas pequeñas cosas…

El otro día estaba contento.

Estaba contento porque no me cobraron peaje. Porque estaban arreglando la autopista. Y porque tardé casi una hora en hacer un tramo que no demora mas de veinte minutos en un dia normal.

El domingo necesitaba aire fresco para poder pensar tranquilo y me fui caminando hasta Los Talas… Qué lindo tener el campo cerca, sentir el olor a eucalipto quemado, tener verde donde quiera que mires.