We must question the story logic of having an all-knowing all-powerful God, who creates faulty humans, and then blames them for his own mistakes.
Gene Roddenberry

a paciência

July 20th, 2015

Você tem muita paciência? Eu não. Pelo menos não tinha. Desde criança fui sempre impaciente. Com quê? Com tudo. Sempre queria que as coisas acontecessem já, não gostava de esperar. Nunca gostava de esperar para seja que for.

Isso é bom? É mau? Pode ser bom. Pode ser mau.

Ser impaciente favorece a eficiência. Acho que não é coincidência ter-me tornado engenheiro. Os engenheiros gostam da eficiência. Gostam de soluções ótimas. Uma soluçao ótima quer dizer que não é possível fazê-lo mais rapidamente.

Ser impaciente tem muitas vantagens. Com a mentalidade impaciente a gente está sempre em busca de vitórias faceis. Torna-se a conseguir muitas pequenas coisas em pouco tempo, adotando sempre métodos simples. E não só se trata de obter sucessos, mas também de pesquisar e encontrar objetivos que podem ser conseguidos em pouco tempo. Muitas vezes a simplicidade não fica na solução que adotamos se não na escolha de um objetivo mais simples que todavia representa um benefício parecido. Sem isso é provável às vezes você dedicar muito mais tempo para resolver uma problema do que o necessário.

Apesar disso também existem inconvenientes em ser impaciente. Muitos objetivos na vida não são possíveis de conseguir em pouco tempo. Quais? Aprender idiomas por exemplo. Mesmo com um método ótimo a gente tem de passar centenas de horas, talvez milhares de horas. Eu comecei a aprender idiomas há cinco-seis anos. Antes só falava os meus idiomas nativos mais o inglês. Sempre quis falar francês mas achei que foi demasiado difícil domar a gramática. Fui impaciente, não conseguia continuar a estudar sem ver o efeito de progredir rapidamente. Portanto parei. E não fiz nada para aprender francês durante muitos anos.

Hoje em dia consigo muito melhor fazer coisas que exigem muito esforço. Acho que a única coisa que mudou foi eu tornar-me mais paciente.

waarom zijn de openingstijden zo gek?

July 13th, 2015

Ik heb een vraag: Hou je van zwemmen? Als wel dan ga je waarschinlijk in het zwembad zwemmen, toch?

En dan weet je het al, want het is onmogelijk het niet op te merken. De openingstijden van elk zwembad zijn gek. Helemaal gek. Ik snap er niets van.

Bij elke winkel, bibliotheek, postkantoor, restaurant en wat dan ook geldt hetzelfde: ze gaan ergens 's morgens openen en dan later, ergens 's avonds sluiten. Vrij simpel. Logisch.

Maar niet bij een zwembad. Want daar heb je allerlei verschillende soorten van zwemmen. Banen zwemmen. Vrij zwemmen. Familie zwemmen. Aquajogging. Wat dan ook.

En voor elke soort zwemmen zijn er andere openingstijden daarbij. Natuurlijk. Zeven uur openen. Half negen sluiten. Twaalf uur openen. Één uur sluiten. Vijf uur openen. Zes uur sluiten. Je heb geen één mogelijkheid om te zwemmen, je heb er een heleboel! Als je heel snel bent...

Bovendien zijn de openingstijden niet dezelfden elke dag, zeker niet! Maandag is er geen vijf tot zes. Dinsdag wel. Woensdag heb je ook negen tot tien, maar geen vijf tot zes meer.

Elk zwembad heeft andere openingstijden per soort zwemmen en die zijn anders elke dag. Behalve nu in de zomervakantie, want dan gaan enkele zwembaden sluiten. En ik bedoel volledig sluiten, tijdens enkele weken. En de anderen, die hebben natuurlijk wijzigde openingstijden, want het is zomer toch! Kan niet hetzelfde blijven.

Ik heb het een keer gevraagd aan de mevrouw bij de balie. "Dat moet u aan de mensen op kantoor vragen", zei ze. "Ik vind ook dat dat niet mag."

Is het zo overal in Nederland? Waarom, in godsnaam?

a coragem existe?

July 4th, 2015

Há algumas semanas, eu refleti sobre isto.

É que não estou certo do conceito de coragem verdadeiramente representar uma coisa real. Porque não?

Quando é que se diz que alguém foi corajoso? Acho que acontece quando alguém faz alguma coisa que nós não poderíamos fazer, algo que percebemos ser demasiado arriscado. Então poderíamos fazê-lo se realmente quiséssemos fazê-lo?

