Projects

This Website

Welcome! This website serves as a portfolio for me, Adam Harvey. Below, you'll find a list of projects I've worked on; click on any of them to see more.

Most of them include built-in browser-based demos for you to try out yourself, but the rest still come with written explanations, as well as downloads of the project and its source code, if applicable.

Of course, this site itself is a project of mine too! I set up this server from scratch, and put together all the pages by hand - click here to learn more!

IMatch

IMatch is an image-matching algorithm designed to match identical portions of images - even after scaling, rotation, transformation, flipping, image artifacting and more!

It uses OpenCV's implementation of ORB to find image features, then performs Hamming nearest-neighbor searches using Locality-Sensitive Hashing, before using RANSAC to find the appropriate transform to overlay the images with.

You can run it in your browser, on any device, by clicking here!

Physital

Physital is a browser-based n-body orbital mechanics simulation, which models gravity and collisions in a 3-dimensional universal reference frame.

Internally, it uses a home-made RKF-45 ODE solver to model the gravitational forces between pairs of bodies.

I designed it specifically to run smoothly on all devices, so give it a try on yours by clicking here!

Scrambled Pizza

Scrambled Pizza is an image-to-image encryption algorithm: it takes an image and a password as input, and returns a "scrambled" image of the same dimensions.

While not a practical encryption method for most uses, it does produce a file which is visibly safe and easy to handle, due to its usage of a standard lossless image format (PNG).

Early versions were written in Java, but you can try out a new browser-based version (using web workers) by clicking here!

Huffman Compressor

The Huffman Compressor is a lightweight browser-based implementation of a Huffman Coding, the optimal method for symbol-by-symbol encoding with a known distribution.

While its compression ratio is less than that of a more complex dictionary, arithmetic, or Golomb coding, I find it an interesting and approachable example of how compression works. Click here to try compressing some text of your own!

Lifeline

Lifeline is an anonymous browser-based chat room running in JavaScript, where all users can talk to each other via a central PHP server (which uses a TXT file for statefulness).

Upon joining, each user is assigned a human-legible username based on a hash of their IP address. Click here to try it out - preferably with some friends to help you test it!

Hyper Operator

Hyper Operator is a simple browser-based idle game; the player accrues resources over time, then spends them to increase the rate at which they accrue.

The main point of this project is that there's no maximum value - I implemented my own arbitrary-precision binary format to handle the large numbers involved, as well as a system to let the user save their game as a string. Click here to try it out!

Timeline

2021-Present: Job-Searching

With my degree in hand, I'm looking for a job. But not just any job - I want to work somewhere that excites me, and pushes me to be my best.

If you're visiting this site, there's a good chance my resume sent you here, which means I'm interested in what your company does! Keep scrolling to learn more about me and my past; it might help you decide whether I'd be a good fit in your team.

2017-2020: Bachelor's Degree

Starting in June 2017, I pursued a Bachelor's Degree in Computer Science from the Fulton School of Engineering at Arizona State University. I graduated in December 2020 with a GPA of 3.97.

Graduation also required me to complete a "capstone" project with a team of fellow students and a local business - the experience of working in a group like that was one of the most valuable during my time at ASU.

My time there wasn't always smooth sailing; my first application was rejected, and for the first few years I wasn't even allowed into my desired major! But I stuck with it, and in the end it worked out wonderfully.

Nov. 2019: SpaceVision 2019

As a member of ASU's Students for the Exploration and Development of Space (SEDS) chapter, I was given a role in the planning and execution of SpaceVision 2019 on ASU's campus.

Prior to the event most of my work focused on helping the website team, but during the event I was heavily involved in logistics and operations.

I acted as a guide to help hundreds of students check in and find their way around, and got to talk with representatives from companies all over the space industry while helping them set up their booths and presentations!

2015-2016: Sales Simplicity Software

For about a year I worked as a Reporting Developer at Sales Simplicity Software, a company which developed and maintained real estate customer resource management software.

Initially my work consisted primarily of simple MS T-SQL queries to the database, followed by graphical report design in Crystal Reports to display the data returned by the query.

As I became more familiar with the system, I took on some database administration roles: coworkers consulted with me on the best way to implement new features, and I performed regular checks on the health of the database.

I also became familiar with optimizing queries - some tables contained billions of records, but customers expected reports to be near-instantaneous, and it was my job to enable that through good indices and well-written queries.