Projects
This page is a list of my current personal projects. Currently, I have not listed them all.
Joke Dad-A-Base Website - https://jokedadabase.com
Backend: Docker, Java, Spring, Spring-boot, Spring JPA, DynamoDb (switched databases) Frontend: Angular Hosted: Frontend is served by CloudFront and S3. Backend runs in docker and is currently hosted on a linux machine.
The Joke Dad-A-Base is a simple website that displays dad jokes. What more do you need?
The project started as an interview question. Coming from a non-web development background, I was challanged to create this designed website in a week to give the engineering lead confidence I could work on my own. Using an Angular frontend, and Java, spring backend I worked all week and set it up. At that time, it just read Jokes from a CSV file.
I made a lot of mistakes then, but I got it done and got the job. After reworking, I am now quite proud of it. Here are some of the highlights:
Docker
The backend both compiles and runs in a docker image. This makes the entire application very portable.
I have a very old Mac (2013), and somehow my homebrew installation got wildly out of date, so much so that it was hard to get the correct Java SDK, thus, I decided to just build the image in docker, allowing me to easily resolve that issue and allowing me to build and run pretty much everywhere.
Frontend Hosting
The frontend is hosted on S3 and is served by CloudFront. Very easy and secure.
Database
At first, the Database was just a CSV file, but I upgraded it to use Spring JPA and a Postgres database on RDS. However, similar to the backend hosting, RDS got epxensive pretty quickly for such a small application. So I decided to switch the database over to DynamoDB.
Thankfully, this was easy, as I wrote an interface for the database layer, so I just had to implement the DynamoDB logic.
Backend Hosting
Orginally, the backend was hosted on AWS’ ECS. I did this to get some familarity with ECS; however, after some time I deicided ECS was too expensive for such a small, unused application. So, I moved the application to the Linux machine that hosts this website.
Thankfully, because it is docker, and I was already pushing this image to ECR, this made running it on the Linux machine easy.
User Interaction
I don’t get many hits to my site, currently, it’s mostly friends. However, it was clear that the orginal design of the page had some usability issues.
In the picture below, you can see that the filters are in a seperate box. These filters are only associated with the Random Joke Button and not the search, but, due to the location of the box, people thought the filters were associated with the fix.
Thus, I decided to move the filters closer to the Random Joke button.
Future Work
The next things to do for the Joke Dad-A-Base:
- Add the ability for users to suggest a joke and then have an admin page where I can approve them.
- Add the filter buttons components to the search component.
- Categories and cringe level are currently hard coded, update them to be stored in the database so new categories can easily be added.
- (Maybe?) - Market website using some kind of social media
SpaceGame - Python Video Game
SpaceGame is a small video game I am currently writing using Python and the Arcade library. I want it to be a fun, simple, Astroids like game where two people can face off split-screen style. It’s mainly a way to get my feet wet with game making.
To enable two player mode, one player can play with the keyboard, and the other can play with an Xbox Controller.
Want to play?
If you have a Windows machine, you can play the game! Download the executable below. When you run it, Window’s Defender will probably block it from running, just click “More Info” and then “Run Anyway”. It’s not a virus, Window’s Defender simply is not familar with the executable.
Download: SpaceGame-v0.5: space.v0.5.zip