Projects

jsish

Keywords: Standard ML, Javascript, Interpreter

In the words of Dr. John Clements: "There are a lot of mistakes you can make in designing a language and Brendan Eich made all of them." This is my response.

jsish is a dynamic, strongly typed, interpreted language written in Standard ML. It began as a Javascript clone in a programming languages course and was a good exercise in bad language design, as its semantics included many of Javascript's more questionable decisions.

I extended the project by fixing some of Javascript's bad design decisions (like binding variables to the global scope if declared implicitly and the entire concept of the global object) and adding type safety to make a simpler, safer version of the language. I haven't found a use for it yet, but it was fun.

Check it out on GitHub.

Markov Poet

Keywords: Python, Text Generation, NLP

In an AI course, some classmates and I had wanted to experiment in the domain of poetry generation, so we designed and developed a LSTM RNN. It worked and generated some cool phrases, but one of my classmates noted that it seemed like we were using a neural network for the sake of using a neural network. He was right.

As a result of said project, I had accrued a large collection of haiku training data. Some time later I had picked up an odd interest in Markov Chains and decided to implement one using said large collection.

The result was pretty cool. Poetry is a different medium than prose, so I implemented a state model that includes newlines as a sink state to reflect this. Because of this, the chain can generate a certain number of lines instead of words so the text has a different flow.

Check it out on GitHub.

Persona 5 Items

Keywords: Web, Javascript, React

I love JRPGs. I grew up on Final Fantasy and they will always have a special place in my heart. When Persona 5 was released, I was pretty sure that I would put hundreds of hours into it. I was right.

With Persona's extensive rotating shop inventory, I found that I was spending a lot of time on Google. Around the same time, I had been getting a lot of recommendations to learn React. So I put the two together and made this thing.

Try it out or check it out on GitHub.

Madotsuki Walker

Keywords: Web, Javascript, jQuery

Once upon a time, I hacked together a web-based visual novel by transforming DOM elements into menu bars and sprites. A few years later, I thought it'd be cool to apply this transformation to a more dynamic gaming medium.

Thus came the Madotsuki Walker (sprite/name stolen from Yume Nikki, because I am not an artist), which was an experiment in animating in-browser sprite movement using the DOM and CSS instead of with a canvas. This was a terrible idea.

Try it out or check it out on GitHub.

Inkwell

Keywords: Mobile, C#, ASP.NET, Xamarin, Web

Inkwell is a draw and chat app that was once available on Windows, iOS, and Android. It's no longer being maintained or developed. That's probably for the best.

I joined the team during a transitionary period and was initially tasked with heading the rebranding and redesign of the app. After deploying the marketing website with a closed alpha release, I then focused on development and optimization of the REST API.

Check out a cached version of the marketing website.

slamrater.com

Keywords: Web, Javascript, jQuery, PHP, MySQL

Slamrater was a less-than-tasteful image sharing website a friend and I created to "disrupt a multi-million dollar market". We didn't make our millions, but it was the first LAMP stack and is what got me started on web development.

It's no longer on the interwebs, and my museum records aren't exactly PG, so I'll leave details up to your imagination.

Facebook vs. Fake News

Keywords: LaTeX, Ethics

This is an academic paper I submitted on the ethics of Facebook's response to fake news during the 2016 United States Presidential Election.

In my non-expert opinion, Facebook did an excellent job. Widespread disinformation was/is/will always be detrimental to the public, and Facebook handled its spread gracefully without crossing the line of censorship.

You can read it here if you'd like..

Resume

ProntoBev

Keywords: Web, Javascript, CSS, Shopify

November 2017 to current

Two days before their Shark Tank debut, Pronto Concepts called me looking for someone to prepare their storefront for the incoming flood of orders.

The pitch went well, the website kept up with the traffic, and I've since joined the team to take care of fun technical things like further web development, deploying virtual machines, and implementing scheduling exploits.

Purchase your own ProntoBev. I'm a fan.

PolyRents

Keywords: Web, Javascript, React, Python, Django, Postgres

January 2017 to July 2017

PolyRents is a startup seeking to modernize the outdated rental application process. It piqued my interest because I was subleasing at the time and thought it would ease my process.

I learned Python at PolyRents (now one of my favorite languages), focusing on creating a citations app that scraped police logs to help landlords determine the reliability of potential tenants.

Sign up for PolyRents.

Tapestry Solutions

Keywords: Java, Actionscript, Postgres

June 2015 to May 2016

At Tapestry I contributed to a medium-sized development team working on military inventory software. Our project was built on a Java Spring backend and ActionScript Flex frontend (I know, right?).

It was my first corporate position and my first professional introduction to the software development process. It was an invaluable experience and I learned important lessons -- for one, that I can't work on a project that doesn't inspire me. I am driven by my passion.

Trendtech Ventures

Keywords: Web, LAMP, Server Administration

January 2013 to August 2014

Trendtech Ventures was a youthful attempt at starting the next Google. It was perhaps a little misguided, but it was one of the most important decisions I have ever made.

This was my first introduction to developing for web: my first LAMP stack, my first event handler, and my first bug in production. Without it, I wouldn't be the programmer I am today.

Connect

Let's get in touch.