Hi, I'm Scott.
I build full-stack web apps and write about things I find interesting. This is my corner of the internet.
$
Featured projects
All projects →This website!
FeaturedFor my personal website, I wanted to create more than just a boring static webpage with a bunch of links. I wanted to create something I could interact with, and somewhere I could revisit often with room for improvements. I used Spring for the backend, while overkill and heavy for this sort of web app, it is what I am learning at the moment. ## Features - **Blog** — markdown posts with syntax highlighting, tags, read time, related posts, and comments - **Projects** — portfolio with featured projects, tech stack, repo and live links - **Admin panel** — protected dashboard to create, edit, publish, and delete posts and projects - **Dark mode** — system-aware with manual toggle - **Page transitions** — view transitions API As you can probably tell, there is a lot more going on in the backend than a lot of portfolio websites. I have my own admin panel which features safe login, allowing me to make, edit and delete post projects. Right now te admin panel looks like this:  This website is still in its early days and I am sure will be improved as my skills improve.
Java, Spring, PostgreSQL, Next.js, TypeScript, Tailwind, React
The Typing Quest
FeaturedA real-time multiplayer typing race built with Node.js and WebSockets. Players join rooms via a shared code, and a persistent two way connection keeps everyone's progress in sync as they type, each keystroke triggers a server broadcast so all clients update simultaneously. The server runs a state machine across each room (lobby → countdown → racing → guess phase → results), supporting multiple concurrent gam es. The frontend is vanilla JS with no framework: typing sounds are generated procedurally using the Web Audio API, and the video background is driven by the YouTube IFrame API. ## Running locally ```bash npm install node server.js ``` Then open http://localhost:3000 In my web dev module, we touched upon websockets - descibing their use case and how they work but not applying it. I found the idea interesting and wanted to create something fun using websockets.
Node.js, Javascript, websockets