Algorithmic Optimisations and Pathfinding

What
- Optimising algorithms for space and time efficiency. Implemented many data structures such as bitvectors, bloomfilters, queues, stack, and maps within ideal space and time efficiency.
- Solved various programming problems such as k-mer combinations, chain reactions, and graph problems with theoretical efficiency in mind
- Implemented pathfinding algorithms such as BFS and dijkstra. And using it to solve graph related problems.
Result
Understanding the use cases of data structures, how to implement them effectively.
Studying the relationship between empirical and theoretical efficiency.
Studying various foundational programming problems, their place in our systems and how to solve them effectively.
CSV Proxy Extraction Automation

Why
During one of my projects, I had to utilise a series of proxies to bypass a limiter.
I got a CSV off the internet of various different proxies, but I was met with an issue.
The issue was that the interface took in a different format than what I required.
And thus, I decided to automate this manual process by writing a simple python script.
How
I read the file and did some basic string manipulation.
Result
Formatted hundreds of proxies in seconds. Minutes including the scripting.
Automation via a scripting language is something that I find myself doing regularly,
and this is one of the most easily visualised examples.
Encryption and Decryption Projects

What
- AES encryption and decryption via modes such as ECB, CBC, CFB, OFB and CTR.
- Diffie hellman key exchange
- RSA Encryption and decryption
- Packet contruction using encryption methods for ESP IPsec protocol
How
- Python
- pycroptodome
- cryptography
Result
Achieved recreating the series of encrpytion decryption methods, DF key exchange and correct packet construction for ESP.
Learnt the ways encryption and decryption methods work and the usage of relevant python libraries.
Ergonomic Split Keyboard From Scratch

What:
I designed and built a custom 54 key orthlinear, column staggered split keyboard. Managing every aspect from designing the PCB, compiling the firmware based on vial, as well as designing and 3D printing the case with my 3D printers.
PCB Design:
- Drawing circuit schematic within KiCad. Understanding the software and the layers into PCB creation.
- Optimizing component position and wiring to ensure manufacturability.
- Using the Japanese duplex matrix to minimise the number of pins required. Simplifying component sourcing such as RJ45 sockets and a spare RP2040 mcu from previous projects.
Firmware development:
- Understanding the value of creating firmware from scratch or utilise matured and existing technologies throughout project. Ultimately, using the vial firmware with easy GUI for keymaps and alterations.
- Understanding the structure of the vial firmware. Had to first compile the QMK firmware, requiring past knowledge of C and the ability to troubleshoot and refer to documentations.
Case fabrication:
- Exporting STEP model from KiCad to fusion 360. And utilising functions such as shell, mirror and project within the tool to achieve my vision.
- 3D printed the case using heavily modified Ender 3 series printers. All setup within my home lab and is managed via the local network using Raspberry Pi Zero Ws.
Result:
A fully functional split ergonomic keyboard that required me to demonstrate my ability to: Carry an idea from paper to reality, solving real world design challenges, splitting a problem into a structured plan, assessing limitations in my knowledge and utilising existing technology.
Foodtab - Calorie Tracker without the fluff
Why
Couldn't find a suitable calorie tracker that does what I need it to. Given an amount, track calorie intake versus this goal.
Most apps ask too much questions, all this application needs to know is what your goal is.
This application was created to really get my hands dirty with react hooks, next.js functionalities, a refresher on user authentication and database.
How
- 🪝 React with Next.js and tailwindcss
- 🔥 Firestore for Authentication and Database
- Typescript
Result
- User Authentication and Database with Firebase
- Beautiful UI
- Theme picker
A minimal calorie tracking app that takes on the aesthetic of a receipt/tab. No 100 question surveys to get you started. Just tell it your calorie goal and diligently log your meals.
See some pictures ⬇️
Themes and aesthetic

- The themes are stored as user information on the database to achieve persistent theme preference.
Item manipulation

- UX is intuitive and familiar. Holding down the list will reveal the item removal widgets.
- System status notifications to keep users in the loop
User settings

- All user information is being listened by onSnapshot listeners to allow changes to be reflected immediately
- System status notifications to keep users in the loop
Henosis Todo List App

