Rodrigo Silveira

Portfolio

The following are projects I developed freelance gigs, part of self-education coursework, or otherwise, more or less polished proof of concepts. If you're interested in more raw, throwaway, R&D style demos, check out my blog instead.

Blood Cholesterol Predictor (2018)

From a private dataset of images of blood samples with their accompanying cholesterol (in mg/dL), I developed several machine learning models that predicted one’s cholesterol from a picture of the blood sample. The best model ended up being a convolutional neural network using Google’s Inception 2 architecture.

The selected trained model was deployed to a server where it ran on a standalone Python process, fronted by an Apache API endpoint. I also developed an Android and iOS application that allows the user to use the phone’s camera to photograph their blood sample, use the API described, and get an accurate prediction within 1 second.

Details

  • Used a private dataset.
  • Developed custom tools in JavaScript and PHP to build a clean, labeled dataset from raw images.
  • Developed, trained, debugged, and optimized multiple deep learning models.
  • Deployed the model to production.
  • Developed a backend web API that collects users usage of the app to continue to train the model.

Technologies

  • TensorFlow
  • Python
  • PHP
  • Apache
  • React.js
  • React Native

TensorFlow Speech Recognition Challenge (2017)

This was my first Kaggle competition, which I was surprised to place 222nd of 1315 participants (top 17%). The competition was sponsored by Google Brain, and consisted of having to train a machine learning model using a dataset of 64 thoursand 1 second audio files, each containing one of several commands (such as “up”, “down”, “yes”, “no”, etc.).

Once trained, the model would be given thousands of new 1 second voice commands, and it would need to predict which, if any, of the commands the sound contained.

View on Kaggle.com

Details

  • First Kaggle competition.
  • Best rank was 85th.
  • Participated alone.
  • Best model was a convolutional neural network, taking 3D spectrogram as inputs.

Technologies

  • TensorFlow
  • Python
  • Numpy
  • Pandas

MNIST App (2017)

A personal project that applies machine learning proficiency. The app allows users to draw a number on the phone, and using the raw pixels of this drawing as input, the model predicts with high accuracy what the number is.

Download on Google Play

Details

  • Used the existing MNIST dataset.
  • Applyed data augmentation techniques to increase dataset.
  • Developed, trained, debugged, and optimized multiple deep learning models.
  • Deployed the best model to TensorFlow mobile.
  • Developed a backend web API that collects users usage of the app to continue to train the model.
  • Over 20,000 observations have been collected to date from users interacting with the app.

Technologies

  • TensorFlow
  • Python
  • Apache
  • Node.js
  • Express

Dfrag (2017)

A very minimalist JavaScript framework/abstraction to simplify creating DOM structures in a declarative way. The purpose of this was to simplify my own creation of JavaScript demos and prototypes without having to write a lot of code, and without having to setup React.js, Webpack, Babel, and all sorts of additional tooling just to render simple DOM elements on the page.

View on GitHub

Details

  • Dead-simple API
  • Only 787 bytes uncompressed

Technologies

  • Vanilla JavaScript

php-config (2016)

A minimalist and loose port of node-config, which is a simple way to create environment specific configuration files. At run time, the configuration files from the various environemnts (local, development, stage, production, etc.) get merged in such a way that you can reuse configurations across environemnts, rather than copying and duplicating them.

The reason for this project was to simplify configuration management in PHP projects, and to bring to PHP a very elegant solution that the Node package that this project mimics solved.

View on GitHub

Technologies

  • PHP

Google’s Dev Art (2014)

Another competition I entered for fun. DevArt was a Google sponsored initiative where developers and artists were to develop art with code. The winner(s) would be given some cash grant to develop their idea more fully, and the final project would be featured in some museum somewhere in the world. Again, my intent was mostly to take place in this, learn, and have fun.

My project was artsy rendition of Conway’s game of life, where the board was rendered by an image input by the user. Each generation of the game was rendered atop the previous one, but with some level of blending. The final output was intended to give the appearance of bacteria growing on a petri dish.

View on DevArt

View on GitHub

