To escape the maze of optimizations

In the past, I used to work with map data visualization and one of the pain task was loading GeoJSON files. The amount of data is large enough to make browser interactions lagged. And they were all loaded from the beginning regardless zoom levels. One of many lessons as of web developers that we know we should use pagination. But at that time, I wondered what criteria I should use. You know, the map boundary was determined based on a center point and a zoom level, and the center point has its coordinations in floating-point numbers. They can’t be used for chunked and cacheable endpoints. Until one day I learn about Uber’s hexagon grid[0] which helps me created the endpoints to split the data into chunks. Nevertheless, the project schedule was short and went to an end but I have carried the feeling that the implementation wasn’t optimal.

Read more...

To refresh API response cache

Recently I learn to use axios-cache-interceptor, besides invalidating cache once data get updated, during development I still need to manually invalidate cache by deleting cache entries in the devtools.

Read more...

Downloading videos

Sometimes it’s not simple as right clicking on the video and hit “Save video as…”

In the case, I usually go to network tab in the dev tools and find the video link, maybe make it a little bit easier by filtering by media tag.

Recently I face some challenge where the video chunks I downloaded can’t be opened. The binary data is in png image format. I quickly change the extension to mp4 but for most of the videos, it doesn’t work.

Read more...

Normalization of Deviance

Bài viết được dịch từ Quá trình bình thường hóa của sự lệch lạc (2015)


Có bao giờ bạn đề cập đến một chuyện hết sức bình thường đối với bạn nhưng khiến mọi người ngạc nhiên chưa? Tôi hay bị như vậy khi có những chuyện đồng nghiệp nào của tôi cũng nghĩ đó là bình thường. Vì lý do nào đó, khuôn mặt của người đang nói chuyện với tôi đang cười chuyển dần sang kinh ngạc. Dưới đây là một vài ví dụ tiêu biểu.

Read more...

Linux tools for replacing Postman

Trong những năm phát triển web, mình vẫn hay dùng đến Postman. Nhưng có một số điểm mình thấy không thoải mái:

  • Nặng. Sau khi cài trên máy nó ngốn đến hơn 800Mb.
  • Workspace lộn xộn. Khi làm với nhiều dự án, workspace của mình mở lên đến năm mươi mấy tab, và nó không auto save. Nhiều lúc close rất phiền phức.
  • Không tương thích với Wayland. Trừ khi bạn thêm flag --ozone-platform-hint=auto, như vậy mình phải mở terminal để chạy nó.
  • Tốn tiền.
Read more...

Framework vs Your Application and Packaging

Vừa rồi mình có làm một presentation về “12 factor app” trên công ty. Sau nhiều năm viết kha khá ứng dụng web, và tự config linux desktop environment (mình đang dùng sway, ở cả máy công ty cũng như máy cá nhân) thì có thể nói mình đã thấm nhuần những factor đó (ha). Nhưng vì sao config linux desktop lại liên quan đến ứng dụng web?

Read more...

Transactions

Trong một hệ thống dữ liệu, việc đọc, ghi dữ liệu bất cứ lúc nào cũng có thể xảy ra lỗi (lỗi phần cứng, ứng dụng crash, mất nguồn điện, vấn đề về xử lý song song,…). Transaction là một cơ chế đơn giản hóa việc xử lý các lỗi này, tạo ra một abstraction để application sử dụng và tập trung vào business logic.

Read more...