O PSL-PI tem por objetivo incentivar o uso e a produção de software livre no Piauí como política de combate à exclusão digital. Acreditamos que a distribuição de conhecimentos proporcionada pelo Open Source/Software Livre tornará nossa sociedade mais justa e próspera, exatamente por dar a todos as mesmas condições de conhecimento e desenvolvimento.
Software Livre é uma grande oportunidade de construirmos uma sociedade produtora de ciência, independente e efetivamente competitiva. Estamos reconstruindo as bases da nossa sociedade, não mais calcados nos braços do Estado, mas sim, amparados pela iniciativa própria, pela auto-determinação. Nós somos capazes de nos auto-governar. Somos capazes de construir uma sociedade efetivamente Livre. Esta é a essência do PSL-PI.
O PSL-PI é formado pela articulação de indivíduos que atuam em instituições publicas e privadas, grupos de usuários e desenvolvedores de software livre, empresas, governos ou ONGs, e demais setores da sociedade. O importante é a consciência e disposição para propagar o uso de software livre e a cultura colaborativa nas diferentes esferas da sociedade.
Dann Luciano: ISO646 ou iso646.h
May 20, 2012 - No comments yetMuitos programadores alegam que linguagens com python ou ruby são mais
faceis de entender pois essas linguagens possuem nomes mais
apropriados para comandos e etc. Uma vez li em um blog (até sei qual o
post, mas Ética é Ética) que em python operações booleanas eram mais
compreensíveis, pois usavam nomes mais intuitivos como and or xor ao
contrario de && || ^ respectivamente.
Hoje em meus estudos sobre C eis que encontro um cabeçalho
(header) chamado iso646.h localizado em /usr/include/.
Olhando o seu pequeno conteúdo podemos ver algo parecido com isso:
#define and &&
#define and_eq &=
#define bitand &
#define bitor |
#define compl ~
#define not !
#define not_eq !=
#define or ||
#define or_eq |=
#define xor ^
#define xor_eq ^=
A dica é muito cuidado com o que você fala, principalmente se você não
tem um profundo entendimento do assunto.
Se você conhece alguém que diz que sabe muito sobre C, duvide, pois
é impressionante como a cada fim de semana mergulhando nas profundezas
da linguagem aprendo mais e mais.
Francisco Fernandes: Modelos tridimensionais no Inkscape 2: editando e exportando
May 17, 2012 - No comments yetContinuando ainda a edição de modelos no Inkscape, as vezes é util editar algumas propriedades do objeto antes de exportar. No Blender é possível importar e exportar para diversos modelos. O formato Wavefront (.obj) é o suportado no Inkscape, então vamos nos focar na abordagem com ele.
Francisco Fernandes: Modelos tridimensionais no Inkscape 1: importando e editando
May 17, 2012 - No comments yetCom o Inkscape aberto, vá em Extensões > Renderizar > 3D Polyhedron. Essa ação irá abrir uma caixa de diálogo em que você poderar escolher que objetos você quer renderizar. Escolha Load from file, informe o caminho completo do modelo (infelizmente não tem um diálogo que cuide disso, então é no braço mesmo que o modelo deve ser informado) e clique em Aplicar.
Com isso você já renderizou seu modelo tridimensional. Você pode alterar algumas características do objeto que vai ser como por exemplo a posição em que o modelo será visualizado, na aba View. Nela você poderá definir 6 rotações a serem aplicadas no objeto em torno dos eixos X, Y e Z com os valores dos ângulos em graus. Pode-se marcar a caixa Pré-Visualizar, para ver como será exibido o objeto antes de renderizá-lo.
E finalmente, pode-se definir o estilo do objeto a ser renderizado. Tem-se Scaling factor, para definir em que tamanho o objeto será gerado; Fill color, com opções Red, Green e Blue para alterar os valores RGB das faces do modelo tridimensional; Stroke opacity e Stroke width para definir a opacidade e largura das arestas, respectivamente. Pode-se definir a posição da luz em Light X, Y e Z, no caso do sombreamento do objeto ter sido habilitado na caixa Shading.
Depois disso, se quiser inserir mais informações sobre o objeto, basta seguir o tutorial de inserção de Latex no Inkscape.
AJ Alves: Continuous2Wheels – Para robôs de duas rodas com Arduino
May 11, 2012 - No comments yetContinuous2Wheels - Biblioteca para Arduino
Continuous2Wheels é uma biblioteca de Arduino para controlar os movimentos de robôs guiados por duas rodas ligado a servo-motores contínuos.
Página oficial: Continuous2Wheels no GitHub
Instalação
Faça um git clone ou download deste projeto para a pasta de bibliotecas do Arduino:
no Ubuntu (/usr/share/arduino/bibliotecas/) caso instalado via apt-get
no Windows, Mac ou Linux(Onde você baixou o IDE Arduino, a pasta de biblioteca está dentro)
Agora está tudo pronto, basta:
Abra o seu Arduino IDE, vá a SKETCKS → BIBLIOTECA → Importar Continuous2Wheels
Uso
#include <Servo.h>
#include <Continuous2Wheels.h> //Importando nossa biblioteca
Servo rightWheel, leftWheel;
int rightWheelPin = 9; // Pino da roda direita
int leftWheelPin = 10; //Pino da roda esquerda
double wheelRadius = 3.6; //Raio das rodas, em centímetors
double bendRadius = 12.2; //Raio de curva, é a distância de uma roda a outra, é o tamanho do eixo, em centímetros
// Criando uma instância da nossa bibliotecam, com um de seus construtores
// Não esqueça de passa os PONTEIROS dos objetos Servo, para isso, antes da variável coloque &
Continuous2Wheels c2w(&rightWheel, &leftWheel, wheelRadius, bendRadius);
void setup(){
// Configure os seus servos normalmente rightWheel.attach(rightWheelPin); leftWheel.attach(leftWheelPin);
}
void loop(){
c2w.forward(45); // Move o robô para frente em uma velocidade de 45 delay(4000); c2w.bend(90); // Faz uma curva a direita em 90° delay(4000); c2w.backward(45); // Move o robô para traz em uma velocidade de 45 delay(4000); c2w.bend(-90); // Faz uma curva a esquerda em 90° delay(4000); c2w.stop(); // Para as rodas delay(10000);
}
Este exemplo, usa as funcionalidades mais simples da biblioteca, logo logo farei um post com as funcionalidades avançadas, se quiser conhecer-las antes, vá a Continuous2Wheels no GitHub

