jump to navigation

Kirigami (the plasma mobile components) on iOS March 6, 2016

Posted by tumaix in planetkde-tomazcanabrava.


I spend a few days of my vacations ( who needs vacations if you can spend a lovely evening banging your head on the wall trying to understand the complete nonsense that’s iOS development?) trying to understand the complete nonsens that’s iOS development. After crying my eyes out for quite a bit all of the Subsurface dependencies where build, and also the subsurface application, but I couldn’t managed to make it deploy using CMake (any cmake experts out here?), so in a instance of brief  momenty of claritude I started a qmake based project file for subsurface and it worked almost out of the box.


Screen Shot 2016-03-06 at 3.43.28 PM Screen Shot 2016-03-06 at 3.43.05 PM Screen Shot 2016-03-04 at 3.38.47 PM

now, together with the Mac, Windows, Linux, Android we have a iOS application running kirigami. ❤

It’s Season of KDE! December 7, 2015

Posted by fernandotelles in planetkde-fernandoteles, uncategorized.
Tags: ,
add a comment

Hello folks, it’s Season of KDE!

Who’s talking is Fernando. I’m a newcomer on the brazilian KDE community and in this year I’m participating of SoK – Season of KDE.
SoK is the outreach program from KDE community to encourage people who wants contribute with free software projects. For me, its a great opportunity be part of a program which evolves a great free software community like KDE. As a Computer Science student, it is like to be a intern in a great company and helps on development of quality software with global reach.
I’m working on Cantor project, a mathematics applications software for statistical and scientific analysis. My work will be to fix existing bugs on the backends used by Cantor, as well as to support and maintain these backends working on it’s current version. This work will be supervised by Filipe Saraiva who will be my mentor during SoK. Until February, month of finish of this season, I hope to contribute a lot to Cantor. Until then, i will make more posts talking about my progress.

Latinoware 2015 November 4, 2015

Posted by tumaix in planetkde-tomazcanabrava.
Tags: , , , , ,
add a comment

It was that time of the year again: People from around the world would gather around the biggest hidroeletrical plant in the world to talk, comune and create awesome software together (and ever). It was my fourth time there leaving behind two years of abssense from talks and events in Brazil. This event is huge, massive, around 4000 students, profissionals, hackers, activists, promoters – Currently being the Biggest one in Latin America and since it’s a huge event, a huge project should be there and so we where, with one of the most visited booths.

Having tons of notebooks with KDE installed we let newcomers test our software (and we received great feedback, specially from university professors that didn’t know that KDE had applications to help development or teaching aids), Aleix Pol could be specially proud since one of the most talked apps among the teachers was KAlgebra. Good Work Apol. 😀


Having Six talks on the event, whe managed to talk about beginner stuff to advanced ones without leaving anyone behind.
Our talks this year
– KDE Sysadmin: You can help even if you don’t progam (speaker Gomex)
– KDE and Linus: Living Dangerously – my adventures in Programming (speaker Tomaz Canabrava)
– KDE: First Steps to Contribute (speaker Icaro (Igor) Jerry Santana)
– KDE Plasma Mobile (speaker Helio Castro)
– KDE Plasma 5: Full of Resources (speaker Henrique Sant’Anna)
– KDE: The structure behind it (speaker Helio Castro)

We got a really full day there, and it was AWESOME.

now, I don’t know if you fellow reader realized but I wrote ‘Helio Castro’ twice, and this is something since this pesky ❤ kde hacker had disappeared from events for quite a while, much much more time than I did. and he’s kwown as ‘Father KDE’ in Brazil, and also the KDE Brazil contact on the kde.org page… But why I’m saying all this about Helio? Well…  Besides being a really good friend (and with no sense of humor) he is leaving the mother land, going to the cold places in Europe… You will be missed here buddy. But I’ll send you my dancing pictures as christmas gift every year. ❤

Since me and Sandro Andrade re-started the KDE Community in brazil in 2009, 2010 we managed to get huge contributors (Me, Wagner Reck, Lamarque, Sandro, and a ton more ) and we are currently a very very healthy project in brazil, but we also have lots of brazilian contributors that do not show their existence, please, be vocal of what you do, join the brazilian kde community if you help kde and are from brazil, as united we can do anything.

