Hello,

profile pictureprofile picture

My name is Phil, and I enjoy developing for the web

This site is an informal supplement to my resume emphasizing personal projects.

About Me #

I live in Milwaukee Wisconsin and am currently looking for my next web development opportunity. I try very hard to keep busy with personal projects as a means to learn new tools and become a better programmer. Outside of that I enjoy foosball, a good beer and skiing.

What I'm looking for in a position

I'm looking both for technical freedom and the opportunity to contribute to a product I can be proud of. I hold a high standard for the products I work on, from how the website is hosted and deployed down to the end-user experience. Solving the gamut of issues presented by a product is something I really enjoy, and so I hope to take on that responsibility in my next position.

My Stack #

Front end

I have the most experience with React and Next.js, and some experience with Vue and Angular.

Backed by

Node is my only preference. I've used a few cloud providers for infrastructure, including AWS and Azure, both SQL and NoSQL databases, Redis for caching, and plenty of other supporting backend technologies.

Testing

Mocha, Chai and Jest

My main experience with testing is writing unit and backend integration tests. I haven't dedicated time to learning e2e and have only briefly worked with Jest for the frontend. I would enjoy the opportunity to work with more of these tools.

Preferred OS

Any flavor of Linux. OSX is Linux'y enough.

Side Projects #

The following are personal projects built on my own time

  • What is it?

    A functional utility library with generic data structure support and a good developer experience.

    Why create it?

    I wanted a utility library that supports data structures generically. For instance, a function `mapValues` to map over the values of an array, object, Map or Set. Common FP does this while exposing a functional API intended for a wider audience. I hope that by limiting functional jargon, sticking to intuitive concepts, and providing a modern in-browser code editor with an example for every utility, more devs will feel comfortable with Common FP.

  • What is it?

    A website displaying demo budget data for our condo. The production site requires authentication and is built off Excel spreadsheets.

    This site uses the Vite framework, @nivo/line for the graphs, and Material UI for the components.

    Why create it?

    I'm the treasurer at my condo and wanted a way to both easily view the spreadsheet data and convey it to residents.

  • What is it?

    A simple two-player word game that I initially created for pen and paper.

    Why create it?

    I wanted to build my game and learn a few technologies along the way. This time the new tech was Vue, SSR, how to configure an email server, CouchDB, and how to organize the frontend to coordinate animations. This game is easily the most fun project I've worked on.

  • What is it?

    An interactive website allowing you to modify beer data stored in a SQLite To Rest  instance.

    Why create it?

    To showcase sqlite-to-rest, present some front-end code, and learn Nunjucks, a templating engine that can be used on both the front and back ends.

  • What is it?

    Nch stands for NSS Certutil Helpers and serves as a user-friendly, narrowly focused command-line wrapper for certutil. Its goal is to allow for easy mutual SSL authentication creation.

    Why create it?

    The command line experience for both openssl and certutil is abysmal. Although my CLI has a limited scope, its use is intuitive. The repo doubles as a tutorial since existing documentation for mutual SSL authentication lacks clear examples.

  • What is it?

    A library allowing you to easily create a RESTful API from an existing SQLite database.

    Why create it?

    I wanted to learn how to build a proper Node web API, and building a CRUD interface to a database sounded like an interesting way to do that. I chose SQLite to keep things simple, and I chose a relational database because NoSQL feels too trendy.

  • What is it?

    A LilyPond version manager similar to nvm, pyenv, rvm, etc.

    Why create it?

    Initially, my goal was to enhance LilyBin's functionality, but their LilyPond version constraints held me back. I am confident in Bash and wanted to more fully understand how version management works.