Nerd, programador, desenvolvedor e usuário de Software Livre, grafista digital, vegano, ciclista... Adoro a expressão "Free as in Freedom".
18 de janeiro tire seu site do ar contra PIPA e SOPA
January 13, 2012 - 2 comments- When:January 18, 2012
- URL:http://www.reddit.com/tb/obg8v
- Address:Global
Governos gostam de censura, temem a inovação e sempre protegem o statu quo. Isso não é diferente no Brasil e não é diferente nos EUA, por mais que se declarem defensores da liberdade.
No momento temos dois projetos tramitando no governo americano que podem inviabilizar a internet livre em todo o mundo e ainda podem influenciar leis equivalentes em outros governos. São os projetos:
- PIPA — Protect Intellectual Property Act
- SOPA — the Stop Online Piracy Act
Muitos blogs já tem publicado ou estampado mensagens anti-PIPA/SOPA, mas agora o movimento pode ficar mais "impactante". O Reddit anunciou que vai bloquear o site por 12 horas em protesto contra esses projetos e Jimmy Wales defende que a Wikipédia faça o mesmo.
Se você concorda com os que defandem a Internet livre:
Bloqueie seu site ou blog no dia 18 de Janeiro por 12 horas.
de 13:00 até 01:00 UTC – ou seja – 10:00 até 22:00 Brasilia
A sutileza de Di Vasca
October 7, 2011 - 5 commentsVocê tem uma habilidade e toda hora aparece alguém querendo montar em você?