Even play live on a software event.

Forro internacional de software livre

Forro internacional de software livre

How to (not) Activate or Deactivate Widgets (or any other thing) October 29, 2015

Posted by tumaix in planetkde-tomazcanabrava.

Looking at the source code of a few programs while I was hunting for things to do I found similar patterns to this one:

	QAction *action = new QAction("Action Name Here", this);
	connect(action, &QAction::triggered, this, &MainWindow::viewActionTriggered);
	actionList << action; 
        for(QAction *action : actionList) { 
             mapWidgetAction[action->text()] = createWidget(action->text());
	MainWindow::viewActionTriggered() {
		QSettings settings;
		QAction *action = qobject_cast<QAction*>(sender());
		if (action->text() == "Widget 1") {

		} else if (action->text() == "Widget 2") {
		} else if (action->text() == "Widget 3") {
		s.setValue("visibleWidget", action->text());

Now, looking at this particular code it’s simple to see what could be wrong: the Widget Title could be translated to another language and the comparissons would fail, or the text of the widget could have an ‘&’ to create an accelerator and the comparisson would also fail, you could change your language and when opening the application it could also fail, there are actually tons of possible errors with that approach.

One of the possibilities is to use the data() member of QAction to store a untranslated string, and use that as comparator:

	QAction *action = new QAction("Action Name Here", this);
	action->setData("Widget 1");
	connect(action, &QAction::triggered, this, &MainWindow::viewActionTriggered);
	actionList << action; 
        for(QAction *action : actionList) { 
           mapWidgetAction[action->text()] = createWidget(action->text());

	MainWindow::viewActionTriggered() {
		QSettings settings;
		QAction *action = qobject_cast<QAction*>(sender());
		if (action->data().toString() == "Widget 1") {

		} else if (action->data().toString() == "Widget 2") {
		} else if (action->data().toString() == "Widget 3") {
		s.setValue("visibleWidget", action->data().toString());

But that second approach has also tons of flaws: I’m not caching the QString returned, I’m returning a QString while I could have used a QByteArray(much faster for non-utf8 stuff), I could have used something that doesn’t use multiple cpu-cycles to tell me if it’s true or not. Now, third try:

	enum WidgetTypes { WIDGET_1, WIDGET_2... , WIDGET_X };
	QAction *action = new QAction("Action Name Here", this);
	action->setData( WIDGET_1 );
	connect(action, &QAction::triggered, this, &MainWindow::viewActionTriggered);
	actionList << action; 
        for(QAction *action : actionList) { 
             mapWidgetAction[action->text()] = createWidget(action->text());

	MainWindow::viewActionTriggered() {
		QSettings settings;
		QAction *action = qobject_cast<QAction*>(sender());
		switch(action->data().toInt()) {
		case WIDGET_1 : widget1->show(); break;
		case WIDGET_2 : widget2->show(); break;
		case WIDGET_X : widget3->show(); break;

		s.setValue("visibleWidget", action->data().toInt());

By changing the key of the Widget to an enum I’m having the following benefits

  1. Not Comparing Strings, but comparing integers (much faster)
  2. Not having issues with collation
  3. simplifying my code (switch vs if’s with string comparissons)
  4. behaving correctly even if I change the system’s language
  5. now, I know that this is something that seems easy enougth to catch, but since I loocked this in three different softwares already this week I think it’s worth saying.


Now, if there’s anything wrong in what I said, please correct me as we can only improve by learning something new. 🙂

Subsurface 4.5(.1) Released October 28, 2015

Posted by tumaix in planetkde-tomazcanabrava.
add a comment

Subsurface 4.5 (and Subsurface 4.5.1)  just got released



This was one mounstrous huge amount of work: Three successfull Summer of Code projects got merged onto subsurface code, a *ton* of work from quite a few hackers that had nothing better to do than to create an awesome dive log.


We managed to get a lot of wishes and bugfixes on this version:

  • Subsurface now uses Grantlee to print the dive templates
  • Git for remote file storage
  • Automatic Geo Coordinates Name Retrieval for Dive Sites
  • (Experimental) Android UI
  • *TONS* of bugfixes and code cleanups
  • Dive Computer Management from within subsurface

Since the Move from Gtk to Qt almost two and a half years ago Subsurface has gained a boost in productivity that’s very, *VERY* visible:

2109 commits by git’s counting, That’s the most we ever had between two major releases (for comparison, the switch from Gtk to Qt (3.1->4.0) was only 1643 commits.

Let me Quote Dirk Hohndel,

“What’s interesting is how many new people are in this list. GSoC students, but also quite a few others who haven’t contributed before. 35 people sent at least one commit, 20 sent more than 10 commits. For comparison, from the start of Subsurface until the last Gtk release (3.1.1) only 15 different developers had 10 or more commits.”


Here is the Detailed commit list for Subsurface 4.5:

Dirk Hohndel, Tomaz Canabrava, Miika Turkia, Gehad Elrobey, Robert Helling, Anton Lundin, Grace Karanja, Lubomir I. Ivanov, Rick Walsh, Claudiu Olteanu, Salvador Cuñat, Guido Lerch, Willem Ferguson, Joakim Bygdell, Jan Darowski, Linus Torvalds, Guillaume GARDET, Sergey Starosek, Marcos CARDINOT, Sander Kleijwegt, Patrick Valsecchi, Sebastian Kügler, Gaetan Bisson, Tim Wootton,  Henrik Brautaset Aronsen, Thiago Macieira, Venkatesh Shukla, Giorgio Marzano, Martin Long, Paul-Erik Törrönen, pestophagous, Jan Mulder, Pedro Neves, Torstein Husebø, Yousef Hamza

A huge Thank You ❤ You rock.
You guys can know more about subsurface in it’s official homepage: http://www.subsurface-divelog.org

LaKademy 2015 – here we go! May 19, 2015

Posted by Sandro Andrade in planetkde-sandroandrade.
add a comment

ArteLakademy2015Hi there,

Everything is ready for the 3rd edition of LaKademy – The KDE Latin America Summit \o/. The meeting will take place from 03-06 June, 2015, in Salvador, north-eastern Brazil. Besides of being the city where I live in :), it was the venue of the 1st Akademy-BR in 2010, when we began some efforts to create and then expand the culture of KDE hacking sprints in Brazil and, after, in Latin-America. Hence, we are now somewhat with that cosy feeling of returning to the grandma’s house for a portion of home-made cookies :). For this year, we decided on having only hacking sessions and quick meetings, rather than talks and/or introductory short-courses. We want to leverage contributions and have more things done during these four nice days of LaKademy 2015. We aren’t, by any means, alien to newcomers, though. The LaKademy 2015’s Call for Participation was already announced and everyone interested in knowing more about KDE contributions may join us at the hacking sessions, ask questions, get involved, and have fun.

For these four days, seven KDE contributors (and, hopefully, some visitors) will meet at the Information Technology Offices of the Federal University of Bahia. We are still settling the details of the program, but I would like to revisit some stuff I’ve done for KDevelop in the past, Filipe should keep working in Cantor enhancements, Lamarque in Plasma Network Manager, and Aracele in translation and promo stuff. As usual, we have also a promo meeting involving all participants where we set the plans for conquering the world with KDE :).

Keep tuned for upcoming news about LaKademy 2015 ! See you …

KDE Brasil – quem somos, o que fazemos e por quê ? May 6, 2015

Posted by Sandro Andrade in qla-sandroandrade.
add a comment

Pode parecer um tanto quanto sem sentido – para nossos amigos e familiares – porque nos envolvemos de forma tão intensa em uma atividade voluntária de colaboração em projetos de software livre. Os motivos são diversos e satisfatoriamente investigados em alguns projetos de pesquisa [1, 2]. Como qualquer trabalho voluntário, contribuir com software livre nos expõe a experiências, sensações e recompensas que nos tornam mais maduros, mais humanos e mais conscientes do nosso papel na sociedade e na formação do mundo para as próximas gerações.

Pelo menos para nós, profissionais da área de Computação, a primeira motivação – geralmente mais rústica e imediatista – é uma só: acesso a tecnologia moderna e de qualidade. Com o tempo, passamos a experimentar, entender e divulgar outros aspectos: compartilhamento livre do conhecimento, valorização de pessoas acima da tecnologia, sensação de pertencimento, amadurecimento pessoal e profissional, vivência de outras culturas, etc.

Por outro lado, pode ser difícil explicar porque – dentre tantos projetos excelentes de software livre sendo conduzidos no mundo – um ou outro consegue “fisgar” o seu coração. Meu primeiro contato com o KDE foi nos idos de 1999-2000, ainda na versão 2, provavelmente com a distribuição Linux Conectiva, se não me falha a memória. Mais ou menos na mesma época, descobri o Qt e finalmente pude fazer aplicações gráficas “lindas de morrer” sem abrir mão da minha linguagem de programação preferida: o C++.

Mas foi somente a partir de 2008 que eu e Tomaz Canabrava estreitamos os laços com a pequena comunidade brasileira do KDE à epoca e, mais tarde, com a comunidade internacional. Mas isso é outra história, daria um livro inteiro talvez :). Neste pequeno texto, gostaria de focar nos motivos pelos quais nos tornamos apaixonados pelo KDE. Citarei alguns, mas gostaria de começar logo pelo mais importante de todos.

Pessoas !!! Sim, isso mesmo, pessoas. Que estranho primeiro motivo, principalmente para nós hackers – conhecidos geralmente por um alto potencial técnico e baixas habilidades sociais :). Comunidades de software livre já consolidadas, como o KDE e outras muitas, reconhecem que sem elas nada mais existiria nem faria sentido. E fazemos muita coisa para garantir um ambiente próspero e respeitoso, mas também com abertura para discussão de opiniões divergentes e reconhecimento da meritocracia obtida, por colaboradores, em anos de trabalho duro. Código de conduta, community working groups, discussões sempre públicas, o KDE Manifesto, são alguns dos instrumentos utilizados para a manutenção da nossa boa “atmosfera”.

Um dos meus “mantras” em sala de aula: “os melhores profissionais da Computação estão em projetos de software livre”. Se você for um aspirante a chef de cozinha, é como se você tivesse à disposição todas as receitas dos maiores chefs do mundo. E mais, você poderia discutir diretamente com ele ou contribuir para a elaboração de novas receitas. Você poderia trocar idéias com chefs de todo o mundo: India, Japão, EUA, Inglaterra … Não seria maravilhoso ? 🙂 No KDE, você encontra um grupo vibrante de pessoas, felizes em desenvolver software de qualidade, de forma aberta, acessível a qualquer pessoa, de todo o mundo. E todos podem participar, independente da área de formação. Muitos membros do KDE são profissionais da Computação, mas outros são médicos, administradores, historiadores, economistas, designers, filósofos, … . Nós encontramos nosso lugar, é o tal do “sense of belonging” :).

Segundo, seus limites técnicos e interpessoais serão continuamente ampliados. Qual sua referência profissional atualmente ? Quais suas metas e desejos ? Com software livre, nosso limite passar a ser O MUNDO. Assuma seu chapéu de “humilde aprendiz” e prepare-se para experimentar um salto técnico e interpessoal bastante considerável na sua carreira. Exponha-se, tenha seu trabalho revisado por gurus com décadas de experiência. Especialize-se e contribua para tornar aquele projeto ainda melhor. Mais pra frente, ajude os novatos e/ou seja contratado por uma excelente empresa ligada a software livre.

Terceiro, nós desenvolvemos soluções reais para problemas reais, presentes em todo o mundo, beneficiando milhões de usuários e contribuindo para a formação de milhares de jovens profissionais. Existe algo mais gratificante do que ver o fruto das suas contribuições tornando melhor a vida de pessoas em todo o mundo ? Nossas aplicações são utilizadas no ensino infantil em escolas públicas, em infocentros públicos de acesso à Internet, em projetos de instituições de pesquisa e em projetos de educação artística digital, só para citar alguns.

Gostou ? 🙂 Se quiser ter uns hackers empolgados como amigos e ajudar nesse tão gratificante “trabalho”, junte-se a nós. No mínimo, você vai dar umas boas risadas :).

Aproveite a faça uma doação para a nossa campanha de arrecadação de fundos para o LaKademy 2015 – 3o. Encontro Latino-Americano dos Colaboradores do KDE. O LaKademy 2015 será realizado de 3 a 6 de junho, em Salvador-BA. O LaKademy é um dos momentos onde nos encontramos presencialmente para contribuir e discutir as ações que realizaremos para o KDE no Brasil e na América Latina.

[1] The Social Structure of Open Source Software Development Teams. Crowston & Howison. OASIS. 2003.

[2] Carrots and Rainbows: Motivation and Social Practice in Open Source Software Development. Krogh. 2012.

Transcrição de “Chorei num Samba” (Bruna Moraes e Ítalo Lencker) March 15, 2015

Posted by Sandro Andrade in uncategorized.
add a comment

Após alguns anos na labuta escrevendo tese de doutorado, artigos, revisões, etc, nada melhor que investir algum tempo em “outras escrituras”. Sempre tive um pé forte na música (ou seria melhor uma mão, já que não toco bateria ? 🙂 ) e realizar transcrições é um dos melhores exercícios para estudar harmonia e improvisação. Encontre abaixo a transcrição completa da música “Chorei num Samba”, uma delícia de canção interpretada pela maravilhosa Bruna Moraes. Aos amigos músicos profissionais, não reparem as pedradas, foi fruto de uma única noite alucinada de trabalho :). Criada com o software livre Lilypond !!


Baixar o pdf

Vídeo de Chorei num Samba no Som Brasil:

Major Release December 29, 2014

Posted by Sandro Andrade in planetkde-sandroandrade.

It’s been awhile since my last smoke signals here in Planet KDE. I’d been quiet, a bit outdated on KDE things, focusing some efforts and calming down my heart for being so long away from this amazing community. What I’ve been doing, you ask ? Well, after six long tiring years, I’ve finished my Ph.D. in Computer Science last week. The defense was quite smooth and it’s rewarding to know that you did your best and left the game glad about the work you’ve done.

Doing a Ph.D. is experienced differently by different people. I’ve learned to exercise my patience, to be more pragmatic about my goals, to cope with my anxiety … I’ve survived and got away several times from The Valley of Shit :), met some deplorable Ph.D’s and another inspiring ones.


Although I’d been using Qt and KDE since 1999-2000, it was only in 2008 when I became more seriously involved in KDE. I was already in academia and that gives you the chance to meet some insane 😉 students like Tomaz Canabrava.

Since then, we had a lot of things to be proud of: we made nice friends around the world, we strengthened local KDE communities in Brazil, we’ve been representing KDE for seven years in a row in major FLOSS Brazilian conferences. There were countless talks, short courses, hunting for new contributors, the first Akademy-BR and two LaKademies. That makes me happy but I’m, above all, a programmer. I’ve been missing the commits I haven’t done, the features I haven’t implemented and the bugs I haven’t fixed. I joined KDE already chased by that voice: “you have a Ph.D. to complete …” and it’s quite easy to let your passions dominate the priorities of your tasks 🙂 I’m not saying that I hated my Ph.D. research topic. Not at all. But KDE took me like a burst of passion 🙂 I’m glad I did not give up of my academic carrier and this “major release” makes me free to experience being part of KDE in a different way. So, the bottom line is: you can count on me for KDE in 2015 🙂 I just need some couple weeks for getting some rest.

For those of you who are wondering about what I’ve done in my research, it’s mostly related to automating the design of architectures for a sort of software-intensive systems named self-adaptive systems (those which regulate themselves in response to changes in the operational environment and in the software itself). We focused on a particular class of self-adaptive systems that adopts control theory as its underlying self-managing mechanism. We proposed a generic meta-modeling language (named DuSE) for systematically capturing the prominent design dimension in such a domain and applied techniques from multi-objective optimization field to reveal those candidate architectures that minimize/maximize some quality attributes of interest. We’ve been using our approach to generate effective self-managing architectures for self-adaptive web servers and elastic cluster platforms for MapReduce applications. Further information may be found here and here.

Two development outcomes of my research are directly related to Qt and KDE: the QtModeling and QtOptimization Qt5 modules and the DuSE-MT tool. QtModeling provides the basic features for handling software models and serializing them by using the XMI format. It also implements the metamodels of MOF, UML, and DuSE modeling languages. QtOptimization is an application framework for solving multi-objective optimization problems. So far, only the NSGA-II evolutionary algorithm is available, along with a bunch of common operators for selection, crossover, and mutation. DuSE-MT is a tool that integrates the features provided by QtModeling and QtOptimization in order to evaluate the approach I proposed in my Ph.D. thesis. Its architecture, however, was conceived to support the seamless integration of new features. Now, the plan is make the last polishments to have a first release of such modules. After that, maybe you can expect some model-related new features in Qt Creator and KDevelop 🙂 or an even more shining Umbrello :).

