Welcome Message

Hello! Thank you for checking out my blog/website! I write about my projects, experiences, and other things I do that are related to programming! Scroll down to check out recent posts, or use the menu to sort by categories and tags.

You can take a look at my GitHub repos here.

Highlighted Cool Projects:

A cool project I’ve worked on over summer 2017 was a Bioinformatics tool for preprecessing sequenced DNA, available here (blog post).

I made my own programming language and interpreter that supports recursive functions, classes, and other good stuff, available here (blog post).

I also made my own artificial neural network library in Java that supports fully connected, convolutional, and GRU recurrent layers. I have trained it for handwritten digit recognition and text generation, and it is available here (blog post for libraryblog post for handwritten digit recognition, blog post for new version).

If you want to check out my other “artistic” site that I made for fun, you can go here (blog post).


Dynamic Programming Tricks

Yay, another entry to my series on competitive programming! This time I am going to write about a few tricks I have picked up from solving dynamic programming problems. The main goal of this post is to introduce the idea behind dynamic programming and summarize a few tricks that I find useful. Hopefully, the post does not turn out too long.

Continue reading “Dynamic Programming Tricks”

The Math For Gradient Descent and Backpropagation

After improving and updating my neural networks library, I think I understand the popular backpropagation algorithm even more. I also discovered that \LaTeX was usable on WordPress so I want to present my thoughts on gradient descent and backpropagation using cool math equations and nice intuitions. Of course, this post will be math intensive because there will be some calculus concepts.

Continue reading “The Math For Gradient Descent and Backpropagation”

The Venice Technique and Caching Snapshots of States

I have not written a blog post about algorithms for competitive programming for a while, because I have been doing tons of artificial neural network stuff! However, I am resuming the series on some interesting algorithms. This time, I am going to discuss the Venice Technique, which I read about here. It is an interesting data structure trick that accompanies a hash map or a sorted map.

Continue reading “The Venice Technique and Caching Snapshots of States”

Java Machine Learning Library: Conv Nets, GRU Recurrent Nets, and Text Generation

For the past few weeks (in addition to the school grind), I’ve been improving my Java Machine Learning library. After a few weeks of learning from online blog posts and papers, I have completed an overhaul of the existing code and I’ve added support for convolutional layers and GRU recurrent layers.

Continue reading “Java Machine Learning Library: Conv Nets, GRU Recurrent Nets, and Text Generation”

Java Interpreter for reCall, a Programming Language

Around 2-3 weeks ago, I decided to create my own programming language and to write an interpreter for it in Java. Now, after fixing many bugs, the interpreter and the language documentation is finally finished. The whole project, called reCall, is available here, on GitHub. The whole experience was very interesting because I looked at many other programming language (even esoteric ones) and examined their syntax. Continue reading “Java Interpreter for reCall, a Programming Language”