Aprenda o modo de relacionamento com acéfalos de Di Vasca!
- Uma mensagem
- Um talento divino!
- Está muito formal
- Tudo isso por um desenho simples?
- Oportunidade de crescimento
- Você não sabe o quanto eu sofro!
- Processe um ilustrador (completa a história anterior)
Juro que já quiz fazer o mesmo, mas preciso de um curso de relacionamento interpessoal com Di Vasca.
Performance goes up like a rocket with BC
June 11, 2011 - No comments yetI had presumed but i never had thought how much the performance can grow when giving some logic from BASH to BC. Ok... We all know, BASH is some of the slowest languages in the world, but BASH scripts that hard work with math can be as fast as other languages if we let some logic to the BC, an arbitrary precision numeric processing language.
When i started to work with the XPM Image script (my new pet project) i realized that BASH is more slow then i think, but i also realized that i can give to BC much more then only some simple math expressions to compute. In BC i can define variables, set flux control, functions... Well thats a real programming language and i'm underusing it.
In a small test i had the confirmation: BC with inside loops is much faster than BASH loops with BC inside. The question is: "How much?" ... Taking advantage i decide to test how much the verbose hinders the performance. So i did this change on the pixel matrix generator loop:
echo 'A: Loops in bash + With verbose code'
time (
helix='|/-\'
for y in $( seq 0 $(($h-1)) ); do
echo -ne "Line $y ${helix:$(($y%4)):1} \r" >&2
echo -n '"'
for x in $( seq 0 $(($w-1)) ); do
echo "
$bc_pal_func
$bc_round_func
define f(x,y,w,h) { $func }
# calc the position on the pallete for the current pixel:
p = round( 255 * f($x,$y,$w,$h) );
num_to_pal(p)" | bc -l
done
echo -n '"'
test $y -lt $(($h-1)) && echo ','
done > /tmp/pix-matrix-1
echo "Done. " >&2
)
echo 'B: Loops in bash + Without verbose code'
time (
for y in $( seq 0 $(($h-1)) ); do
echo -n '"'
for x in $( seq 0 $(($w-1)) ); do
echo "
$bc_pal_func
$bc_round_func
define f(x,y,w,h) { $func }
# calc the position on the pallete for the current pixel:
p = round( 255 * f($x,$y,$w,$h) );
num_to_pal(p)" | bc -l
done
echo -n '"'
test $y -lt $(($h-1)) && echo ','
done > /tmp/pix-matrix-2
)
echo 'C: Loops in bc + With verbose code'
time (
export BC_LINE_LENGTH=$(( $w * 2 + 5 ))
echo "
$bc_pal_func
$bc_round_func
define f(x,y,w,h) { $func }
helix_pos = 0;
define void verbose(line) {
print \"Line \",y,\" \"
if ( helix_pos == 0 ) print \"|\" \
else if ( helix_pos == 1 ) print \"/\" \
else if ( helix_pos == 2 ) print \"-\" \
else {
print \"\\\\\\\\\";
helix_pos = -1;
}
helix_pos += 1;
print \" \\n\";
}
for ( y=0; y<$h; y++ ) {
verbose(y)
print \"\\q\"
for ( x=0; x<$w; x++ ) {
# calc the position on the pallete for the current pixel:
p = round( 255 * f(x,y,$w,$h) );
num_to_pal(p)
}
print \"\\q\"
if ( y < $(($h-1)) ) print \",\"
print \"\\n\"
}" | bc -l |
while read line; do
test "${line:0:4}" = "Line" \
&& echo -en " $line \r" >&2 \
|| echo "$line"
done > /tmp/pix-matrix-3
echo "Done. " >&2
)
echo 'D: Loops in bc + Without verbose code'
time (
export BC_LINE_LENGTH=$(( $w * 2 + 5 ))
echo "
$bc_pal_func
$bc_round_func
define f(x,y,w,h) { $func }
for ( y=0; y<$h; y++ ) {
print \"\\q\"
for ( x=0; x<$w; x++ ) {
# calc the position on the pallete for the current pixel:
p = round( 255 * f(x,y,$w,$h) );
num_to_pal(p)
}
print \"\\q\"
if ( y < $(($h-1)) ) print \",\\n\"
}" | bc -l > /tmp/pix-matrix-4
)
As you see, there is 4 matrix generators testing loops inside x outside BC, and with x without verbose code. Each block will be tested with the time command. Then i run it to generates two images one with 200x200 pixels and other with 20x20 pixels. See the results:
Sequence 1 - run ./image 200 200
A: Loops in bash + With verbose code Done. real 4m55.433s user 4m36.953s sys 0m59.660s B: Loops in bash + Without verbose code real 4m45.620s user 4m38.969s sys 0m57.516s C: Loops in bc + With verbose code Done. real 0m3.571s user 0m3.172s sys 0m0.148s D: Loops in bc + Without verbose code real 0m3.241s user 0m2.896s sys 0m0.212s
Sequence 2 - run ./image 20 20
A: Loops in bash + With verbose code Done. real 0m3.124s user 0m2.822s sys 0m0.626s B: Loops in bash + Without verbose code real 0m2.953s user 0m2.868s sys 0m0.576s C: Loops in bc + With verbose code Done. real 0m0.073s user 0m0.044s sys 0m0.004s D: Loops in bc + Without verbose code real 0m0.070s user 0m0.032s sys 0m0.008s
What that means?
With simple calculus we can see that:
Comparing sequence 1 (image 200 200)
Seq1-A x Seq1-B:
Loops in bash, without verbose code is 3.32% faster then with verbose code
Seq1-C x Seq1-D:
Loops in bc, without verbose code is 9.24% faster then with verbose code
Seq1-A x Seq1-C:
Loops in bc runs 82.73 times faster than in bash
Comparing sequence 2 (image 20 20)
Seq2-A x Seq2-B:
Loops in bash, without verbose code is 5.41% faster then with verbose code
Seq2-C x Seq2-D:
Loops in bc, without verbose code is 4.11% faster then with verbose code
Seq2-A x Seq2-C:
Loops in bc runs 42.79 times faster than in bash
The bigest thing is: I must give all math related logic to BC and something more when it is possible. This praxis is not only times faster it is computationally less expensive, by that the [BASH code time] / [BC code time] grows when we try to generate the bigger image
The verbosity affects the performance, that makes a 200x200 image only 330 milliseconds slow, inside the BC code. The user can't feel that. Nice! :-)
Interested? Visit the XPM Image website.
Dia 4 de Maio ⇒ Dia contra DRM
May 4, 2011 - One comment- When:May 4, 2011
- URL:http://www.defectivebydesign.org
- Address:
Hoje é o dia de combate ao DRM (Digital Rights Management). Você sabe o que é isso? Muito além do software proprietário, esta é a nova fronteira de guerra pela liberdade.
- Conheça a campanha "Defeituoso por Projeto"
- Participe da campanha "DRM? Não Compro!"
Você já ouviu falar de "Trusted Computing" (Computação Confiável)? Essa é uma das estratégias do DRM. um chip vai dizer o que você pode ou não executar, e ele tem mais controle sobre a máquina que o seu sistema operacional.
Assista o vídeo "O que a Computação Confiável tem de confiança?"
Eles já decidiram NÃO confiar em você. Download Legenda
Creative Commons com ou sem NC & SA?
April 28, 2011 - 3 comments
Vez por outra entro em alguma conversa ou debate sobre as principais cláusulas variantes das licenças Cretive Commons e como escrevi algo para uma lista recentemente, vou publicar aqui uma adaptação mais generalista:
SA — Share Alike — Compartilhamento pela mesma licença

