December 23, 2018

2018 in review

2018 has been an amazing year for me. I moved to San Diego, been working and traveling in both California and Arizona; contributed to autonomous driving industry, and worked with many great technologies in this generation.

Work for self-driving

This year, I worked as a full-time software engineer at TuSimple. The company fills with great leadership and extremely talented coworkers. Everybody is mature and confident in their skills, fearless about owning all kinds of difficult tasks independently. It’s such a pleasure for me to work with them.

With months of hard working, our vehicles have started making full autonomous runs commercially. And I have zero doubt about becoming a unicorn in the upcoming investment cycle.


This year is another year about sharping existing technologies while embracing and respecting differences from other fields.

Languages and paradigms

Last year is a year in which I leveraged on three different paradigms: object-oriented paradigm as in Python, procedural paradigm with Go, and functional paradigm in Javascript. I had lots of fun working with all of the paradigms.


Most of the application level software I made this year are dealing with concurrent tasks, which pushed me to leverage some new concurrent programming solutions — namely, gevent/asyncio in Python, event loop in Node, and goroutine in Go. I used gevent the most, but I also liked the different ways that Node and Go handles concurrency.


This year I’ve worked with some lower level infrastructure too. E.g., integration, communication, resource orchestration, automation, monitoring, distribution, as well as cloud computing. I gained a much better view of how sophisticated software system works.

Ubuntu and MacOS

I spent most of the time using MacOS and Ubuntu. They are both solid operating system and Unixy, made me seamlessly ssh into each other with joy. Using both two operating systems allows me to take advantages from the versatility on MacOS as well as the universal power of Linux machines. It also made me start building more Docker containers, for isolating and versioning my software and safely distributing with different operating systems.

Defensive programming

I learned my lesson this year that nothing is entirely dependable in software, not APIs, not DNS, not networks, not AWS, not data warehouses, not even local infrastructures. To avoid accidence and be robust, I made my software much more defensive. I wouldn’t assume other services or infrastructures are dependable anymore. Ensure error handling on both ends, retrys, pinging and polling, multi DNS lookups, database replicas. Instead of broken down by other services, I tried my best to make sure my service runs well.


I made lots of backend tools and web servers by Python this year, and I loved it. Its versatilities and expressive syntaxes are well suited for lots of goto tasks. I would also give many credits to iPython, which gave me lots of smooth debugging experiences.


I continued using Go as my side project’s backend language. Go is mature for the modern web and CPUs, I didn’t even need a third party framework for web services. And the performance from Go’s concurrency handling is one of the best options for a large-scale web application. I also love the unified documentation from the Go community.


Aside from using Node for NPM and its related frontend tooling. I mostly used Node for building desktop application this year with Electron. Node would still the easiest way of handling concurrency for me, and it has been getting solid with its huge community. For a small-scale application, Node would be my top choice for the backend.


I’ve been getting more versatile on different frameworks and toolings in the front-end world. Although frontend is still the chaotic part in my software world, I’m much more comfortable on dealing unpromised solutions, as well as adopting and compromising new methods.


I started using Vue and its ecosystem. Vue is great and earned my admiration - good concept, solid toolchains, and a close and quite determined community. With some reasonable overheads, I felt the easement and started getting very productive in just a few days. In the long run, Vue also reminded me of the power of HTML. I believe Vue will be a serious contender for React.


I still loved React and maintained my side projects’ front-end with the newest React releases, including Hooks and Fragments, I like the fact that React has been making the syntax simpler and more functional. For larger scale applications, React would still be my first choice.

Open source

I’ve been still addicted to the community, my interests last year were mostly in Go, Python, Node, Lua, Vim, and the frontend Javascript world, including Vue, React, Gatsby, etc.

Code-wise, I made about 1800 commits last year on Github, mostly in Javascript and Node communities, including Vue, Gatsby and React. I also kept in touch with Python, Go and Vim as maintaining side projects.

Aside from committing codes, I started interacting more with people. I found lots of enjoyment and fulfillment along sharing knowledge and learned a lot from other people.

Life in the west

Life in 2018 is my year of exploration. Two places I lived were entirely new for me. I found many other aspects of this world: the weathers, the landscapes, the cultures, etc., all of those made me understand this nation better.

San Diego, California

For the most time of the year, La Jolla, San Diego, is my home. I work, eat, exercise. And I enjoyed living in the area.

Perfect Weather

The weather, as many others would probably mention first about San Diego, is the best weather I’ve seen. It comforts me for the most of the time throughout the year; cold down when it’s hot, warm up when it’s cold, dry up when it’s humid; not too much rain, not too strong sunlight. It’s perfect in a mild, comforting way.

Activity vibes

I bought my bike and started cycling around. San Diego has a great cycling culture, and it’s quite easy to meet cyclers around the roads and beaches. Other than cycling, I sometimes go running and found a different vibe from California as most of the area is spread out with highways, which made me have to run longer and occasionally cut across hills or tails to get places.

Tucson, Arizona

I had never been to Arizona before, but I liked it when I was working there in May, June, and November.


Tucson pushed me to have an early morning schedule because the sun is coming up strong and early every day, and it will get hot around 9. It also grants me the opportunity of running in the desert. It comes with lots of cactus spikes, but the freedom of running towards any direction is superb.


Tucson has many surrounding mountains, they are beautiful and awesome, attached with uncountable hiking trails. Among which, mount Lemmon is my favorite, and I had some amazing times up there. There’s also a 25-miles uphill, made me thrilled just thinking about climbing up from the bottom one day.