Why
I was building react apps and was coming across alot of issues with the framework. Particularly inconvient error messages and bugs that ultimately got me nowhere. Still wanting to build a webapp for fun however, I searched online till I came across a great introduction to Next.js and decided to build something with it.
How
- Next.js
- Tailwind CSS
- DragnDrog Module
- Firebase
I build the frontend with Next.js and Tailwind. A simple todo list app consisted of looping through a list and rendering relevant html components. Making it looks good with tailwind. And then implementing drag n drop by using existing modules.
I then connected Firebase with the application to realise OAuth and data store and retrive.
Result
A minimal, and reactive web app.
I made my first ever mistake of not redacting my token, as I didn't know anything about web apps prior to this project. So that's one of the biggest takeaways I've rememberd till today.
Homeserver Build
What
Picked and built a dedicated machine as a homeserver.
Created due to an interest to expand my current homelab environment. Wanted to
experiment with various networking tools. And strengthen technical knowledge.
Setup includes:
- Proxmox VE as main OS
- NAS with RAID 5 configuration
- VPN server to enable remote access to home network
- Various VMs to experiment with Linux
How
- Proxmox VE as OS, ability to manage containers and virtual machines.
- TrueNAS for NAS, future plans to utilize HBA (Host Bus Adapter) passthrough.
- Wireguard with wgdash for VPN server.
Result
Hands on experience with enterprise level software, VM management, and NAS management.
Solidified conceptual understanding of RAID configurations via practical usage.
Gained further understanding in VPN servers and setting up split + on-demand client
configurations.
Image Manipulation Program via Http

See at bottom right of image, showing before and after image manipulation
Tools
- C
- libFreeImage
Result
Implemented a multi-threaded server that listens in on a user or randomly selected port for TCP traffic,
validates it if it's a valid HTTP request, parses the image, performs user determined manipulation on said image,
and sends it back to the user's client.
Implemented a user client that listens in on provided port, builds a valid HTTP request containing commands and image data. Validates response and parses the modified image.
Intrusion Detection System

How
- Python
- Scapy
Takes a series of instructions reminiscent of snort rules. Parse through a pcap file using scapy and identify suspicious packets. Implement support for content filters, flag analysis, and time based thresholds defined within given ruleset.
Result
A IDS system that is able to parse and detect suspicious packets across a wide range of scenarios.
Local File Transfer Web App

Why
When trying to move content from my phone to my computer, I've always felt like it was a chore.
If you don't have a fully Apple setup, you'd have to opt for google drive and google photos.
So I decided to create a web application, starting off as a local file transfer tool and expanding it to include:
Media downloader, Notes, Gif creator and much more...
How
- React with Next.js
- Tailwindcss
- FFmpeg
User uploads are stored directly onto the server's storage. The website renders the content by fetching what's inside the storage, thumbnails and gifs are then created via FFmpeg if they are non-existent. Keeping everything clean and fast.
Downloads are processed based on what the users selections are. Multiple selections are compressed into a zip file before download prompt, minimising user inputs and effectively improving the user experience.
Result
- 📁 A local file transfer system. No more sending your content onto another guy's computer.
- 📶 File upload and Download with visual prompts
- ✅ Easy selection/deselection
- 🖼️ Automatic thumbnail generation for both videos and images. Videos are coupled with a gif for fast preview.
- 🤐 Automatic zipping if downloading multiple files.
Mobile upload using photos

- ✅ Multi-select is supported
- 🔃 Uploading indicator
On mobile, user can select media files from either their files, or their photos application.
Video previews
Video previews and thumbnails are done through generating both a thumbnail and a gif when files are uploaded.
The two are then overlayed and opacity is set based on hover. This greatly improves performance compared to using an embedded video file.
Downloads
The user can then download their selected files on the other device. Completing the transfer process.

If multiple files are selected, the tool will automatically compress the given files into a zip. Allowing the user to download all the files at once.

Personal Website

Why
A personal website had always been on the project list, but I couldn't find a suitable
stack to get started. My past experiences building web apps include using react, and frameworks like
Next.js.
Seeing that a personal website contains mainly static content, and maybe a blog section.
I felt like it would be using the wrong tool for the job. Until I came across Hugo.
How
- Hugo
- CSS
- HTML
I started by reading the Hugo documentations, setting up the environments and learning out the structures worked.
I like to get my hands dirty, so I picked out a theme and started reading the structure. After abit, I understood the
way Hugo works and started heavily modifying the theme "Bearcub".
Result
- Revamped the structure, and colors
- Added animations, social icons, and a custom home page
- Added features like embedded pdfs, and gallery view
I would ideally use tailwind CSS since that's what I am familiar with, but this experience allowed me to refresh my memory on CSS
Snakes and Ladders via Atmega328 and LED Matrix

Description
A snakes and ladders replica built with Atmega328 microcontroller and LED matrix + buttons for UI.
Program was written in C and flashed via serial connection with Putty.
What
Relevant knowledge included fundamental understanding of chip specifications, circuits, and C programming.
Timing, bitwise operations, and control via pins were the main components that went into this project.
Result
Understanding the communication between the MCU and its IOs. Exercise control via code.