Gustavo Lopes, Software Developer in Lisbon, Portugal
Gustavo Lopes

Software Developer in Lisbon, Portugal

Member since May 13, 2017
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).
Gustavo is now available for hire

Portfolio

Experience

Location

Lisbon, Portugal

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.

Employment

  • 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.js, 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

Experience

  • 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.

Skills

  • Languages

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

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

    Puppet, Git, Makefile, IntelliJ IDEA, Vim Text Editor, MATLAB, Solr, Alfresco, Mathematica, AWS SDK, Docker Compose, GDB
  • Other

    PHP Extensions, SOAP, CDI, CAS, Grafana 2, Bash Scripting
  • Libraries/APIs

    Vue.js, JAX-RS, JAX-WS, JMS, jQuery
  • Platforms

    Docker, Linux, Oracle, Ubuntu
  • Storage

    PostgreSQL, Oracle DBMS

Education

  • Completed 3/4 of the credits towards a Master of Science in Biomedical Engineering
    2007 - 2010
    Instituto Superior Técnico - Lisbon, Portugal
  • Bachelor's degree in Biomedical Engineering
    2004 - 2009
    Instituto Superior Técnico - Lisbon, Portugal

To view more profiles

Join Toptal
Share it with others