Innovation and Open Source

we innovate with Open Source to create
awesome applications for you


TupiLabs Report: 07 Sep, 13 Sep

This is a weekly report that we publish every week, with news from 07-Sep to 13-Sep.

We are working for you

Have a great week! :-)

TupiLabs Report: 31 Aug, 06 Sep

This is a weekly report that we publish every week, with news from 31-Aug to 06-Sep.

We are working for you

Have a great week! :-)

TupiLabs Report: 24 Aug, 30 Aug

This is a weekly report that we publish every week, with news from 24-Aug to 30-Aug.

We are working for you

Have a great week! :-)

More News


DMC Latam 2014 dia 2 (pt-BR)

O segundo dia do DMC Latam 2014 começou com um dos dias mais frios em São Paulo. Mas dentro do Hotel o clima estava ótimo, e ainda tinha bastante café preto e bem quente. Percebi que o pessoal estava mais a vontade para trocar cartões e puxar assunto na área livre.

Sala Principal
Sala Principal
( Read more ... )

DMC Latam 2014 dia 1 (pt-BR)

O DMC Latam 2014 começou nesta quinta-feira, 13/08. O evento está sendo realizado no mesmo local do ano passado, na Rua Martins Fontes, 330, no Hotel Braston. Este ano consegui chegar cedo e peguei o café da manhã.

DMC Latam Coffee Break
O Café da Manhã do DMC Latam 2014

A abertura deste ano teve um narrador, daqueles com voz de filmes, explicando a agenda do evento e fazendo os agradecimentos aos patrocinadores. Seguido pelo Rossano falando sobre realizações da DAMA desde o ano passado e sobre as palestras do dia.

O DMC Latam deste ano distribuiu um brinde na entrada para todos os participantes e também um exemplar do livro “A função do Chief Data Officer - Reorganizando os cargos executivos para alavancar o seu mais valioso ativo”.

DMC Latam Coffee Break
Sala principal
( Read more ... )

On using Laravel with the repository pattern and Eloquent

Separation of concerns is a design principle, and states that each part of a software addresses a separate concern. Different patterns and abstractions can be used for that like MVC, DAOs and repositories.

Repositories help in the abstraction of the data layer. It provides an interface for retrieving data, independent of the implementation, acting like a collection of objects.

Fig1. - Repositories

In Nestor-QA I had implemented repositories using some Java code I had in my mind, without paying too much attention to the abstraction layers. Two weeks ago, while working on some complicated issue in Nestor I noticed that the repositories in Nestor had been implemented using the Eloquent classes.

Eloquent is a library used in Laravel for data abstraction. It provides access to databases like MySQL and SQLite, kind like DAOs (and sometimes like repositories too). However, for Nestor being a test management tool, we are trying to be platform and framework independent. Here’s the old repository code in action:

class DbProjectRepository implements ProjectRepository {
    public function all()
        return Project::where('project_statuses_id', '<>', 2)->get();
    // ...

As you can see, we were returning the result of the get() method from Eloquent. Another big mistake was using these objects in the views. In the end we were not only using data layer elements in the wrong place, but we also had many queries to render an UI.

abstract class DbBaseRepository extends BaseRepository {
    protected $model;
    public function __construct($model)
        $this->model = $model;
    public function all()
        return $this->model->all()->toArray();
    // ...

After searching for a while, I found a nice example of a class design for repositories, where the return type is always an array. In the views you will have the array and keys, and in case someday you decide moving to another framework, you can leave the views unchanged (hopefully :-). Neat, no?

Ahn ahn

Happy hacking

More Posts


Add tags to Jenkins builds or export specific builds

This idea is from @abayer, from these following tweets:

Tweet 1


Tweet 2

We could simply add tags to builds, and then create some place that would list the builds (or other things) that are tagged appropriately. Or we could add a way to define whicih builds should be exported to some tool, and then via the plug-in API maybe, post to this external tool.

Add support to Promoted Builds on Build Pipeline Plug-in


Jenkins Build Pipeline Plug-in, by Centrum Systems (Australia), is an excellent plug-in, used by many users (over 6000 downloads according to last report).

However, it does not work well with the Jenkins Promoted Builds Plug-in, another great plug-in (over 4100 downloads last month).

It means that users are not able to create pipelines based on promotion (promoted pipelines?). This contribution would be awesome, useful and help a lot of users (maybe over 10000? :-)

Enhance MySQL management in Stacks (University of Oregon)


Stacks processes RAD DNA sequences and produces output, that is displayed on the Web with a bundled PHP+MySQL application. This application is quite useful, especially since it helps developers to analyze large amounts of data.


One limitation though, is that some management tasks may need manual execution of SQL’s in the database. Someone could add few scripts or new features to the Web interface (like a management section?). This could help researchers on their research.

More Ideas