It gets better

I spent most of the last weekend studying and a bit sick.

When not reading for the Uni I binge watched a lot of talks from previous editions of the CppCon, because that’s obviously what only a sick person would do.

And after not being on that scene for quite a while I found that, like for some wines, the time made it nicer.

The use of auto variables when iterating containers, lambdas, parallelization and inclusion of atomic operations (albeit I believe they are insufficiently documented and will bite a lot of people) are just some of the things that surprised me in a good way. There’s a host of cool stuff under <algorithm> and the new optimizations (like the ones carried for constexpr ) are incredible.

Coincidentally, Bert Hubert started a series of posts with the good parts of C++ that actually makes me want to code something in it again.

Cultural differences

Sunday was a very nice day among friends and partners of our neighborhood.

Instead of finishing a draft post about that I’m sad. I spent most of this Monday listening to our representatives going around circles instead of voting, while some of my friends were treated like terrorists, being searched by masked officers at gun point, others punched and kicked.

I listened to the live stream for about ten hours before the sleep took over. Most of the ‘normal’ people I met yesterday chose to ignore this and watch crap tv. Meanwhile in Japan they have entertainment shows like Supreme Skills where they pit engineers and craftsmen to see which one is able to complete very demanding projects. Some of them are very light on the details but nonetheless the content is still better than other productions and showcases a complete different scale of values.

On weekends most of us choose to numb our minds with meaningless stuff. Others enlighten themselves.

No wonder things go downhill.

Double Whammy.

I’m on Paxil since August.

Things have definitely improved but still, I’m not quite there yet. Some days I feel as down as before if not more. Others I have my chin up and look at the future with bright hope. I also put some weight (about 12Kg) and it’s the first time ever that I crossed the 70Kg line.

But overall, I’m not convinced that I reached the point where systemic therapy starts taking over the meds. So today we doubled the dosage.

If this doesn’t work we’ll try another one and repeat the whole process again. Lucky me the thieves at my medical insurance only cover a laughably low 27% of a very expensive medication (it’s about on par with the monthly fee). Next month I’m switching to the local generic. All the specialists I queried agreed that it’s as good as the one from Glaxo.

Groundhog Day

Somehow on Wednesdays, it seems that I never arrive home from work before 20.30 – 21 no matter how early I get out.

Last week I reached Retiro at around 17, hoped into a bus that was about to depart and tried to make myself comfortable in a not so soft seat. After crossing most of the city swift as it did so few times we enter into the highway. A couple of minutes later we reach a complete halt. There was a big accident and only one lane carried traffic.

Besides the common spectacle of clowns riding alone on big cars there was the musical companion of raging claxons. I was a bit pissed but there wasn’t much to do about that, so I tried to rest.

Yesterday was mostly the same, except that the queue at the bus stop was way longer than usual.
Overhearing some conversations I learned that they were going to a Coldplay show in La Plata. What a great timing.

After seeing two buses depart I get to board one but there were no seats available. I hopped inside even if that was a rip off, as the next bus would take quite a bit to arrive.

Despite being many laws and norms that forbid having standing passengers for journeys as large as this one this is actually a common situation for most of the day. The driver was generous this time and only allowed ten of us to travel standing.

After a while I got a headache and using my backpack as a pillow I rested on the floor. There was a group of young girls wearing a lot of makeup and leather in a fashion that screamed “rich princess trying to look bad” that gazed at me with an expression that conveyed something along the lines of “ugh, we have to share the ride with that hobo”. But after a while when they realized that this was going to take more time than they expected they joined me at the floor.

The road was completed stuck. Besides the rush of people going back from work there was the storm of fans.

As Buck Dharma used to say, time is the essence . So much of it wasted.


Low level fun.

As a wise man said, “low level is easy”.

There aren’t that many things below that can break except for hardware (and compiler!) bugs, they are becoming increasingly common but still the level of pressure and control to keep quality up on processors are orders of magnitude greater than those on the stacks above the OS.

