Sail away.

Once upon a time a wise man said:

Should you find yourself in a chronically leaking boat, energy devoted to changing vessels is likely to be a more productive than energy devoted to patching leaks.

And much to my sorrow, Uruguay and Paraguay look more and more like a suitable ship to board.

Retrieving passwords with tcpdump

The other night many weeks ago I chose to install Jitsi in one of our streamers.

I log into the OpenStack panel and make a quick resize of the instance.

Midway it barks and doesn’t come up. And nothing I can do from the console or there manages to un-stuck it from that state. So off it goes a ticket to support.

Meanwhile I spin another instance and rebuild the basic services.

In the heat of the night I forgot the set of users and passwords for the ingress streams. They were just there, in a volume attached to a zombie machine that I couldn’t access. And also in a backup disk just a room across, but I forgot about it back then.

Thankfully we got Nginx (and Traefik on the newer boxen) that take care of handling ssl, so inside everything is in the clear. All I had to do was

tcpdump  -n -w dump 'tcp port 8000'

and after a quick run with strings I had all the passwords again.

Boot / No Boot

Today while cleaning I found an old stm32 board carrying an STM32F030F4P6.

Turns out that PlatformIO supports it so just for fun I tried to blink some lights.

I couldn’t find my stlink at home but openocd can use a buspirate as a programmer.

It took a while to upload but after that I was able to launch gdb.

And the light was dead.

Strangely enough poking at the memory showed that the code indeed was there. After a long pause to think I noticed that the boot 0 jumper was misplaced.

The lights flashed and there was much rejoicing.

A very apt metaphor

“we don’t have electricity on the south side of the building, but I know water conducts electricity, so just connect the water main to the power grid, then install an outlet in every faucet”

Brad Montgomery on what we do as software engineers. Original at https://bradmontgomery.net/blog/blue-collar-programmer/

I don’t know why or how I ended up at that post but that situation evokes many fond memories of failed attempts at explaining what I was doing sometimes.

For all of its sins (or our inability to understand it back then) XML coupled with XSLT & friends is a nice basis to do ETL transformations.

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.

Yay.

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) https://www.flickr.com/photos/70871182@N04/sets/72157677377824525

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

THE PROJECT NAME.-THE AUTHOR HANDLE
(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.