Profile

Working professionally since 1990 as a software developer, I’ve worked in various positions and with different team sizes; from a single developer and analyst to a member of a team of 15 people from 3 different companies working on the backend system of the largest Brazilian ISP.

Self-taught in different languages — I learnt BASIC by reading my MSX manual and Pascal by reading Turbo Pascal help system — I'm always trying to learn new things, either by following examples or by reading books about different languages and other development subjects, like clean code and agile methods.

Professionally, I’m always trying to expand my knowledge to different areas, systems and languages and the related processes.

I also organize three MeetUps in the Porto Alegre region: "PyTche" for Python devs; "Porto Alegre Clean Code" for discussing clean development methods and "Rust in POA" for Rust devs.

Work Experience

Skills

 
average
good
great

Programming Languages

C
 
C++
 
Clipper
 
Clojure
 
Delphi
 
Java
 
JavaScript
 
Lua
 
Objective-C
 
PHP
 
Python
 
Rust
 
Scala
 

Libraries and Frameworks

Django
 
Flink
 
Flask
 
Spring
 
Storm
 

Version Control

Git
 
Subversion
 

Databases

Kafka
 
SQL
 
MongoDB
 

Personal Projects

WorkTime

  • Calculate the worked time and time remaining till completion of a whole day work.
  • Written in Clojure.
  • Managed to do the most basic operations.
  • Broke in a mid-refactor when changing companies (when the rules for work time changed.)

Mitter

  • Twitter Desktop Client.
  • Written in Python.
  • Designed to support multiple interfaces (currently, PyGTK and TTY/Console).
  • Designed to support multiple networks. (currently Twitter, Identica and Facebook were planned.)
  • Support ended when Twitter used OAuth in its APIs.

Sectoid

  • Blogging app.
  • Written in PHP.
  • No templating system.
  • Option to display pages in sections and subsections (hence the name).
  • Code lost when my personal HD and the server HD managed to crash almost simultaneously.

MMM - Move My Music

  • Rename files based on their MP3 tags.
  • Written in Python.
  • Read information directly from the ID3 tags inside MP3s and OGGs, renaming the files and moving to directories, if necessary (based on the renaming template).
  • Used three different ID3 tag-reading libraries, till a custom library had to be written due crashes with encodings.

TimeTracker

  • Application to track time spent in different projects.
  • Written in Python.
  • Based on TimeKeeper, a Windows application.
  • Console application.

GUP

  • Upload pictures to Web Gallery.
  • Written in Python.
  • Supports only Web Gallery 2.x or later.
  • Local cache for album information.

ConfigOpt

  • A small library to Python to manage configurations.
  • Written in Python, using OptParser and ConfigParser.
  • Used to have a single point for the application options; the options could be loaded from config files and be set in the command line at the same time.
  • Developed for Mitter, but designed to be a standalone library.

LyricsPicker

  • Web application to display song lyrics.
  • Based on a play with coworkers.
  • A single database for lyrics and artists, selected randomly.
  • Display the song lyric, but not the artist or the song name.

Lunch-O

  • A "Where We Are Going to Lunch Today?" app.
  • Started with NodeJS, but rewritten in Python with Flask and PonyORM.
  • Server only, with RESTful APIs

CV

  • This CV
  • Written with HTML and CSS.
  • Using Zurb Foundation for the style.

Downfav

  • Download favourite toots
  • Written in Rust.
  • Downloads toots (tweets) marked as favourites.
  • Also downloads any attachments.

nc-dirs

  • Create missing files in NextCloud.
  • Written in Rust.
  • Finds missing "directory" files in an Object Store required by NextCloud.

Presentations

"Fugindo para as Colunas com Python" An introduction to Python, in elements Python developers use on a normal day-to-day are presented and explained using a "Run To Hills" shuffler.

"Flask em 40 Minutos Ou Menos"

An introduction to Flask, in which a small application is developed (no database, data is stored on disk) and deployed to production in 40 minutes.

"A Gramática do VIM"

A high-level explanation, with examples, of how VIM works and how its composable commands tie together.

"Por que e Como Participar de Projetos Open Source"

An explanation of what open source projects are, the different wants to contribute to one and some tips about each way.

"Uma Não-Gentil Introdução ao Stream Processing"

An introduction to Stream Processing and related tools.

"Unit" em "Unit Tests"

A philosophical discussion about what are unit tests and how they contribute to the quality of the project.

Events and Meetups

2018

2017

2016