Jake Trotman

Hello World

Welcome to my personal site.

This site serves as a way for me to display some of the projects that I have worked on during my undergraduate career at the University of Wisconsin-Madison. Please check out my projects listed below, and don't hesitate to contact me.

About Me

Résumé

Education


University of Wisconsin-Madison

B.S. Computer Sciences

B.S. Mechanical Engineering

Expected Graduation: May 2016

Work Experience


Web Developer

Wisconsin School of Business

(March 2013-present)
  • Developing web applications for departments within the school.
  • Creating widgets for the main bus.wisc.edu website
  • Working with a team of developers and designers in an agile development environment
  • Working with central campus developers and IT personnel

Mechanical Engineering Co-op

Kimberly-Clark Corporation

(May 2015-December 2015)
  • Worked in the PPIT (Product and Process Improvement Team) at the Neenah Cold Springs Facility, where Depends and Poise products are manufactured.
  • Designed machine parts and components with LEAN principles.
  • Worked with machine operators and technicians to solve current process problems using mechanical engineering knowledge.
  • Worked with full-time mechanical, electrical and process engineers on designs and machine equipment

Relevant Courses

Computer Science Courses

  • CS 367: Data Structures
  • CS/ECE 352: Digital System Fundamentals
  • CS/ECE 354: Machine Organization and Programming
  • CS 506: Software Engineering (INP)
  • CS 534: Computational Photography
  • CS 537: Introduction to Operating Systems
  • CS 540: Introduction to Artificial Intelligence
  • CS 564: Database Management Systems (INP)
  • CS 577: Introduction to Algorithms (INP)

Mechanical Engineering Courses

  • ME 306: Mechanics of Materials
  • ME 313 + 314: Manufacturing Processes and Fundamentals
  • ME 331: Geometric Modeling for Engineering Applications
  • ME 340: Introduction to Dynamic Systems
  • ME 342: Design of Machine Elements
  • ME 351 + 352: Capstone Senior Design (INP)
  • ME 361: Thermodynamics
  • ME 362: Fluid Dynamics
  • ME 364: Elementary Heat Transfer
  • ME 368: Engineering Measurements and Instrumentation
  • ME 370: Energy Systems Laboratory (INP)
  • ME 418: Engineering Design with Polymers
  • TD 619: Power Systems in Entertainment (INP)

Web Development Projects

Investment Profile Graphing Application

Brief Description: This project is still in the process of being completely implemented. It is set to go live around mid-october. This is a web application that graphs the returns of a group of MBA student's investment profile.

How it works: On the front-end, the application uses google charts API to graph a series of points (current investment profile worth). On the back end, there is a JSON generator that interacts querys a database to serve a JSON file that the google charts javascript can read. The process of data acquisition starts out with the students profile registered with Merrill Lynch (ML). ML keeps track of their profile, and at the end of each week, transfers a file (.csv) to our servers with a day-end report of the profile. There is another routine that I wrote that looks for this file, parses it, and inserts it into an MSSQL table. The entire process is automated, which I thought was extremely cool, and was a challenge to implement.

Link to project (dev version)

The dev password is 'graaskamp', and the production version contains sensitive information so I cannot give information about it.

Tags: Google ChartsJSONC#jQuerySFTPASP.NET

Financial Calculators

Brief Description: These are a series of javascript calculators that I built for an online business school course. They are used by students to calculate various financial values (i.e. time value of money, interest rates etc...). Students use these when they do their homework, and also when they are taking online exams.

How it works: There are a series of inputs, and outputs for each calculator. All of the math and equations are calculated using javascript. Some equations proved to be very simple calculations, and other required some good problem solving to figure out. In particular, some problems were only able to be solved using a guess-and-check method. At first, I thought this would be rather easy to implement just using a loop. Well, I was wrong. The professor that I was creating these for wanted exact values to the 6th decimal place (eg XX.XXXXXX). When I first implemented a strict increment (+0.000001) guess and check method, my browser would time out, as it was running too many calculations, and would take too much time. This is when I had to think outside of the box, and try to think of a more intelligent solution.

I started searching for convergence algorithms that would converge to limits quicker than straight iteration, and I read about the Newton-Raphson Method. In a nutshell, this algorithm makes a good prediction of what you should increment your variable you are searching for by comparing your current formula divided by the analytical derivative of that formula. Once I got this to work on my guess-and-check functions, they worked much quicker, and for some calculations, to the points in which you wouldn't even realize that the code behind is iterating over a possible range of values

Link to project
Tags: JavascriptNewton-Raphson Convergence MethodFoundation

Entrepreneurship Guide

