Apresentando um estudante do Season of KDE 2014 – Minh Ngo

Season of KDE é um programa da comunidade KDE que auxilia novatos no desenvolvimento de projetos de software livre. Este ano estou trabalhando como orientador em um projeto relacionado ao Cantor, há muito requisitado pelos usuários – o desenvolvimento do backend para Python 3. Você poder ler mais sobre o Cantor em meu blog (textos em inglês e português). Vamos dar as boas-vindas e desejar boa sorte e bom trabalho à Minh Ngo, o estudante por trás desse projeto! Ele escreveu um texto de apresentação que traduzo abaixo.

Olá,

Meu nome é Minh,

Minh Ngo

Sou um estudante graduado. Sou vietnamita, mas ao contrário de outros estudantes vietnamitas, passei boa parte da minha vida na Ucrânia. Atualmente estou me preparando para um curso de mestrado, que devo iniciar no próximo semestre.

Open source é meu hobby nos tempos livres, onde eu gosto de fazer algo de útil para a comunidade. Anteriormente eu participei do Google Summer of Code 2013 e em vários outros projetos open source. Alguns dos meus projetos pessoais estão disponíveis no github em https://github.com/Ignotus. Eles não são muito populares como outros projetos legais, mas várias pessoas estão usando eles e isso me faz muito feliz :) .

Cantor é uma oportunidade para dedicar meu tempo para criar coisas úteis e ganhar uma exclusiva camiseta do KDE :). Eu decidi começar minha contribuição com o backend do Python 3 porque meses atrás estava fazendo algumas aulas relacionadas com aprendizado de máquina, o que me fez procurar por um backend estável, em versão desktop, para o IPython. Eu não gosto muito da versão notebook do IPython, e a versão qtconsole não satisfaz meus critérios de funcionalidade, portanto decidi encontrar algum frontend para IPython que eu pudesse modificar para mim mesmo. E assim minha história com o Cantor começou :).

Happy hacking!

Presenting a Season of KDE 2014 student – Minh Ngo

Season of KDE is an outreach program hosted by the KDE community. This year I am working as a mentor to a long time requested project related with Cantor – the development of Python 3 backend. You can read more about Cantor in my blog (texts in English and Portuguese). So, let’s say welcome and good luck to Minh Ngo, the student behind this project!

Hi,

My name is Minh,

Minh Ngo

I’m BSc graduated student. I’m Vietnamese, but unlike other Vietnamese students spent most of my life in Ukraine. Currently, I’m preparing myself to the Master degree that will start in the next semester.

Open source is my free time hobby, so I would like to make something that is useful for the community. Previously, I was participated in the GSoC 2013 program and in several open source projects. Some of my personal projects is available on my github page https://github.com/Ignotus, not so popular like other cool projects, but several are used by other people and this fact makes me very happy :) .

Cantor is one of opportunities to spend time to create an useful thing and win an exclusive KDE T-shirt :). I decided to start my contribution with the Python3 backend, because few months ago I studied several courses that are related with Machine Learning, so I was looking for a stable desktop backend for IPython. A notebook version IPython I do not entirely like and its qtconsole version doesn’t satisfy me in terms of functionality, therefore I decided to find some existent frontend for IPython that I can tune for myself. And the story with Cantor began after than :)

Happy hacking!

Cantor: novas funcionalidades no KDE 4.14

KDE 4.14 foi lançado em agosto de 2014, mas até o momento não tive tempo para escrever sobre as novas funcionalidades do Cantor disponíveis naquele release.

Portanto, vamos corrigir isso agora!

Novo backend: Lua

A família de backends do Cantor tem um novo membro: Lua, usando a implementação luajit.

Este backend já dispõe de várias funcionalidades: destaque de sintaxe, auto-complementação de código, carrega figuras no terminal, editor de scripts, e mais

Cantor + Lua em ação

O backend para Lua foi desenvolvido pelo brasileiro Lucas Negri, e isso é um motivo para eu ficar muito feliz. Bem-vindo a bordo Lucas!

Você pode ler mais sobre esse backend em um texto no blog do Lucas.

Uso de utf8 em códigos LaTeX

Quando você exporta seu terminal para LaTeX, a codificação utf8 agora é utilizada por padrão. Essa melhoria foi desenvolvida por Lucas.

Suporte à extensão pacotes nos backends para Sage e Octave

