Building a Remote Desktop in Java
An experiment in implementing remote desktop with Java: notes on Robot screen-capture performance, the bandwidth cost of shipping images, and the trade-offs between h.264 video streaming and run-length-encoded delta transmission.
Exporting Hundreds of Millions of MySQL Rows to Excel
A production design for exporting massive list data from a SaaS system to Excel: MQ-based load leveling with async consumers, read replicas to absorb query pressure, id-cursor pagination with EasyExcel spilling to disk and uploading to OSS — 75.5 million rows exported in about 20 minutes.
Paginating Hundreds of Millions of Rows in MySQL
Once a table grows to millions of rows, plain limit-based pagination gets slower with every page. Notes from optimizing pagination on a billing table: locating primary keys with a subquery, deferred joins, and verifying with explain to bring deep pagination down to acceptable latency.
Some Thoughts on Logo Design
From brand positioning and color choices to shape, form, and trademark registration — what it takes to carry a logo from design to launch. A logo isn't just a pretty graphic; it's the vessel of brand memory.
Notes on Adopting ELK
Our stats workload pushed the MySQL cluster to its limit, and index tuning couldn't save it. So we brought in ELK: Logstash for incremental sync, Elasticsearch for aggregations, Kibana for visualization. Here's the reasoning and the incremental sync design.
Getting Hooked on Swimming
My gym has a pool, and it felt like a waste to have a membership and never use it. So I went — after three lessons with a coach, I've basically got the breaststroke down, though my form still needs work.
Dark Souls 1
Dark Souls 1. In the Age of Ancients, the world was unformed, shrouded by fog — a land of gray crags, archtrees, and everlasting dragons. Then one day, a first flame kindled beneath a tree, and with it came disparity.
Migrating to Alibaba Cloud
Taking advantage of the Singles' Day sale to move my blog from a Hong Kong server to Alibaba Cloud: a full Docker migration, domain ICP filing, and automated Let's Encrypt renewal with certbot—the process and the pitfalls.
Building Some Little Demos
Picked up another server from a Tencent Cloud sale: 3 years for 600 yuan, 1 core, 2G RAM, 2M bandwidth, 40G disk. Still felt a bit pricey for such a low spec, but I bought it anyway. Then it just sat there doing nothing, so I started building little demos for fun. The first one is done!
First Impressions of Flutter
Notes from my first encounter with Flutter: the Skia rendering engine, the widget model, the Dart language and hot reload, plus cross-platform delivery from a single codebase.