Technical Experience Summary

Professional Personal Project
Languages: Dart, Java, SQL C, CSS, C#, Elm, Javascript, HTML, Python, Ruby, Swift
Frameworks: Angular Dart, Hibernate, JUnit, Mockito, Spring, Spring Boot Boostrap, iOS Core Data, D3.js, Flutter, React.js, Ruby on Rails
Technology: Apache Ignite, Apache Maven, Atlassian Bitbucket, Atlassian Jira, Docker, Elastic Search, Git, Jenkins, IntelliJ, Kibana, Postman, REST API, Vagrant VM, Visual Studio Code AWS, Bash / Zsh, Google Firebase, Google AdMob, Google Analytics, tmux, Unity, Vim, XCode
Software Engineer
project44
January 2020 - Present
Responsibilities include:
  • Creating micro-services within the JVM.
  • Working with the Spring Portfolio including Spring Boot.
  • Real-time and near real-time streaming work in Kafka.
  • Creating API's / web services: REST, SOAP etc.
  • Container-orchestration: Docker & Kubernetes.
  • Building systems in a multi-cloud environment: AWS & GCP.
  • Database related work: DynamoDB, MongoDB, Postgres.
  • Willingness to vocalize ideas.
Software Engineer
Trustwave
June 2018 - January 2020
Responsibilities include:
  • Work in small, agile teams to design, prototype and build new product offerings and enhance existing products and tools
  • Collaborate with Product Management to identify, prioritize and document detailed product requirements
  • Design, develop and document application and framework code in Java, Angular Dart, Flex and other object-oriented programming languages
  • Create robust automated unit/functional test suites and deployment scripts
  • Work with internal QA team on system, performance and acceptance testing
Teacher's Aide
Masters Program Computer Science Class: Functional Programming
The University of Chicago
April 2018 - June 2018
Responsibilities included:
  • Commitment on average of 10 hours per week with weekly deadlines and work to be completed at the student's convenience
  • Attendance at meetings throughout the quarter
  • Assignments were to be graded within 3 business days of submission
  • Extensive and comprehensive feedback provided to students on assignments
  • Availability for any questions students may have on the grade they received
Intern - Global Technology
TransUnion
Summer of 2017
Summer of 2016
2017 Internship:
  • Coded high performance Powershell module that streamlined Hitachi array exports into Splunk to all run simultaneously on a schedule while ensuring that other exports are not already running. Additionally, the module would find the amount of time since the last export and change the command text file accordingly.
  • Coded high performance Powershell module that created a GUI for command line interface switch zoning. This was designed to not only streamline the zoning process on switches, but also make it possible to directly run the appropriate commands on a chosen switch using the input fields entered.
  • Collaborated with application development team on future Hadoop projects.
  • Investigated issues on all down ports for both of the fabric’s core switches.
  • Collaborated with coworkers to help export data off of the SVC arrays into Splunk.
  • Collaborated with colleagues to create a presentation on how to effectively improve the experience for future interns.
2016 Internship:
  • Represented the Storage Operations team at the recurring Enterprise Quality Review and Daily Operations meetings.
  • Designated as the point of contact for the Storage Operations team as the interface to a third party provider for all hardware break/fix issues.
  • Assisted in addressing failed/missed backups.
  • Assisted with a backup audit on random servers.
  • Designated to the Agile Delivery Lead Team #2 to support Storage engineering request.
  • Collaborated with IBM to install TSM reporter software.
  • Trained coworkers on adding NFS and CIFS exports to NAS file systems.
  • Collaborated with colleagues to create a formal presentation for a product pitch to the company.
Project Tetris
Created Spring of 2017
Wrote in Elm using
Platform: Any browser (Chrome Recommended)
This project was created by me and my partner (Dominex Kovacs) for CS 223: Functional Programming (Class Grade: A-). We had approximately eight weeks to form an idea, design a model, implement various algorithms, streamline performance, and present a demo for this project. Reducing lag was the largest obstacle for this project as the program needed to make hundreds of checks every millisecond. One of the biggest optimizations was storing each block on the game board in an array. This array implementation allowed us to have a lookup time of O(log(n)) as opposed to lists which have a lookup of time O(n) in Elm. After much streamlining, the game runs with absolutely no noticeable latency, but don't take my word for it, try it out. I recommend using Chrome for this game.