Brief Description: This application was written for INSITE, which is an entrepreneurship organization within the school of business. This application helps aspiring entrepreneurs that attend UW-Madison find resources that are local to campus and the local madison area. When I started this project, I wanted to create something with tools that I never used before. I ended up using AngularJS to create the dynamic content on the page, and Papa Parse to parse a csv file that is acting as my database table. The reason I chose to use a csv hosted on the server instead of a traditional SQL database, was that the client for this project wanted to update the database frequently, and not have to submit changes to my group to update the database. I thought of the idea of creating a password protected admin interface that gave them the ability to upload a .csv file, that would replace (and archive) the previous .csv file.

Link to project
Tags: AngularPapa ParseFoundation

Financial Management Office Reporting Tool

Brief Description: This tool is used by the financial management office to run reports that query our databases for transactions that occured in a specific period of time. To adhere to standards of the university, these reports need to be generated on a monthly basis, and that is about as much information as I was given for the use. The application formats the information in a way that is importable to the software used for managing transactions.

This is not public

Tags: ASP.NET MVCFoundation

PhD Directory Search

Brief Description: This application is a search and filter type of application. There is a database with all of the contact information for the School of Business's current Ph.D. Students, and the department wanted an application that would allow users to search and filter for said information.

How it works: There is a database that has all of the students' information in it. I wrote an application that based on url queries, searchs and queries said database and serves up a serialize JSON file. On the front end, I wrote a javscript application that looks creates these queries based on user interaction with the application, then grabs the appropriate information and displays in on the page.

Link to project
Tags: Sitecore CMSAJAXC#ASP.NETJSONEntityFrameworkMSSQL

Online Storefront Form and Payment System

Brief Description: These are 3 seperate small MVC applications that are portals used to collect funds by the MBA department at the school of business for different events.

