28
May 10

gource: OpenGL-based 3D visualisation tool for source control repositories

Too much fun the tool I’ve came to know through my friend Adenilson’s blog. In a glance one can explore effort put into a project in a way much better than any other command-line or graphical application known.

The only boring thing is to use it in my machine, a hp pavilion dv4-2167sb, which, AFAIK, still lacks a good graphical acceleration support.

I’ve made a very basic debian package (using checkinstall) for people too lazy to compile/install by themselves.

Enjoy it and have fun!


21
Mar 10

Vendo Minha Moto

Sorry, available only in pt_BR.

Num esforço de desapego, decidi passar pra frente minha fiel companheira… de estrada. É isso, pra quem se acostumou a me ver junto da minha máquina atravessando o Brasil e registrando no site do RockPesado, saiba que não faço isso por desgosto, mas simplesmente por adequação, já que não pretendo trazê-la novamente para Manaus-AM para negar-lhe os prazeres que uma moto estradeira merece (asfalto bom, várias opções de destino, peças a pronta entrega, enfim, tudo que alguém morando no Sul ou Sudeste tem de sobra).

Minha moto é uma Honda Shadow e foi apelidada de Uákti, em homenagem a lenda do belo e encantador índio que, após ressucitar de uma morte com várias flechadas, emitia um som de flauta quando o vento transpassava seu corpo, atraindo ainda mais as mulheres das tribos e provocando mais inveja dos homens. Abaixo uma breve ficha técnica:


Marca: Honda Shadow VT600C
Ano: 2002
Cor: cinza
Quilometragem: 63.000 km
Últimas trocas:
- Corrente, coroa e pinhão (CoCoPi): 55.000 km
- Pneu traseiro: ~55.000 km
- Pneu dianteiro: ~57.000 km
- Filtro de ar: ~60.000 km

Como toda moto custom que se preze, traz vários acessórios estendendo suas configurações originais.

  • Sissy-bar com bagageiro
  • Banco remodelado (feito pelo lendário Peninha, artesão de estofamentos de Curitiba-PR)
  • Comando avançado
  • Plataforma para os pés do piloto e carona
  • Protetor de cárter (peito de aço)
  • Protetor do reservatório de água (ponto fraco das Shadow)
  • Mata-cachorro
  • Faróis de milha com lanterna
  • Alforges laterais (surrados, mas ainda bem usáveis)
  • e mais alguns detalhes mais estéticos que funcionais (saia reduzida na placa traseira, tampão cromado do retificador, suporte extra na grade da refrigeração, etc)

Pela tabela FIPE ela custaria até R$16 mil reais, mas estou disposto a vendê-la por um preço menor que este.

E tem mais, quem ligar agora leva também um conjunto de câmeras (dianteira e traseira) dos pneus de brinde! Totalmente grátis! – momento polishop :-D

Pra quem estiver interessado, ela se encontra em Curitiba na casa do meu pai. Pra apreciação, mande-me um e-mail que arranjo a visita.

Essa moto é guerreira, já me levou em segurança por todo o litoral do Brasil e do Uruguai, sobreviveu a hostilidade da polícia Argentina e cortou tranquilamente todo o Centro-Oeste brasileiro, inclusive passando pela capital federal. Portanto não estranhe se ela reclamar quando tirá-la de casa pra andar menos de 200km!


08
Oct 09

Sale

Sorry, this entry is only available in Português Brasil.


17
Jun 09

Qt/openBossa Challenge

Nice opportunity to win a Nokia N810 tablet at the FISL. (Free translation from pt_BR)

Do you have a good idea? Do you know the Qt library? Would you like to be awarded for that?

The INdT (Nokia Technology Institute), nowadays one of the main development excellence centers in Brazil, promotes the first Qt/openBossa challenge.

We look for developers capable of putting your ideas into practice and build Qt applications designed to Nokia’s mobile devices. Participants will create innovations which will be evaluated and awarded during the 10th International Free Software Forum (FISL).

More at http://openbossa.org/fisl/index.html.


14
Jun 09

Qt Codestyle Automatic Check

Code style carries many benefits, such as improved maintainability and support for a rich Coding Standard. However it’s not safe to rely on developers to always comply to style rules along the source code, that’s why automatic code style verification should be an initial concern for professional-level works.

For the sake of coding-style-importance-aware people, there are many great projects such as GNU indent, pep8 and astyle that perform all the work for you, whose only need the appropriate setup flags.

For Qt projects, astyle is the recommended tool. But there are a few drawbacks on using it.

  • it’s too intrusive. astyle performs code modification in-line, disturbing the repository sources instead of serving as a verification tool only
  • weak didactic factor. Unlike pep8 script, which tells the developer exactly what the problem is and contributes to avoid it at the future (as a lesson learned effect)
  • it’s output can not be easily integrated with another tools

