Last Subversion repository decommissioned – at last!

Posted by – 01/10/2015

Today I completed the git migration of the last Subversion repository we still had online at Propus.

Nothing different from what we had done for all the rest, but this was an old repository, mostly with unmaintained code, modeled after “project-as-subdirectory” style… Good old days…

Two scripts – I am sure people can find somewhere else on the Internet – are worth pasting here:

First, I detected 3 revisions committed by root user. The first two matched the creation of first two projects (AKA directories), so I mapped the three of them to the same person (who had this bad habit of logging as root). It ended up I was wrong for the third revision: it was the beginning of a new project, but by a different person. Since the authors file maps one-to-one, “root” could only be one and the person.

So, after the migration, I just use filter-branch to fix that particular commit. Trivial, but worth a gist:

Lastly, there are some projects (mapped as subdirectories in the new git repo), that we’d like to split from the “archived” do keep using or adding to them. They will become active projects again. So, we cloned the whole repo again, and used filter-branch to the rescue:

Since that was the last Subversion repository still alive, I’d like to end this post with a thanks for all the years of good service! Time to move on…

Such a big directory…

Posted by – 17/09/2014

There’s no easy way to list files in a 10-million-file directory. Our beloved find and ls will almost never do it without requiring your whole week. I know it’s a bad design to have such a beast in place, but hey… we don’t always control the design of things our customers like to deploy. And some customers seems to like to defy logic sometimes.

Anyway, having to work with such thing requires some special plumbing. I usually code something quick using getdents in C, but I always forget to put it around and end up coding everything again everytime. I was about to upload it to github this time, but I found something already there. So this is just a heads up if there’s anyone out there needing this.

Simple CGI MJPEG Streamer in Bash

Posted by – 30/06/2014

This is mainly just for personal reference; I’m posting here since it may help someone else. I am sending images captured in surveillance IP cameras via FTP to some hosting. This is for convenience, since any cheap surveillance IP camera has this facility. So, how to watch in near-real-time without having to refresh the browser or using some javascript trickery? Also, How to watch using common IPcam mobile clients?

Easy enough: just create a MJPEG stream and use a CGI-capable HTTP server for the job. Some quick hacking (and inotify abuse) gave me the following Bash script:

Now, I just have to figure-out how to kill the process afterwards :-)

O Movimento Software Livre Morreu. Longa Vida ao Movimento Software Livre!

Posted by – 09/06/2014

Assistindo ao debate “Morreu o Movimento Software Livre no Brasil?”, do FISL15, resolvi compilar diversos pontos que foram marginalmente abordados no debate e que flutuam na minha cabeça há algum tempo, merecendo um aprofundamento nesse contexto.

Movimento Software Livre e Ideologias Alienígenas

O Movimento Software Livre é uma expressão, no âmbito técnico, do anseio natural de liberdade do ser humano. Foi o precursor de diversos movimentos de cultura livre que, de certa forma são mais antigos ainda que o próprio Software Livre, mas que até então não possuiam ferramentas coerentes para se desenvolver. No entanto, como todo movimento, é habitado por pessoas que têm aspirações diferentes e muitas vezes essas pessoas confundem suas próprias e particulares aspirações com as do movimento, levando a uma “identificação ideológica cruzada”, que acaba associando ao movimento Software Livre diversas outras ideologias de maneira até equivocada.

Embora o próprio Stallman não seja um comunista (expresso por suas ações ao longo da vida, mas literalmente também escrito por ele mesmo), o Movimento Software Livre acabou, em diversos lugares – inclusive o Brasil – sendo capturado pelo espectro da esquerda política. E isso só fez mal ao Software Livre. (Seria igualmente ruim se fosse capturado pela direita política, veja bem.) Isso fica amplamente evidente quando fazemos o contraponto entre Open Source e Free Software e identificamos isso como um embate entre capitalismo e comunismo, como foi feito no debate em questão. Nenhuma discussão poderia ser menos produtiva e mais equivocada do que essa! Especialmente porque não existe nenhuma incompatibilidade entre as 4 liberdades que definem um Software Livre e os 10 pontos da definição de Software de Código Aberto.

