Matheus Portela

Top 3 Projects

Distributed Twitter Clone (Nov 2018 - Dec 2018)

Technologies: Go, Raft, Protobuf, JavaScript, Web Components, Microservices, Consensus Algorithms
Code: GitHub

In the Distributed Systems course at NYU, our team implemented a Twitter clone in a Microservices Architecture. By using Raft as a consensus algorithm, we replicated our microservices in at least 3 machines with inherent fault tolerance, so even if a machine halted, the service would still be available. Our project received the highest grade in the class.

Reinforcement Learning for Stochastic Multiagent Systems (Jan 2015 - Dec 2015)

Technologies: Python, Numpy, OpenAI Gym, Reinforcement Learning, Q-learning, Multiagent Systems, Bayesian Programming
Code: GitHub

My undergraduate thesis was on Artificial Intelligence applied to Robotics, in which I studied how to apply Reinforcement Learning algorithms to stochastic multiagent systems. Techniques such as Q-learning with function approximation, Bayesian Programming and Steering Behaviors were applied to Pac-Man ghosts using the UC Berkeley Pac-Man simulator. During the work I published two papers, a peer-reviewed and a non peer-reviewed one, and developed a Python system. Moreover, my thesis received the maximum grade.

UnBall Robot Soccer Team (Mar 2014 - Dec 2015)

Technologies: C++, Python, Assembly, Arduino, ROS, OpenCV, Microsoft Kinect, Xbee, Electronics, Control Systems
Code: GitHub

In 2010, I joined the UnBall Robot Soccer Team, a university student team with one goal: build robots that can play soccer. I helped developing the AI and Computer Vision systems initially and, in 2014, I became the team Coordinator. My responsibilities included restructuring the team, which had been shut down at the time, and rebuild the project from scratch. I have worked in all technical areas, including AI, Computer Vision, Firmware, Communication, Control Systems, Electronics and 3D Printing, besides other areas such as Management, Recruitment and Finances. Since 2014, the team has participated in several national and international competitions and acquired financial stability and a sustainable recruitment process. In 2016, I assisted the UnBall Coordinator by being a Counselor, overseeing the future of the team.

All Projects

Lispy (Feb 2018 - May 2018)

Technologies: Python, Lisp, TDD, Compilers
Code: GitHub

Since I had never taken a Compilers course and I am truly interested in Lisp, I started making my own Lisp interpreter for didactic purposes. Using Python and applying TDD techniques, it currently works executing a script from a file or as a REPL interpreter many functional capabilities, such as recursive functions and functions as first-order citizens.

Magic Chain (Nov 2016)

Technologies: Blockchain, Ethereum, Solidity, JavaScript, jQuery, HTML, CSS
Code: GitHub

During the Cotidiano Hackathon on Blockchain technology, I and two friends developed a Magic: The Gathering marketplace so players could sell, buy and trade cards. Using the Ethereum Blockchain as the underlying technology was an interesting idea since the platform had its own token for exchanges, a built-in user rating system and audit trails to third-parties. We we awarded with the 2nd place among about 10 teams due to our finished prototype and the good fit between Blockchain and our product.

Collatz Conjecture (Aug 2016)

Technologies: Haskell
Code: GitHub

After watching a video on the Collatz Conjecture, if decided to implement it in Haskell.

Control Your Laptop (Jul 2016)

Technologies: Python, Arduino, Infrared Sensors, Digital Communication
Code: GitHub

During my #100DaysOfCode initiative, I realized it was a shame for a programmer to get out of my bed in order to play, pause and stop videos when my laptop was connected to my TV. Then, I reverse engineered my TV remote control protocol and built a simple receiver, using Arduino and an Infrared Receiver, to make my remote control transmit commands to my computer. You can check this prototype working here.

Enigma Machine Simulator (Jun 2016 - Jul 2016)

Technologies: JavaScript, Node.js, TDD, Simulators
Code: GitHub

As part of my #100DaysOfCode initiative, I developed an Enigma machine simulator from the ground up. For about three weeks, I’ve studied the machine technical details, wrote the simulator code in JavaScript and Node.js using a Test-Driven Development approach, created a web interface, and documented the steps in blog articles. You can check the simulator here.

Cipher Algorithms (May 2016 - Jun 2016)

Technologies: C, Python, Python Extensions
Code: Vigenere Cipher and Caesar Cipher