How it works: There is a lot going on in the back-end that is hidden to the user when they fill out these forms. For these projects (mostly the first one I made), I had to read a lot of documentation about what central UW-Madison campus used for secure transactions. Central campus uses a payment system called CashNet. Each of these forms is very similar to the next one. We collect information, store it in our database, send them to cashnet to pay using a credit/debit card, and then cashnet sends a POST back to us, in which we can confirm that the transaction was successful and update our database accordingly. Another aspect that I had to also later implement to each of these storefronts is that there was another service that the Financial Management Office was using to control funds (and a lot of other stuff that I don't understand). So everytime we receive a successful POST back from cashnet, I added to the controller a web request (or a GET)to another application that another service was using to run reports of payments coming in.

An additional part to each one of these projects was creating admin interfaces that people working for the WSoB could access. These are just simple CRUD applications that let the admins see what is in our database, and also download it as an excel file.

Links to the 3 forms:

Tags: CashnetHTTPC#ASP.NETMVCEntityFrameworkMSSQL

Flickr Slider

Brief Description: This is an image slider.

How it works: I wrote a jQuery function that grabs photo galleries and captions from Flickr and throws them into a slider plugin called slick.js. Also, I created a sitecore widget (aka web control) for said slider. This widget is used by content contributors to add sliders to webpages without any help. It simply requires the photosetID from flickr. The main goal of this project was to put the ability to display images (from events, or conferences) on a webpage, without having to know anything about how the code works.

Examples:

Tags: Flickr APISlick.jsjQuerySitecore CMSAJAX

Fantasy Football Analyst (FFA)

Brief Description: I pitched the idea of a fantasy football analysis tool for CS506: Software Engineering, and it was green lit for development. Myself and 5 other classmates worked on this application. The tool is live on AWS: http://ffa506-env.us-west-2.elasticbeanstalk.com. To log in, use the following credentials:
Email: team3@wisc.edu
Password: password

View the git repo on github
Tags: Spring MVCJavaAngularJS 1jsoupJDBCMySQL

Employment Outcomes Database Application

Brief Description: This is an application that queries a database table of information about the past BBA class's employment out of college.

How it works: I used a jQuery plugin called DataTables to display information from a database in a front-end sortable and searchable form. I also created a custom filtering feature that allows users to sort by specific major. This is a JSON generator that queries the database table based on customized url parameters, and creates a JSON file that DataTables then reads and re-creates the application with. I decided to implement this server-side filtering because the amount of data that is in this table is expected to grow every year, and client-side sorting will eventually not be fast enough to create a clean sort. Also, this decision was made based on the audience that the page is expected to get, which is BBA students. Each student has a major, and they want to see what type of jobs other students with the same major got when they graduated.

This application is very similar to an application I created that sorts and filters a course equivalency database. The course equivalencies are between universities abroad (international) and how those courses they take will transfer back to school at UW-Madison. This application is designed differently, and uses HTTP GETs to create a table for the user based on which school abroad they attended. I made this decision (as opposed to the BBA application) because it is extremely uncommon that an individual will take multiple courses and multiple international universities.

Tags: MVCDatatables.jsJSONC#.NETjQueryAJAX

ASME Student Professional Development Conference Website

Brief Description: This was a website I built for my student chapter of the American Society of Mechanical Engineers (ASME). It was the page for the conference that we hosted in March 2014. This conference was for all of the ASME student sections in the greater midwest. Around 400 students and professionals attended this conference.

How it works: This was the 2nd full website that I built. I used PHP for back-end scripting and dynamic content creation, and bootstrap 3 for a front-end framework. Although the majory of this site is bootstrap widgets and content, there were a couple unique things that I created while building it. I used google maps api to layout where all of the events were taking place on campus. Also, we (the planning committee) thought it would be cool if there was a way of displaying who had all registered for the conference on our website. ASME International required that we use a service called Eventbrite for all of our registration fees. So, at first everyone thought that I could just "update the website" every time someone new registered. I did not want to have to update the site 3-4 times a day, so I looked tried to think of other ways. I ended up seeing if Eventbrite had an API (which they did) and I wrote a PHP script that pulled data from our registered event, parsed it, and displayed it in real time. So I did not have to consistently update the website!

Main domain that we bought for the conference
The actual site for our regional conference

The domain and hosting services have not been renewed, I will work on getting a mirror of the site up on my personal site in the near future

Tags: PHPBootstrapEventbrite API

ASME-Madison Student Chapter Website

Brief Description: This was the first full website I ever created. I wrote the framework once (only HTML and CSS), then re-wrote it (made it responsive using bootstrap), then re-wrote it again (using PHP for back-end scripting and simplified page creation).

A section of the website that I would like to highlight is the member resume page. I built a simple universal password-protected page that holds resumes of all of the members. (Link). This is used by recruiters to view resumes of all of the members who wish to have their resume visible on this page. In the past, we used to hand out CDs with all resumes on them, but I thought that this practice seemed ancient and that we could use technology to better communicate this information. Now, we hand out business cards with the link and the password. Also, I used tablesorter.js so that information can be sorted and filtered easily.

**note, it has been modified since I resigned (Fall 2014) as webmaster and owner of the site, but the main structure and framework is still there

ASME Madison Homepage
Tags: PHPBootstrapTablesorter.js

BreweryDB API

Brief Description: I wanted to make some sort of application consuming this API, so it's still a work in progress, but i've been playing around with it and AngularJS 1

Link

Tags: BreweryDBBootstrapAngular

Programming Projects

Image Dehazing

Brief Description: For CS534: Computational Photography, our final project was determined by myself and team members. We decided to implement and modify a dehazing algorithm on images that have large amounts of haze in them. The key aspect to our design was that we wanted to use fast matting of images, which allowed the matting step of the algorithm to be run far more efficiently than a large-kernel laplacian matting. More information about this project can be found at the project website http://dehazing.azurewebsites.net/.

The source for the process can be found on my github.

Tags: MatlabImage ProcessingDehazing

PacMan AI Projects

Brief Description: These were a series of projects that revolved around the UC Berkely Intro to AI: Pacman Projects that I wrote for the UW-Madison class CS540: Intro to AI.
Unfortunately, the source code for the projects and for the final AI competition that myself and a partner wrote aligns with structured assignments of the course, so I do not want to post it online. The code is of course available by request.

Tags: PythonAIPacman

Operating Systems Hacking

Brief Description: For my Operating Systems class, I wrote numerous projects for the xv6 operating system, including modifications to threading, locks, task scheduling and the file system. I do not want to put this code online, as the projects from semester to semester are very similar. Projects not in xv6 included creating a lightweight shell, a simple webserver with a buffer pool for handling incoming requests, and simple parsing and sorting C program.

Tags: CXV6

Hash Map

Brief Description: A hash map written in Java for my final project in CS367: Data Structures.

Link to project on github
Tags: Java

ASME Design Team Vehicle Controls

Brief Description: For the controls of our remote control car, we used a java library called: LWJGL. We wrote the controller program, and then uploaded it onto our arduino board. This library works great with an Xbox 360 controller, so that is what we used. The purpose of the competition was to design a remote control car that you could operate without line of sight, so we had a webcam on the car that transmitted a live feed back to a laptop that we displayed the video on, and the controller was hooked up to.

Link to project on github

Mechanical Engineering Projects

CVT Testing Fixture (Capstone Senior Design)

Brief Description: For my Capstone senior design project, my group has partnered with John Deere to develop a testing fixture for them to test their continuosuly variable transmissions (CVTs). Myself, and two other mechanical engineering students completed our portion of the project throughout my senior year. The project was invisioned to take 3 iterations of senior design groups to complete. My group was the 2nd iteration. Our main goal was to design and fabricate the test stand, and the following iteration's goal is to develop controls sensors so that John Deere can collect and analyze data. I produced a short YouTube video on the results of my group.

Contact

School Email: trotman@wisc.edu

Personal Email: trotman23@gmail.com

Phone Number: (612) 723-6536

Github: trotman23