Agora estes backends tem um assistente para importar pacotes/módulos/bibliotecas.

Suporte para scripts que executam automaticamente

python2_autorun

Scripts para execução automática no backend para Python 2

Agora os backends para Python 2, Scilab, Octave, Sage, Maxima, Qalculate, e KAlgebra tem suporte para execução automática de scripts. Você pode configrar uma série de scripts ou comandos que serão executados no momento em que o Cantor carregar o terminal – ou seja, durante a inicialização.

Adicionado CTRL+Space como alternativa padrão à complementação de código no terminal

O comando padrão para complementação de código no terminal do Cantor é o botão TAB, mas agoras temos uma alternativa a isso: CTRL + Space. Isso manterá a consistência entre o editor de scripts (onde o comando padrão para essa funcionalidade é CTRL + Space) e o terminal.

Suporte inicial para os assistentes de algebra linear e criação de gráficos no Python 2

Desenvolvi um suporte inicial para dois plugins legais no backend para Python 2: algebra linear e criação de gráficos.

Primeiro, vamos ver o plugin de algebra linear. Na barra de menu, vá em Algebra Linear > Criar Matriz. Uma janela para criação de matrizes será aberta. Você deve então colocar os valores nas células.

python3_linearalgebraAssistente de criação de matriz

Após clicar no botão ‘Ok’, o comando para criação de matrizes da biblioteca numpy será carregado no terminal, automaticamente.

python2_linearalgebra_resultNova matriz criada

Por agora este plugin tem implementado apenas o suporte para criação de matrizes.

Veremos agora o plugin para criação de gráficos, que serve tanto para gráficos 2D quanto 3D. Façamos x = numpy.arange(0.0, 2.0, 0.01) e, na barra de menu, vamos em Gráfico > Gráfico 2D. A janela abaixo será aberta.

python2_graphicAssistente para criação de gráficos 2D

Você pode configurar uma expressão para o eixo Y (neste caso estou usando a função seno numpy.sin) e uma váriável ou função para o eixo X (neste caso, 2 * x * numpy.pi). Você poderia apenas colocar x no nome da variável para criar um gráfico dos valores de x.

Após pressionar ‘Ok’, o comando usando pylab será carregado no terminal para criar o gráfico.

python2_graphic_resultO assistente para gráficos 3D segue um padrão similar para criar as figuras.

Como você pode ver, utilizar esses assistentes requer alguns módulos do python carregados na área de trabalho, e eles devem ter os mesmos nomes utilizados nos plugins. Existem diversas formas de carregar módulos no ambiente python (import foo; import foo as [anyname]; from foo import *; etc), então fazer isso de forma genérica é praticamente impossível (na verdade eu queria ouvir algumas sugestões sobre isso da comunidade).

Minha escolha foi carregar numpy, scipy, matplotlib e pylab quando o backend para Python 2 é carregado pelo Cantor. Bem, eu pretendo mudar isso porque esses módulos passam a ser obrigatórios para o backend funcionar corretamente, e também porque pylab não é mais recomendado nas versões recentes do matplotlib. Então, eu espero alterar esse plugin o quanto antes.

De qualquer forma, gostaria de escutar as opiniões da comunidade de usuários de python no ambiente científico sobre essas funcionalidades.

Futuro

No momento estamos trabalhando no port do Cantor para Qt5/KF5. Você pode acompanhar esse trabalho no branch ‘frameworks‘ do repositório do Cantor.

Doações

Se você usa ou aprecia meu trabalho no Cantor, ou em algum outro projeto de software livre, por favor considere fazer uma doação para mim: assim eu poderei continuar me dedicando à contribuições e melhorias nesses projetos.

Você poderia considerar uma doação para o KDE também, e ajudar com a manutenção dessa grande comunidade de software livre e os projetos desenvolvidos por ela.

Cantor: new features in KDE 4.14

KDE 4.14 was released in August 2014 but I did not have time to write about new features in Cantor for that release.

So, let’s fix it now!

New backend: Lua

Cantor family of backends have a new member: Lua, using luajit implementation.

This backend have a lot of features: syntax highlighting, tab complete, figures in worksheet, script editor, and more.

Cantor + Lua in action

Lua backend was developed by Lucas Negri, a Brazilian guy, and this is a reason for me to be very happy. Welcome aboard Lucas!

You can read more about this backend in a text of Lucas blog.

