html, css, javascript, typescript, node.js, jquery, sql, youtube api, twitch api, kick api, stripe api, google analytics realtime api
In 2025, I founded a startup called VOD Chatter. VOD Chatter hosts replays of old live streams so audiences can watch together while streamers are offline.
In 2021, I joined the development team at Punchmark and quickly rose to Director of Technology. Punchmark is a content management system that allows jewelry store owners to manage their own ecommerce websites.
Repo Roster
html, css, javascript, jquery, php
In 2020, I made a Repo Roster, which generates SVG images for GitHub users to embed into their repositories' README files to automatically shout-out all the people that have recently starred and forked their project. This not only thanks people that have already supported their code base, but also incentivises GitHub users to continue showing their support.
Granzow is a company that sells valves, online and otherwise. Feeling that their old website was dated, they hired me to work with a designer to wireframe a new mobile-responsive user interface that would leave their customers feeling more comfortable with their ecommerce shopping experience on any browser/device. After completing the new interface, Granzow asked me to work with them long-term to address their frontend maintenance, backend, and non-website-related technical needs as well.
Rando.js
html, css, javascript, jquery
Rando.js is an open-source tool that I created and released in 2019 in an effort to improve JavaScript's built-in random function. JavaScript developers know that the built-in random function is great for picking a decimal number between 0 and 1, but it takes just a smidgen of extra programming to get it to do much else. What if I want a whole number between 1 and 100? What if I want a random value from an array? What if I don't want to repeat any of the random values until I've gone through them all? Rando.js neatly bridges these small inconveniences so we can all keep our code a bit tidier.
Caterpillars Count!
html, css, javascript, jquery, chart.js, ajax, php, mysql, phpmyadmin, github, red hat openshift, google maps api
Caterpillars Count! is a project hosted by UNC Chapel Hill's Department of Biology. For years, the project suffered from a glitchy website and mobile app, and it had a hard time gaining enough traction to crowdsource much data. In 2017, UNC hired me to completely rebuild the project's tech from the ground up. In under a year, I built a new, mobile-responsive website with in-depth functionality for the project as well as a brand new mobile app for the Apple App Store and Google Play. With the new tech in place, the project began experiencing growth like never before. The project is now international, has gained well over 100,000 surveys as of 2019, and continues to grow larger each year.
Replay Poker Bot
javascript, jquery
In November of 2020, I was playing a free version of Texas Hold'em on replaypoker.com, and I found myself trying to estimate my chances of winning based on the cards in my hand, the cards on the table, and the cards each of my opponents might have. Seeing the timer run low each time it was my turn to bet, I decided that I should open up the browser's console to make my estimations a bit faster and more accurate, and the bot I created helped me win over 20,000 chips. I can't include every hack or tool I make in my portfolio because there are far too many, but I think this is a fun sample.
KoralTV is a project I made on my own out of a desire for convenience. I like to watch cable TV on my laptop every now and then, but it's quite hard to tell what's available to watch. All the shows are on different networks, and all the networks have their own website. If you want to browse around, it takes forever. KoralTV takes the hassel out of browsing online cable TV listings by scraping listings from many different cable network websites in real time and bringing them all to one place. From there, it operates much like Netflix or Hulu. You can rate shows and build your own "list" with your favorite programs, and KoralTV will detect which programs are new or popular and let you know about them.
I am hosting this website on GoDaddy, so if it takes more than 3 seconds for the page to load, I apologize. GoDaddy sometimes throttles my calls because they return a lot of data. I plan to implement result caching as a workaround for this. The website is still new.
Pick Evens
html, css, javascript, jquery
Pick Evens is a web game that I made for fun while in college where you use your arrow keys to choose the even number while fighting against the clock. It only took three or four hours to make in total, but it became quite popular. Within ten days, Pick Evens acquired more than 7,000 users and gained more than enough donations to fund turning it into a mobile app for both Apple and Android, so that's what I did. You can find it on Google Play and the App Store now.
UNC Advising Scheduler
html, css, javascript, jquery, github
All students at UNC Chapel Hill use an online scheduling system to meet with academic advisors. In 2016, the university decided that this system was too outdated and hired me to develop a new, mobile-responsive interface for it that would be extremely easy to connect to a back end. Once completed, this interface was published online and implemented in the CarolinaGO app, which serves the entire UNC Chapel Hill student body. The button to view this interface is just a preview so you won't need to log in with a UNC student account. If you happen to have a UNC student account and want to see this tool in action, you can easily view the live scheduler online here.
Pokemon Go Tracker
html, css, javascript, ajax, php, google maps api
On July 6, 2016, the Pokemon Go app hit the App Store, and everyone poured into the streets looking for Pokemon. The problem for me was that I had a very outdated phone at that time, and I was not able to join the fun. By the time I upgraded my phone in 2017, my friends had caught some really impressive Pokemon, and I was left wondering how to catch up. Luckily for me, I was able to find some raw, real-time data online about the Pokemon in my town. I created a mobile-responsive website to filter out the unimpressive Pokemon from this data and display the rest as sortable Pokemon "cards" that I could use to give myself a leg up. Whenever I had free time, I visited this website and picked an astounding Pokemon to go catch. That worked very well, but I decided that checking the website frequently was too much of a hassel. As an alternative, I created a cron job that would check once per minute to see if any particularly remarkable Pokemon were near me, and if they were, it would text me with a breakdown of that Pokemon's stats as well as a Google Maps link that would take me directly to that Pokemon.
The chance of catching a Pokemon with perfect stats is 1 out of 4,096, or 0.02%. By the end of 2017, I had 50 perfect Pokemon, and 48 of them were due entirely to the help of my tracker.
UNC's Photoelectron Spectra Graphing System
html, css, javascript, jquery, ajax, mongodb, github, red hat openshift
UNC's Chemistry department needed a tool that CHEM 101 students could use to easily display and compare photoelectron spectra graphs, so I, along with a team of three others, developed this website for them. I created the front-end interface, and my partners set up the data on the back end. Today, this website serves all students going through the Chemistry program at UNC.
I made this project in college as a demonstration of machine learning. When you visit twitch.tv, you can watch live streams of people playing video games, and each stream has a live chat log on the right side of the screen where viewers can talk with each other and the streamer. This project reads that chat log and isolates words in the chat that it thinks might be indicative of the game that's being played in an attempt to make a guess. The idea is that being able to label streams automatically in this manner will allow streams to be categorized without any manual labeling effort.
When you click the name of a game on the left side of the page, a real chat log that I have saved from twich.tv will start flowing in on the right side of the page. It is important to note that the model knows nothing about which game you've clicked, and it has no prior knowledge of the chat log that it's reading- so the results you're seeing are the same kind of results you see when we apply this model to a live chat stream on twitch.tv. It's just must simpler to show you a preview if I save a chat log beforehand for use. For the purposes of this demonstration, the project will guess which of three games the chat is talking about, but this concept could be expanded to include many more games.
This project is 91% accurate after reading 150 chat messages, 96% accurate after reading 500 chat messages, and evermore accurate as the chat log continues to roll in.
My partners for this project were not coders, so the deal was that if I would create the project, they'd write a paper about it. So, if you'd like to learn more about this project, here's that paper.
-------
As a side note, if you're interested in playing around with basic models, try making your own with this other, simple website I built. Of course, this won't be a "machine-learned" model; it'll be more of a human-guessed model because you'll just be guessing which terms you should use. Type words that you think might be indicative of "good" reviews on the left side, and type words that you think might be indicative of "bad" reviews on the right side. Then, click "calculate accuracy" to see how accurately your model makes predictions! I've started you off with some terms, but see if you can improve them. How high can you get?
Yoforia
html, wordpress
I did not create this website, but I did manage its content by editing its HTML through Wordpress, and I created some of its graphics. This website is no longer available online, but it served a popular, international frozen yogurt chain for years.
Pulse Patterns
html, css, javascript, jquery, eyecon color picker api
Pulse Patterns is an implementation of Conway's Game of Life, a simulation game in which each cell in the grid is either alive or dead and is surrounded by some neighboring cells. Every cell interacts with its neighbors based on their alive/dead state. If a cell is too lonely or too overpopulated, it will die! But if conditions are just right, it can be brought back to life. Edit the specific rules by clicking "settings," read about the controls below the grid, press "random" if you want to populate the grid randomly, and use start/stop to see how different civilizations pattern out!
My favorite way thing to do with this is increase the complexity under the "Settings" panel, click "random" above the grid, and then click "start." It looks like you're watching bacteria through a microscope, which is really interesting.
Bytecrank is the first full-stack website I ever developed. I created it to make front-end coding easier and faster. The main page offers customizable code snippet generators that anyone can use, but you can find the really interesting tools by clicking the icons at the top-right corner of the page. There is a real-time code sandbox where every character you type gets previewed as you type it, a hex/rgb color picker, a font picker, and the Bytecrank Filebox.
The Bytecrank Filebox should really get its own mention on my portfolio because it's a full site in its own right. I'll list it just below here instead of lumping it in with Bytecrank altogether.
The Bytecrank Filebox is my favorite tool that Bytecrank (mentioned above) offers. You can upload your front-end documents, images, videos, etc. to a customizable directory here, and they will automatically be available online. Just click and copy the link to share it with whomever you want. I host many of my personal websites on my Bytecrank Filebox to this day.
You do need a Bytecrank account to use a Bytecrank Filebox, so the following button will link you to the main Bytecrank page, where you can sign up by clicking the account icon near the top-right corner of the screen.
Minty Mark is a mobile-responsive personal project that I made with a single, simple goal in mind- making website bookmarks searchable so you never lose track of them. Signing up only takes a second, so feel free to give it a try.
ORM Cruncher
html, css, javascript, jquery
I made ORM Cruncher when I was dealing with a project so large that I had trouble remembering all the exact method names that each class used. I was constantly scanning through files to remind myself, so I made this website as a remedy. If you upload a folder full of exclusively PHP class files to ORM Cruncher, it will analyze them and break them down into searchable methods. When you make your search, ORM Cruncher will show you all applicable method results (color-coded by which class they're from), their parameters, and their return possibilities. It's a nice way to keep up with things.
Carpe Noctem
html, css, javascript, jquery, ajax, php
Carpe Noctem, LLC needed a basic, mobile-responsive homepage that users could use to contact them, so I made this webpage for them.
Mark Halvorson
html, css, javascript, jquery, ajax, php
Mark Halvorson needed a portfolio website for his projects, so he got in touch with me. He makes websites using Wix and does a bit of writing as well.
Speech Mechanic
html, css, javascript, jquery
Cavin Fertil, A man who helps others improve their communication skills, hired me to create this mobile-responsive starter website for his new business. Its purpose was to serve his business for a year or two as he gathered more content for a fuller website.
The Road Matt is a simple, mobile-responsive website I made for an amateur photographer who plans to use it for his upcoming photos and videos.
Kreations by Kenn
html, css, javascript, jquery
This is a sample website I put together for a man named Kenn that I used to know who sold pottery. This website was never actually put into production, but I like the design, so I figured I might as well include it towards the bottom of my website projects portfolio.