Murilo Pereira

Software Engineer

Profile

I'm an experienced software engineer who likes to work in the intersection of large-scale systems, functional programming, data analysis and operations.

My goal is to tackle complex and interesting problems in challenging, creative and intellectually stimulating environments.

Relevant Work Experience

  • Sonian, Inc. Waltham, MA, United States (remote)

    Hosted email analytics, archiving and discovery.

    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.

    R&D Consultant

    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

    Taxi-sharing service.

    Co-founder, CTO

    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.

    Co-founder, Software Engineer

    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.

    Software Engineer

    February 2010 - July 2011

    • Wrote a Ruby client for Elasticsearch.
    • 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.
    • Transitioned Sonian's flagship product architecture from a monolithic Ruby backend to a set of services communicating through AMQP using RabbitMQ.
  • Department of Computing at UFSCar São Carlos, São Paulo, Brazil

    Undergraduate Researcher

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

    Freelancer

    May 2008 - December 2008

    Developed, designed and deployed Ruby on Rails applications.

Contact Information

Programming Languages

I'm most proficient with Clojure, JavaScript, Ruby and C.

I know my way around Bash and SQL and have used Haskell, Erlang and PureScript in personal projects. I dabbled with Scala and Prolog and wrote some Perl, Python and VimL in anger.

On my day to day I generally use Clojure for anything more than small scripts, which I write in Ruby.

Technologies And Tools

  • Apache Spark, StanfordNLP, OpenNLP
  • Component, Ring, Compojure, ClojureScript
  • Ruby web and test frameworks, deployment and debugging tools
  • Elasticsearch, Solr, Apache Lucene
  • PostgreSQL, MongoDB, DynamoDB, Redis, Apache Zookeeper
  • AWS, Ansible, Docker, Chef, Vagrant
  • Apache HTTP Server, nginx
  • Apache JMeter, JMX
  • GNU Make, GDB, Ncurses, gnuplot, Git
  • HTTP
  • React, D3, webpack, Node
  • Canvas, WebSocket
  • HTML, CSS, LaTeX, LESS
  • GNU Emacs, Vim

Recent Self Education

Formal Education

UFSCar

São Carlos, São Paulo, Brazil

B.Sc. in Computer Science

2007 - 2011 (halted)

Natural Languages

Native portuguese and fluent english speaker. I also learned some spanish while living for 8 months in Santiago, Chile.

Hobbies and Interests

Powerlifting, philosophy, cycling, playing guitar, photography, social psychology, guitar pedals, korean horror/action movies, doom/stoner/sludge/drone, progressive metal, jazz and IDM.

Selected Personal Projects

  • TwitterAnalytics

    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.

  • battle-arena

    Created a multiplayer online battle arena (similar to DotA) game using Clojure and Unity. (Still a work in progress)

  • werld-client-browser

    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)

  • werld-server and werld-client-tty

    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.

  • macbook-playbook

    Automated the preparation of a Macbook for development and desktop tasks using Ansible.

    embratel and bell

    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.