Setting up NextCloud on Digital Ocean

For some time already I was looking for a cloud solution that I could replace BigTech’s options. And a cousin have suggested me NextCloud.

I just installed it in a Digital Ocean VPS and started my tests. For the record the best references I found about the installation process so far:

Setting a second user up:


Usability tests with Selenium – Install

Usability tests are very important to single page applications (SPA), so I am gonna write some tutorials about Selenium, which is a test application suite for web apps.

First things first. Let’s see how to install Selenium in Ubuntu Linux environment. Most steps will be the same for Mac and Windows, since I will make use of PIP/python. If you use Windows, you will need to install python first. Check for that.

1- Installing Pip:

Open your Terminal, and download get-pip script with curl.

curl -O

Then run the script. Obs: If you run the script with the –user flag, pip will be installed only for your current user, in .local/bin folder.

python --user

The output will look like this:

Collecting pip
	Downloading pip-8.1.2-py2.py3-none-any.whl (1.2MB)
Collecting setuptools
	Downloading setuptools-26.1.1-py2.py3-none-any.whl (464kB)
Collecting wheel
	Downloading wheel-0.29.0-py2.py3-none-any.whl (66kB)
Installing collected packages: pip, setuptools, wheel Successfully installed pip setuptools wheel

After this installation, we need to add the .local/bin folder to the PATH environment variable. You can use the .profile or .bashrc files. I like nano, so in Terminal (Obs: in Mac I would to use .profile):

nano ~/.bashrc

At the very last line of the file I add:

export PATH=~/.local/bin:$PATH

In case you don’t know, this command will add your local folder .local/bin to the existing PATH variable. From now on, every time you type a command in the Terminal, the system will look into the binaries located in .local/bin to see if the executable file is in there to run it. And that is the case with PIP, the pip command is in this folder. Save the file. Now reload the PATH typing:

source ~/.bashrc

If everything is right type:

pip -v

If the help appears you did everything right! 🙂

2- Now we Install Selenium.

I like the –user to keep the installation files only in the user folder. The -U flag, will also update the pip directory:

pip install -U selenium --user

After installing Selenium you need to install the WebDrivers interface for your desired Browser. I use mostly Chrome for development, so my example will be to download and install Chrome driver, but the steps are the same for all other browser. At the end of the post, you will find helpful links to download the other drivers.

2.1- Get your driver interface.

For Chrome we can go to the and download the most recent release. It will be a zip package. You can unzip it, and place that executable file where ever you want in your system, as far as the destination is listed in the PATH. I added my at the same .local/bin folder where pip is also located. As the name suggests that folder is meant to hold executable files anyway.

Once you place this executable files in a right place, you are good to go!

3- Let’s test.

Run the first test in the python console! In Terminal just call:


And there try the following:

from selenium import webdriver

browser = webdriver.Chrome()

When you set the browser variable, a Chrome window will pop up. Don’t worry! It is exactly what we want! The command get() will make the Chrome window to access Google’s page!

Perfect! We did the first step. Now we can control a browser page through script, and now we can automate our usability tests.

Next posts more about how to do it.


unittest introduction









Browser elements & Operations:

Selenium Methods and Functions:


Elumina Platform

As early as 2003, a friend of mine started researching the process of online video publishing. Later at Elumina we wrote a business plan, and we introduced it to some entrepreneurs and incubators in Brazil. We kept getting the same response over and over: “It is impossible to publish videos on the Web. It will take a long time until something like this happens.”

Even with the constraints, we continued the research. It wasn’t until November 2006 that Google bought Youtube, but right after that, we started getting calls from potential investors. In February 2007, we received the first investment, hired four Web developers and began to develop the project.

At the beginning of 2008, we had the product in our hands. Our first buyer was Hospital das Clínicas – SP, which is the largest public hospital in Latin America and employs 20.000 professionals. We created the project: HCTV.

Finally, in 2012, after implementing the platform for four more clients, we closed a deal to sell it to a Brazilian advertisement holding. We then shut the activities of Elumina as a group, so each one of us could focus on long-due solo projects.


The Team


  • Dino Tudor (Web Developer)
  • Fabian Rossetti (Web Developer)
  • Fernanda Picablotto (Producer)
  • Fernando Jacinto (Web Developer)
  • Frederico Morbach (Motion Designer)
  • Humberto Ribeiro (Web Developer)
  • Joás Ferreira (Social Media Manager)
  • Jean Dias (Motion Designer)
  • Marcelo Blanc (Sound Designer)
  • Paulo Barbeiro (Web Developer)
  • Roberto Barbeiro (Business Developer)
  • Roberto Perfeito (Media Planner)
  • Sérgio Kuwahara (Motion Designer and Editor)
  • Tatiana Bastos (Copywriter and Content Editor)



