hay-kot.dev

Web and Backend Developer

Hayden Kotelman

Hello! My name is Hayden, I'm a backend and web developer working with experience working in Python, Javascript, and Vue. I'm also learning C# and Go with a focus on building web APIs. I'm the creator and Maintainer of Mealie, a self-hosted recipe manager that's been downloaded over 3 million times. I'm currently seeking full-time remote employment.
Github
 

Projects

Mealie

Mealie is an MIT licensed recipe manager built for self-hosted deployment through Docker. Mealie has been downloaded over 3.2 million times in it's first 8 months
Vue: 48%
Python: 41%
JavaScript: 10%
Other: 1%
Technologies Used
  • Python
  • Pytest
  • FastAPI
  • SQLite
  • PostgreSQL
  • Typescript
  • Vue and Nuxt
  • Github Actions
  • CI/CD
Project Difficulties

Working on a open-source project with a larger user-base brought a lot of challenges. In the beginning there were a lot of github issues filed for mis-understandings or bugs related to typos or subtle changes in the API. There were also a lot of time consuming tasks writing boiler-plate code to connect the frontend and backend.

Solutions

To work through these issues, I was able to first adopt the Pytest library and tightly integrate in into by development workflow and CI/CD. This allowed myself and contributors to feel confident that the changes that were being made would not break functionality. I also wrote up extensive documentation on deployment and usage of the application. Finally, I utilized code generation through the OpenAPI specification to bootstrap my frontend API client code and speed up development.

Notable Features

  • User and User Group Support
  • JWT Authentication
  • Custom Themes
  • Mobile Optimized
  • Long Live API Tokens
  • Fuzzy Search
  • Advanced Category/Tag Search Filter
  • Deployment Through Docker
  • Robust Backup

Controls CoPilot

A line of business application built for Johnson Controls tooling for automating daily workflows for system technicians and engineers.
Python: 100%
Technologies Used
  • Python
  • Pandas
  • Pytest
  • DearPyGui
  • Microsoft COM Objects
Project Difficulties

The primary road-block for this project was the way that the initial data was presented in excel. Essentially, this project takes in a larger excel spreadsheet, breaks it down into specific parts based of a set criteria and calculates network address and name information to be used to generate a database. This was typically done by hand with a excel sheet that was friendly to manual use, but not easily translatable to pandas. There was some additional issues with the source file not being in a modern format and overall performance problems.

Solutions

A key first step was to have an extensive data cleaning process with testing to ensure that the data coming in was properly formatted for effective use with pandas. For the source file I was able to work directly with the Excel COM object to do the conversion on the fly so users could input either .xls or .xlsx files. Initially this was a slow process because it had to rerun for each iteration, but I was able to utilize the @lru_cache decorator to improve performance by nearly 10x.

Notable Features

  • Packages as an .exe file
  • Integrated Documentation
  • Log and Error Handling

Technologies

Python

I've been working in Python for over 3 years and have used many libraries including Pandas Flask, FastAPI, Django, and SQLAlchemy to build real projects.

Vue

I love Vue! I've been working with Vue for a little under 2 years. It's my favorite frontend framework and helps me rapidly build interfaces to interact with APIs.

Docker

Docker is the cornerstone of my process for deployment. Over the past 4 years I've integrated docker into my development workflow and use it everyday.

Typescript

I've adopted Typescript in all of my new web projects. The type safety and editor support makes it a great choice for any new project.

CI/CD

I've adopted the CI/CD workflow with Github in several projects to ensure consistency and efficiency for all developers. I don't think you can have a modern workflow without it!

SQLite & PostgreSQL

All my services are backed by either SQLite or PostgreSQL. They both offer great performance and developer friendly features that make interacting with databases a joy.

Contact