I’ve created a shell script in order to overcome some of the previous issues. It’s available here. Some relevant features.

  • quickfix-style list output
  • QTest style output at the end
  • Ignore moc created files
  • All suggested modifications can be applied as one patch, directly available to the user
  • Can be run inside a testsuite (make test) or as a standalone program

TODO

  • try to extend astyle classes
  • allow alternative code styles
  • better source selection schema (integrated with qmake, maybe?)
  • fix-up improper indentation on some important macros (foreach, .e.g.)
  • test and make it work on MacOS

25
May 09

(Português Brasil) Teste Nerds

Sorry, this entry is only available in Português Brasil.


14
May 09

Git Empty Branches

Found out some interesting Git Hints presented as webcasts at the site below. The most interesting part was to learn how to create empty branches on it, so a project can be functionally separated without having to kludge your working dir with several directories.

GitCasts: Empty Branches

Summarizing the lesson:

$ git-symbolic-ref HEAD refs/heads/emptybranch
$ git-rm --cached -r .
$ git-commit --allow-empty -m "Initial commit for empty branch"

The library versus website example was perfect, but one can think about other relevant situations, like sub-projects inside a bigger project, management documentation or even meta-files configuring the repository itself (description and ACL).


07
May 09

(Português Brasil) Festa do Cartão Corporativo na Câmara Municipal de Manaus

Sorry, this entry is only available in Português Brasil.


05
May 09

Old School Techniques

Talking about old times stuff at the breakfast, it was so fortunate that I’ve already read a post about this issue earlier today.

Old-school programming techniques you probably don’t miss

I’m not a punch card time guy, but concerns like memory footprint size, code running faster and thread limitations still go around my mind nowadays.

Don’t forget to take a look at the comments section for more funny and informative stories.


28
Apr 09

Python-Debian Packaging for Maemo

Packaging a software component made using python to a Maemo device could be easier, if CDBS cared about hand-held devices and their limitations.

Knowing that using setup.py was the Right Way of Doing It™ for python applications I tried to push myself into making CDBS work together, but not without a little harassment.

First of all, such scope-limited distributions tend to gather components in customized places as to promote integration between them or just in sake of a plain different organization. This difficulty can be overcome by using pycentral and including the following line at debian/rules file.

export DH_PYCENTRAL=nomove

Just as the manpage says, this will prevent the build-system from moving the files from the selected install prefix to a central place (like /usr/share/pycentral).

Secondly, because of limited storage capacity and speed-up necessities, usually python components install just their .pyo files. This requirement made me struggle trough CDBS’ python-distutils.mk source code in hope for a simple fix. The answer I’ve found was to overrule the python-install target with the following commands (look here for the diff).

define FIXUP_DIST
    -find $(DEB_DESTDIR) -name '*.py' -exec rm -f {} \;
    -find $(DEB_DESTDIR) -name '*.pyc' -exec rm -f {} \;
    -find $(DEB_DESTDIR) -name '*.egg-info' -type d -exec rm -rf {} \;
endef

ifeq (all, $(cdbs_python_module_arch))
common-install-arch common-install-indep:: python-install-py
python-install-py:
    cd $(DEB_SRCDIR) && $(call cdbs_python_binary,python$(cdbs_python_compile_version)) $(DEB_PYTHON_SETUP_CMD) install --root=$(DEB_DESTDIR) $(DEB_PYTHON_INSTALL_ARGS_ALL)
    $(call FIXUP_DIST)
else
common-install-arch common-install-indep:: $(addprefix python-install-, $(cdbs_python_build_versions))
python-install-%:
    cd $(DEB_SRCDIR) && $(call cdbs_python_binary,python$*) $(DEB_PYTHON_SETUP_CMD) install --root=$(DEB_DESTDIR) $(DEB_PYTHON_INSTALL_ARGS_ALL)
    $(call FIXUP_DIST)
endif # archall detection

Let’s say it’s inside a file named debian/fixup.mk, then my complete debian/rules file would be like this.

#!/usr/bin/make -f

DEB_PYTHON_SYSTEM=pycentral

include /usr/share/cdbs/1/rules/debhelper.mk
include /usr/share/cdbs/1/class/python-distutils.mk
include debian/fixup.mk

export DH_PYCENTRAL=nomove

And this is the beauty of CDBS, a file which would be several lines long gets resumed to a few lines.

I’m still trying to find a way to make this code available for all my components without installing it to a globally reachable path, but did not find a thing such as a MAKEFILEPATH variable untill now. I guess a package like cdbs-maemo-dev.deb would be an appropriate place for stuff like this, but pushing it there is for another post.