Vincent Shane Finn

Test-Driven Development – Software Architecture – Fullstack Developer

About Vince

I am focused on creating high quality software, while developing skills in Test Driven Development (TDD), Extreme Programming, and Software Design Patterns & Principles. I strive to experience something new every day through online courses or blogs. As a software developer, my current goal is to be surrounded by experienced colleagues in a workplace that exercises Extreme Programming, so that I gain experience in a collaborative environment.

I graduated from Drexel University in 2019. I participated in a few rounds of their coop program, which are 6 month internships with companies you are paired with through an extensive interviewing phase. In my senior year, I lead 2 multi-quarter long projects; one for a game workshop, and one for the CS Senior Design project. I also took a graduate level course on TDD and XP with Boris Valerstein (see disclaimer). After I graduated, I was hired by Imalogix, where I worked at previously during my final coop.


Defining Attributes

  • Extremely passionate about creating high-quality software using TDD and Software Design Patterns & Principles
  • Led several projects at work and college while following best practices, designing clean software architecture, and managing fellow developers
  • Strive to learn something new every day through online courses, videos, or blog
  • Motivate myself to continue improving and developing my programming skills by following a mantra:
    "Do more than I did yesterday"

Skills


Proficient
Test-Driven Development
C#
ASP.NET MVC
Visual Studio
GitHub and GitLab
Javascript + Typescript
SASS
Experienced
Clean Architecture
Java
Eclipse
Vue.js
Unity Game Engine
Swift
XCode
Familiar / Learning
React
SpecFlow / Cucumber (BDD)
Visual Studio Code
React
SQL
C++
Command Line
- I am also developing and refining skills through Udemy and Pluralsight online courses. Click here to see the list.

Projects

Disclaimer: I was fortunate that I took a "Test-Driven Development and Extreme Programming" class in my very last quarter at Drexel. Before this, it was a class on design patterns that sparked my love for designing good software architecture. I was not exposed to TDD before this, but I immediately fell in love with the practice. My professor was Boris Valerstein, who is working with Drexel University to make TDD a required course in the Drexel Curriculum. I keep in touch with him from time to time because he was so influential in my passion for TDD.

Here is the recommendation letter Boris generously wrote for me.

Imalogix

Imalogix is an analytical reporting tool for radiology technicians in hospitals. The company provides a cloud-based solution and web application for customers to monitor patient radiation dose. Other features of the product include managing user accounts and privileges, parsing data from a variety of scanner DICOM files, and utilizing artificial intelligence to provide reports that help improve technicians behaviors.

Click here to see their public website here


Leading Innovation

I had the initiative to take a half-completed mobile app, convert it to a functional solution with ASP.NET Web Forms, then finally rewrite it as a fully operational ASP.NET MVC web application that was built using test-driven development and clean architecture. This app is now the main web application for all customers of Imalogix. Since this project's inception, I have been the most senior developer in charge of leading it, as there were no current full-time employees that ever worked with this codebase. It was just me and the 2 other previous Drexel coops hired alongside me. Additionally, as this is a small company, I have had the privilege to gain the respect of CEO John Heil, discussing requirements and ideas with him regularly. Throughout my time at Imalogix, he has encouraged me to do what I think is right, and allowed me to make the best product I can for Imalogix.

Gaining Experience

I have had the great opportunity of gaining experience in so many areas of software development. I discovered ASP.NET MVC and was able to exercise my newly acquired love for test-driven development every day since I was hired in 2019. I learned about Clean Architecture to organize the codebase, and setup the Autofac Dependency Injection framework to facilitate inversion of control. I found the Dapper ORM to make data services communicate with SQL easier, worked with a consultant to implement Single Sign-On, and setup the means to deploy the app to production. I have also recently set up our project to use Node and Webpack to allow for Typescript development and testing, along with starting to work with Vue.js. I also frequently practice pair programming with fellow developers and am even responsible for Interviewing Drexel Coop Candidates.

A Challenging Problem

Imalogix receives exams for CT scanners, and the technician fills in 3 fields (triplet) to provide details about the intent of that scan. This unique combination of phrases needs to somehow be mapped to a standard protocol (e.g. Head Neck with IV Contrast), so that we can group thousands of exams together under a limited set of categories that the user can set thresholds to alert when those exams exceed some amount of radiation. I designed and wrote a program that parses these phrases for keywords, and working with a Machine Learning developer, provide recommendations for an Imalogix employee to more easily map these triplets to protocols. This is accomplished using a programmatic thesaurus of synonyms mapped to keywords, and several other creative solutions that are still being improved today. The end goal is to have most of these triplets be automatically mapped by AI, and as of writing this, approximately 10-20% of them already are.


Marketing Worklist Page Demo

Overcoming MS (OMS)

The OMS app strives to simplify the process by tracking, analyzing, educating, and building social networks for all those affected by Multiple Sclerosis. By utilizing intelligent notifications and a simple data entry process, the OMS app creates a frictionless application that will serve as a daily companion to those suffering from MS.

Our team won first place in the Drexel 2019 CCI Senior Design Project Competition
Checkout out our keynote presentation, or in a pdf version


The Team

Our team was comprised of researchers who identified the problems we wanted to solve, UI/UX designers who made wireframes and mockups and specified requirements, and fellow software developers who implemented an iOS mobile app. We also consulted with a member from the Overcoming MS organization, Alex Twersky. My role was Co-Lead Software Developer, handling much of the code implementation and software architecture.

CRUD and MVC

We needed a client-side database to work with as the app required a lot of persistent states. We used the realm framework to achieve this, as well as wrapping it in a CRUD (Create, Read, Update, Delete) interface. We combined this interface with an MVC architecture to separate the concerns of the data models from the views, mediated by controllers.

The View Stack and Reusable Views

We had many screens that had views slide from left to right or vice versa based on user actions. This abstractly works like a stack of plates; you can lay one on top of another, and always remove the top plate, or remove all but the first to restart, with slick animations transitioning between screens. Many of these views are inherited from a base view to reduce code duplication in the open and close functions.

Design Doc

Demo Video

Finisher

Finisher is an ambitious third-person action game with a unique mechanic called the "Finisher System". This system lets you grapple an enemy, execute them in a spectacular fashion, and perform different skills that obliterate your enemies . Cut your enemy in half to execute them, and then you have the choice of different "Finishers" from a close-range explosion, to transforming your sword into dual daggers that deal elemental damage.

Download the demo at our website


My Role

I was the Lead Programmer and Software Architect for the gamef, leading several developers and working with game design students to implement this ambitious student project.

Enemy AI

I implemented both individual and group enemy AI behaviors. Everything from combat state machines to a group director that made groups challenging but fair to deal with.

Finisher System

Implemented the game director's vision over several iterations. The final version being a strategy pattern made it easy to implement different finisher abilities that could be chosen after executing an enemy.