Seja bem vind@, se você é um debiano (um baiano que usa debian) faça parte de nossa comunidade!


rrg: visualize the require hierarchy in Ruby projects

20 de Março de 2015, por Desconhecido - 0sem comentários ainda

Yesterday I was hacking on some Ruby code and getting a weird error which I thought was caused by mutually recursive require statements (i.e. A requires B, and B requires A). Later I realized that this is not an issue in Ruby, since the intepreter keeps track of what has already been required and will not enter a loop. But during the investigation I came up with something that turned out to be useful.

rrg will read the source code of a Ruby project and generate a graph based on the require statements in the code; nodes represent the source files and an arrow from A to B means that A contains a `require ‘B’` statement.

From the README:

Just run rrg at the root of your project. rrg will parse the code inside lib/, and generate a graph description in the Graphviz format. You can pipe the output to Graphviz directly, or store it in a file and process it to generate an image.

If you call rrgv instead, it will automatically process the graph with Graphviz, generate a PNG image, and open it.

Let’s see some examples. First the classical “analysing itself” example, the require graph for rrg itself:

Not very interesting, since all of the logic is currently in the main binary and not on library code. But 1) when I do the refactorings I want to, there will be more library code and 2) while writing this I implemented also parsing scripts in bin/.

Now chake which is a slightly larger project:

An even larger (but still not that big) project, gem2deb:

Note that these visualizations may not be accurate representations of the actual source code. In Ruby, nothing stops one from implementing class A::B in lib/x/y.rb, but most reasonable code will make sure that filenames and the classes namespaces actually match.

If you are working on a sane codebase, though, visualizing graphs like this helps understand the general structure of the code and perceive possible improvements. The gem2deb graph gave me some ideas already and I didn’t even paid much attention to it yet.



MuseScore 2.0 is great, try it!

14 de Março de 2015, por Desconhecido - 0sem comentários ainda

A bit of context: two years ago I joined an undergraduate program in electroacoustic music composition at the Université de Montréal. Fortunately the faculty has decided to use mostly free software in the classes. They recently moved from Max/MSP to Pure Data to teach algorithmic composition. OpenMusic has been used for computer assisted composition classes. On acoustics classes, Sonic Visualiser is the recommended tool. For everything related to audio processing and sound synthesis we mainly use Python pyo library and Cecilia, both developed by the professor himself. Other many free softwares are used for building digital musical instruments in the courses: Arduino, SuperCollider, OpenCV, openFrameworks etc.

So far I touched two proprietary softwares for my classes. First it was Reaper, a sequencer which has been recently adopted in replacement of Pro Tools in some grades. Reaper has a less unfair distribution model compared to Pro Tools and despite being a closed piece of software it somewhat looks like a community-oriented project, being developed by a small team of free software enthusiasts. Being an amazing, complete and still lightweight DAW I hope it goes free some day in the future (I've read about this possibility somewhere in a forum that I can't find now). Anyway, after some months playing with Reaper I went back to Ardour. Because it's free, not because it's better (Reapper still seems unbeatable here).

The other was Finale, an alternative to MuseScore for music notation. I used it for three compositions mainly due to its playback capabilities. As a middle-aged music student I don't have the internal ear enough developed to listen orchestral textures, articulations and other details provided by expensive VST stuff. However, I found editing with Finale a pain in the ass. It's so bugged that I thought I were using a sort of alpha version. Basic editing is much more logical and elegant with MuseScore. After all, these first experiences with Finale didn't convince me that such realistic playbacks are adding any value to my music. I suspect that moving back to soundfonts or even composing with no playback at all will probably force me to exercice more critical/analytical listening whenever I need to understand the effects of a specific instrumental gesture and instrument combinations. So, I'm back to MuseScore. Not only because it's free, but also because it's better (at least for my current needs).