I started studying cryptography in 2016 with a hands-on approach by implementing some of the most common cryptographic algorithms and learn how to combine C code to Python modules. Thus I implemented the Vigenère and Caesar cipher algorithms.

Distributed Computing with Intel Galileo Boards (Sep 2015)

Technologies: Distributed Systems, IoT, C
Code: GitHub

In the “Se Vira II” Hackathon, on the topic of IoT, that took place at the University of Brasília, I and two friends wanted to play with distributed computing. We used 3 Intel Galileo boards, connected using Ethernet cables, to calculate the minimum and maximum values of large lists of numbers in a distributed fashion, using an approach similar to Map-Reduce implemented from scratch. All boards ran exactly the same software, which means they could operate either as a node or as the coordinator.

Maestro (Sep 2015)

Technologies: C, C++, Python, Node.js, Arduino, 3D Printers, Servomotors, Myo, GoPro
Code: GitHub

During the Hackathon Globo, one of the largest hackathons in Brazil whose topic was “How technology can change the way we produce and consume media?”, my team developed Maestro: a prototype of a hands-free control for TV cameras. Using Myo, a sensor capable of detecting movements of the arm, a journalist would be able to control pan and tilt of cameras and select which camera to broadcast. That a look at the working prototype:

Poïesis (Mar 2015 - Jun 2015)

Technologies: C++, SDL, Game Development, Particle Physics Simulation, Entity System, Spatial Partitioning
Code: GitHub

During the first semester of 2015, I took the Game Development class at my university where we had to develop a game in a group with artists and musicians. The result was Poïesis, a C++ game where you are a cell trying to survive in a hostile environment. The game engine was completely developed from scratch using and SDL for low-level OS integration. During this work, I decided to use an Entity System approach, Quad-tree spatial partitioning and developed a Particle and Physics System, which led me to an Honorable Mention among the 12 games evaluated.

Counting Cars (Jan 2015 - Mar 2015)

Technologies: C#, XAML, .NET

As a freelancer, I worked with a friend to develop a GUI that helped collecting human input to count cars from traffic cameras. We used Microsoft technologies to create a desktop application which received input from a joystick and buttons.

The Amazeing Experience (Jan 2015)

Technologies: C#, Unity 3D, Game Development
Code: GitHub

In 2015, I was a participant of the Global Game Jam: a worldwide event where developers, artists, and musicians meet in their cities to produce an entire computer game in 48 hours. In Brasília, the event took place at the Behold Studios HQ, under the theme “What do I do now?”. Without sleeping, me and 3 more friends could finish our game, the aMAZEing experience, using C# and Unity 3D. It was my first game ever and I am really proud of it.

Simpletable (Aug 2014)

Technologies: Python, HTML
Code: GitHub

Simpletable is a lightweight Python module for generating simple HTML tables without requiring the installation of any third-party libraries.

Network Security (Jun 2014 - Dec 2014)

Technologies: Python, Numpy, Third-party APIs, Network Security, Computer Networks, Routes, Switches, Web Application Firewalls

In 2014, I had the opportunity to work with network security at IPe - Network Engineering. During this period, I could work with some cutting-edge technology, such as Web Application Firewalls and Advanced Persistent Threats. I could also develop a project to provide Machine Learning capabilities to automatically detect intrusion and hacker attacks (with cutting edge academic knowledge), using Python and Numpy, as well as Python scripts to communicate with third-party appliances. I have also substantially improved business skills, such as competition analysis, benchmarking, development of vulnerability assessment methodologies and selling and buying products.

Didactic Assembler (Apr 2014 - Jul 2014)

Technologies: C, Assembly, Compilers
Code: GitHub

As a student in Systems Software course, we had the task of writing our own assembler, which would translate a source file written in didactic assembly language to binary output, the last should run in our own simulator. The code was written in pure C language.

Gaze Enhanced Voice Recognition (Dec 2012 - Feb 2013)

Technologies: Python, Qt, PyQt, Win32 API, Microsoft Speech Recognition, Human-Computer Interfaces, Research

During my internship at the CSIRO, in Australia, I could develop a great project: using gaze trackers to enhance voice recognition systems. Supervised by David Rozado, a great friend, we created a GUI using Python (with PyQt) and Microsoft Speech Recognition and designed user tests to prototype an idea of how to integrate these systems and make hands-free voice recognition possible. Since a picture is worth a thousand words, check out the video below to have an idea of our system. You can also read our paper, published at OZCHI 2014.