Details

  • Project hosted on the legacy Google App Engine.
  • Weird, creepy idea, but from an art standpoint, looked pretty cool.

Technologies

  • Google Closure Tools
  • Google App Engine

BigBrother.js (2014)

I wrote this as a prototype to allow analyst to record a user’s interaction with a page, then play it back to watch their behavior, or programmatically aggregate data across multiple users and multiple sessions.

View on GitHub

Technologies

  • Vanilla JavaScript
    • Thin client library that binds to the DOM and tracks the user’s interactions with the page, including mouse movement, clicks, keyboard events, etc.
    • A simple player component that allows you to replay a recorded user session.
  • PHP
    • Thin API endpoint that received input from the client library and persisted each session’s recordings.

php-chain (2013)

A thin abstraction over PHP’s native arrays to help you easily chain array transformation functions. The motivation for writing this library was because PHP’s array functions are ridiculous - APIs are not consistent, and you cannot chain or compose the functions. Performing back to back transformation opperations on arrays can be very verbose.

View on GitHub

Technologies

  • PHP

Tupacsum (2013)

A Lorem Ipsum generator for the web designer that keeps it real. This was a fun toy project that I wrote during lunch one day to generate real-looking text to fill up designs or UI prototypes. The text content comes from the lyrics of various songs by Tupac Shakur.

View on Chrome Web Store

View on GitHub

Technologies

  • JavaScript

GWT Game of Life (2013)

This was probably my first project using Google Web Toolkit, which was once a great and promising way to write performant JavaScript applications using Java. As the name implies, the application was an implementation of Conway’s game of life, rendered on an HTML5 canvas.

View on GitHub

Technologies

  • Java
  • Google Web Toolkit (GWT)

jQuery plugin: syntax highlighting (2012)

During a phone interview with a developer from Disney, I was asked if I had ever written a jQuery plugin. Since I had not yet done so, I decided to go home and write something so that I could answer positively the next time I was asked about jQuery.

This plugin looks for DOM elements containing a configurable className, then replaces that element’s contents (assuming it is source code) with extra DOM elements wrapping certain tokens parsed from the element, styling it such that it would render as highlighted source code.

View on GitHub

Technologies

  • JavaScript

HTML5 Stock Market Simulation (2011)

An HTML5-based stock market simulation in PHP using WebSockets (implementing WebSocket Draft 75 and Draft 76), as well as a client app that interacts with the WebSockets server. An unbounded amount of users are allowed to connect to the app and buy/sell stocks.

View on GitHub

Technologies

  • PHP
    • A manual implementation of the WebSockets protocol (Drafts 75 and 76 - now outdated by many years).
    • A server application that made use of the WebSockets server that handled the stock market simulation.
  • JavaScript
    • A vanilla ECMAScript 5 application that handles the client-side logic and presentation of this stock market simulation.

Contributions to open-source projects

Apache Airflow v1.10.9 (2020)

A few weeks ago I was invited to present at Salt Lake City Google Cloud Platform Meetup to talk about Data Pipelines with Apache Airflow on Cloud Composer. At that point, I'd been using Airflow long enough to feel a certain level of expertise. Later I realized I wanted to try to make a contribution to the project. There are a couple of reported issues that I've definitely put on my radar to try to tackle, but in the mean time, I got my first pull requested merged that adds to the documentation.

https://github.com/apache/airflow/pull/9163

TensorFlow v1.11.0 (2018)

While experimenting with convolutional neural networks and ImageNet, I found the documentation for tf.image.draw_bounding_boxes to be wrong. So like any good citizen, I posted a pull request correcting the math in the documented example.

https://github.com/tensorflow/tensorflow/releases/tag/v1.11.0

TensorFlow v1.8.0 (2018)

After discussing with the good folks at TensorFlow’s official forum, I found a way to make the batch normalization component easier to use correctly. The result of my research was my first contribution to a major open-source project.

https://github.com/tensorflow/tensorflow/releases/tag/v1.8.0-rc1

Slim Framework (2014)

My first contribution to an open source project. Minor, short, and sweet.

https://github.com/slimphp/Slim