Use utf8 on LaTeX entries

When you to export the worksheet to LaTeX, utf8 will be used as default. This improvement was developed by Lucas.

Support to packaging extension in Sage and Octave backends

Now these backends have an assistant to import packages/modules/libraries.

Support to auto run scripts

python2_autorun

Auto run scripts/commands in Python 2 backend

Now Python 2, Scilab, Octave, Sage, Maxima, Qalculate, and KAlgebra backends have support to auto run scripts. You can configure a set of scripts or commands and they will run automatically after the worksheet launch!

Add CTRL+Space as alternative default code completion to worksheet

Default code completion command in worksheet is TAB key, but now we have an alternative command too: CTRL + Space. It will maintain consistence between script editor (where the default code completion is CTRL + Space) and worksheet.

Initial support to linear algebra and plot assistants in Python 2

I developed the initial support to 2 amazing plugins in Python 2 backend: the linear algebra plugin and the plot plugin.

First, let’s see the linear algebra plugin. In menu bar go to Linear Algebra > Create Matrix. A window to matrix creation will be open, as below. You must to put the values in the cells.

python3_linearalgebraMatrix creation assistant

After push ‘Ok’ button, the matrix command from numpy  module will be loaded in the worksheet, automatically.

python2_linearalgebra_resultNew matrix created

For now this plugin have implemented just the matrix creation.

Let’s see the plot plugin now. You can use it to create 2D and 3D plot. Let’s to do x = numpy.arange(0.0, 2.0, 0.01) and, in menu bar, go to Graphics > Graphics 2D. The window below will be open.

python2_graphicPloting 2D assistant

You can set some expression to be the Y axis (in this case I am using numpy.sin) and a variable name to X axis (this case, 2 * x * numpy.pi). You could to put just x in variable name to do a plot with the values of x.

After push ‘Ok’ button, the command using pylab will be load in worksheet to make the graphic.

python2_graphic_result3D plotting assistant have a similar way to create the pictures.

How you can see, to use this assistants we need to have some python modules in the workspace, and they must to have the same name used in the plugins. There are a lot of ways to import modules in python environment (import foo; import foo as [anyname]; from foo import *; etc), so to do a generic way to use it is impossible (well, if you have some idea I would like to hear it).

My choice was to import numpy, scipy, matplotlib and pylab when Python 2 backend is loaded by Cantor. Well, I intent to change it because that modules will be mandatory to use Python 2 backend correctly, and pylab is not longer recommended in recent matplotlib version. So, wait for some changes in this plugin soon.

In any case, I would like to hear the opinions of scientific python community about this features.

Future

For now we are working in Cantor port to Qt5/KF5. You can follow the work in ‘frameworks‘ branch on Cantor repository.

Donations

If you use or appreciate my work in Cantor or another free software project, please consider to make a donation for me, then I can to continue my contributions to improve Cantor.

You can consider make a donation to KDE too, and help with the maintenance of this great free software community and their products.

Month of KDE Contributor: From LaKademy …

In recent weeks I had an intense “Month of KDE Contributor” that began with LaKademy, the KDE Latin American Summit, and ended with Akademy, the KDE World Summit. It was a month somewhat tiring, hard work, but it was also filled with good stories, great meetings, new contacts, discoveries and, I can say, fun.

This post I will write about LaKademy and the next I will comment about Akademy.

logoazul_menor

The second edition of LaKademy took place in São Paulo, one of the biggest cities of Latin America, in FLOSS Competence Center of University of Sao Paulo, an entire building dedicated to studies and researches on various aspects of free software: licenses, software engineering, metrics extracted from repositories, social aspects of collaboration, and more.

This year I and Aracele were the conference organizers, and I believe that we could provide all the infrastructure necessary to LaKademy attendees had good days of work in a pleasant and comfortable places.

First day we had talks of collaborators, and one that most caught my attention was Rafael Gomes on KDE sysadmin. It’s amazing the size of the infrastructure behind the scenes, a solid base that allows developers to do their jobs. It would be interesting to promote more this type of collaboration to attract potential contributors who prefer this side of computing.

14923088670_415cfc44df_z

This day I presented a talk about Qt in Android, describing the development tools configuration in Linux, presenting a basic Hello World, and commenting on some softwares availables using this technology, specially the VoltAir and GCompris. The presentation is below (in portuguese).

.

