Through my coursework I have demonstrated proficiency in computer science core principles such as software design and engineering, algorithms, data structures, and databases. I am proficient in Object Oriented Programming in languages such as C++ and Java. Other languages, tools, and skills can be found in the Skills section. I also excel in collaborative environments through excellent communication and utilization of version control, such as Git. My professional experience has allowed me to hone my skills communicating with stakeholders, which enables me to validate and verify requirements, and provide updates on current projects. Projects included in my portfolio prove these proficiencies.
The first project recreates a scene using the OpenGL API, and it shows my skills in software design and engineering by implementing the API in a structure that is easy to follow and reusable. The second project uses vectors and smart pointers to conduct a series of GoogleTest unit tests, proving my proficiency in data structures. It also provides an example of a binary search tree algorithm. Both projects were written in C++. The third project included is the most robust, resulting in a showcase of my abilities across all the above categories by designing a daily weight tracking database as an Android application. Since this program was written in Java, it allows for an Object-Oriented Design. Various classes, methods, and resource files are used to create an interface for two SQLite databases with full Create, Read, Update, and Delete (CRUD) functionality.
Each of these projects was recently enhanced (November 2022) to further showcase my proficiencies. A video code review of each project can be found from the Code Review option in the menu. This code review goes through each project analyzing the structure, documentation, variables, arithmetic operations, loops and branches, and defensive programming for areas of improvement. It also outlines several enhancements that were then implemented. The repositories containing the pre-enhancement code are also located in the Code Review section. Finally, the post-enhancement version of each project can be found in the Projects section. Detailed proficiencies can be found in the accompanying narrative for each project.
Experience
Talent Director
Michael Latas & Associates
Recruiter for Construction and Hospitality industries. Responsibilities include: finding quality candidates, sell candidates on job opportunity, open and timely communication between clients and candidates, and tracking candidate status throughout the process. Acheivements include: highest overall placement rate, and consistently assigned highest priority clients.
September 2022 - Present
Director of Human Resources
Great Lakes Mobile
Lead all human resource operations with an emphasis on employee knowledge and support, which is vital for employee retention in an industry with a high turnover rate. Primary responsibilities include: on-boarding, off-boarding, monitor staffing levels, continuation training, conduct performance reviews based on relevant KPIs, provide mentoring to peers, etc.
March 2020 - August 2022
IT Administrator
Great Lakes Mobile
Special project to lead tranistion of retail stores to new inventory tracking and point of sales systems. This required hardware installation, software installation, employee training, working with several vendors, and general troubleshooting.
January 2019 - July 2019
District Sales Manager
Great Lakes Mobile
Lead and support day-to-day operations for 12 AT&T stores, as well as strategic growth planning. Use KPIs and other historical data to find areas of opportunity for both hands on and hands off training for Managers and Sales Associates.
Delivers high Quality, testable, and scalable software
SecDevOps mindset
Cross Functional Collaboration
Agile Development & Scrum
Software Reverse Engineering - Intel IA32
Interests
Apart from being a software engineer, I enjoy most of my time being with family, friends, or my dogs. In the winter, I play hockey and try my best to keep warm. During the warmer months here in Northern Michigan, I enjoy golfing, boating, and going to the beach. Being from a tourist destination, I am obligated to say I enjoy the local food and beverage scene, as well.
During my downtime, I am a fan of many sci-fi and fantasy genre movies and video games, I am an aspiring chef, and I spend a large amount of my free time exploring the latest technology advancements in software engineering.
This code review is for the below three projects and outlines a series of enhancements that were completed. The original projects, prior to these enhancements, can be found from the repository links below.
This project's goal was to recreate the scene below using the OpenGL API. For this project, the goal was to recreate as much of the scene as possible, while staying within the bounds of the scope for this project. The objects are modeled using a combination of basic shapes. The hedges are recreated with cubes and pyramids. The bushes are modeled using spheres. The centerpiece is created using a cube, and 2 pyramids with some textures. And finally, the XZ plane is the ground. The Phong model wal used to calculate the specualar, diffuse, and ambient variables for the lighting. This scene utilizes two light sources. One is the Sun including angular rotation about the origin, and the second is an invisible cube to create some ambient light in the night cycle. An image of the scene that was recreated and a video of the final product are below:
Scene that was recreated
Video of Scene prior to enhancements
Video of Scene after enhancements
Computer Science Capstone Enhancement Narrative
For my first enhancement I worked on the CS 330 Computation Graphics and Visualization final project. This project was started in October of 2021 and was one of the first complex programs that I had to work on. This program utilizes several other sources of code created by others and successfully puts them together to achieve the intended result. By doing this with consistency, an easy-to-follow structure, and comments that will allow any coder to understand the program’s logic, I have demonstrated abilities in Software Engineering and Design. Specifically, the structure of the program allows for future objects to be easily added with the intention of adding detail to the scene. I demonstrated this through my original code and it’s enhancements, which include: two new hedges, the Sun revolving around the origin, a re-worked center road object, a skybox, refined comments, redundant code removal, style consistency refined, and security modifications.
Adding these objects required a few different strategies. For the hedges I used the existing outer hedge object. This object was scaled and then translated to the position it is in now, and this enhancement was done with only 5 lines of code (efficiency). To create the motion of the sun, I added an angular velocity to the object’s position allowing it to rotate around the origin. Then I added keyboard functionality to pause the motion. The “L” key will start the motion and the “K” key will stop the motion. While adding these enhancements to the project, the mismatched textures of the center brick road were too obvious. So, I created a new object with its own texture coordinates to avoid reusing the same road object. Lastly, the blank backdrop was apparent, so I added a simple skybox.
Like I mentioned earlier, this was my first complex program. Naturally, there was over-top commenting and redundant code. For example, when adding additional objects before, there was a lot of resetting variables that were already set, or repeated variables due to re-used objects. I cleaned this up and added comments to make it easier to follow. There was also some style (spaces, indents, newlines, etc.) that needed to be straightened out for consistency. And finally, I added in default else statements and caught a couple of memory leaks for added security and efficiency.
Honestly, coming into this enhancement I was a little nervous. I could not remember much about the code, and it was a challenge for me during the course. However, after these enhancements, I realized that it was not that hard, and it all came back very quickly. So, the main thing that I learned from returning to this project was confidence in my own abilities.
Computer Science Core Proficiencies
[CS-499-01] Employ strategies for building collaborative environments that enable diverse audiences to support organizational decision
making in the field of computer science
Through the comment structure and modular design, any programmer familar with OpenGL will be able to make changes or additions.
[CS-499-02] Design, develop, and deliver professional-quality oral, written, and visual communications that are coherent, technically sound,
and appropriately adapted to specific audiences and contexts
This project utilizes DLLs, headers, and other resources developed by others which deomstrates my ability to utilize work created by peers. My code review of this project also effectively demonstrates this proficiency by communicating areas for improvement and describing functionality.
[CS-499-03] Design and evaluate computing solutions that solve a given problem using algorithmic principles and computer science practices and
standards appropriate to its solution, while managing the trade-offs involved in design choices (data structures and algorithms)
Incorporating basic shapes to recreate more complex ones demostrates this proficiency. For example, the flower centerpiece is a sphere instead of modeling each flower individually. This increases performance and decreases complexity.
[CS-499-04] Demonstrate an ability to use well-founded and innovative techniques, skills, and tools in computing practices for the purpose of
implementing computer solutions that deliver value and accomplish industry-specific goals (software engineering/design/database)
Succesfully accomplished outlined project requirements through implementation of style, security, and other industry best practices.
[CS-499-05] Develop a security mindset that anticipates adversarial exploits in software architecture and designs to expose potential vulnerabilities,
mitigate design flaws, and ensure privacy and enhanced security of data and resources
Developing with a security mindset is something that must be done as a default practice. Through my adherence to security best practices, this code demonstrates my ability in this category.
This project demostrates Google testing functionality as well as a binary search algorithm. There are several positive tests and 2 failed tests to show Google testing functionality. The last test also includes a binary search alogorithm to provide an example of a Computer Science algorithm. Below are screenshots of the binary search algorithm and unit test results.
Binary Search
Results of Unit Test
Computer Science Capstone Enhancement Narrative
The artifact for my second enhancement is from the CS 405 Module 4 assignment. It’s purpose was to demonstrate unit testing by providing a few examples and then having us create some of our own unit tests using the GoogleTest API. This assignment is from June, 2022.
This assignment demonstrates my ability to use complex data structures, such as vectors and smart pointers. It also demonstrates utilization of the GoogleTest API. A big reason why I chose this artifact specifically is that a lot of job descriptions seem to have unit testing as a qualification. Including this artifact proves that I am a capable of incorporating unit testing. Finally, this artifact demonstrates my ability in algorithms by implementing a binary search tree in one of my enhancements. I build a collection using vectors and pointers, then sort, then BST for a specific value.
The enhancements done for this project were very straightforward. I added in 3 unit tests using the GoogleTest API. These tests were to verify a specific addition to the collection, verify removal of a range of elements within the collection, and prove functionality of a binary search tree.
Computer Science Core Proficiencies
[CS-499-01] Employ strategies for building collaborative environments that enable diverse audiences to support organizational decision
making in the field of computer science
Clear and concise commenting supplements an intuitive and easy to follow structure.
[CS-499-02] Design, develop, and deliver professional-quality oral, written, and visual communications that are coherent, technically sound,
and appropriately adapted to specific audiences and contexts
Articulated the enhancements and demostrated the functionality clearly in my video code reveiw.
[CS-499-03] Design and evaluate computing solutions that solve a given problem using algorithmic principles and computer science practices and
standards appropriate to its solution, while managing the trade-offs involved in design choices (data structures and algorithms)
Shown through the use of vectors, pointers, loops, and a demonstration of the binary search tree alogrithm.
[CS-499-04] Demonstrate an ability to use well-founded and innovative techniques, skills, and tools in computing practices for the purpose of
implementing computer solutions that deliver value and accomplish industry-specific goals (software engineering/design/database)
Shown by successfully implementing GoogleTest unit tests that cover all possible cases. The tests were also implemented using various C++ functions displaying creativity in design.
[CS-499-05] Develop a security mindset that anticipates adversarial exploits in software architecture and designs to expose potential vulnerabilities,
mitigate design flaws, and ensure privacy and enhanced security of data and resources
Demonstrated by incorporating security best practices such as default else statements, data validation, input validation, overflow avoidance, etc.
Weight Tracker is a fully functional Android application that utilizes SQLite databases to track the user's daily weight. The databases demonstrate my ability to implement Create, Read, Update, and Delete (CRUD) operations for a databases. These functions are implemented to avoid any SQL injection and adhere to data validation / security best practices. Furthermore, this application has usses several classes, methods, and resource files that are consistent and follow style guidelines.
Create and Read Operations
This video demonstrates the Create functionality for the weight.db database as a menu option from the application's landing page. Each entry requires a unique date and a weight. All other information, such as delta and category, is optional. This information is calculated by creoss referenceing the user.db goal weight column or by the default constructor depending on the scenario. The Read functionality is shown through the Recycler view on the app's landing page.
Update Operations
Keeping in mind user experience, a design decsion to have the update goal option be located in settings was made. Having a seperate goal update option allows the user to only set the goal once, rather than have to set it for each entry. The user also has the option to omit a goal.
Updating is done by going to the "Edit" page and entering a weight for a give day. If an entry matches that date in the database, then this entry will be updated. The database enforces unique dates, so there will only be one entry getting updated for the given day. If no entry exists for that day, then the user will be prompted to check the date and try again.
Delete Operations
Similar to the update operation, the delete operation is completed through the "Delete" page by selecting a date and clicking "Delete". If an entry exists for this data then it will be deleted.
Computer Science Capstone Enhancement Narrative
This artifact is from the CS 360: Mobile Architecture and Programming final project. For this project we were given three options to design and create an Android application. I chose to create an app that allows the user to utilize CRUD operations in a daily weight tracker that would also display the delta from a user defined goal weight. This project was originally created in January of 2022.
This assignment has a complex, object-oriented structure that utilizes several classes, methods, and resource files all created by me. The application runs intuitively and is designed with a security first mindset to ensure that there are no database vulnerabilities. Furthermore, it demonstrates my ability to utilize SQL databases by creating CRUD operations for two separate SQLite databases. These databases hold sensitive user information that is only accessible to appropriate user. This artifact was improved by adding CRUD operations for an additional column in the weight.db database to track the category of workout the user has conducted on a given day.
The enhancements done this week were very straightforward. I added CRUD operations for a fifth column in the weight database. This column is visible within the WeightDataActivity screen, so it required formatting the recycler view and adding in additional variables. For the input validation I used a spinner, which was a new concept for me. It was relatively straight-forward to implement and provides input validation to avoid SQL injection.
Computer Science Core Proficiencies
[CS-499-01] Employ strategies for building collaborative environments that enable diverse audiences to support organizational decision
making in the field of computer science
Accomplished through clear and concise commenting, and by using appropriate naming conventions for variables, methods, and classes. The application uses industry best practices for UI/UX design.
[CS-499-02] Design, develop, and deliver professional-quality oral, written, and visual communications that are coherent, technically sound,
and appropriately adapted to specific audiences and contexts
Articulated the enhancements and demostrated the functionality clearly in my video code reveiw, as well as through the videos demonstrating CRUD operations.
[CS-499-03] Design and evaluate computing solutions that solve a given problem using algorithmic principles and computer science practices and
standards appropriate to its solution, while managing the trade-offs involved in design choices (data structures and algorithms)
Demonstrated through the creation of several different classes and methods using various resource files and algorithms to create a functioning Android application.
[CS-499-04] Demonstrate an ability to use well-founded and innovative techniques, skills, and tools in computing practices for the purpose of
implementing computer solutions that deliver value and accomplish industry-specific goals (software engineering/design/database)
Shown by successfully implementing two separate SQLite databases with full CRUD operations while protecting user data and adhering to best practices.
[CS-499-05] Develop a security mindset that anticipates adversarial exploits in software architecture and designs to expose potential vulnerabilities,
mitigate design flaws, and ensure privacy and enhanced security of data and resources
Demonstrated by incorporating security best practices such as, default else statements, data validation, input validation, overflow avoidance, etc. This is also demonstrated by ensuring only the appropriate users have access to the appropriate information.