Well, that’s all for now, but just for a while 😉

See ya,

Announcing Subsurface 4.3 December 23, 2014

Posted by tumaix in planetkde-tomazcanabrava.
add a comment

The Subsurface development team proudly announces release 4.3 of Subsurface, an open source divelog and dive planning program for Windows, Mac and Linux.

Some of the changes since Subsurface 4.2

Subsurface now supports flexible filtering of the dive list. When the filter is opened,one can specify a combination of different criteria like tags, people who were on the dive, dive site, suit, etc. While filtering one can see how many dives
match any of the criteria, and how many dives match the combination of the selected criteria (see the panel below the main menu in the image below)

Subsurface main screen with filters

When editing a dive, one can now copy information about a dive and paste it into one or more other dives. This makes it easy to add the same equipment, buddies, tags or other aspects of a dive into a group of dives with similar characteristics.

The dive profile now offers an easy to understand tissue saturation graph that shows tissue saturation at any point during the dive. (See image below)

Cylinder bars and tissue saturation graph

In the dive profile one can turn on an improved visualization of the gas combinations used during a dive (aka “tank bar” with different gases represented by different colours, see image above).

Owners of the Heinrichs & Weikamp OSTC 2 and 3 as well as dive computers in the popular Suunto Vyper family of dive computers can configure the settings of their dive computers using Subsurface.