NOTE: Not compatible with mobile platfroms and may experience lag issues on browsers that are not Chrome.

This Website
Created the Summer of 2017
Wrote in HTML, Javascript, and CSS
Platform: Any Browser
This was created entirely by myself using basic coding techniques that I have learned in college. This allowed me to further my knowledge in web development and gain more expertise and experience, showcasing my accomplishments and achievements.

Lambda Calculus Compiler Projects
Created Spring of 2017
Wrote in Standard ML
Platform: Shell Running SML Compiler
These projects included various implementations that dealt with compiling the Lambda Calculus language for CS 221: Programming Languages (Class Grade: B+). For example, I was asked to create a program that was fully able to scan, parse, evaluate, and compile the Untyped Lambda Calculus language. Additionally, I expanded this compiler to include a type checker and covert the compiler to a Typed Lambda Calculus compiler. This type checker eventually was able to included a universal type for fail messages. This allowed statements such as “If True Then False else FAIL”. For these assignments I did not receive a grade lower than 90%.

Burnt
Published Fall of 2019
Wrote in Swift with XCode
iOS - on the App Store
App Store Description:
"Burnt is a simple, easy to use, and user friendly workout manager app for people with all levels of experience. Burnt makes creating, viewing, editing, and completing workouts easy and effortless. No need for the complications of other workout apps, just the necessities to get you moving. Burnt requires no cellular data since all data is stored on the device. Burnt allows you to create “Template Exercises” so that you can quickly add common exercises to workouts without tedious repetition. Trim the fat from your workout app. After all, the hardest part of your workout should be the actual workout! Now, get burnt and achieve your goals!"

The University of Chicago
Bachelor of Arts in Computer Science
Graduated Early with General Honors
Cumulative GPA of 3.35/4.00
Odyssey Scholar
Deans List
Click on each course for more information

Relevant Courses in 2017-18:

BUSN 36110: Application Dev
A  


This course was offered from the UChicago Booth School of Business. The course dealt with Ruby on Rails and building full stack applications. Read the course description at: UChicago Booth School Course Detail
CS 235: Intro to Databases
A  


This course is an introduction to database design and implementation. Topics include DBMS architecture, entity-relationship and relational models, relational algebra, concurrency control, recovery, indexing, physical data organization, and modern database systems. The lab section guides students through the implementation of a relational database management system, allowing students to see topics such as physical data organization and DBMS architecture in practice, and exercise general skills such as software systems development.

This was taken from: UChicago Catalog for Computer Science
CS 209: Computer Learning
A  


Over time, technology has occupied an increasing role in education, with mixed results. Massive Open Online Courses (MOOCs) were created to bring education to those without access to universities, yet most of the students who succeed in them are those who are already successful in the current educational model. This course covers technology, psychology (e.g., motivation, engagement), and pedagogy (e.g., constructivism) as they apply to educational technology so that students can design and build an educational learning application. Labs focus on developing expertise in technology, and readings supplement lecture discussions on the human components of education.

This was taken from: UChicago Catalog for Computer Science
CS 232: Intro to Security
B+


This course introduces the principles and practice of computer security. It aims to teach how to model threats to computer systems and how to think like a potential attacker. It presents standard cryptographic functions and protocols and gives an overview of threats and defenses for software, host systems, networks, and the Web. It also touches on some of the legal, policy, and ethical issues surrounding computer security in areas such as privacy, surveillance, and the disclosure of security vulnerabilities. The goal of this course is to provide a foundation for further study in computer security and to help better understand how to design, build, and use computer systems more securely.

This was taken from: UChicago Catalog for Computer Science
CS 233: Distributed Systems
C  


This course focuses on the principles and techniques used in the development of networked and distributed software. Topics include programming with sockets; concurrent programming; data link layer (Ethernet, packet switching, etc.); internet and routing protocols (IP, IPv6, ARP, etc.); end-to-end protocols (UDP, TCP); and other commonly used network protocols and techniques. This is a project-oriented course in which students are required to develop software in C on a UNIX environment.

This was taken from: UChicago Catalog for Computer Science
Relevant Courses in 2016-17:

CS 221: Prog. Languages
B+


