Gustavo Lopes, Developer in Lisbon, Portugal
Gustavo is available for hire
Hire Gustavo

Gustavo Lopes

Verified Expert  in Engineering

Software Developer

Lisbon, Portugal

Toptal member since July 4, 2017

Bio

Gustavo is a software developer with DevOps experience which consisted mainly building Puppet modules. He's worked mostly with Java middleware and as a full-stack developer in Rails and Grails projects (Spring MVN and Symfony before). He also contributed to the PHP runtime for ~3 years (C).

Portfolio

Chic by Choice S.A.
Vue, Ruby on Rails (RoR), Ruby
The Hyve BV
Docker, PostgreSQL, Oracle, Spring Batch, Grails, Groovy, Puppet
IceMobile Agency BV
JMS, JAX-WS, Spring

Experience

Availability

Part-time

Preferred Environment

Vim Text Editor, IntelliJ IDEA, Linux

The most amazing...

...think I worked on was adding multicast and recvmsg() and sendmsg() support to the PHP sockets extension.

Work Experience

Software Developer

2016 - PRESENT
Chic by Choice S.A.
  • Developed and maintained a Ruby-on-Rails application for renting out dresses; some pages use Vue.js.
  • Worked on several integrations (e.g. DPD, DHL, Typeform).
Technologies: Vue, Ruby on Rails (RoR), Ruby

Software Developer

2013 - 2016
The Hyve BV
  • Led the incremental redesign of an open source Grails application (tranSMART) with new/redesigned modules actually being modular and tested (with coverage of >85%). Participated in several contracted improvement projects.
  • Built most of the tooling required to make the distributed development of the application practical.
  • Led the development of new application using Spring Batch to load data into the application's database.
  • Developed the vast majority of the company infrastructure; starting when it was practically nonexistent and the company had 3 full-time employees to around 60 very diverse servers, many of which were frequently repurposed, as the number of short-lived projects in the company was high.
  • Configured the EC2 infrastructure through the Ruby AWS SDK.
  • Created Bash scripts for the OS installation from a rented server's recovery OS (Hetzner) or /configuration of puppet for an EC2 instance.
  • Managed the Puppet master.
  • Developed dozens of Puppet modules.
  • Set up Sensu for monitoring and metric collection (metrics sent to and visualized with Grafana) and an ELK (Elasticsearch, Logstash and Kibana) stack for centralized logging.
  • Developed a Lita-based bot for ChatOps.
  • Packaged many applications for Ubuntu and CentOS.
  • Set up an Atlassian applications (JIRA, Confluence, Bamboo, Crowd) and configured a single sign-on through self-developed Puppet modules.
  • Set up the Nexus OSS through a Puppet module; also integrated it with Crowd.
Technologies: Docker, PostgreSQL, Oracle, Spring Batch, Grails, Groovy, Puppet

Software Developer

2012 - 2013
IceMobile Agency BV
  • Developed Spring-based Java applications; implemented the interfacing with the databases (MySQL and Oracle) and JAX-WS web services to ultimately build JSON responses consumed by the mobile applications.
  • Refactored the main in-house middleware application to modular, loosely coupled modules.
  • Implemented a migration to Maven (with aggregation, POM inheritance and dependency management through a BOM).
  • Made changes to a Spring-based infrastructure using Child application contexts and easily overridable default configuration, and many other more domain specific refactorings. Ultimately, this allowed a lot of reuse in the development of a subsequent application.
  • Set up and wrote unit and integration tests with JUnit, Mockito, Hamcrest, and Arquillian—running as part of the Maven lifecycle.
  • Set up Phabricator for code-auditing within the team.
Technologies: JMS, JAX-WS, Spring

Software Developer

2012 - 2012
SafeLinQ Development BV
  • Developed a PHP application for managing the patrols for security firms.
  • Created an event loop daemon in C for handling event timeouts and other events.
  • Maintained the back-end of a C application that handled the communication with devices.
  • Maintained legacy PHP applications for XML and web interfaces that configured the devices. It helped with viewing and handling notifications sent from the devices, and the management of several categories of users from the device provider administrator to the device user.
Technologies: C, PHP

Software Developer

2011 - 2011
Gatewit
  • Created RESTful service for cryptography services (XML-DSig, XAdES, timestamping, and OCSP with BouncyCastle).
  • Set up Alfresco and the development of non-trivial extensions for internal use.
  • Set up JASIG CAS—developing an extension for authentication with the JESPA library (single sign-on with ActiveDirectory integration); CASificiation of the PHP applications and of Alfresco (including authentication of back-end applications with proxy tickets).
  • Developed a procurement application which managed the catalogs, purchase requests (and their approval), supplier contracts and orders; also handled the integration with accounting solution. Used PHP and Symfony.
