Jarod DeWeese

Why did I decide to go into CS?

Although I grew up in rural Kansas in a high school that didn't offer CS classes, I began to teach myself programming. I started out working through the Automate The Boring Stuff Python book, and began to fall in love with Python, programming and CS. As someone who has always enjoyed Math, Science and Tech, I realized marrying my love of those with my newfound love of programming meant that CS was the right major for me.

What has kept me in CS?

Today I love CS for all the same reasons and more. After gaining experience through college, professional opportunities, and life I better understand how I can use my degree. I'm excited to use my skills to make an impact on real people and be able to know that by using my experience I'm making other people's lives easier.

What kind of work do I have experience with?

I have experience working with Python, developing both Flask and Django applications in addition I'm comfortable with doing things on the front-end of web development, but enjoy server side development more. Although most of my Python experience is in web development, I am also very comfortable using Python for other scripting tasks and automating tasks and is my go-to language for solving problems.

What is my ideal job?

Right now my ideal job would be as a Project Manager or Data Scientist at an organization that focuses on doing environmental sustainability research or other work that aids nonprofits or humanitarian work. A few organizations I'm particularly interested in include ESRI, NREL, and the Climate Corporation

Skills

Here are just a few of the skills I've picked up from my time as a computer profesional.

  • Develop production code in Python, C#, HTML, and Shell.
  • Develop and deploy web applications on Heroku.
  • Manage code and do code reviews with version control tools like Git, GitHub, and BitBucket.
  • Use ticketing and issue tracking software such as Jira and YouTrack
  • Read, write and manage documentation.
  • Write appropriate unit and integration tests for my code.
  • I am comfortable working in Unix environments. This includes writing shell scripts, navigating the shell and other operations with Unix environments
  • Drink much coffee

A Few Accomplishments

This portfolio

This website is written in Python using the Flask web framework, generated with the Flask cookie cutter tool and the html templates are based on the HTML5UP Read Only template. If you want to see the code for this website you can visit its repository. I had originally written my website as a Django application in 2018, but that proved to be overkill for this small of an application, Flask does most everything I need pretty seamlessly.

Bot for my fraternity's Slack

In my fraternity, we manage cleaning duties via a Slack channel. It is our Senior Steward's responsibility to assign cleaning duties for all 40 of us every week, and asked me to create an automated solution to do this every week. To tackle this challenge, I made another Flask app for this project. I set it up so that it be started either via a web portal or by using a slash command in the Slack app. It would then automatically randomly assign cleaning duties to the relevant people and post the resulting duties in Slack. This proved to make the Senior Steward's job easier.

After implementing this app, I also implemented the functionality to allow members to request a late plate from a dinner crew leader. After implemented, this feature would listen for if a user mentioned the phrase "late plate", and if so it would then message the dinner crew leader asking that they make one for the corresponding user, as well as sending them a follow up notification 15 minutes before dinner. Again see my GitHub for a version of this software, but with confidental information scrubbed from the project.

Implemented surgical implant control

Over the summer of 2019 I worked as a Software Engineering Intern for Softek Solutions in Prairie Village, KS. As an intern, my main project was to create a control into their system that plugged into healthcare databases to identify patients that had potentially defective implants in them. Doctors and clinicians across the country can use my work to better help their patients that have pacemakers, joint replacements, surgical mesh, or other items that have been deemed unsafe.

Co-created Soduku solver in C

In the fall of 2018, in my C language class my team's final project was to make a sudoku solver written entirely in C. This project was a command line utility that could solve, check or generate soduku boards. In this project, as I knew the most about using Git for collaborating, I took the coordinator role and help the others understand the basics of adding, committing, pushing, pulling, rebasing and merging. Additionally, I provided a comprehensive suite of tests for the other two to test their features on, as well as created a shell script for showcasing our project to the class.

My Personal Engineering Process

This section describes my personal engineering process, specifically my process when developing software solutions. I apply this process to both personal and professionals endeavors in Software Development.

  1. Requirements gathering stage. In some instances, the requirements may already be gathered for me in the form of an issue previously. However, if I'm working on a software solution that is open ended, I will propose a few different strategies weigh the pros and cons of each.
  2. If applicable get feedback from stakeholders about implementation. This has proved useful time and time again, as the best way to prevents bugs is through good design.
  3. Code my solution. This is my favorite part of my engineering process, as I get to flex my creative muscles and implement interesting algorithms, and learn cool new technologies. While in the coding phase I keep in mind the S.O.L.I.D. principles. If working on an existing project I will also take time to refactor relevant code if needed.
  4. Test the product. This may include automated and/or manual testing depending on the importance/scope of the project. If performing automated testing, I do my best to write my tests as I go, as specified by Uncle Bob. By adhering to his 3 rules of Test Driven Development, and the Red - Green - Refactor pattern, tests will be of a higher quality as will be the code.
  5. Lint and fix my code. In the development community, it is widely agreed that having consistent and correctly formatted code make developing systems much easier.
  6. Get internal feedback on my product. At this point, the code is nearly production ready depending on the scope of the project. Once given the green light, the code is ready to go to the next stage.
  7. Push to next stage. This may mean immediately deploying the software onto a server, being a script I keep in my local arsenal, or if a production environment, my code being merged into the master branch.