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

Datadog
C, C++, PHP, Java, Rust, Java Native Interface (JNI), Gradle, PHP Extensions
Sqreen Inc
C, Zend Engine, Git, Linux, Java, Ruby, V8, Python, Bytecode, Instrumentation...
Chic by Choice S.A.
Vue, Ruby on Rails (RoR), Ruby, PostgreSQL

Experience

  • Java - 14 years
  • C - 12 years
  • PHP Extensions - 7 years
  • C++ - 5 years
  • Ruby - 5 years
  • Spring Boot - 3 years
  • Puppet - 3 years
  • Rust - 1 year

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

Senior Software Engineer

2021 - PRESENT
Datadog
  • Developed in-app Web Application Firewall (WAF) integrations for Java, involving bytecode instrumentation and JNI wrapping of C++ component.
  • Built WAF support in the nginx module.
  • Implemented call-site instrumentation-based interactive application security testing (IAST) for Java.
  • Integrated WAF in PHP and set up its integration tests with Java Testcontainers.
  • Enhanced APM integrations in PHP (e.g., Symfony, process execution) and Java (many HTTP servers and underlying libraries like Akka or Netty).
Technologies: C, C++, PHP, Java, Rust, Java Native Interface (JNI), Gradle, PHP Extensions

Software Engineer

2017 - 2021
Sqreen Inc
  • Worked on runtime application self-protection (RASP) product. The product needed to correlate user-supplied data with data passed to intercepted calls to sensitive functions and generate events/alter the application control flow.
  • Built most of the PHP extension, including multi-version PHP bytecode instrumentation and HTML 5 state machine for XSS attack detection.
  • Developed the Java Agent from scratch and co-maintained it most of the time. Added support for several application servers, frameworks, and templating engines.
  • Maintained and improved the Ruby agent gem for around a year.
  • Contributed to the MiniRacer (V8 embedding) Ruby gem.
Technologies: C, Zend Engine, Git, Linux, Java, Ruby, V8, Python, Bytecode, Instrumentation, PHP Extensions

Software Developer

2016 - 2017
Chic by Choice S.A.
  • Developed and maintained a Ruby-on-Rails application for renting out dresses.
  • Integrated third-party services like DPD, DHL, and Typeform.
  • Initiated the transition to the Vue framework.
Technologies: Vue, Ruby on Rails (RoR), Ruby, PostgreSQL

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 over 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 a 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 three full-time employees to around 60 diverse servers.
  • Configured the EC2 infrastructure through the Ruby AWS SDK.
  • Created Bash scripts for the operating system installation from a rented server's recovery operating system (Hetzner) or configuration of Puppet for an EC2 instance.
  • Managed the Puppet master and developed dozens of Puppet modules—packaged many applications for Ubuntu and CentOS.
  • Implemented Sensu for monitoring and metric collection (metrics sent to and visualized with Grafana) and an ELK (Elasticsearch, Logstash, and Kibana) stack for centralized logging.
  • Set up Atlassian applications (Jira, Confluence, Bamboo, Crowd) and configured a single sign-on through self-developed Puppet modules.
  • Configured Nexus OSS through a Puppet module and integrated it with Crowd.
Technologies: Docker, PostgreSQL, Oracle, Spring Batch, Grails, Groovy, Puppet, Java, Groovy Scripting, Groovy Grails Tool Suite, Puppetlabs, AWS SDK, Ruby, Spring MVC

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).
  • Enhanced a Spring-based infrastructure with child application contexts and overridable configurations, and other more domain-specific refactorings, ultimately allowing 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.
  • Implemented a Phabricator for code-auditing within the team.
Technologies: Java Message Service (JMS), JAX-WS, Spring, Apache Maven, Java

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 location 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.
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.
  • Implemented JASIG CAS—developing an extension for authentication with the JESPA library (single sign-on with ActiveDirectory integration); CASificiation of the PHP apps and of Alfresco (including authentication of backend applications with proxy tickets).
  • Developed a procurement application that managed the catalogs, purchase requests (and their approval), supplier contracts, and orders; also handled the integration with the 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 contributed to the PHP runtime during 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.

Education

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

Skills

Libraries/APIs

Vue, JAX-RS, JAX-WS, Java Message Service (JMS), jQuery, Puppetlabs

Tools

Puppet, Git, Makefile, IntelliJ IDEA, Vim Text Editor, MATLAB, Solr, Alfresco, Mathematica, AWS SDK, Docker Compose, GNU Debugger (GDB), Groovy Grails Tool Suite, V8, Wolfram Mathematica, Gradle, Apache Maven

Languages

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

Frameworks

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

Platforms

Docker, Linux, Oracle, Ubuntu, CentOS

Storage

PostgreSQL, Oracle RDBMS

Other

PHP Extensions, Java Native Interface (JNI), SOAP, CDI, CAS, Grafana 2, Groovy Scripting, Instrumentation, Machine Learning, Numerical Analysis, Fluid Mechanics, Simulations, Packaging

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