Object Serialization in Typescript: class-transformerIn a previous post, I wrote about implementing a custom JSON replacer and reviver function to serialize and deserialize data to be sent…Dec 6, 2025Dec 6, 2025
How to edit animated Minecraft textures with GIMPMinecraft is an extremely easy entry point into animation and video game art due to its low bar of entry, but this tutorial will be useful…Oct 19, 2024Oct 19, 2024
Serializing and deserializing ES6 classes and objectsWriting my own JSON replacer and reviver function to faithfully transmit ES6 classes across the wire.Dec 31, 2022Dec 31, 2022
Beating MapleStory’s captchas with OpenCVEvery few years, I come back to MapleStory, the nostalgic MMO that I grew up playing. Usually this on/off cycle is prompted by the some new…Jul 5, 2021A response icon2Jul 5, 2021A response icon2
A Curious Case of C++ Macros at GoogleThis past week, I encountered a super interesting problem while working with C++ at Google. On a day to day basis, most of the software I…Mar 29, 2020Mar 29, 2020
A quick poke into the NYPD’s historical crime dataRecently, a friend on Facebook shared the following opinion piece written by the New York Post: “Crime is up — and it feels like the city…Feb 17, 2020A response icon1Feb 17, 2020A response icon1
How To Ask Good QuestionsEveryone has heard the adage “there’s no such thing as a bad question”. Unfortunately, there most certainly are such things as bad…Jan 20, 2020Jan 20, 2020
Building A Tetris Bot Part 2: Genetic AlgorithmsUsing a genetic algorithm to teach a bot how to play Tetris.Aug 1, 2019A response icon2Aug 1, 2019A response icon2
How To Build An Audio Processor In Your BrowserAnd Some Software Architecture InsightsFeb 18, 2018A response icon1Feb 18, 2018A response icon1
Open Source Packages Kind Of Suck SometimesI love the open source community. The node.js ecosystem is a fantastic place and you can find packages for literally everything on npm. The…Aug 16, 2017A response icon1Aug 16, 2017A response icon1