A minor update of Ruby broke everything? The layout is totally wrong when a browser locale is set to Spanish but no in English? Who’s to blame for that? Even if we have most of the sources fixing the problem for everyone but ourselves isn’t that easy.

The other Monday I went to the Uni to take an exam on digital circuits (graded with 9/10) and oh boy, programming in assembler again was refreshing.

The tooling is just as awful as the last time I took that course (not as bad as the first versions of mplab but the assembler is still dumb when it comes to parsing spaces and the integrated editor is notepad in disguise) but the difference is that now they allowed us to use our own notebooks. The only saving grace is that the assembler, debugger and simulator are different executables, they accept a sane set of command line parameters and they run fine under wine.

So I was able to use vim and a simple makefile to streamline the process and finish in almost no time. Sadly the bar to pass has declined a lot in the last years.

Burning down the house

(Watch out)

So many drafts, some stories and pictures from the last PyCon at Bahía Blanca.

I was happily hacking on the kitchen the other Saturday when I hear a strange noise coming from the garden.

To my dismal surprise I see that the shed is on fire and part of the roof collapsed. I went in to take out a propane can to avoid an impending catastrophe and called the firemen (lucky us, they are a few blocks away).

We lost the roof, tools, vinyls and books on an adjacent room but nothing that can’t be replaced. Still fuck.

Some pictures of PyCon at flickr (not mine)

Always look on the bright side of life.

(scheduled to be auto published on June 1st. Probably I’m not around yet)

A lot happened these months.

Earlier this year I was officially stamped as being depressed. The downhill started before but I just snapped around mid January.

I used to live and breath by technology (well I still do but to a less extent), but lately I lost all joy and pride on what I was doing. Standing in front of my computer gave rise to a paralyzing anxiety. I knew exactly what to type, either because it was plain simple or I wrote it before on my notepad on the park, but the mere act of getting to the action part wasn’t working for me. I also spent way too much time doing crappy stuff for others on it, missing on my friendships, health, family and time for myself.

I also have a bad habit of not saying no. Saying yes it’s a different matter, but the net result was a very unhealthy overcommitting.

In a very bold move I decided to cut everything, no halfsies. I stopped answering the phone, every non urgent mail (if it wasn’t something urgent it’s still there, I’ll get back to you. Promise), all the social channels.

I let down a lot of people on the way but it let me really focus on what I care about.

It also gave me a bit of peace, I’m still crippled but not like before. During the last years I did all I could to build procedures, tools, documentation in order to be non essential. The bus factor on many of the things I’m involved with it’s still high but at least I don’t have that much pressure over my shoulders.

I disappeared into a black hole, things didn’t break (well, most of them) and people somehow got around my absence. Being non essential is great, that feeling of freedom is quite good.

Today it’s June 1st and I am officially back online. I wrote a lot of stuff in this period, I don’t think I’ll ever publish most of that, while being technically correct the form reminds me of emo cries from the 90’s.

Why do I even bother…

I tell you it’s for your own good people but no, you keep doing the same horrible things.

While bisecting a nasty bug I land into a monster commit:

$ git show --stat THE_COMMIT_HASH
commit 123456789A04a0d558749337badc0de9deadbeef
Author: root
Date: Tue Aug 4 09:10:16 2015 -0300

(files changed...)
38 files changed, 865 insertions(+), 657 deletions(-)

And this is one of the smaller ones. It updates vendor libraries, adds middlewares to our api, changes the authentication scheme and does some touch ups to the web frontend. I couldn’t care less that it was committed as root but the log message is murder to my eyes.

How hard is to understand that doing this is bad for everyone? It’s very easy to do this instead of making a couple of extra commits but when things break you come crying asking me to fix them and instead of being a simple task I have to sift through mountains of unrelated stuff.

You are more than welcome.


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.


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, 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):

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:

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.


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.


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.


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.