MuseScore has allowed me to easily edit music scores in a free operating system, using a small and not so powerful laptop. Unable to donate money to this amazing project I've been happily giving some time to it, by testing new releases, reporting issues, translating to portuguese and making available unofficial Debian packages while the current maintainer prepares the official one, which seems to be coming very soon. If you're a Finale/Sibelius user and don't strictly need that universe of orchestral VSTs samples for your music work, please give MuseScore a try. Have a quick look at its online handbook and in a few minutes you will be able to experience the real pleasure of music scoring using a computer. You can try different soundfonts, including the so nice Sonatina Symphonic Orchestra.

Below is a screenshot of MuseScore 2.0, which will be released very soon. You can download the RC version for your system in the MuseScore website.

/images/mscore2.png

MuseScore 2.0



Freeing myself from flickr

11 de Março de 2015, por Desconhecido - 0sem comentários ainda

A flickr standard account gives you a free as in facebook service (I really wanted to reuse it!!!). I don't know about the pro account, but I don't believe it will give you much respect. Anyway, I realized that my photo albums in flickr are still online. And I'm currently unable to access my photos locally. I needed to download all them, then I decided to give flickrbackup a try. I started coding it a few years ago because at that time there was no free tools available for that. And then I abandoned it, too bad I feel. But for my surprise it worked without issues! And that's all I needed in my Debian box:

$ apt-get install flickrbackup

$ mkdir myflickr

$ flickrbackup -o myflickr/

(this will open a default browser for authentication and will automatically get the API key, then I just need an ENTER to start getting all my albums)

I'm not sure whether there're other free tools (as in freedom) for that, but before paying for a license or trusting an online service for downloading your sets please give flickrbackup a chance :)

I'll probably set a piwigo instance in a vps. But I fear php. So, suggestions on web galleries are very welcome.



C#2

9 de Março de 2015, por Desconhecido - 0sem comentários ainda

Vai passar... é só uma frase.



Não faça hoje o que pode deixar para amanhã

3 de Março de 2015, por Desconhecido - 0sem comentários ainda

Clone Trooper Deitado

Neste post irei falar sobre gestão pessoal de tempo usando a técnica Do It Tomorrow (DIT), uma proposta de Mark Forster publicada em seu livro de mesmo nome traduzido para o português como Deixe para amanhã, o título deste post é uma provocação ao conselho pupular “Não deixe pra amanhã o que você pode fazer hoje”, que vai totalmente de encontro à proposto feita pelo autor em seu livro.

Livro Deixe para amanhã Desde 2009 venho utilizando a técnica DIT proposta no livro de Mark Forster, é uma técnica muito simples e eficiente, tomei conhecimento dela através do post 3 alternativas para o GTD — 7 Hábitos, Deixe para amanhã e Zen To Done de autoria de Rafael Perrone em seu blog fazendoAcontecer.net.

Neste post Rafael Perrone cita algumas alternativas ao Getting Things Done (GTD), uma técnica para organização pessoal de tempo bastante popular e também muito eficiente, ela propõe uma série de ferramentas diferentes, como lista de coisas a fazer, lista de algum dia/talvez, lista de próximas ações, e algumas outras, possui também um workflow bem elaborado para que funcione bem, isso tudo faz o GTD ter uma curva de aprendizado relativamente grande e exige um esforço mínimo de aprendizado antes de começar a ser efetiva, e foi exatamente isto que me desmotivou à utilizá-la e me fez ir em busca de alternativas.

Assim, em 2009, cheguei ao DIT, uma técnica extremamente simples, com praticamente zero esforço de aprendizado inicial, e desde então tenho utilizado ela para gerenciar todas as minhas atividades.

Por que eu estava à procura de técnicas para gerenciamento de tempo?

Desde 2006 eu venho trabalhando como autônomo, gerenciando meu próprio tempo, sem patrão, sem relógio de ponto, sem fiscalização, e sem todas essas artimanhas que as empresas criam para tentar fazer seus funcionários serem eficientes. Eu precisava de algo que me tornasse de fato eficiente, algo que fizesse eu usar o tempo da melhor forma possível, caso contrário os cronogramas iriam furar, as atividades iriam ficar para depois, a procrastinação iria rolar solta, e isso iria inviabilizar minha vida como autônomo.

