Work Experience

Tip

More details can be found in my resume.

I have been working with Beijing ColorfulClouds Technology Co.,Ltd as a Backend Engineer from July 2019 to March 2025. Here, I am responsible for:

  • Upgrading our Weather Core API from Python 2.7 to Python 3.7 in 2019.
  • Refactoring the push notification system for the ColorfulClouds app.
    • This involved using a Python Producer with Celery workers to write push tasks as Protocol Buffers to a Redis list, which were consumed by a Golang worker.
    • This approach enabled us to send about 3,000 notifications per second.
  • Recoding high throughput internal Flask & FastAPI services using Go+Gin to offer high speed geo computing and weather station data APIs.
  • Revamping many years of legacy code to fit into modern architecture under Kubernetes.
    • We managed to achieve cross region traffic migration without any downtime in Q1 2023.
  • Developing an animation system for weather layer, demo, which has proven hugely beneficial for marketing purposes.
  • Creating a system to archive and query historical weather station data. The system stores data in multiple Parquet files and utilizes a few Celery workers to perform asynchronous read and processing tasks.

Technologies I used:

  • Redis (PubSub / Hash / List)
  • MongoDB (Geo Index / Aggregation)
  • Kubernetes (Deployment / Statefulset / Cronjob)
  • Python (Flask / Gunicorn / Uwsgi / NumPy / FastAPI / Celery / Parquet / Polars)
    • We decided to stop using FastAPI for CPU intensive services as Python’s AsyncIO scheduler wasn’t efficient for high throughput QPS needing multiple cores for acceleration.
    • However, we continue to use Flask services requiring specific features that only NumPy can provide, which isn’t possible with Go.
  • Geo Computing (H3 / Slippy Tiles / Timezone / Administrative Boundary Check / Point-In-Polygon / Ray casting / …)
  • Go (Hertz / Gin / Protocol Buffers / gRPC)
  • Rust (Creating Python extensions, such as tzfpy)

Side Projects

I have developed several side projects:

  • Fast timezone packages, see Project tzf
  • A forked version of wego with Caiyun API support, demo
  • Go package aqi for computing AQI (Air Quality Index)

Education

I obtained a bachelor’s degree in Information and Computing Science from the North China University of Technology from 2015 to 2019.

Repos I created

Repos I created

Repos I contributed to

Repos I contributed to

Reuse and License

Posts on this blog, including the text and the figures and animations made by the author, are licensed under CC BY 4.0. Reposting, adaptation and commercial use are allowed with credit to ringsaturn, a link to the original post, and a note on whether it was changed.

The following are not covered by this license and remain under their own terms:

  • Quotes from news reports, official statements, papers and other publications. Copyright stays with the original authors or publishers; reuse needs their permission or must fall under fair use or quotation rules.
  • Third-party imagery and screenshots, including commercial satellite imagery, news photos, and screenshots of social media and web pages.
  • Third-party datasets, such as WDPA protected-area boundaries, administrative boundaries and population data. Each dataset’s attribution format and restrictions are given in the post’s data sources; some do not allow commercial use or redistribution.

Figures the author made from open data, such as maps based on NASA FIRMS, GIBS or Copernicus Sentinel data, are licensed under CC BY 4.0. When reusing them, keep the data sources named in the caption or the post in addition to crediting this blog.

More Info