# Sahithyan Kandathasan — Developer blog > Technical blog covering web performance, JavaScript, debugging, and CS fundamentals. ## About Sahithyan Kandathasan is a Software Engineer and Engineering undergraduate at the University of Moratuwa, Sri Lanka. He has a strong focus on front-end development and a deep interest in how things work under the hood — from browser rendering to low-level systems programming. He has professional experience as an Associate Software Engineer at Asta Code Labs, has freelanced on Upwork and Freelancer.com, and has shipped a wide range of side projects spanning web apps, mobile apps, bots, CLI tools, and npm packages. He is thoughtful, technically rigorous, and writes with clarity about complex topics. His blog posts go beyond surface-level tutorials — they reflect genuine curiosity and careful reasoning. ## Projects - Vannamayil (https://vannamayil.lk) — E-commerce platform for a Sri Lankan clothing shop - Notes (https://notes.sahithyan.dev) — CS & Engineering notes from University of Moratuwa - Turing Machine Simulator (https://tms.sahithyan.dev) — Built from scratch - GPA Tracker (https://gpa-tracker.sahithyan.dev) — Offline-first grade tracking for university students - Rando API (https://rando.sahithyan.dev) — Miscellaneous API collection - Mora Exams (https://moraexams.org) — Official site of the largest island-wide A/L pioneer exam in Sri Lanka - Kalvi Papers (https://kalvi.lk) — Sri Lankan exam paper distribution platform - Bitwise Operations Playground (/post/bitwise-operations) — Interactive bitwise learning tool - XCalc (https://xcalc.sahithyan.dev) — Extended calculator with math utilities, available on Android - @sahithyan/og (https://npmjs.com/package/@sahithyan/og) — OG image generation for Node runtime - Spidy — Web crawler written in Golang - Cerve — HTTP server written in C for local development ## Contact - Email: hello@sahithyan.dev - Twitter: https://twitter.com/sahithyandev - GitHub: https://github.com/sahithyandev - LinkedIn: https://linkedin.com/in/sahithyan-kandathasan-8612b7267/ ## Posts - [An Interactive Guide to RSA](/post/interactive-guide-to-rsa): How public-key cryptography lets anyone encrypt a message that only you can decrypt, and the math behind why it is so hard to break. - [An Interactive Guide to Diffie-Hellman Key Exchange](/post/diffie-hellman-key-exchnage): How two strangers agree on a secret over a fully public channel, and the math that makes it hard to break. - [Building Echo](/post/building-echo): A devlog of building a macOS music player in Swift and SwiftUI, one day at a time. - [We Switched From ClickHouse to Postgres](/post/clickhouse-vs-postgres): A case study in choosing the wrong database for the right reasons, and what it took to fix it. - [Hollow Platitudes](/post/hollow-platitudes): Popular quotes that sound profound but don't hold up under rational scrutiny. - [How I Got Hacked](/post/how-i-got-hacked): Here's how I compromised my whole digital identity. - [How a Regex Becomes a Finite Automaton](/post/regex-to-automata): An interactive walkthrough of the pipeline that turns a regular expression into a state machine. - [Building F1](/post/building-f1): A personal+shared finance tracker application. Built with RN, Elysia, and PostgreSQL. - [Nautilus Scripts](/post/nautilus-scripts): Bring magic into your file manager on Linux. - [Building My Notes as a Website](/post/building-my-notes): Sharing how I built (and still maintaining) S1, S2, S3, my semester notes of Engineering as websites - [Ragging](/post/ragging): A simple breakdown of what legally counts as ragging in Sri Lankan universities. - [Seasonal Backends](/post/seasonal-backends): Sharing what I learnt when working on Mora Exams. - [It’s time to move away from Windows](/post/migrate-away-from-windows): Windows has been turned to shit. You should try the alternatives. - [Building Rando API](/post/building-rando-api): Sharing how and why I built Rando API - [Learning Web Dev](/post/learning-web-dev): A list of free web development resources - [Building Cerve](/post/building-cerve): Sharing how I built Cerve - a simple HTTP server - [5 Year Plan](/post/5-year-plan) - [About Me - Ice Breaker Speech](/post/about-me-ice-breaker) - [Fixing Pinch Zoom Issue On Pop OS](/post/fixing-zoom-issue-on-popos): Pinch zoom on Pop OS doesn't work by default. Here is an easy fix. - [Benchmarking C++](/post/benchmarking-cpp): Here is how I benchmark my C++ code and plot the results - [Installing Vivado 2018.2 on Ubuntu](/post/installing-vivado-20182): Here is how I installed Vivado on my Ubuntu machine - [Checklist for Web Projects](/post/web-project-checklist): A short TODO list I check before deploying a web project. - [Reflections On 2024](/post/2024-reflections): My own reflections on 2024. - [Don't use the most used software](/post/not-the-most-used-software): I think the most used software are bloated. Its alternatives are better. - [Better Alternatives in JavaScript ecosystem](/post/better-alternatives): I wanted to create a list of all shiny stuff in the javascript community. - [Performance optimizations on kalvi.lk](/post/performance-optimizations-on-kalvi-lk): Recently, I have worked on some performance issues on kalvi.lk website, and fixed them. Thought it might be useful to future me (or someone else) at some point. - [Building Wizmo — Video Downloader Bot](/post/building-wizmo): Sharing the story behind Wizmo — Video Downloader Bot - [One bug, one month of debugging](/post/a-month-of-debugging): I wanted to share about a minor bug that took me 1 month to resolve. The reason for that was, my lack of knowledge regarding HTTP. - [Bitwise Operations](/post/bitwise-operations): Bitwise operations manipulate individual bits in binary data for efficient manipulation and testing. This article provides information and an interactive playground to help familiarize you with them. - [XCalc for Android](/post/xcalc-for-android): Sharing how & why I developed XCalc as a native Android app - [Solving the Prerendering Preact Problem](/post/preact-prerendering-issue): Having trouble while prerendering a Preact site? In this post, I'll share my experience finding a solution to this common problem. - [Static Open Graph images](/post/open-graph-images): I added statically-generated Open Graph images to my posts; and how I optimized them. - [The is-odd NPM package](/post/the-is-odd-npm-package-meme) - [A JavaScript Quiz — Explained](/post/a-javascript-quiz): Explanation of an amazing quiz I took an year ago. - [Story of Building XCalc](/post/building-xcalc): Sharing how I built XCalc, an extended calculator. - [JavaScript Shorthands](/post/javascript-shorthands): Do you write JavaScript a lot? These shorthands might be helpful to you. - [Divisibility Rules - An Explanation](/post/divisibility-rules): How much time would you need to check if a given number is divisible by 2 –15 without a computer? Well, for the first few numbers, you would be so fast. But you will get stuck at 7 or 13 right? Don't worry. After reading this article, you won't. Give it a try.