Second day we had a short-course about Qt, presented by Sandro Andrade. Impressive his didactic and how he manages to hold our attention for a whole day without getting boring or tiring. This day I was helping the other participants, especially those who were having the first contact with Qt development.

The third and fourth days were devoted to application hacking and projects development. I joined in “task-force” to port Bovo to KF5, I started the development of a metapackage to install all KF5 packages in Mageia, and I started the port of Cantor to KF5. I also fixed some KDE Brazil bots on social networks.

15106702121_ff87d73880_z

Task force to port Bovo to KF5

Fourth day we had a meeting to discuss some initiatives to promote KDE in Latin America, and we started to use Kanboard of KDE TODO to organize the implementation of these projects.

Besides the work we had some moments of relaxation at the event, as when we went to Garoa Hacker Clube, the main hackerspace in São Paulo, an activity we call Konvescote; and also when we all went to Augusta Street, one of the famous bohemian streets in the city.

15086717746_ec5d444223_z

KDE + Garoa

However, as in all events of Free Software and KDE Brazil, the best thing is see old friends again and meet new ones that are coming to the boat. For the novices, welcome and let’s to do a great work! For the veterans, we still have a good road ahead on this idea of writing free software and give back to the world something of beautiful, high quality technical, that respect the user.

KDE Brazil team wrote an excelent post enumerating what the attendees produced during the event. I suggest to all who still want more information to read that text.

I leave my thanks to KDE e.V. for providing this meeting. I hope to see more contributors in next LaKademy!

Mês do Contribuidor KDE: Do LaKademy…

Nas últimas semanas tive um intenso “mês do contribuidor KDE” que começou com o LaKademy, a conferência latinoamericana, e terminou com o Akademy, a conferência mundial. Foi um mês um tanto cansativo, de muito trabalho, mas que também foi repleto de boas histórias, grandes reencontros, novos contatos, descobertas e, por que não dizer, divertido.

Nesse artigo irei falar do LaKademy, e no próximo comentarei o que rolou no Akademy.

logoazul_menor

A segunda edição do LaKademy ocorreu em São Paulo, uma das maiores cidades da América Latina, no Centro de Competência em Software Livre da USP, um prédio inteiro dedicado à estudos e pesquisas sobre vários aspectos do software livre: licenças, engenharia de software, métricas extraídas de repositórios, aspectos sociais da colaboração, e mais.

Nesta edição coube a mim e à Aracele fazermos todos os ajustes da organização do evento, e acredito que cumprimos bem o objetivo de prover toda a estrutura necessária para termos bons dias de trabalho em locais agradáveis e confortáveis.

No primeiro dia tivemos uma série de palestras dos colaboradores, e uma das que mais me chamaram atenção foi do Rafael Gomes sobre o sysadmin do KDE. É impressionante o tamanho da estrutura que está nos bastidores, uma sólida base que permite aos desenvolvedores realizarem seu trabalho. Taí um campo que seria interessante divulgarmos mais para tentarmos atrair possíveis colaboradores que preferem esse lado da computação.

14923088670_415cfc44df_z

Nesse dia eu também apresentei uma palestra sobre Qt no Android, descrevendo como configurar o ambiente no Linux, apresentando um Hello World básico, e comentando sobre diversos softwares já disponíveis que usam essa tecnologia, em especial o VoltAir e o GCompris. Segue abaixo a apresentação

.

No segundo dia tivemos um mini-curso sobre Qt, apresentado pelo Sandro Andrade. Impressionante a didática dele e como consegue prender nossa atenção durante um dia inteiro sem ficar enfadonho ou cansativo. Meu trabalho nesse dia foi mais auxiliar os demais participantes, em especial aqueles que estavam tendo contato com Qt pela primeira vez.

Os terceiros e quartos dias foram dedicados ao hacking de aplicações e desenvolvimento de projetos. Eu dei uma força no multirão para portar o Bovo para KF5, iniciei o desenvolvimento de um metapacote para instalar todo o KF5 no Mageia, e comecei a portar o Cantor para KF5. Também trabalhei na reconfiguração dos bots do KDE Brasil nas redes sociais, uma pendência que tínhamos já há algum tempo.

15106702121_ff87d73880_z

Força-tarefa-multirão trabalhando no Bovo

No quarto dia também tivemos uma reunião para discutir algumas iniciativas de promoção do KDE na América Latina, e começamos a usar o Kanboard do KDE TODO para organizar a execução desses projetos.