Exatamente. Para que fique bastante claro vou colocar em um parágrafo separado: não existe nenhuma incompatibilidade entre as 4 liberdades que definem um Software Livre e os 10 pontos da definição de Software de Código Aberto. Portanto, não há um conflito conceitual entre Software Livre e Software de Código Aberto, muito menos um conflito semelhante ao embate capitalismo versus comunismo.


Goodbye Jorte, hello ownCloud

Posted by – 30/05/2014

After I migrated from Palm Treo to Android phones, I was very displeased with the Calendar application. I don’t use Google Apps (my phone is AOSP), which only leaves me with (argh!) Exchange for online-synced calendar. Besides, the first incarnations of the Calendar application in AOSP were barely usable.

So I just went for a standalone free (as in beer) Calendar application named Jorte, which is really good. Recently, I’ve been investigating ownCloud and CalDAV, and decided to review the state of current AOSP Calendar application. To my surprise, it have evolved a lot (to the point of being usable), but still no CalDAV sync.

So I found DAVdroid in F-droid repository, which is an interesting application that can register a CalDAV account that is usable by AOSP Calendar. So, now, I am able to use ownCloud calendaring, ownCloud CalDAV server and my phone, and, since free-as-in-speech software is much better than free-as-in-beer, I decided to ditch Jorte.

But Jorte doesn’t have an option to export its data to an Icalendar file (why make things easy, right?). All it spits is a csv-file as a backup. (As a side-note, Jorte seems to intentionally not provide an Icalendar-file export option… as the ‘rrule’ field they use in the csv follow the same rules Icalendar standard dictates, they might be using it internally). Since this is pretty trivial stuff, I just coded a Ruby script to do the job. I released it to my github repo, just in case anyone else finds it useful.

ConQuest DICOM Server

Posted by – 03/04/2014

I’ve been busy with Real Life™ lately, but I managed to get some time to work on ConQuest DICOM Server packaging for Debian. I’m almost reaching upload state. The work can be checked at GitHub.

It’s compiled for i386 in an unsigned APT repo, if anybody wants to play with it before I upload. These are the sources:

# Wheezy
deb spectra-wheezy/
# Sid
deb spectra-sid/
# Ubuntu Saucy
deb spectra-saucy/

Enjoy it.

Nostalgia time

Posted by – 03/12/2012

My parents will soon be moving to a smaller home, so they are digging up a lot of stuff of my sister and mine past. Among my stuff, they just sent me my first computer (which was, of course, the first computer of my father’s company I was using in the spare time). I couldn’t believe they kept that. It was an Unitron Apple ][ 64K!! I just had it cleaned and took this picture:

Due to the closed informatics market Brazilians were subject to at the time, it came with a full set of manuals in Portuguese which taught me how to code in Basic (I was too young to learn English at the time)… Interesting how a bad policy like that can result in a Good Thing™ sometimes. :-)

Is it just me or does this picture made you nostalgic also?

Decision-making by flipping a coin

Posted by – 20/11/2012

Yesterday I was discussing in an online board how to break a decision deadlock in life. There are real deadlocks, but I don’t think they are very frequent… most of the time, doing a pros and cons analysis is enough to decide what to do. Sometimes our judgement is impaired by lack of objectivity or by our inability to see things from a different point of view (it’s hard to think straight when everything seems to be falling apart around you); talking to a friend or relative can help in these situations.

But there are times when nothing helps. When you are really stuck and nothing seems to break the deadlock. At these times I give it one or two days, sleep on the issue and if I cannot come up with a decision I assume the alternatives are equivalent to me and just flip a coin.

Of course, this will do if you can postpone the decision, giving yourself (and your inner self) time to decide on a course-of-action. But is there some way to speed up the process? During the discussion, someone came up with a rather smart quote by Rothstein character in Boardwalk Empire TV series:

Flip a coin. When it’s in the air, you’ll know what side you’re hoping for.

I found it an interesting way to give your inner self an ultimatum: decide or luck will decide instead. I’ve never did it like that, for I would not flip a coin unless it’s my last resort. Being such a clever psychological idea, I doubted it originated in the TV series itself, so I went on pursue of the original idea. I found a Danish poet and mathematician called Piet Hein, who wrote a poem about it circa 1969:


Whenever you’re called on to make up your mind,
and you’re hampered by not having any,
the best way to solve the dilemma, you’ll find,
is simply by spinning a penny.
No — not so that chance shall decide the affair
while you’re passively standing there moping;
but the moment the penny is up in the air,
you suddenly know what you’re hoping.

And also, there are a Donald Duck comic called “Flip Decision” circa 1953 that introduces Flipism philosophy, which supports a rather radical anecdotal variant: make all decisions by flipping a coin.

Piet Hein or Rothstein character idea is much better than Flipism, of course. Does anyone knows any older sources of the same idea?

That’s a lot to do!

Posted by – 07/11/2012

Reading about Michael Stapelberg’s codesearch I bet a lot of people had the same idea. I just had to post a screenshot of it:

It seems we have a lot to fix :-)

Área Software Livre da Campus Party 2013 aceitando propostas de atividades

Posted by – 03/10/2012

CampuX - Mascote da Comunidade da Área SL da CPBREstá aberta a temporada de envio de propostas de atividades para a Área Software Livre da Campus Party do ano que vem. Esse que vos escreve finalmente deixou a curadoria da Área com alguém que entende no negócio e o Paulo Henrique já tratou de lançar uma chamada de propostas de atividade usando uma querida e conhecida ferramenta, o PapersPHP.

Quero convidar a todos a participar da comunidade da Área SL, a enviar propostas de atividade (fique atento, o envio encerra no dia 21-Out-2012) e a participar desse evento que representa uma das maiores oportunidades de misturar a filosofia do Software Livre com as diversas atividades de perfil inovador que somente esse encontro promove.

Zotero and note-taking

Posted by – 24/06/2012

I was looking for an excuse to try Zotero and the perfect opportunity appeared when I got a whole lot of references to group for a month of Magnetic Ressonance studies I am currently taking. I was also pleased to notice it is packaged to Debian.

I am used to note-taking software. Back when I used a Palm m130 (and a Treo 650), I managed a lot of Memos I eventually migrated to Note-Everything in my current Android phone. Zotero, unfortunatelly, is not interfaceable with my phone (or I was still unable to figure out how to do so), but it’s powerful in managing references… beyond simple note-taking.

Is anyone using Zotero in a more ambitious way? I’ve read about people using it to keep large researchs to support fiction and non-fiction book-writing… I also watched some YouTube videos on it. As far as I went with it, Zotero might become an important piece in my toolbox wrt reference keeping, so I was just trying to figure out how many other niches it can fill…

Feliz Dia da Toalha

Posted by – 25/05/2012

A todos os bons fãs de Douglas Adams, minha humilde participação nesse dia:

Soluções mágicas

Posted by – 29/04/2012

Todos somos fascinados por soluções mágicas. É da natureza humana acreditar em magia e existem diversas teorias versando sobre a causa desse fenômeno. Esse post não trata de nenhuma dessas teorias. Quero tratar de outro assunto no qual também parece que as soluções mágicas estão em voga durante muito tempo: a ideia de que, para melhorar a Saúde Pública no Brasil, precisamos de mais médicos.

Essa ideia só pode ser advinda de uma impressionante falta de informação. Já se foram os tempos em que o médico era um “lobo solitário”, que sozinho resolvia qualquer problema. Essa transformação da medicina de uma atividade individual para uma atividade coletiva deve-se a diversos fatores que, sozinhos, já renderiam um livro. Para encurtar a história, basta mencionar o ritmo galopante em que as coisas mudam na Medicina, a quantidade de informação necessária para que um médico esteja atualizado e o progressivo aumento da complexidade do tratamento das doenças. Adicione a isso a descoberta de um imenso “filão” de rendimentos representado pelos processos médicos e você tem a situação em que a Medicina se encontra hoje: nenhum médico quer praticar a Medicia sozinho e sem recursos.