Technologies: PHP, Java, CAS, Symfony 1, CDI, JAX-RS, Alfresco

Software Developer

2009 - 2009
Media Capital Multimedia, S.A.
  • Built Java services which provided data to the websites.
  • Developed search service for news articles and multimedia (Java services backed by Solr).
  • Rewrote the mashup application used in the generation of the websites (collection of data from several services and application of transformations).
  • Built a Hudson plugin to improve the development process.
  • Maintained legacy PHP applications.
Technologies: Oracle, PHP, SOAP, Spring Integration, Spring MVC, Java, Solr

Researcher

2008 - 2008
Instituto de Sistemas e Robótica, Instituto Superior Técnico
  • Built a MATLAB C extension which exposed the internal structure of the base-calling software to the MATLAB user space.
  • Investigated the base-calling techniques in the context of DNA sequencing.
Technologies: MATLAB, C

PHP Runtime Contributions

https://github.com/php/php-src/commits?author=cataphract
I've contributed to the PHP runtime from 2010-2013.

Besides implementing many bug fixes across several subsystems, I also made major contributions to the Intl (ICU wrapper), sockets, and standard extensions (mainly text functions and streams).

Package Recipes for Ubuntu/CentOS

https://github.com/cataphract/package_recipes
I've written several Makefile-based recipes for building Ubuntu and CentOS packages (via FPM). There is also an infrastructure to build the packages in Docker containers so as to attain better reproducibility.

Puppet Type for Editing YAML Files

https://github.com/cataphract/puppet-yaml_settings
A Puppet module that introduces a Native type (yaml_settings) that allows for the modification of YAML files.

It is similar to reidmv/YAML file with the following improvements:
- Forward slashes are allowed in key names.
- Portions of the key can be symbols
- Making it possible to use a separate file as a template.

Puppet Module for Installing I2B2

https://github.com/thehyve/puppet-i2b2
This is a more complex Puppet module for installing the
informatics for the Integrating Biology and the Bedside (I2B2) software.

Spring Batch-Based Project for Loading Data from Text Files into a RDBMS

https://github.com/thehyve/transmart-batch
I started and wrote most of a Spring Batch-based application that loads data from text files, transforms the data through several steps, and inserts it into Oracle or PostgreSQL.

The application contains many functional tests. In order to test the application against Oracle, I also created a Node.js application that launches a private Oracle Docker instance on request. The code for that is available at https://github.com/cataphract/package_recipes/blob/master/ubuntu_packages/oracle-launcher/main.js.

PHP/PECL Markdown Extension

https://github.com/cataphract/php-discount
A PHP extension that processes the Markdown language with a bundled discount library.

Puppet Type for Deploying Artifacts from Bamboo

https://github.com/cataphract/puppet-bamboo_artifact
A simple Native-type that downloads an artifact from Bamboo. It queries the Bamboo API to make sure that the build was successful.

Stack Overflow Contributions

https://stackoverflow.com/search?tab=newest&q=user%3a127724
My answers (and some questions) on Stack Overflow.

Documentation of Object Internals for PHP 5.x

https://wiki.php.net/internals/engine/objects
A guide to implementing internal classes in PHP 5.x, included in the PHP wiki.
2007 - 2010

Completed 3/4 of the Credits towards a Master of Science in Biomedical Engineering

Instituto Superior Técnico - Lisbon, Portugal

2004 - 2009

Bachelor's Degree in Biomedical Engineering

Instituto Superior Técnico - Lisbon, Portugal

Libraries/APIs

Vue, JAX-RS, JAX-WS, JMS, jQuery

Tools

Puppet, Git, Makefile, IntelliJ IDEA, Vim Text Editor, MATLAB, Solr, Alfresco, Mathematica, AWS SDK, Docker Compose, GNU Debugger (GDB)

Languages

Groovy, PHP 5, Ruby, C++, PHP, HTML, CSS, CSS3, C, ECMAScript (ES6), Java, Bash Script, SAML, SCSS

Frameworks

Spring Batch, Grails, Ruby on Rails (RoR), Spring 4, Spring, Spring Boot, Spring Integration, Symfony 1, OAuth 2, Spring MVC

Platforms

Docker, Linux, Oracle, Ubuntu

Storage

PostgreSQL, Oracle RDBMS

Other

PHP Extensions, SOAP, CDI, CAS, Grafana 2

Collaboration That Works

How to Work with Toptal

Toptal matches you directly with global industry experts from our network in hours—not weeks or months.

1

Share your needs

Discuss your requirements and refine your scope in a call with a Toptal domain expert.
2

Choose your talent

Get a short list of expertly matched talent within 24 hours to review, interview, and choose from.
3

Start your risk-free talent trial

Work with your chosen talent on a trial basis for up to two weeks. Pay only if you decide to hire them.

Top talent is in high demand.

Start hiring