Parker Harris
I've been coding for over a decade since I built my first PHP website for a gasoline delivery business. Since then, I've expanded my knowledge to include, among other things, JavaScript / TypeScript, Ruby / Rails, React, and Python. I delight in the puzzle of figuring out how to integrate a front and back end as smoothly as possible. I worked on various personal projects and webapps over the years before turning to coding as a full time career in 2019.

After graduating from the super-competitive bootcamp App Academy, I worked for Amazon Web Services for three and a half years. Recently I've been working on an app to time and manage sailboat races and a mobile rhythm game, Beat Burner, that auto-generates tile-tapping levels from any music. I hope you take a moment to look at some of my projects. It's been over a year since I left Amazon and, though I love the creative freedom that comes with focusing on my own projects, I'm ready to join a team again.

Before becoming a full time software engineer, I was a mechanical engineer and a teacher. I've taught middle and high-schoolers math, science, and philosophy and coached a fledgeling robotics team as they went to their first state competition. On the engineering side I've worked for New York State improving building energy efficiency and designed custom tooling for the manufacture of large aircraft.

I thrive on tackling complex problems, especially in a cooperative environment. Effective technical communication and problem solving is the common theme throughout my career of coding, engineering, and teaching. If something seems impossible at first or if others have tried and failed, I'm interested.

When I'm not coding I like to spend my time sailing, playing chess, and building boats.












Beat Burner

Beat Burner is a mobile & web tile-tapping style rhythm game that you can play with any music!

Rhythm games are tedious to create and sourcing music for the game is an inherent problem. Beat Burner tackles both of these problems: You can use any music that you have access to, and levels are auto-generated.

In addition to 50 built-in songs, you can play Beat Burner with music from any of three other sources: directly uploaded, live radio, or streaming through your computer. Effectively - if you can listen to it, you can play it in the game.

Uploaded songs can be .m4a or .mp3 and the game will auto-generate levels in real-time as you play, so there's no need to wait around while the algorithm does its magic. Beatburner taps into live radio using streaming links; nearly every radio station has one. Currently there are several stations with different genres to choose from. The ability to enter a custom streaming url is an upcoming feature.

An experimental feature of BeatBurner is the ability to bring music streamed from your computer directly to the game. This works with a utility for routing your computers sound to its microphone and then listening to the microphone. The app forms a peer-to-peer connection with your computer through a Beat Burner webpage and streams your computer audio to the game where it's analyzed in real time while you play.

Beat Burner is written in JavaScript and compiled into a mobile app using Capacitor. The small backend is written in PHP.
Regatta Master

Regatta Master is a web app for timing and managing sailboat races.

Running a sailboat race is a tedious task involving checking boats in, setting various classes and start times, adjusting those start times, and siting the line for boats that are over early. Then at the finish, it's necessary to site the line, identify the crossing boats, glance at a clock to note the time, and then write down each boat's exact finish time. It's a stressful job and usually requires coordination of several team members with clipboards all frantically trying to find or record information.

Regatta Master handles the stress for you so you can run a race without pressures like keeping track of which boats have checked in or simultaneously siting the finish line while also looking at a clock. It's all organized in the app. Different classes can be set to start at different times and it manages the different countdowns at the same time. There's an easy feature for calling boats over early and then clearing them once they return to re-start.

Once boats are approaching the finishing line, simply select them from the list, stage them for finish, then tap them as they cross - no need to look at a clock and manually record the time yourself.

You can pre-load all boat information by entering boats one at a time or by uploading spreadsheets that already contain the information. You can even fetch the file directly from a server; no need to download then upload it to the app. Once the race is complete, the app will generate a .csv file with the results.

The Regatta Master web app is written in TypeScript useing React. The upcoming mobile apps will be created from slightly altered versions of the web app using Capacitor.
GRAFFITI

GRAFFITI is a Chrome extension that allows users to leave and view comments on any webpage.

Have you ever wanted to discuss a craigslist ad with your neighbors who are probably viewing the same ad? Ever been frustrated that a youtube video has comments turned off? Ever been taken down a long signup process only to discover that it's a scam, and then wished for a way to warn other users on the first page?

With GRAFFITI, you can interact with other users anywhere on the internet with a comment section that will pop up when you click the extension button. Of course, it's entirely opt-in. Only people with the extension can see or make comments so if you prefer browsing alone, just continue to do so.

The current version of GRAFFITI is for Chrome desktop, but a mobile version for Chromium based browsers, such as Kiwi, is currently under development. Future work includes mobile versions for Firefox and Safari.

The extension is written with JavaScript. The backend is an API built with PHP and utilizing a SQL database.
SimpleChessMove

SimpleChessMove is a public-facing chess API that can suggest a move for a given game state or evaulate if a move is legal.

In coding school in 2019, I built an extensive chess website based on Chess.com, but writing the chess logic was a tedious task that seemed unnecessary. Why wasn't there an API that would do the majority of the heavy lifting for me?

Now there is. Just send your game state to the SimpleChessMove API and it will suggest a move. You can select from five different ai levels, which correspond directly to how many moves ahead the algorithm will look. It can handle any move including castling, en passant, and pawn promotion.

You can also use the API to evaluate if a move is legal, allowing you to write your own chess frontend with minimal need to write your own chess logic.

SimpleChessMove is built with PHP. The frontend demo is vanilla JavaScript and CSS.
CheckMatey

Who hasn't wished for a pirate-themed chess website?

Inspired by chess.com, CheckMatey is a fully-functional online community for chess players with multi-player functionality as well as single-player games against the computer. There's also a community forum where you can share your chess or pirate-related thoughts with other players. You can even use the move-recording feature to share that new opening you just invented.

If your opponent's not online when you want to play, just use the "invite a friend" feature to challenge your friend via email. If you're still online when your friend clicks the link, you'll automatically be put in a game together. Of course, if you prefer Tetris to chess, we've also got you covered.

CheckMatey has a Ruby on Rails backend and a React & Redux frontend.
Wind & Waves

Wind & Waves is an interactive sailing simulator that allows you to learn the basics of sailing a small boat while also investigating the various forces that make sailing possible.

Under the hood, Wind & Waves features a physics model that combines forces on the sail, hull, and centerboard to calculate accurate, real-time boat motion. It even calculates rolling motion, incorporating a sailor whose weight moves automatically to balance the boat.

All the physics modeling is coded in pure javascript. The display in HTML5 Canvas and components are rendered with React.
Don't Die Together!

Don't Die Together! is a top-down, multiplayer zombie survival game. You You start off with a pistol and, with zombies closing in from all sides, you must survive as long as possible. You can invite your friends to play in the same game with you, but be careful: the more players there are, the more zombies arrive!

Don't Die Together! uses MongoDB on the back end and React on the front end. Multiplayer functionality is through Socket.IO. The game rendering uses HTML5 canvas.

Other collaborators on this poject are Ryan Sabik, Wesley Tam, and Ryan Sullivan.
Skills: Javascript / TypeScript, React, Redux, Ruby / Rails, PHP, SQL, CSS, Cordova / Capacitor