Programming language design aims at the closest possible correspondence between the structures of a program and the task it performs. This course is an introduction to scientific programming language design, whereby design choices are made according to rigorous and well-founded lines of reasoning. The curriculum emphasizes the lambda calculus, type systems, formal semantics, logic and proof, and includes a light introduction to machine assisted formal reasoning. While this course is not a survey of different programming languages, we examine the design decisions embodied by various popular languages when viewed as formal systems.

This was taken from: UChicago Catalog for Computer Science
CS 223: Functional Prog.
A- 


We will explore various aspects of advanced functional programming in this course. Topics will vary from quarter to quarter and may include: untyped and typed programming; pure and impure programming; eager and lazy semantics; "object-functional programming"; functional reactive programming; and concurrent functional programming.

This was taken from taken from: UChicago Catalog for Computer Science
CS 239: Data Visualization
A- 


Data visualizations provide a visual setting in which to explore, understand, and explain datasets. This class describes mathematical and perceptual principles, methods, and applications of "data visualization" (as it is popularly understood to refer primarily to tabulated data). A range of data types and visual encodings will be presented and evaluated. Visualizations will be primarily web-based, using D3.js, and possibly other higher-level languages and libraries.

This was taken from: UChicago Catalog for Computer Science
CS 101: Intro to the WWW-1
A  


This course teaches the basics of constructing and maintaining a site on the World Wide Web. We discuss Internet terminology and how the Internet and its associated technologies work. Topics include programming websites, hypertext markup language (HTML5), Cascading Style Sheets (CSS3), and Common Gateway Interface (CGI) scripts (using PHP). The primary programming emphasis will be on using JavaScript to add client-side functionality

This was taken from: UChicago Catalog for Computer Science
CS 234: Mobile Computing
A  


Mobile computing is pervasive and changing nearly every aspect of society. Sensing, actuation, and mediation capabilities of mobile devices are transforming all aspects of computing: uses, networking, interface, form, etc. This course explores new technologies driving mobile computing and their implications for systems and society. Current focus areas include new techniques to capture 3d models (depth sensors, stereo vision), drones that enable targeted, adaptive, focused sensing, and new 3d interactive applications (augmented reality, cyberphysical, and virtual reality). Labs expose students to software and hardware capabilities of mobile computing systems, and develop the capability to envision radical new applications for a large-scale course project.

This was taken from: UChicago Catalog for Computer Science
CS 280: Formal Languages
B  


This course is a basic introduction to computability theory and formal languages. Topics include automata theory, regular languages, context-free languages, and Turing machines.

This was taken from: UChicago Catalog for Computer Science

Relevant Courses in 2015-16:

CS 154: Computer Systems
B+


This course covers the basics of computer systems from a programmer's perspective. Topics include data representation, machine language programming, exceptions, code optimization, performance measurement, memory systems, and system-level I/O. Extensive programming required.

This was taken from: UChicago Catalog for Computer Science
CS 272: Theory of Algorithms
B  


This course covers design and analysis of efficient algorithms, with emphasis on ideas rather than on implementation. Algorithmic questions include sorting and searching, graph algorithms, elementary algorithmic number theory, combinatorial optimization, randomized algorithms, as well as techniques to deal with intractability, like approximation algorithms. Design techniques include "divide-and-conquer" methods, dynamic programming, greedy algorithms, and graph search, as well as the design of efficient data structures. Methods of algorithm analysis include asymptotic notation, evaluation of recurrent inequalities, amortized analysis, analysis of probabilistic algorithms, the concepts of polynomial-time algorithms, and of NP-completeness.

This was taken from: UChicago Catalog for Computer Science
CS 271: Discrete Mathematics
B  


This course emphasizes mathematical discovery and rigorous proof, which are illustrated on a refreshing variety of accessible and useful topics. Basic counting is a recurring theme and provides the most important source for sequences, which is another recurring theme. Further topics include proof by induction; recurrences and Fibonacci numbers; graph theory and trees; number theory, congruences, and Fermat's little theorem; counting, factorials, and binomial coefficients; combinatorial probability; random variables, expected value, and variance; and limits of sequences, asymptotic equality, and rates of growth.

This was taken from: UChicago Catalog for Computer Science