Vamos ver um exemplo. Num dia de inverno, um homem caminhava perto dum rio. O rio foi parcialmente coberto pelo gelo, estava tão frio. Então, viu uma pessoa a flutuar no rio, que provavelmente caiu no rio acidentalmente. Foi claro que a pessoa não ia conseguir salvar-se, a água era tão fria e a corrente tão forte que precisava de muita força para conseguir sair delá. O homem decidiu ajudar, saltou no rio e nadou até a pessoa. Tirou-a do rio e chamou para uma ambulância. A pessoa foi salvada e não foi prejudicada.

Bem, o assunto é este. Então você decidiria fazer o mesmo? Acho que não, tendo em conta que este tipo de decisão é muito incomun. É por isso que a chamamos, um ato corajoso.

Mas que quer isso dizer? Quer dizer que, quando ouvimos este assunto achamos que o ato foi tão perigoso que nós nunca faríamos uma coisa parecida. O homem poderia ter morrido! Apesar disso, ele o fez! É aqui que encontramos o conceito de coragem. Ele fez aquilo, eu não poderia fazê-lo, portanto ele foi muito corajoso.

Até agora tudo bem.

Então quando se entrevista pessoas que tenham feito algo corajoso é comum dizerem que não foi uma decisão bem considerada. Foi uma decisão instintiva, sem refletir realmente nisso. Acho que isso quer dizer mesmo para a pessoa não é questão de coragem, é questão de fazer uma coisa que parece possível. Não nego a presenca duma preocupação, e do medo, mas apesar disso não impede a açao.

Acho que a explicaçao mais simples é que o ato parece muito mais arriscado para nós que para a pessoa que o fez. Para nós parece impossível, mas para a pessoa que o fez parece muito arriscada mas possível.

Gostamos de pensar que a coragem trata-se de vencer o medo e que teoricamente tudo é possível para todos. Então psicologicamente não o é. Existem atos que não conseguimos forçar-nos a fazer. A coragem descreve as differenças psicologicas entre pessoas, não demonstra que somos capaz de fazer qualquer coisa se apenas o quisermos.

parler français au boulot

July 1st, 2015

Aujourd'hui on a déjeuné ensemble au boulot avec un collègue et on a parlé français. Je m'aperçois que normalement j'ai du mal à parler français dans ce contexte là. C'est difficile de me souvenir des expressions françaises, les mots ils m'en viennent pas à l'esprit facilement. Il y a comme deux mondes: il y a le monde boulot - logiciel, programmation et tout ça - puis il y a le monde du français. Ils ne se croisent pas et j'ai l'impression que dans mon cerveau on est dans deux camps bien distincts.

Heureusement aujourd'hui on était pas du tout pressé et ça a marché très bien. Au niveau d'état d'esprit j'étais beaucoup plus detendu que d'habitude. Ça me fais penser que normalement je stresse plus que necessaire.

do you know c?

November 13th, 2014

In discussions on programming languages I often see C being designated as a neat, successful language that makes the right tradeoffs. People will go so far as to say that it's a "small language", it "fits in your head" and so on.

I can only imagine that people saying these things have forgotten how much effort it was to really learn C.

I've seen newbies ask things like "I'm a java coder, what book should I use to learn C?" And a lot people will answer K&R. Which is a strange answer, because K&R is a small book (to further perpetuate this idea that it's a small language), is not exactly pedagogical, and still left me totally confused about C syntax.

In practice, learning C takes so much more than that. If you know C the language then you really don't know anything yet.

Because soon enough you discover that you also need to know the preprocessor and macros, gcc, the linker, the loader, make and autoconf, libc (at least what is available and what is where - because it's not organized terribly well), shared libraries and stuff like that. Fair enough, you don't need it for Hello World, but if you're going to do systems programming then it will come up.

For troubleshooting you also need gdb and basically fundamental knowledge of your machine architecture and its assembly language. You need to know about memory segments and the memory layout and alignment of your datastructures and how compiler optimizations affect that. You will often use strace to discover how the program actually behaves (and so you have to know system calls too).

Much later, once you've mastered all that, you might chance upon a slide deck like Deep C whose message basically is that you don't understand anything yet. What's more terrifying is that the fundamental implication at play is: don't trust the abstractions in the language, because when things break you will need to know how it works under the hood.

In a high level language, given effort, it's possible to design an API that is easy to use and hard to misuse and where doing it wrong stands out. Not so in C where any code is always one innocuous looking edit away from a segfault or a catastrophic security hole.

So to know C you need all of that. But that's mostly the happy path. Now it's time to learn about everything that results in undefined behavior. Which is the 90% of the iceberg below the surface. Whenever I read articles about undefined behavior I'm waiting for someone to pinch me and say the language doesn't actually allow that code. Why would "a = a++;" not be a syntax error? Why would "a[i]" and "i[a]" be treated as the same when syntactically they so clearly aren't?

Small language? Fits in your head? I don't think so.

Oh, and once you know C and you want to be a systems programmer you also need to know Posix. Posix threads, signals, pipes, shared memory, sync/async io, ... well you get the idea.