Eye Movement Desensitization and Reprocessing Therapy (EMDR) is a modality of psychotherapy which was developed for the treatment of PTSD.
A key component of EMDR therapy is bilateral stimulation (BLS), where stimuli are applied to alternating sides of the body. BLS is often provided in office settings via the use of two handheld devices (tappers) that vibrate in an alternating fashion.
Teletapper is a web application that provides BLS for EMDR teletherapy through the use of video game controllers.
A react native app that uses Picture Transfer Protocol to view images stored on another device connected via usb.
View SourceAfter Covid forced us all to work from home, I was amazed at the sheer number of videoconferencing products on the market. I wondered how hard it would actually be to write a simple app that does two-way camera and audio streaming between two browsers. It turns out it's not that difficult because WebRTC already solves most of the hard parts. I found WebRTC interesting because once a connection between two clients is established the clients talk to each other directly instead of using the server as a middleman.
This repo contains a simple WebRTC client and brokering server I wrote using React, NextJS, MobX, and PeerJS. The reason I chose NextJS was because I could run the PeerJS brokering service from within Next's server code via express middleware. This means you would only have to deploy one node program to serve the client webpage and run the brokering server.
You can see an example of this code in action here.
HHVM is a virtual machine used to execute programs written in Hack or PHP. During my time at the AEA we floated the idea of running our existing codebase on HHVM for better scalability. I created this project as a way to see if our code would tolerate being executed on HHVM. Unfortunately it was discovered that HHVM was not compatible with the older parts of our codebase. After the project was abandoned at work I repurposed it as a container to host my personal website.
While working at the American Economic Association my team was tasked with adding a content management system to their existing website. We ended up implementing our own solution because we could not find anything off the shelf that satisfied our design requirements.
Features I worked on include:
It turns out that with a little bit of monkey patching , ratchet servers can coerced into accepting binary frames. I took that idea and ran with it to make a real-time API over websockets using an event-driven stream implementation.
When I worked at the AEA we often encountered scenarios that required a single transactional operation across multiple database connections. A team member discovered MySQL's XA transaction feature and realized that it was a good fit for solving these kinds of problems. This plugin integrates XA transactions into Yii2's Active Record framework.
The Matasano Crypto Challenge is a sequence of cryptography exercises. This repository has my results for the first section.
For my mathematics capstone, I studied proofs of the Hook Length Formula. I wrote a paper and made a poster. I also wrote a Mathematica program to demonstrate the brute forcing algorithm in Greene's probabilistic proof.