TrafficLens - HTTP traffic inspector

Introducing Trafficlens – HTTP traffic inspector for developers

It’s been a while since my last post and needlessly to say, I fail at my resolution to blog more often. I did succeed at my other resolution which is to work and launch a project. Since last year, I have been working on – a HTTP traffic inspector for developers

If you are a developers working with HTTP either by producing API to be consumed over HTTP or consumer of such API, Trafficlens can save you lots of time debugging.

Read more

What I learnt marketing TrafficLens – Part 1

This is the first post of the series in which I share my experience building and marketing TrafficLens. As a developer by trade, I have much more experience building software but little to none in how to tell people about it. or to market it. I want to share little things that I have learned so far. They are undoubtedly the most basic marketing techniques but I hope they can help someone

Read more

Notes on influence by Robert Cialdini

I have had Influence by Robert Cialdini on Kindle for a long time but only managed to finish its audio version recently. It was a fairly long listen that last about 10 hours. The narration is superb which makes for a particularly enjoyable listen


The book goes over 5 influence tactics that are based on human psychology. What amazing is that these tactics are extremely effective yet because they tap into human psychology, they can work their magic without being detected by their victims

The different influence strategies are:

Read more


Deploying our production-ready React app to S3

In part 1, we have set up a simple react app with all the components that you typically find in a high quality, production-ready react app such as unit test, git pre-commit hooks, flow type, etc… All that is left is to deploy our app and set up a robust continuous integration / deploy system. One of the main design goal for vudo app is to only pay for hosting when the app is being used, therefore we’ll use S3 to host our app and cloudfront CDN to make it fast.


  1. Sign up for AWS account. Get IAM access key & secret key. For detail instructions, see
  2. Download aws-cli and configure authentication,

Read more

02/18/2018 – First marathon

While training for a marathon, I was often told that crossing the finish line is one of the best feeling you can have. It was. But it was much more than just happiness. It’s also gratefulness from seeing my friends from Dosh along the route and Nguyen, Hon, Linh, Mon and Geoff at the finish line. It’s also poignancy from spending so much time and focus preparing for a race and now it’s over. Ryan told me as soon as he finished his first marathon, he was already thinking about when his next race would be. It took me more than a few seconds, but I have already looked at couple destination marathon that I would like to do this year.

While my goal was to finish a marathon without dying, I was secretly hoping that I would finish it under 5 hours. While 6 hours finish time saddens me, I did conquered the overwhelming urge to just give up many times throughout the race and I’m proud of that. There are also many highlights. Marcy, our VP of marketing organized a support group and I was able to see a few familiar faces along the route. Seeing them spending their Sunday morning cheering for me lent me the strength that I desperately need to step one foot in front of another. Ryan finished his race on goal and even drove around to find me. He finally found me at mile 25 when I thought I had to walk to the finish line. Seeing how much he cares and believes in me made me run the remaining distance and had a strong finish.

Ryan and Trung at mile 25

Ryan and Trung at mile 25

The best moment came when I saw Mon running toward me after the last turn. I was overwhelmed with joy to see Linh and him. I wished he would have joined me in that last few steps to cross the finish line together but he said I was covered in sweat & didn’t want to :(. Regardless, seeing him after 6 hours of physical and mental pain is even better than crossing that finish line


While I’m disappointed with my time, I’m proud of my resolution. I was able to finish a marathon after 10 weeks of training. I’m planning on finish 1 or 2 more this year. Yes, running a first marathon tend to do that to you. My rationale is I have worked so hard for this; if I slack off now, my fitness would just vanish after 1-2 months. Might as well stick it out.

From zero to production-ready React app

What is a production-ready react app?

This is the first tutorial as a result of me developing Vudo. This article will go through setting up the most production-ready react app that simply says Hello world. This article will not go into much detail about react itself but more about all the tooling and process to go from an empty folder to production-ready react app. By production-ready react app, I mean the following that you usually don’t find with a react tutorial

  1. Linting with eslint: Linting is essential in catching anything from minor style problem to potential bugs with a misplaced ;
  2. Tests with Jest: Jest was a testing framework created by Facebook and it works well with React so that what we’ll be using here
  3. Type checked with flow
  4. Git pre commit and push hooks: To prevent developers from committing bad code, we use pre-commit and pre-push hooks that will run lint & test script before every commit and every push
  5. Packaged by webpack

We can’t call our app a production-ready react app if it’s not in production. The follow up article will go through setting up continuous integration and deploying to S3

  1. Continuous integration and deploy using CircleCI: All commits are automatically built and deployed to S3 using CircleCI.
  2. Hosted by S3 with Cloudfront CDN: Instead of hosting our static files on an web server, we will host them on S3 which will drastically reduce our hosting cost. To make it even faster for our end users, we’ll also setup a cloudfront CDN that will serve our javascript files from a cache that is closest to our end users.

Read more

Technologies used in vudo

Here are technologies that I will be using to build Vudo. To maximize my learning effort, I have selected either popular technologies that I’m not good at like react, redux or up and coming technologies like graphql, serverless.


API backend

GraphQL API running on AWS Lambda, DynamoDB and other AWS technologies. My goal is to make it insanely cheap to host this API therefore Lambda and DynamoDB make perfect sense because their free tiers are more than enough for a light traffic site and best of all, they don’t expire after one year

Web frontend

React web application hosted on S3, accessed via cloudfront. Again, I don’t want to pay for hosting so S3 is a good option. Most of the cost will probably come from traffic & request since storing html & javascript file won’t cost as much

Mobile application

React native. Since I already developed a web frontend on React, using React Native for iOS and Android is the way to go. I think the ability to reuse code more than make up for potential shortcoming

That’s it for now. Stay tune for the introduction article with a walkthrough of the initial setup

Vudo, a open source todo app or how I learn react, serverless and graphql

Introducing my newest project an open source todo app called vudo written in Javascript running on AWS lambda. Obligatory keywords for recruiter. It also uses graphql, dynamodb, react and redux

A little background

One of my goals for this year is to get serious about my productivity. Over the years, I have read enough books on productivity to learn that being productive is to figure out what the most important thing to work on and work on it effectively. It’s very easy to work hard on the wrong things, for example, checking and replying to email can seem like real work but you are much more productive working on your core competency.

Another goal is to launch something and learn some new technologies during the process. I’ve wanted to (re)learn react, graphql, serverless and css. Yes, I’m one of the full stack developer that are more 90% stack because I don’t understand CSS. This would be the year that I learn CSS. Throw in react native to the mix to get some mobile development exposure and the list seems really daunting. Surely, I need something to track my to do, project, goals, etc.. in order to accomplish this, right?

Then it dawns on me. I will create a to do app.

Read more

Producing avro-encoded Kafka messages in Python

This post will go into detail how we interact with Kafka using Python while enforcing schema. It will start by introducing you to schema, acritical concepts working with Kafka that developers new to Kafka often overlook. Producing messages that conforms to a schema and decoding them can be frustrating to get right so I hope this post will help anyone who uses Python to talk to Kafka

Read more

Kafka gotchas, out of order, delivery schematic … oh my!

In my first post, I’ve shown how simple Kafka is. Nevertheless, to be fast, durable and scalable, Kafka has made some design choices whose implications can be difficult for beginners to understand. This post aims to overview some kafka gotchas that I have come across and my approach in solving them

Read more