Skip to main content

Posts

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. https://github.com/jiaqi/bazville 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.

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. https://github.com/jiaqi/angular-on-java 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.

Private Maven repository in Amazon S3

To put together a private Maven repository, Amazon S3 might be the only solution that requires no installation of software. Comparing to hosting a nexus, S3 backend solution is incredibly cheap. In fact most cases don't exceed the free tier. Besides it comes with all benefits of S3 as storage: 11-9s durability, highly available, IAM based authentication, easy to integrate with CDN, etc. Unfortunately Maven doesn't come with a native S3 wagon. This blog talks about how to setup private Maven repository on S3 using CyclopsGroup open source utilities. Define repositories in base pom This following example defines a SNAPSHOT repository for a project to pull dependencies from, in bucket mycompany-bucket-name with prefix /maven/snapshot-repository. A release repository can be setup in a similar way.     <properties>
<aspectj.version>1.6.11</aspectj.version>
</properties>     ...     <dependency>
   ...

Another weekend project

It takes quite a lot of energy to finish watching the entire five seasons of Breaking Bad. To finish it strong, this weekend I decided to try something that I haven't done for almost 18 years.

Gitcon, runtime configuration via a Git repo

This weekend, aside from taking kid to football game and various classes, changing diapers and watching "Breaking bad", I've been working on an new small open source library, Gitcon , which allows Java application to decouple some configuration into a standalone source repository so that software owner can modify configuration without deploying application for every modification. It is a cheap approach to dynamic configuration. By the way, I was very surprise to find out that the term "Gitcon" has not been reserved for "Git conference" so far. Requirements What led me to this project was a set of requirements: As a start, the configuration means properties file As a start, only Git source repository needs to be supported As a start, it only needs to gets configuration for once when application starts. The configuration is used to populate Spring application context where beans are mostly singletons. Software owner needs to restart applica...

Picture worths a thousand words

The longest week

A week ago I came out from a surgery room in Memorial hospital in South Bend and had one of my most painful moments in life. In the following week, pain pill and IV were my friends. Now after a week of recovery, I finally got back to my sanity and sit in front of my computer. Feb 25th noon, I fell down on an icy drive way on my way to the car. It wasn't a light fall. When it happened I heard a sharp pop and saw my right foot bent up. This is something I have only seen on YouTube. Fortunately my wife was with me, it could be a whole lot worse without her. At the very second I fall on the ground many things passed my mind. My pregnant wife, my daughter whom I read story to, my travel plan in next month, my job in Chicago, and the fact that my son will grow up with a cripple daddy who probably can't hold him. Then came the pain, which confirmed what happened is real. For the second time in life, an ambulance took me to hospital. A nurse looked at CT scan in hospital and said,...

Datamung won Netflix Cloud Prize award for best datastore integration

On Nov 14th, in AWS re:invent conference day 2 keynote , Netflix announced 2013 Cloud Prize award winners . I was very lucky and my project, datamung , is one of the ten winners. Datamung received the award for best datastore integration. Datamung is a Java open source web application that backs up RDS MySQL database into S3 using AWS Simple Workflow and EC2. It's a RESTful service and website on top of it, a single installation allows multiple AWS users to backup their database living in their own AWS accounts. The fact that it uses mysqldump command indicates that the backup result in S3 is a SQL file ready to use across AWS accounts, regions, VPC, or outside of AWS network. If you are interested please jump into the Datamung project wiki to find out more. Ironically, in the same keynote session where winner list was announced, 40 minutes later Werner Vogels announced a cross-region RDS replication feature which targets the same problem that Datamung attempts to so...

July 4th Navy Pier

Finally, it's July 4th when everyone comes to Navy Pier, pays $20/hour parking to watch exciting fireworks, despite the fact that the exactly same fireworks happens every Wednesday and Saturday night here all summer long.

A week in Istanbul

Ömer Aşık had a decent season in Houston Rockets and my wife's best friend is getting married in Turkey. Therefore Yilin, my wife and I decided to spend a week in Istanbul, which turned out to be the most amazing and memorable vacation we ever had. Way too many things to do If I ever going to visit Istanbul again, I would definitely reserve at least a month. There are way too many interesting things to do in Istanbul for a week-long vacation. Heaven of food Restaurants cover every inch of the old town. I wonder if people here ever need to cook at home. The restaurants look good and cheap. Then later we asked a Turkish friend if she cooks, she said not really since restaurants are good and cheap. Being a Chinese picky eater, I felt dubious about the quality of food from these "good and cheap" restaurants. Finally we had chance to have a bite, from which point we couldn't stop. If I were born in Turkey, I would be a happy Turkish programmer who never cooks....

I'm not funny because I don't watch Family Guy

This morning Yilin and daddy was having a little conversation while having breakfast Daddy: Who's the best? Yilin: Me Daddy: Who's smart? Yilin: Me Daddy: Who's strong? Yilin: Me Daddy: Who's funny? Yilin: Hmm.. you are funny, daddy. Daddy: You are funny too, you are a funny little girl Yilin: No, I'm not funny because I don't watch Family Guy Daddy: (Running to bedroom hysterically) Honey, did you hear what Yilin said?

Lucky order from Snarf's

Like many folks here in the building, every noon I order sandwich from Snarf's online and pick it up from store to feed my starving tummy. But today is not any day, today I received my lucky order.

Another milestone achieved!

There's a surprise every day.

Wreck-it Ralph is from Chicago?

Hotel Felix in Chicago   The building of Fix-it Felix Jr.  

From Seattle to Chicago

Having lived in Seattle for 6 years, I thought Seattle is the one with notorious weather. Turns out I was wrong. Shopping experience Seattle Chicago Working environment Seattle Chicago Weather Seattle Chicago Living Seattle Chicago Driving to home Seattle: 2158 miles, 31 hours Chicago: 96 miles, 1 hour 39 minutes