For a number of dive computers Subsurface now downloads additional data and shows them in a new tab on the screen. This includes (depending on the dive computer) information like battery levels, no fly times, Gradient Factors used during the dive, etc. This feature is enabled in all official Subsurface binaries and includes the Uemis Zurich SDA. When building from source this requires a custom version of libdivecomputer (as explained in the INSTALL file).

The dive planner now offers the ability to re-plan dives and to create duplicate dive plans in order to plan multiple scenarios.

We added support for several new dive computers including the Suunto EON Steel, Aeris A300 CD, and Aeris F11.

Subsurface can now import dive logs from Liquivision and Cochran software as well as the new Suunto DM5.

We made many improvements for UDDF and CSV import, UDDF export now complies with the latest version of the standard.

Many issues with the HTML export were addressed.

Initial support for closed circuit rebreathers (CCR) and pSCR was added. Dive logs from the Poseidon MkVI CCR can be imported. Visualization of dive logs as well as dive planning should work — but this feature is fairly early in its development and we assume that there may be a few bugs and mis-features hidden in this area. Here is a dive profile for a Poseidon MkVI:

CCR sample profile

Other notable improvements

  • Import of manually logged dives (e.g., from an existing paper logbook) is now much better documented in the user manual. Instead of having to individually enter each dive with the graphical profile editor users can add all their dives in a spreadsheet and import the data from there into Subsurface in one single operation.
  • Many other small improvements to the planner
  • Many small UI changes for better use on small displays (tighter columns and column headers on the dive list, the toolbox of icons no longer
    forces a minimum height of the profile, etc)
  • Improvements on HiDPI displays
  • We fixed an annoying bug where when starting to edit a dive the pop-up with completions would cover the edit line (this usually happened when editing tags)
  • For the (rather unusual) dive computers that send a heading event in every sample we automatically declutter the profile display now
  • The Windows installer is smarter: the 64bit installer refuses to install its binaries on a 32bit OS and conversely the installer warns you when installing 32bit binaries on a 64bit OS
  • Better synchronization with divelogs.de, including support for multiple tanks

Known bugs

  • There appears to be a bug in Qt: when changing the password needed authenticate with a proxy, Subsurface will not use the new password until after a restart