Below I shared a subset of the technical projects I have worked on in the past. Some of them I did for research, courses or otherwise just for fun.
Personalized News Recommendation with Deep Bayesian Contextual Bandit Algorithms
I implemented deep bayesian contextual bandit algorithms and tested on various datasets including Yahoo! Front Page Today Module User Click Log Dataset.
Truly Batch Apprentice Learning with Deep Sucessor Features (IJCAI, 2019)
I developed a novel batch inverse reinforcement learning algorithm designed to work for restrictive settings such as healthcare. It is designed to work without simulators and under unknown dyanmics. All it assumes is access to expert demonstrations.
I developed a small library for data manipulation. It provides a set of features that are frequently used in Pandas.
Exigo: fairness and interpretation of AI-based loan lending
Exigo is a library designed to interpret black-box algorithmic decisions for peer-to-peer loan lending and evaluate their statistical fairness. The project was done in collaboration with Square Capital. I implemented the fairness module that features a set of common fairness metrics such as statistical parity. I also handled the web app deployment.
Kernel-based imitation learning
I provided an empirical evaluation of a new kernel-based imitation learning algorithm.
Input-Convex Neural Networks
I provided an empirical evaluation of Input-Convex Neural Networks.
Tutorial on adding Gaussian noise to gradient
I provided an empirical analysis of the effect of adding Gradient noise in the learning performance of deep neural networks.
Tutorial on reinforcement learning
I wrote a small library that reproduced common reinforcement learning algorithms such as Least-Squares-Temporal-Difference (LSTD) or Q-learning.
Deep Texas Hold’em Agent
I co-developed a deep poker player agent using Neural Fictious Self-Play and a poker game simulator.
I wrote a small module that helps segment TV program (video with captions) boundaries based on AudioFingerprint and Latent Dirchlet Allocation algorithms. This was done as a part of Google Summer of Code, 2017.
Beating Montezuma’s Revenge
I co-implemented a variant of pseudo-count-based algorithm to improve the exploration challenge in Montezuma’s Revenge. Our team, as of Aug. 2016, achieved the first place on OpenAI leaderboard.
Tutorial on A3C
I gave a small talk on A3C.
MD Nerds is a real-time collaborative online markdown editor with live preview and the ability to easily share your work. Won the Most technically impressive award from Meteor.js’s hackathon, 2015.
Authgear is the first two-factor authenticator developed for Tizen Wearable OS. Think of it as a Samsung smartwatch’s analog for Google Authenticator except that you don’t need to find and unlock your mobile phone to get an OTP (One Time Password).
I singlehandedly developed the app as a contestant of Samsung Developer Challenge. Subsequently I demoed the app during Slush, the largest tech conference in Northern Europe and was awarded the 3rd prize. The app uses the same TOTP algorithm that complies with RFC-6238, making the app compatible with various web products of Google, Facebook, Microsoft alike.
- Tizen Wearable OS
- HTML5 QR Code Reader
VoiceChatAPI lets you use free voice conference calls in the comfort of web browsers, available via both the web API and the GUI. The app demonstrates one powerful use case of WebRTC. When first launched, VoiceChatAPI was featured on the front page of Hacker News for nearly two days. The app has been open-sourced on Github.
I co-developed VoiceChatAPI as a front-end developer, while another colleague worked on the back-end. As we decided to rely on Plivo Web SDK which nicely abstracts the use of web-based conference calling, we could focus primarily focus on getting the usability of the app right.
- plivo WebSDK
- WebRTC & Flash
QuickCall lets you make VoIP calls. It is the first mobile VoIP dialer app developed for Firefox Mobile OS.
I singlehandedly developed and demoed the working prototype on a firefox mobile device during two-day hackathon from which I recruited three other developers to further develop the app. During the project, I directed my development efforts primarily towards setting up the API server to route voice calls over the web.
- Angular, Ionic, Express
- plivo API
- Firefox OS
NextBeer is a beer recommendation mobile application with an item-item collaborative filtering.
I co-developed the app with three other developers. I was in charge of developing the front-end portion of the app. During the process, I could learn a lot about AngularJS and Ionic. The user interface follows the same flavor of Tinder’s card view with which users can swipe left or right to express their preference over a suggested beer.
- Python, Flask, NumPy
- Angular JS
- K-NN Machine Learning Model
Mailboxen lets you configure and maintain a simple, secure SMTP mail server in the comfort of your local desktop environment. Mailboxen was born out of the first Y Combinator Hackathon. I was in charge of developing the user interface of the application using Angular JS.
- Angular, D3
- Node, Express
- OpenSMTP, Dovecot
ZenSpreadsheet is a minimalistic spreadsheet desktop application born out of a solo school project. Admittedly the user interface is not the best in the world. But hey, you can do what spreadsheet programs are fundamentally about: entering data, write arithmetic expressions with the data and basic functions, and copying and referencing cells. All in a multi-sheet environment.
- Source code: I can share privately if you’re interested.
Jiiri store does not let you do much as do most school projects, unfortunately. Then why did I bother to write about this here? Well, it’s just a small piece of evidence that I “probably” know some Django stuff. I worked with two other students and my responsibility was to implement API endpoints and payment features.
- Source code: I can share privately if you’re interested.
I did a few non-technical projects that might strike you as interesting. For more details, please see my Linkedin page.