Entendendo apenas superficialmente os motivos acima já é suficiente para compreender por que é tão difícil para um médico em início de carreira decidir praticar a Medicina longe das capitais. Coloque-se momentaneamente no lugar desse médico e imagine que você está indo para um ambiente com menos recursos do que os que você dispunha enquanto estava fazendo a sua formação; você dispõe de menos colegas com quem discutir um caso difícil (muitas vezes, no caso dos especialistas, você está indo para um local em que o único que entende de um dado assunto é você! – o que, de quebra, ainda garante uma quantidade de trabalho muito maior); e sobre cada decisão que você tomar nesse ambiente, você está se arriscando a perder tudo o que conseguiu – incluindo a sua reputação – por um processo desses propostos por “advogados de porta de hospital” (no mínimo perdendo a paz durante longos meses de briga judicial).

No lugar daquele médico, você iria para longe da capital?

No entanto, a população parece comprar a ideia que o governo vende de que faltam médicos no Brasil. Ora! Não faltam médicos! Eles estão, isso sim, mal-distribuídos. Concentrados onde sentem segurança de praticar a Medicina com o padrão de qualidade que a população merece.

Não é uma questão de mercado que se pode resolver aumentando a oferta de profissionais! Tudo o que estamos fazendo ao abrir ainda mais uma faculdade de Medicina é reduzir o ganho (já bastante reduzido) dos médicos que atuam nas capitais. Não se enganem! Ninguém vai sair da capital em busca de melhores salários no interior se isso representar ter de praticar uma Medicina de pouca qualidade ou se isso representar se expor aos riscos que descrevi acima.

Tudo isso serve para mascarar o problema e vender uma solução mágica: ao invés de investir em proporcionar recursos para que os médicos assumam com qualidade postos de trabalho fora das capitais é muito mais fácil colocar a culpa na “falta de médicos” e abrir mais uma faculdade de Medicina (e lucrar todos os benefícios eleitorais que tal atitude certamente trará).

Por isso quero fazer eco ao artigo do ex-Ministro da Saúde Dr. Adib Jatene: abrir mais vagas nas faculdades de Medicina, ou criar novas faculdades, não vai resolver o problema da Saúde Pública no Brasil.

Será que não aprendemos com nossos erros? Por quantos planos econômicos heterodoxos o Brasil teve de passar até adotar o caminho da ortodoxia com o plano Real? Nossos governantes têm uma inegável inclinação pelas soluções mágicas… “basta cortar alguns zeros”… “vamos confiscar as poupanças que a inflação vai cair”. Ora! como disse Mário Henrique Simonsen: “o que só tem no Brasil, e não é jaboticaba, é besteira!”. Essa solução de abrir mais vagas de Medicina é exatamente isso: mais do mesmo. Mais uma solução mágica para um problema real.

Por favor! Vamos tentar ser realistas. Admitir que o problema real pelo qual a Saúde Pública passa precisa de uma solução real é um bom primeiro passo.

Timeout a process in Bash > v4

Posted by – 19/04/2012

Just for reference, this is really useful:

( cmdpid=$BASHPID; (sleep 10; kill $cmdpid) & exec some_command )

Update Apr 20, 2012 @ 16:54: As pointed in a comment by Timo Juhani Lindfors, if “some_command” exits early and the interval is long, another process can reuse its process number and get killed once the sleep runs out. Does anybody know a better way of doing that without using timeout from coreutils (better yet: using just bash)?

Key Signing Party at FISL13

Posted by – 16/04/2012

You know the drill. Official announcement is here (or here in portuguese). Anybody planning to drop by FISL13 should submit a key.