Interactive command line Java MBean client.
Bazel build rules to support Java web app and Tomcat in Bazel.
Annotation-driven Java command line parser.
Kindness Alliance is a 501(c)(3) non-profit organization I helped found in 2025.
Datamung is a web-based RDS backup tool built on AWS Simple Workflow. It won the Netflix Cloud Prize in the datastore integration category.
I accepted the award and prize at the 2013 AWS re:Invent conference in Las Vegas, before spending all the prize money on the way back to the hotel of course.
Many other open source projects are listed under Github handle jiaqi and cyclopsgroup.
I used to draw quite a lot as child. Nowadays I still love it, but with job and children, it became challenging to find long, uninterrupted and quiet time to focus on drawing.
As of now I rarely draw.
First of all, a software architect is a programmer; and continues to be a programmer. Never fall for the lie that suggests that software architects pull back from code to focus on higher-level issues. They do not! Software architects are the best programmers, and they continue to take programming tasks, while they also guide the rest of the team toward a design that maximize productivity. Software architects may not write as much code as other programmers do, but they continue to engage in programming tasks. They do this because they cannot do their jobs properly if they are not experiencing the problems that they are creating for the rest of the programmers.
The dilemma for software developers is that business managers are not equipped to evaluate the importance of architecture. That's what software developers were hired to do. Therefore it is the responsibility of the software development team to assert the imoprtantce of architecture over the urgency of features. Fulfilling this responsibility means wading into a fight -- or perhaps a better word is "struggle." Frankly, this is always the way these things are done.
I believe that all organizations basically have two types of people: those who work to be part of a mission, and those who work for a paycheck. I wanted to surround myself with people who needed
what I needed, which was to make sense of things for myself.
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.