I've been coding for over a decade since I built my first PHP website for a gas delivery business. Since then,
I've expanded my knowledge to include, among other things, Python, Ruby / Rails, Javascript / Typescript, and React.
I delight in the puzzle of figuring out how to integrate a front and back end as smoothly as possible. I've worked
on various personal projects and webapps over the years and then, 5 years ago, decided to turn to coding as a full time
career.
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 GRAFFITI, a Chrome extension that lets you interact with other users on any web page, and a mobile
rhythm game, Beatburner, that auto-generates tile-tapping levels from any music. I hope
you take a moment to look at some of my projects.
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, building boats, and playing the flute.
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.