Skip to main content


Build Java webapp and run it with Tomcat in Bazel

The official support of Java web application in Bazel is bazelbuild/rules_appengine , which comes with a number of problems as discussed in a previous post . After some effort I realized I can not manage to have appengine rule accurately serve my needs. Since there doesn't seem to be another option, I decided to go ahead and create one. With bazville I was able to change the demo project angular-on-java to build web application correctly without assuming it runs in appengine, and run it with Tomcat in bazel. Please take a look at the project github docs if you are interested.
Recent posts

Spring, Angular and other reasons I like and hate Bazel at the same time

For several weeks I've been trying to put together an Angular application served Java Spring MVC web server in Bazel. I've seen the Java, Angular combination works well in Google, and given the popularity of Java, I want get it to work with open source. How hard can it be to run arguably the best JS framework on a server in probably the most popular server-side language with  the mono-repo of planet-scale ? The rest of this post walks through the headaches and nightmares I had to get things to work but if you are just here to look for a working example, github/jiaqi/angular-on-java is all you need. Java web application with Appengine rule Surprisingly there isn't an official way of building Java web application in Bazel, the closest thing is the Appengine rule  and Spring MVC seems to work well with it. 3 Java classes, a JSP and an appengine.xml was all I need. At this point, the server starts well but I got "No

Favorite quote

I spoke frankly, and I expected those around me to speak frankly. I fought for what I thought was best, and I wanted them to do so as well. When I thought someone did something stupid, I said so and I expected them to tell me when I did something stupid. Each of us would be better for it. To me, that was what strong and productive relationships looked like. Operating any other way would be unproductive and unethical. - Ray Dalio, Principles These words are so true and yet conflicting. People keep telling me otherwise, books and studies teach the secret of tricking emotion. I can't say the principle works everywhere, in fact it probably doesn't work in most places, but it certainly helps me stay true about myself. One of  the 14 Amazon leadership principles  is to "disagree and commit". It's uncomfortable but like Ray Dalio said, each of us are better for it. I've seen it in Amazon and I'm sure BridgeWater is the same. Like it or not, it works.

History repeats itself because nobody was listening the first time

I like how Rick Houlihan starts with the statement, "History repeats itself because nobody was listening the first time". However I disagree because nobody ever listens or learns the lesson.

National Enquirer and Jeff Bezos

If you haven't followed the recent drama of the National Enquirer and my dear ex-boss Jeff Bezos, here's a quick rundown. No thank you. Mr. Pecker The case is now part of the official definition of the word "Extortion"

Introducing Flixport, a tool that exports photos from Flickr

Overview If you are like me with tens of thousands photos in Flickr which is about to stop 1TB free storage service, moving these photos out would be a very challenging task. Flixport is an open source command line tool that bulk-copies photos from Flickr to Amazon S3, Google Storage or your local computer. Flickr is terminating the free 1TB storage service in February 2019. Unless you convert to a premium user, Flickr will only keep 1000 photos and purge others at some point in February. To backup my own photos I evaluated all existing solution and none worked for me. Luckily, being a software engineer, I could write code to work around difficulties. Please visit the Flixport page to find out more. Why S3 and Google storage? AWS S3, as of today, is the de facto online storage. People may hear Dropbox or Box more often but many of these consuming storage product are backed by another Cloud storage service, of which S3 is the clear leader. Since coding is not a problem

Tensorflow Hub web experience

Tensorflow released a more dynamic and discoverable web experience for Tensorflow Hub modules. Check it out . TensorFlow Hub is a platform for sharing reusable pieces of ML, and our vision is to provide a convenient way for researchers and developers to share their work with the broader community. Can't believe I haven't posted anything in last 3 years. Something either extremely bad or extremely good must have happened.