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

ESPN Fantasy Football Statistics

NOTE: This project was originally developed by myself. I ended up proposing it for my Software Engineering class, and it was bid upon and green-lit for the current semester. So I am working with a team of students to create something very similar to this, and more this semester. I will update links to versions as they are developed throughout the semester.

Brief Description: This is a personal project that I have been working on in my spare time. It is a Fantasy Football application that calculates a bunch of statistics, creates personal power rankings, and creates personalized statistics about your fantasy team. It is different from other fantasy football applications in that it is all centered around an individual leage. My friends and I use it in our fantasy football league. It is currently exclusive to one league, and for ESPN fantasy leagues.

How it works: Since ESPN shut down their API in 2014, I found it rather difficult to be able to grab personalized information about our fantasy football league. In short, I wrote a web crawler (using HtmlAgilityPack and HTTP GETs) that crawls the pages of our fantasy football league, grabs statistics, and inserts them into a MySql database. The application then uses this data to calculate various statistics and rankings. After studying the structure of the espn fantasy football leagues, I realized that this would be possible (but not easy) to do on a large scale, as each league is identified by a LeagueID which is passed to their application as a url parameter. During my inspection of the espn fantasy applicatio structure, I also was able to figure out how various AJAX queries were made, what information they returned, and how I could index all of that data into my database by running a single report a week. Run run this report after they update their final fantasy statistics each week. One part of the project that I rather enjoyed creating was my personal power ranking algorithm, which factored in a number of statistics to truly determine who was currently the best team in the league.

Currently, I am working on a user poll, which will rank teams on a weekly basis based on user voting.

I am treating this current season (Fall 2015) as an 'alpha' phase of the project, and making sure that my application will work for one league. Eventually, I would like to be able to open this up to the public, and let anyone create a profile for all of their ESPN leagues. I am consistently getting feedback from members of the league on things to implement, bugs to fix, and additional features.

At this time, I would not like the general public to be able to access this site, so I am not including a link to it. However, if you would like to see the project as it is being developed (and often at times, broken), please send me an email at trotman23@gmail.com and I can send you a link and login credentials to a test account.

View the code on github
Tags: MVCC#.NETHTTPHtmlAgilityPackEntityFrameworkMySql

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

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. I will be working on this project for my whole senior year at UW-Madison. Unfortunately, all of my work on this project is considered proprietary and I am not allowed to provide figures, but I can talk about it.

Barton Button Flap Ski for High-speed manufacturing

Brief Description: This was a 3D SLA printed ski that I designed while working at Kimberly-Clark. The concept of it is that there are little slits in the ski, that blow out a constant stream of air. This air help the flaps of a pad stay in the proper position before they become folded.

Pneumatic Flap Tacker

Brief Description: This is a machine component that I designed, that is attached an outer protective lining to the sides of a pad when it is on a high speed manufacturing line.

Link to project (if public)

Bag Maker Grade Change Parts

Brief Description: I designed a series of additional parts that were placed on a bag maker. These parts allowed for quick and easy grade changes between different size bags.

Drive Gear Reduction System Design

Brief Description: For ME352: Machine Components and Design, myself and 2 other classmates designed a gear reducer. This process involved selecting bearings, gears, shafts, and a power supply. We performed fatigue and stress calculationis on all components.

Adhesive Nozzle Quick Change Tool

Brief Description: I designed a tool for changing out and replacing adhesive nozzle tips on case packagers. This tool allowed for easy set up, and got rid of the need to manually re-align adhesive tips.

Bagger Spreader Fingers

Brief Description: I designed spreader fingers for a product bagger that had air hoses on the tips of the fingers. These air hoses allowed for all sizes and grades of bags to be used, and remove room for human error in grade change processes. The hoses used to be on a different part of the machine, and would have to be adjusted for each size bag that the line was running

Contact

School Email: trotman@wisc.edu

Personal Email: trotman23@gmail.com

Phone Number: (612) 723-6536

Github: trotman23