I'm an experienced software engineer who likes to work in the intersection of large-scale data processing systems, functional programming and operations.
My goal is to tackle complex and interesting problems in challenging, creative and intellectually stimulating environments with a strong engineering culture.
Relevant Work Experience
Sonian, Inc. Waltham, MA, United States (remote)
Hosted email analytics, archiving and discovery.
Senior Software Engineer
September 2014 - Present
- Took advantage of business, engineering and research knowledge gathered during the year before to move POCs to a production setting.
- Architected and built distributed batch processing systems and HTTP APIs with Clojure, Component, Zookeeper, RabbitMQ, PostgreSQL and Redis.
- Researched, benchmarked and implemented different approaches to topic extraction, trend detection and text segmentation for email bodies.
- Successfully used bleeding edge Elasticsearch aggregations, mapping configurations and cluster topologies to get complex analytics queries returning in milliseconds.
- Implemented distributed data pipelines for email data cleaning, parsing and analysis using open-source tools like StanfordNLP.
- Automated infrastructure and deployments with Ansible, Chef, Docker and Jenkins.
Sonian, Inc. Dedham, MA, United States (remote)
Hosted email archiving and discovery.
August 2013 - September 2014
- Conceptualized and created the interactive visualizations that kickstarted Sonian's move towards email analytics, allowing customers to extract insights from their massive amounts of data. The frontend was built with React, mori and D3, and the backend with JRuby, Rails, PostgreSQL, Elasticsearch and Redis.
- Designed and implemented data pipelines for cleaning, enriching and deriving additional types of information from email message data using proprietary algorithms, statistical methods like tf-idf and tools such as StanfordNLP and Maui.
Meleva Campinas, São Paulo, Brazil
April 2012 - July 2013
- Developed real-time location-aware mobile web applications using PhoneGap, Backbone.js and jQuery Mobile on the frontend and Sinatra, Node.js, WebSocket and MongoDB on the backend.
- Got into the Startup Chile program, which financed Meleva for six months with 40.000 USD equity-free seed capital.
- Constructed algorithms for optimally matching users in coherent sets according to their itinerary data.
- Planned and executed a marketing campaign that brought in five thousand users in a single state, in one month, before launch.
- Built an unobtrusive caching adapter for AJAX requests using Local Storage, greatly reducing bandwidth usage, database load and client load times.
- Built user-facing prototypes in time spans as short as one day.
Fonista Campinas, São Paulo, Brazil
Mobile application for calling local businesses that deliver goods, through social recommendations and user-curated information.
July 2011 - April 2012
- Maintained infrastructure using Chef.
- Developed websites using Ruby on Rails, Backbone.js and jQuery Mobile.
- Designed RESTful JSON APIs for native mobile applications.
- Built a proxy analytics server using Sinatra and MongoDB.
Sonian, Inc. Needham, MA, United States (remote)
Hosted email archiving and discovery.
February 2010 - July 2011
- Wrote a Ruby client for Elasticsearch.
- Wrote an admin interface for RabbitMQ clusters.
- Implemented new features and optimized existing ones from backends to UI in short time frames, using test-driven techniques.
- Worked closely with and incorporated feedback from quality assurance and product management.
Department of Computing at UFSCar São Carlos, São Paulo, Brazil
March 2009 - July 2009
- Implemented TCP Adaptive Westwood on a Linux kernel.
- Used performance analysis tools to compare throughput versus packet-loss between several TCP algorithms.
- Demonstrated the effectiveness of the TCP-CCP protocol regarding stable data flow through profiling client-server media streams.
May 2008 - December 2008
Developed, designed and deployed Ruby on Rails applications.
I know my way around Java and SQL and have used Haskell, Erlang and PureScript in personal projects. I've dabbled with Scala and Prolog.
On my day to day I generally use Clojure for anything more than small scripts, which I write in Ruby or Bash.
Technologies And Tools
- Component, Ring, Compojure, ClojureScript
- Apache Spark, StanfordNLP, OpenNLP
- Ruby web and test frameworks, deployment and debugging tools
- PostgreSQL, MongoDB, Redis, Apache Zookeeper
- AWS, Ansible, Docker, Chef, Vagrant, Kibana
- Apache HTTP Server, nginx
- Apache JMeter, JMX
- GNU Make, GDB, Ncurses, gnuplot, Git
- React, D3, webpack, Node
- Canvas, WebSocket
- HTML, CSS, LaTeX, LESS
- GNU Emacs, Vim
Recent Self Education
São Carlos, São Paulo, Brazil
B.Sc. in Computer Science
2007 - 2011 (halted)
Native portuguese and fluent english speaker. I also learned some spanish while living for 8 months in Santiago, Chile.
Hobbies and Interests
Selected Personal Projects
Bootstrapped an analytics product for brands on Twitter, currently in private beta. The backend is composed of a distributed batch processing and a distributed real-time stream processing system for tweets. It uses machine learning and natural language processing techniques to extract valuable insights.
Created a klondike solitaire game using Ncurses and C.
Created a multiplayer online battle arena (similar to DotA) game using Clojure and Unity. (Still a work in progress)
Created an MMORPG that runs on graphical web browsers, using Node.js, Redis, Backbone.js and HTML5 technologies such as Canvas and WebSocket. (Still a work in progress)
Created a multiplayer roguelike game with a chat system. The backend uses Erlang and a TCP server with which the TTY client, made using C, Ncurses and select(2), communicates with using an ad-hoc binary protocol. The backend also has a web interface for managing player accounts made with webmachine and mnesia.
Automated the preparation of a Macbook for development and desktop tasks using Ansible.
Created embratel, a library for parsing phone bills from a brazilian telecommunications company called Embratel into Ruby data structures, and bell, a command-line program that generates multi-user expense reports for Embratel's phone bills.