Adam Spindler

Software Enthusiast


I have been programming since 8th grade and have worked on a variety of different projects. I've trained deep learning models, reverse engineered kernel file systems, and implemented network protocols. I've done frontend and backend web development, built cross-platform desktop applications, and created iOS apps. I'm interested in learning new programming languages and staying up to date on the latest tools.

Work
Tesla
Jan - Aug 2020
Software Engineer Intern
I worked directly with product managers to create internal front-end applications using React, Typescript, and GraphQL. I gained experience using libraries including React-Table, Mapbox, styled-components, and recharts. My day-to-day consists of developing new features, fixing bugs discovered by users, and reviewing other developers' code. In addition to front-end development, I've also contributed to mathematical simulation software written in Python.
Datto
May - Aug 2019
Software Engineer Intern
I worked on a distributed system for backing up petabytes of data consisting of a Scala, PHP, and Ruby backend with an AngularJS frontend. I developed features for a processing pipeline and fixed critical issues affecting customer backups. I extended an internal library to fetch additional information from Microsoft's O365 API, investigated a job management library which uses Redis, and was trained on Scala and Symfony. During my time there I also participated in a hackathon in which my team developed a Raspberry Pi device to detect when snack bins become empty. For this project I wrote a web application to serve the front-end and also developed code to detect QR codes at the bottom of the snack bins.

EagleView
Jan - Aug 2018
Software Engineer Intern
I worked with a scrum team doing full stack web development for both customer facing applications and internal micro-services. I worked with Postgres databases, a PHP backend, a JS frontend, and HTML/CSS. Most of the projects I worked on were SPAs and written using ExtJS. We also had internal applications that I developed features for that had basic front-ends built using Bootstrap and Mustache. For example, I created a log file viewer webpage that handled arbitrarily sized files, I integrated Amazon secret manager into existing applications, and I wrote SQL queries to create test data. I also started a micro-service in Go for my team along with Jenkins jobs to test it and deploy it to kubernetes.
Rochester Software Associates
Jan - Aug 2017
Software Engineer Intern
I developed an algorithm to remove hole punch marks from scanned documents using a deep learning model that I trained myself. I gathered the training data myself by scanning several pieces of paper with a bunch of holes in them and labelling them by hand. I also implemented printer network protocols in C# after using Wireshark for analysis and integrated this into existing software. Most of the protocols were very custom to each printer, but I also implemented IPP which is a widely used standard that I learned by reading the RFCs. I worked heavily with SNMP to query printers for job information and supply levels.
School
Masters in Computer Science
4.0
GPA
Bachelors in Software Engineering
3.61
GPA
Minor in Computer Security
Parallel Systems
I wrote a distributed bitcoin miner in C using CUDA and OpenMPI which I deployed to my school's compute cluster. I also wrote distributed applications in Java using UDP sockets to manage the job coordination myself and tested it using docker-compose. Other projects included a CUDA RSA cracker, a Spark app to perform statistical analysis, and a Java app to prove Lemoine's conjecture.
Deep Learning
I wrote a neural network from scratch, including the derivation of backpropagation using calculus. I also used higher level libraries like Keras to develop image classifiers, and create adversarial examples. Another project was based around solving a maze using an MDP for an introduction to reinforcement learning. I read several papers for this class which were SOTA at the time including YOLO9000, FocalLoss, and papers on semantic segmentation.
Networks
I implemented a dockerized RIPv2 router along with a TCP-like protocol that could handle a channel with no delivery guarantees. I also developed a packet analyzer. In this class I learned about standard protocols like Ethernet, IPv4/IPv6, TCP/UDP/ICMP, as well as modern protocols like BitTorrent, TOR, and Zigbee.
Web Security
I created a dockerized Twitter clone with built-in security against XSS, CSRF, click-jacking, user-enumeration, rainbow tables, and session token prediction. I wrote this application using a microservice architecture with a variety of different languages for each of the services. For storing the tweets I used ElasticSearch and used MySQL for storing users, sessions, and CSRF tokens.
Embedded Systems
I created a game on the STM32 board using the gyroscope and two servo motors. The goal of the game is for the user to match the position of the computer controlled servo motor by tilting the STM32 board to move their own servo into position. For this project I used threads in the FreeRTOS operating system, consulted the manuals for interfacing with the gyroscope, and used UART to display scoring information on a terminal.
Big Data
I worked on a group project in which I loaded 60 million records into a Postgres database, created queries on the data, and optimized the queries using indexes. For a homework, I loaded millions of records into a MongoDB instance and optimized queries on that system using indexes as well. I also performed frequent itemset mining, designed schemas, and implemented clustering algorithms.
Projects
GSC Interpreter
I wrote an interpreter for the game scripting language used in Call of Duty. My tool will act as a syntax checker, with the ability to easily run it on a directory of scripts. It also has the ability to fully interpret a subset of the language. It has support for functions, conditionals, loops, lists, and objects. My interpreter can successfully run mergesort implemented in GSC.
View on GitHub
Garbage Full Detector
I built a Raspberry Pi device to detect when my garbage is full by using a deep learning model to classify a picture that the device takes. If someone fills up the garbage without taking it out, the device will send a GIF of them filling it to everyone on a contact list. I gathered training data for this project myself, by taking hundreds of pictures of my garbage can in different conditions. I used Keras for the model, I created a basic web app in NodeJS to configure the device, and used AWS SNS to send people texts to notify them when they're full.
View on GitHub
Feature Map Viewer
I created this application to visualize feature maps in VGG-16. The application allows you to upload an image and select a layer in VGG-16 to investigate. To visualize the feature map, I start off with an image of noise and perform backpropagation on the input image, continuously updating it until its feature map at the selected layer best matches the feature map of the input image. The user has control over several parameters used to re-create the visualization such as learning rate, gradient std clip, and a total variation coefficient.
View on GitHub
Velocity
I wrote an application with my friend to implement several of the propriety file systems Microsoft uses on the Xbox 360. The file system STFS has security on it to prevent modification, however we were able to bypass these measures to allow modification. To understand how these file systems worked we reverse engineered the Xbox 360's kernel bytecode. This is a cross-platform desktop application which allows users to plug in their proprietary hardrives, view all the content on it, and easily modify their profiles which are buried in layers of Microsoft's custom file formats.
View on GitHub