O trabalho Continuous2Wheels de AJ Alves foi licenciado com uma Licença Creative Commons – Atribuição – CompartilhaIgual 3.0 Não Adaptada.
Com base no trabalho disponível em github.com.
Podem estar disponíveis autorizações adicionais ao âmbito desta licença em github.com/zerokol/.
Francisco Fernandes: The right tools for the right job
May 9, 2012 - No comments yetLast year I bought a Wacom Bamboo tablet to enjoy my free time studying some digital art with Krita and MyPaint. I lent it to my girlfriend for a few months after 2011 Christmas so she could have some fun too. Angela was here in Natal last week (while the Lakademy was happening in Porto Alegre, south of Brazil ) and she brought it back. I askd her to bring it to me so I could use it while I am working in my GSoC project.
![]() |
| just a test i made when Krita 2.4 was still in Alpha 3 |
It takes some time to get used to this kind of input device but after that it’s really fun to do things with it. I really love drawing, but the reason why I bought a tablet was that my painting skills it’s quite low. I get jealous very easily from other artists works.
Anyway, another point: Angela bought my Qt4 book too, since I had left it in Teresina after I moved to Natal.
I am not a KDE (not even a Qt ) experienced programmer, so the book will help a lot in some things I am doing. For instance, I corrected some points in my granular particles simulation and now I have some right values in it’s output. Although some errors persists, I got some key values right. It’s just some numbers in a text file, but as soon I eliminate some Batman lyrics (NaNs are one of my nightmares), the next step it’s to pass the generated values to a sequence of QImages and see if the particles got the right pixels and the right movements.
![]() |
| a speed painting Angela made with my wacom |
As I said in previous posts, this project it’s not a easy one. It requires a real-time approach to a not so common particle type. The simulation I did have some serious performance drawbacks. For just a few particles (200 particles in the data set randomly initialized and distributed in a euclidean plane of size 100×100 units) the simulation takes almost 3 minutes to run 1000 steps, with a few wrong outputs !! It’s a really bad result.
After that, I gathered a handfull of books related to the topic. Physics and engineering are the fundamentals, but a real-time approach it’s the more important feature in the project. I got a book with my university advicer about real-time collision detection in the hope that it will help me do a better job in this simulation.
![]() |
| Real-time collitions, linear algebra, engineering math and Qt/C++ : the tools for the job |
Another point is that I’m thinking of trying to see the actual state of it using a OpenCL approach. I have access to a relative good computer in the university: a i3 intel processor with 4Gb of RAM with a NVidia graphics board. With that, what need to be done it’s some self-training in this tecnology. I never coded in OpenCL before and the talk around here is that it’s really hard. I check it out with a few OpenCL tutorials and I have to agree with the guys: it’s really tough. A simple hello world pass through all kinds of concepts, from context creation, through devices association to kernel programming. Fortunately, I found a few books about it too.
Anyway, if you want to check it out the actual state of my simulation, the repository is hosted in my gitorious account. I did not allowed merge requests since the code it’s quite unstable, but it’s well commented and have some references if you want to understand it better. I’m already writting another post with the theory behind the simulation, doing a more extensive and well detailed explanation of the concepts (some few drawings and formulas for our enlightment
Until next round!











































