I'm an amateur web developer, cloud computing engineer, freelance educator, musician, and hardcore gamer, all rolled up into 1 person - me! Over the last few years, I've been fortunate enough to travel the world, meet some incredible people, and develop a wide range of different experiences. Now, I work for Amazon Web Services in Australia, as a Cloud Support Engineer in the Container Deployment profile.
This is iteration 3 of my personal website. You may have seen iteration 1, which was created in Squarespace and used to be available at forsakenidol.me, and iteration 2, which used to be the website at this address - forsakenidol.com. I designed iteration 2 to both cut down on hosting costs and ride the "Web Dev High" that I had back in mid-2020, after completing the first web development unit of my Computer Science degree. Unfortunately, I didn't make a lot of good choices during the design and development process of that iteration, used way too much bootstrap CSS and JavaScript, and there are now a lot of bugs that cannot be reproduced, which is why I wanted to start again from scratch with iteration 3 - no bootstrap, and no client-side scripts.
This entire website runs in a framework known as Kubernetes, which is an open-source container orchestration system that I've been interested in learning for some time. There are 4 different kinds of pods, each housing a single container representing a different part of the tech stack of this website. With iteration 3, I wanted to focus on building my understanding of web development by shifting from the monolithic architecture of iteration 2, to a microservices architecture for the current iteration. This would help me develop different parts of the stack separately and make it easier to adopt a Kubernetes hosting solution.
Take a look at what I'm currently working on. Check out my Github for everything else!
463741050
db_cont_test
A simple 2-service setup to practise management of multiple containers in a project.
Link248227495
examinaid
ExaminAid is a UWA Computer Science assessment preparation application containing various resources in the form of test questions and answers.
Link406638088
smartbin
An IoT ultrasonic low-power monitoring solution for waste disposal
Link409960331
smartbin-frontend-flask
Link331783233
ExcelDash
A simple Dash application using Plotly graphs to visualise LAS data imported into Excel.
Link706407806
Flask-SQL-Sample-App
Sample application skeleton for my OpenTelemetry on ECS guide.
Link288682193
ForsakenIdol
Link637674567
leetcode-writeups
Writeups I've done for LeetCode problems. These are not necessarily all the problems I've done - just the notable ones.
Link235704331
my-weather-app
Weather app using React JS developed at Takor.
Link317450516
ReactBlog
Link240488916
Terrain-Generator
A simple terrain generation program in C++ and OpenGL.
Link298196490
threeChess
An AI framework for playing three player chess, a variant of normal chess.
Link554678150
twitch-overlays
A collection of overlays I created for use on Twitch.
Link532093662
website-v3
Iteration 3 of my personal website.
Link249741817
citsbot
Discord bot for the UWA Computer & Data Science discord
LinkThe technologies and frameworks that power this website.
Iteration 2 of my personal website had MySQL as the backend database for storing the old Blog and Login information. With iteration 3 (this iteration), I wanted to switch this part of the stack to something used frequently in production web apps - and so I came across PostgreSQL.
Express.js was key to the second iteration of my personal website, and I wanted to keep it in the stack in some form while still experimenting with other technologies. Ultimately, I settled for using Express in the middleware server, abstracting the database and exposing CRUD paths to the cronjob and frontend.
This website loads public repository data from the GitHub API. It's bad practise to call the API once for every visitor who comes to our site, so we need to pull the data from that API periodically and store it in our database. With both the middleware and frontend in JavaScript (Node.js), I opted for Python to write the cronjob to experiment in data handling (particularly datetime parsing) across different programming languages.
I've had my eye on Next.js for some time now as an alternative to React.js in general and the Express.js / Nunjucks templating stack that formed most of my previous website's iteration. It's a little overkill for a single-page web application, but it's well worth the effort put into learning how this framework operates.