Work Experience

Guardtime (2018 - Present)

I refactored an old Spring MVC application to Spring Boot with Webflux, Kotlin, and RxJava support (and blog about it) I participate in multiple contract-based projects with different technologies like Golang, gRPC. I am also researching permissioned blockchain that fits the company's digital timestamping service.

Tigertext (2015 - 2018)

I was a Platform Engineer at TigerText in charge of a real-time messaging platform that was written in Erlang. I worked on many product features such as chat rooms, chat bots, do-not-disturb auto-forwarding, CSV importer for nurses's schedules, file uploads.

We also evolved our chat server from only a secure messaging system to a communication platform (moving off from XMPP to HTTP Server Sent Event with API support). We built a number of services such as SMTP email gateway, push notifications, document / image conversion system powered by a Redis-based worker queues

Thanks to the team's efforts, TigerText is used by many hospitals and health care organizations in the U.S. as a reliable message delivery system.

Personally, I learned a lot building highly concurrent, fault-tolerant servers and functional programming. Thanks to Erlang and OTP Framework

Zipfworks (2014 - 2015)

Zipfworks is an ideation / media lab that owns a few digital products such as BluePromoCode (a coupon site), StyleSpotter (fashion aggregator site).

As a Backend Engineer, I worked on building API that powers our deals database, product listings and images that we scrapped from merchants and manufacturers. Some features include custom coupon ranking, similar coupons, social network integrations.

I enjoyed my time here as the company culture allows us to experiment and be creative. I hacked up a product-category classifier using Naive Bayes algorithm from python NLTK library, built image resizing http proxy in Scala with sksamuel/scrimage. Played with Docker before orchestration layer matures. Fun time.

OneScreen, Data Engineer (2010 - 2011) and (2013 - 2014)

I had one year internship before I was re-hired again as a Data Engineer. My first task was to maintain a data pipeline that runs Scalding (MapReduce job) on log files from our ads servers that is already nicely bucketed per hour in S3. The end results get stored in Vertica.

The MapReduce job computes watch counts, video-view quartiles, device type, and a bunch of other dimensions that we use for reporting and billing purposes.

I really enjoyed the scales and technical challenges in ad-tech industry.

IBM, Software Engineer (2011 - 2013)

IBM was my first job out of college. I worked on a project called Lifecycle Query Engine. It indexes RDF triplets and process SPARQL queries

I remember doing everything from building web UI with Dojo Toolkit (IBM's internal web framework) to working on Java server deployed on Tomcat and IBM Websphere. I was looking into some performance issues (aka tuning a bunch of knobs) so that we can index RDF resources as much as possible while serving concurrent queries