This post introduces parser combinators, a technique for building complex parsers through the composition of simple components.| Varun Ramesh's Blog
Coroutines can either be stackless or stackful. The terminology is somewhat confusing.| Varun Ramesh's Blog
In this post, I describe how parser combinators can be used to parse recursive languages, as well as deal with operator precedence and associativity.| Varun Ramesh's Blog
I write about some recent hackathon projects I worked on.| Varun Ramesh's Blog
Use HTML5 video tags instead of animated GIFs.| Varun Ramesh's Blog
As an experiment, I decided to allow all push notifications for a week.| Varun Ramesh's Blog
When creating a static site, you can pull a page's modified date directly from git.| Varun Ramesh's Blog
Last weekend, I participated in Ludum Dare, a game jam where you make a game from scratch in under 48 hours.| Varun Ramesh's Blog
The other day, I accidentally printed a ton of binary data to my terminal. Upon doing so, my computer started to beep incessantly.| Varun Ramesh's Blog
A snippet for a reloading server in bash.| Varun Ramesh's Blog
A couple weeks ago, I took part in a game jam on itch.io called the AGDG Microgame Jam.| Varun Ramesh's Blog
WebGL games can use HTML/CSS for GUIs. It's a lot easier to use than most game engine UI frameworks.| Varun Ramesh's Blog
Every year, my high school holds a canoe race, where students from the Engineering, Physics, and Calculus classes compete to design, build and race a Canoe over the span of two weeks.| Varun Ramesh's Blog
ChatGPT is really good at roleplaying as strange and unusual characters with minimal prompting.| Varun Ramesh's Blog
Simple tips for beginners to level up their Python skills (with interactive code snippets).| Varun Ramesh's Blog
A postmortem for Thermomorph, an Alien-inspired horror game.| Varun Ramesh's Blog
This is a postmortem for Proctor, the first of three horror games that I recently released.| Varun Ramesh's Blog
Integrating garbage collection into a C application was almost too easy.| Varun Ramesh's Blog
Many languages distinguish between primitives on the stack and objects on the heap. Others only have objects, and thus require primitives to aways be boxed. It turns out you can get the best of both worlds.| Varun Ramesh's Blog
Editing gameplay videos in Premiere requires that you re-encode, thus losing quality. Instead, you can use FFmpeg to edit losslessly.| Varun Ramesh's Blog
My recent game projects have used a GameObject architecture that unifies Component-based GameObjects and Mixin-based inheritance.| Varun Ramesh's Blog
Lua is an awesome language, but it has some annoying features that have caused endless frustration for me.| Varun Ramesh's Blog
This post describes a method for creating animations in games programmatically, while still retaining composability.| Varun Ramesh's Blog
Some typecheckers understand dynamic type tests, thus avoiding downcasting.| Varun Ramesh's Blog
A write-up for my CS 148 ray tracing image.| Varun Ramesh's Blog
When writing object-oriented code, you frequently want a constructor that takes in values and assigns them to object fields. Some languages reduce the repetition required for this.| Varun Ramesh's Blog
I made a mobile runner game for the CS194 class at Stanford.| Varun Ramesh's Blog