At the beginning of 2008, we had the first version of our Web TV Platform in our hands. We heard that the Hospital das Clínicas was interested in creating a WebTV. It was not difficult to persuade the HC staff to hire us: at that time, we were the only ones with this technology in Brazil. Besides that, we had partnered with an experienced video producer: Luz Criação.

Project Background

Hospital das Clínicas is the largest public hospital in Latin America. To optimize the relationship with their customers, it was proposed the HCTV project. The online TV created a space to discuss, educate and inform on various medical topics, based on cutting-edge research, academic studies, disease prevention, and health promotion.

My role

As full-stack developer my role consisted in maintain the Amazon Web Services servers, the videos encoding, storage and distribution, as well the front-end development.

The biggest challenge in this project was the video processing pipeline. One of the demands we had was to create an easy flow for the content producers to publish the videos. We came up with a solution based in WordPress where the journalists and video editors could work independently ans the system could create the bridges.

A short description:  The journalist could write the text and save it, later when the video editor finished the video, the rendering file could be pointed to the appropriate post, and then after the rendering and the upload of the high definition video file, the servers performed the encoding for different resolutions, and the appropriate storage in CDN servers, as well providing the final urls to the data base. And only then the content was available for the audience.

That short process involved a lot of C++, PHP, Shell Script, AppleScript, libmpeg2, XML.

How big it was?

Over 2 million subscribers in the first two years, making the project a commercial success.

The Team

  • Dino Tudor (Web Developer)
  • Fabian Rossetti (Web Developer)
  • Fabio Ferraz (Reporter)
  • Felipe Gushiken (Lawyer)
  • Fernando Jacinto (Web Developer)
  • Frederico Morbach (Motion Designer)
  • Gustavo Pimentel (Producer)
  • Hanne Giacini (Web Designer)
  • Humberto Ribeiro (Web Developer)
  • Ingrid dos Santos (Producer)
  • Joás Ferreira (Social Media)
  • Jean Dias (Motion Designer)
  • Mariana Armentano (Copywriter)
  • Mazinha Silva (Marketing)
  • Marcelo Blanc (Sound Designer)
  • Renato Schutz (TV Editor)
  • Roberto Barbeiro (Business Developer)
  • Roberto Perfeito (Media Planner)
  • Rose Castilho (Marketing)
  • Sérgio Kuwahara (TV Editor)
  • Thays Scavacini (Reporter)
  • Walace Nascimento (Camera)


TicTaskDo is an iOS App that combines different productivity techniques such as Scrum, Pomodoro Technique, and GTD.

My role: iOS Developer

The app was first developed in Objective-C, later in other version, was totally updated to Swift language.

The main challenge was to implement time calculations, till that project I never realizes how time calculations are tricky.

The team:

  • Hans Schneider (Project Manager)
  • Tatiana Bastos (Copywriter)
  • Roberto Simões (Lead Designer)

The App: link

Tasks List in TicTaskDo app
Tasks List in TicTaskDo app.

Introduction to Artificial Intelligence course with Processing


This post contains the content of some classes I ministered in SESC Carmo/SP about creative code and artificial intelligence, based on Daniel Shiffman’s texts, Nature of Code.

The screen casts are on Youtube, but you can watch them down here. (I still need to write subtitles in English)

Class 1:

Class 2:

Class 3:

Class 4:

Class 5:

Blender – script for rendering

After a long time without any posts, here we go. 🙂

I am working with Python scripts in Blender for video/animation purposes. It is significantly different from the game engine API, but also full of possibilities.

These first ones I am sharing are simple uses of Blender API for tasks like creating objects, linear animations, editing animation curves, triggering the rendering process, and dealing with event handlers.

1- super simple

2- fun with rotation matrix

3- editing animation curves

4- event handlers, animating a ‘swarm’

In future, I will share some more.

App Español Único

Educational application as a complement to the book Español Único. An initiative of Moderna Publisher, São Paulo – Brazil. Partnership with Elumina Comunicação.

The biggest challenge in this project was to developed an automat interface builder system, where corrections and extensions could be easily accomplished. At the end, the interfaces could be built by an XML file data, where information like the kind of exercise, the questions, possible and right answers, was inserted.

Developed with Kivy, and Python
My role: Python development and interface elements.