Relevant Courses in 2014-15:

CS 152: Intro to CS-2
B- 


This sequence (15100 and 15200), which is recommended for all students planning to take more advanced courses in computer science, introduces computer science mostly through the study of programming in functional (Scheme) and imperative (C) programming languages. Topics include program design, control and data abstraction, recursion and induction, higher-order programming, types and polymorphism, time and space analysis, memory management, and data structures including lists, trees, and graphs. NOTE: Non-majors may use either course in this sequence to meet the general education requirement in the mathematical sciences; students who are majoring in Computer Science must use either CMSC 15100-15200 or 16100-16200 to meet requirements for the major.

This was taken from: UChicago Catalog for Computer Science
CS 151: Intro to CS-1
B+


This sequence (15100 and 15200), which is recommended for all students planning to take more advanced courses in computer science, introduces computer science mostly through the study of programming in functional (Scheme) and imperative (C) programming languages. Topics include program design, control and data abstraction, recursion and induction, higher-order programming, types and polymorphism, time and space analysis, memory management, and data structures including lists, trees, and graphs. NOTE: Non-majors may use either course in this sequence to meet the general education requirement in the mathematical sciences; students who are majoring in Computer Science must use either CMSC 15100-15200 or 16100-16200 to meet requirements for the major.

This was taken from: UChicago Catalog for Computer Science
Prometheus-5Q
Created Spring of 2019
Wrote in Python
Das Keyboard 5Q
The Das Keyboard 5Q is a keyboard designed for changing the keys colors as notifications for the user. This keyboard comes with an available UI that allows the user to select possible pre-configured services that will change colors for certain notifications. The UI also allows the user to send post requests to a port on localhost to manually trigger a key color change. My goal for this project was to elegantly handle illuminating a Das Keyboard 5Q via the available API in a configurable way. This project is intended to provide the user with a set of useful "Assistants" that can be bound to Das Keyboard 5Q keys, but also make it effortless to create additional custom "Assistants" that integrate seamlessly with already created "Assistants". This project is built around the "Assistant" abstract class. An "Assistant" is what creates a binding to a key and orchestrates what color is illuminated and what message is displayed. The "Assistant" identifies what state it is currently in, and then that state is used to determine what color and message is displayed. This color and message are only sent to the keyboard if the message/color are different from the current color/message that is displayed on the keyboard.

Project VRoom
Created Fall of 2016
Wrote in C# Scripts using Unity
Platform: Samsung GearVR
This project was created by me and my partner (Daniel Meagher) for CS 234: Mobile Computing (Class Grade: A). We had approximately seven weeks to form an idea, pitch the idea, plan and schedule implementation, design a model exclusively for the Samsung GearVR platform, and present a demo for this project. For our project we decided to create a first person shooter that was entirely playable while maintaining simple easy to learn controls. For example, reloading was as simple as looking down and shooting was just a tap on the touchpad, but the user was still able to be in full control of the game. When the user would shoot a target, the target would reset itself and slightly increment its speed. The user would receive more points for the father away he/she shot a target. This game included game modes such as shooting range, rail shooter, and multiplayer. View additional screenshots of this project below or even check out the poster we made for our demo.

Project Pi Estimation
Created Spring of 2017
Wrote in Elm
Platform: Any Browser (Chrome Recommended)
For this project, I was instructed to use random number generators inn order to form an estimation of Pi for CS 223: Functional Programming (Class Grade: A-). The instruction was to draw and simulate darts on a virtual board at random positions. The goal was to keep track of which darts landed within the circle (which had a diameter equal to the board). Using the amount of darts that hit and missed, I was able to calculate an estimation of Pi. Additionally, I also had to visualize exactly what the program was doing. Click the button below to try it out.

NOTE: Not compatible with mobile platfroms and may experience lag issues on browsers that are not Chrome.

Red Dog Poker Javascript Game
Created Fall of 2016
Wrote in HTML, CSS and Javascript
Platform: Any Browser
This was my first webpage built with HTML, CSS, and Javascript. I implemented this project as I wanted to become more familiar with Javascript and HTML. This was a favorite past-time card game that I recreated as a webpage in less than one week during my free time. All game rules are from the standard Red Dog Poker Card Game. Click below to read the official rules or play the game.