In a previous article I talk about creating a CI/CD pipeline for deploying a dev site before deploying to production. In this, I expand on that pipeline to create a separate dev site for each feautre branch so that developers don't have deployments colliding.
As you may know, I spend a lot of my free time playing ultimate frisbee, in large part as a member of Wild Card, a regionally competitive team with aspirations of getting back to the national stage. Part of playing at this level is effective team management over the course of games and tournaments, which can be a difficult task to do by hand or head even for an experienced coach(es). Another significant part is film review and data driven analysis of team strategies. Both of these components are woefully undersupported by sport-specific software. So I'm trying to build something that will bridge the gap between being useful as a real-time organizational and analytical tool in-game and as a more powerful strategical analysis tool in post.
In the fall of 2019, I spent four months studying Mandarin in Harbin, China with CET and the Harbin Institute of Technology (HIT). As part of the program, I was able to design a 1-on-1 class with a HIT professor and chose to do it on computer networks and their security (particularly relevant in China, where there is a nationwide firewall preventing access to certain parts of the internet).
The issue of storing session data on this site came up when I started trying to build a Spotify stats visualizer. The Spotify Web API requires an access token which is retrieved with a combination of the app's API key and the user's login information. The access token then has to be stored somehow so that the user doesn't have to login again everytime the app makes a request. In the case of a web app, it is stored as session data. And as it happens, there are a lot of ways to store session data for a website.
The field of quantum cryptography is built on two foundational principles from quantum mechanics that give QKD protocols (theoretically) absolute security. The first is the no-cloning theorem which simply states that it is impossible to create an identical copy of a particle. The second is that measurement of a quantum particle is basis dependent and measuring in one basis can distort or destroy the information held in another. Taken together, these principles allow for two parties to exchange a secret key over a public network without any third party being able to reliably figure out the key. Many protocols exist for distributing such 'quantum keys', the first of which was created in 1984.
CI/CD enables rapid development by automating testing and deployment. I built a CI/CD pipeline for this website using GitHub Actions as the workflow framework and a number of tools along the way for testing, deploying, and securing automatically. At the highest level, on each code commit it will run tests and checks on the code base, create a deployment package and deploy it to a dev site, run tests and security checks on the dev site, and then deploy to production once the code is merged to the main branch.
My undergraduate thesis project on physical reservoir computing models. In the paper I introduce the reservoir computing framework, necessary grounding in ML, the characteristics of good physical reservoirs, and a few case studies: mechanical, electronic, and quantum. While this is still a relatively new field, the potential for chaotic systems prediction, smart mechanical sensors and more is potentially revolutionary across a wide range of sciences and industries. I also gave a talk that mimics the structure of the paper.