Além do trabalho tivemos momentos de descontração no evento, como quando fomos visitar um dos principais hackerspaces de São Paulo, o Garoa Hacker Clube numa atividade que chamamos de Konvescote; e também quando fomos todos para a Augusta, uma das famosas ruas boêmias da cidade.

15086717746_ec5d444223_z

KDE + Garoa

Entretanto, como aliás em todos os eventos do KDE Brasil, o melhor de tudo foi reencontrar os amigos e conhecer outros novos que estão chegando ao barco. Para os últimos, que sejam todos bem-vindos e vamos arregaçar as mangas! Para os primeiros, que tenhámos ainda uma boa estrada pela frente nessa ideia de escrever software livre e, de alguma forma, retribuir para o mundo algo como programas de alta qualidade técnica e que respeitam o usuário.

O KDE Brasil escreveu um excelente review enumerando o que a comunidade produziu durante o evento, sugiro a todos que queiram ainda mais informações a darem uma olhadinha lá.

E fica meu agradecimento ao KDE e.V. por proporcionar esse encontro! Espero ver muito mais contribuidores no próximo LaKademy!

Minha lista TODO para o LaKademy 2014

logoazul_menor

Nesta semana em São Paulo, uma das maiores cidades deste planeta, sediará a segunda Conferência Latino Americana do KDE – ou, como chamamos, o LaKademy!

O evento ocorrerá no Centro de Competência em Software Livre da Universidade de São Paulo, um lugar interessante onde academia, empresas, e comunidades, trabalham juntas para criar, melhorar, e pesquisar sobre software livre.

Neste evento, a comunidade Latino Americana do KDE tentará algo novo: teremos apresentações sobre particularidades do KDE. Em eventos específicos do KDE por aqui, é mais comum termos apenas sessões de hacking, enquanto as apresentações e mini-cursos são ofertados nos eventos de software livre mais gerais. Desta vez nós organizamos um evento aberto para não-contribuidores do KDE, e talvez ao final eles se tornem contribuidores do projeto.

A programação do evento tem vários assuntos: arte, port de softwares do GTK para Qt (um potencial flamewar), KDE Connect, e mais. Eu apresentarei um tutorial introdutório sobre C++ + Qt + KDE no Android. O principal caso de estudos será o GCompris, e será interessante mostrar um software cujo o mesmo code pode ser compilado e executado no Linux e no Android. Também apresentarei outros softwares: liquidfun, uma biblioteca C++ para simulação de fluídos (que tem uma demo muito massa no Android); VoltAir, um jogo desenvolvido em QML pelo Google para o Android (e open source!); e talvez KAlgebra, mas eu preciso compilá-lo ainda.

Sim, isso é C++ e QML no Android!

Para as sessões de hacking eu reservarei um tempo para estudar o port do Cantor para Qt5/KF5; é hora de começar esse trabalho. Ainda sob esse tópico, pretendo conversar com os amigos do KDE sobre um software para auxílio de escrita de artigos científicos… mas bem, espere por novidades no próximo ano. =) Farei também algum trabalho com os bots do KDE Brasil que funcionam nas redes sociais, corrigindo alguns bugs, etc.

Para as reuniões, espero discutir sobre as ferramentas de comunidação que temos (e minha proposta é usar o KDE todo para auxiliar no gerenciamento de nossas ações), e contribuir com a avaliação das ações do KDE Brasil no nosso país. Desde o pultimo LaKademy (2012, Porto Alegre), nós continuamos a promover o KDE nos eventos de software livre, e pudemos trazer vários contribuidores do KDE para o Brasil. Agora é hora de pensarmos em mais e novas atividades para realizarmos.

Mas LaKademy não é apenas sobre trabalho. Nós teremos algumas atividades culturais também, como o Konvescote no Garoa Hacker Club, um hackerspace em São Paulo, e algumas cervejas para bebermos na Vila Madalena. Mais importante, estou muito feliz em rever os amigos do KDE de novo (Brasil, por que tão grande?).

Estamos trabalhando para fazer um LaKademy fantástico esse ano! Fique de olho no Planet KDE e no Planet KDE Português para acompanhar mais notícias diretamente do evento!

Vejo você no LaKademy!

(ou no Akademy, mas isso é história para um outro post :) )

imgoingtoLakademytamanhopequeno