Essa cláusula é o copyleft do Creative Commons. Ela é o que garante que as derivações de uma obra livre permanecera livre, sob a mesma licença.
Sem essa cláusula qualquer pessoa, organização ou empresa pode derivar a obra (colocar a cereja no bolo) e mudar a licença, inclusive para algo proprietário, com as clássicas restrições a cópia e multa do ECAD (exemplificando com música).
Se a pessoa/entidade não tem interesse em redistribuir a derivação sob a licença livre, ela não estará beneficiando a coletividade, pois a possibilidade de evolução da obra para alí. Além da questão social, o "antagonista" ainda estará se opondo aos princípios da pessoa/entidade que criou a obra original.
NC — Noncommercial — Uso não-comercial

Essa cláusula restringe uma determinada liberdade de uso e por isso não pode ser considerada livre dentro do universo do software, pois fere a primeira das 4 liberdades. Apesar de ser desenvolvedor, usuário exclusivo e divulgador do Software Livre, entendo que devo aplicar suas metodologias e filosofia a outras realidades, mas adaptando-as ao contexto.
Se alguém quiser lucrar em cima de SL tem que prestar algum serviço extra e isso agrega valor ao ecossistema de SL. Desta forma liberar o uso comercial do SL é socialmente positivo. Isso é muito difícil em outras áreas, como por exemplo a arte. Se eu publicar um trabalho gráfico sem uma cláusula NC ele poderá ser reutilizado por um pseudo-designer preguiçoso em um cartaz que lhe lucrará o equivalente a horas ou dias do meu trabalho remunerado, mas sem nenhum retorno para mim e sem produzir algo realmente interessante para derivação. Isso não representa benefício social, pois é individualizado e voltado para o que menos trabalhou.
Ainda assim ha momentos onde é válido não usar a cláusula NC. Quando? Aí é você quem deve pensar bem e decidir. Porém do outro lado temos pessoas que defendem o não uso do NC, partindo do princípio que as grandes colaborações dependem de fins comerciais e por isso restringiria a colaboração.
Não se pode tratar o NC como uma óbvia restrição a colaboração, pois o primeiro passo é a criação. Quando eu e outros produzimos sem remuneração e compartilhamos para o bem da maioria, nos não queremos nos sentir lesados por um outro que coloque apenas a cereja no bolo e lucre com isso, sem compartilhar a renda, assim como compartilhei o meu trabalho. Como tratar esse problema? Vamos lembrar que existem dois meios (reais) de evolução para a produção sob NC bastante válidos para a nossa sociedade:
- Processos não monetizados: já promovidos pela maior parte da comunidade de SL e por indivíduos sem vinculo a movimentos definidos que produzem e trocam conhecimentos na internet. Esse modelo não é nem um pouco valorizado ou percebido no mundo físico, mas existe e é promovido pelo movimento Zeitgeist.
- Venda de direito de uso: quer usar uma imagem NC para fins comerciais, beleza! Então dê um retorno ao criador, a quem teve o maior dos trabalhos. Pague a ele em troca da flexibilização da licença, afinal ele não é escravo de ninguém para trabalhar de graça em prol dos ganhos financeiros de outro. (exagero? mas é algo para se pensar seriamente)
Então, para o caso geral eu uso e proponho: AGPL para software (mesmo para os que pensam que não serão usados no modelo servidor-cliente) e CC-by-nc-sa para arte e documentação.



























os conteúdos neste perfil podem ser copiados e reutilizados,