Ao usar DIT consegui a eficiencia que procurava, mas é importante destacar que nenhum método ou técnica irá fazer milagres, o importante é ter disciplina e se esforçar para pôr algo em prática, qualquer método que funcione vale à pena, eu escolhi o DIT pela simplicidade, apesar de simples é preciso ter disciplina, e isto será necessário para qualquer outro método. Ler sobre o assunto ajuda bastante, e o livro de Mark Forster me ajudou muito neste sentido.

Mas, como funciona esse método afinal?

Lista de coisas a fazer O autor do DIT basicamente propõe uma modificação em algo já conhecido por todos nós, a famosa lista de coisas a fazer, é aquela listinha que fazemos num pedaço de papel com tudo que precisamos fazer. Ela se parece mais ou menos com a imagem ao lado.

É uma listinha imensa, que nunca chega ao fim…

Acredito que todos nós já fizemos uma lista semelhante a esta ao menos uma vez na vida, Mark Forster sugere que transformemos esta lista de coisas a fazer em uma lista de coisas que serão feitas, a lista de coisas a fazer tende a crescer eternamente e nunca conseguimos terminá-la, isto causa a sensação de que o trabalho nunca é concluído, e esta sensação não ajuda a melhorar ou mesmo a manter a nossa auto-estima.

A lista de coisas que serão feitas deve ser elaborada diariamente, e não deve ser alterada ao decorrer do dia, idealmente deve ser feita com antecedência, ou ao menos antes de começar o trabalho. Não se deve adicionar itens de última hora, ou seja, aquela lista de terça-feira que planejei na segunda, não deve ser alterada durante o decorrer do dia. Ela é uma lista fechada, uma vez planejada, nada mais entra, se surgir algo novo, planeje para o dia seguinte, ou para a semana seguinte, isto vai depender da natureza da atividade e do seu planejamento pessoal.

O objetivo é sempre começar o dia com uma lista de atividades previamente planejada, ao final do dia ela deve estar concluída, uma lista por dia, nada de transferir a lista de hoje para amanhã, isto não vai funcionar! O que costumo fazer é usar uma agenda de papel, e a cada dia na data correspondente eu anoto minhas atividades.

Eu indico fortemente o uso da agenda de papel, com ela você pode anotar seus compromissos, reuniões, etc, e também sua lista de atividades, uma coisa está ligada à outra, se num certo dia você tem anotado uma reunião que dura a metade do dia, saberá que não poderá planejar tantas atividades nesta data, ter estas informações num mesmo lugar facilita a gestão.

Veja por exemplo minha lista de atividades (coisas a serem feitas) do dia 05 de Fevereiro de 2015.

Lista fechada

Nesta lista eu marco um X ao finalizar a atividade, o objetivo de cada dia é marcar todas as atividades como finalizadas, neste dia em particular eu consegui finalizar todas elas (ufa!), o autor Mark Forster fala em seu livro dos benefícios emocionais relacionados à isto, quando conseguimos completar o dia, uma sensação de trabalho concluído, um sentimento de missão cumprida, bem diferente do que seria causado por aquela enorme lista de coisas a fazer que nunca termina.

Nem sempre é possível finalizar todas as atividades planejadas, quando isto ocorre marco um N na atividade e planejo ela imediatamente para outro dia, assim, mesmo que não complete o planejamento diário, não perco a atividade de vista. É importante notar que isto deve ser evitado ao máximo, se perceber que está sendo constante replanejar atividades, procure descobrir o motivo, talvez você esteja colocando muitas atividades no dia, ou talvez você esteja procrastinando, se for a segunda opção, cuidado, isto é um problema sério!

Bem, é nisso que a proposta Do It Tomorrow (DIT) se resume, uma simples lista de coisas a serem feitas (de fato) por dia, o mais importante é ter disciplina e praticar até ganhar o hábito de sempre planejar o seu dia de trabalho, e lógico, ter responsabilidade com o seu próprio planejamento e buscar cumpri-lo sempre.

O autor Mark Forster dá uma série de dicas para conseguir chegar lá, sugiro que você leia o livro dele, mas faça isso hoje, não deixe para amanhã! rs