CS:GO launch failure fix

The symptom: CS:GO launched to a black screen and just crash right after. The OS I’m using is Pop!_OS 21.10. The fix here is sudo apt install libtcmalloc-minimal4 cd <YOUR_STEAM_HOME_DIR>/steamapps/common/Counter-Strike\ Global\ Offensive/bin/linux64 # backup the old file mv libtcmalloc_minimal.so.0 libtcmalloc_minimal.so.0.bak mv libtcmalloc_minimal.so.4 libtcmalloc_minimal.so.4.bak ln -s /usr/lib/x86_64-linux-gnu/libtcmalloc_minimal.so.4 libtcmalloc_minimal.so.0 ln -s /usr/lib/x86_64-linux-gnu/libtcmalloc_minimal.so.4 libtcmalloc_minimal.so.4 The game should be able to launch after this. However, if you do “verify integrity of game files”, you will need to do this fix again.
Read more →

Public ECR and private subnets

Hôm trước mình hơi băn khoăn chút việc nếu sử dụng public ECR (public.ecr.aws) với sử dụng 1 k8s cluster trong private subnets, thì bandwidth từ việc pull images về trong private subnets sẽ đc tính thế nào. Tính vào cho NAT gateway? Hay tính vào cho S3 Gateway Endpoint? Vì public ECR sử dụng S3 làm storage nên trong trường hợp ngon nghẻ nhất là bandwidth đc tính vào Gateway endpoint thì ngon :)
Read more →

Shure MV7 working on Linux

I read many posts regarding Shure MV7 doesn’t work at all on Linux: here, here and here. It got me nervous as I already bought this on Amazon and return is not an option since I live in Vietnam. However, when I receive the mic today, it just works, right out of the box, on Pop!_OS (v 21.04). The only thing different with the vanilla Pop!_OS distro is I switch to pirewire for audio instead of pulseaudio.
Read more →

Using k8s kind “rootlessly” without Docker

So you probably already heard the news Docker Desktop is no longer free. While this mostly affect macOS and Windows users and I use Pop!_OS, I still would like to see if we can get by without Docker at all. I’ve been using nerdctl for quite awhile now and while nerdctl mostly fill my needs for docker CLI, I “kinda” need kind CLI to create test cluster for testing purpose. However kind still needs docker.
Read more →

Làm quen với Pod Security Admission (PSA)

K8s 1.22 giới thiệu Pod Security Admission (sau này gọi tắt là PSA) phiên bản alpha, để thay thế cho Pod Security Policy (PSP). Bài viết này sẽ hướng dẫn qua cách bạn setup PSA và sử dụng PSA 1 cách cơ bản nhất. Enable PSA # Để cho mục đích lab đơn giản, mình sẽ sử dụng kind để tạo 1 cluster local. Mình sẽ tạo 1 cluster và enable PSA lên với config như sau
Read more →

My blogging setup these days

Previous setup # I used a small VPS instance on RamNode to host my blog previously. No particular reason. I just happened to have lots of unused credits there. I have a local git repo on my Macbook. Setup a git hook to trigger jekyll build on the VPS. Nothing fancy. No CI/CD whatsoever. The new setup # I recently migrated my blog from self-hosted on RamNode to Cloudflare Pages.
Read more →

How to write Node modules with Rust

TLDR: there’s a sample repo here if you’re lazy to read this post. The sample repo include GitHub Actions sample for CI as well. The Rust bit # It’s very simple. You write your function in Rust #[js_function(3)] fn say_hello(ctx: CallContext) -> Result<JsString> { let name = ctx.get::<JsString>(0)?.into_utf8()?; let name = name.as_str()?; let s = ctx.env.create_string_from_std(format!("Hello, {}!", name))?; Ok(s) } And then you expose it to Node.js runtime with
Read more →

What the fuck is even GitOps

Nguồn gốc # 2017, term GitOps đc WeaveWorks promote lên với bài viết “Operations by Pull Request”, đại để là k8s system state đc lưu ở 1 git repo changes made thông qua pull request rồi chạy CI/CD pipeline có công cụ hỗ trợ detect configuration drift và reconciler. Nhìn qua thì cũng chẳng có gì đặc biệt vì từ 2016, khi bên mình triển khai Kubernetes, mình cũng đã CI/CD và store system state ở git repo rồi.
Read more →

Distributed tracing is the new structured logging

Structured logging # Một best practice vẫn được recommend cho tới bây giờ là structured logging. Structured log là 1 dạng logging theo kiểu key=val để có thể giúp chúng ta dễ dàng parse log và đưa vào 1 log store để tiện query và phân tích. logger.info({ request_time: 1000, payload_size: 2000 }) sau đó 1 đoạn structured log sẽ đc generated ra kiểu này, ngoài các metadata chúng ta log thì còn đi kèm thêm 1 số metadata khác như timestamp, hostname, deployment name, pod name, etc.
Read more →

The state of Linux on desktop (2020)

I got fed up with macOS. While the new hardware(Apple Silicon) got amazing feedbacks, the OS itself is so lag behind. I got a Windows 10 desktop at home and heck, it was even much more pleasant to use than using macOS. As a typical user (web browsing, mail and office stuff), Windows 10 is very good. As a developer, it’s getting a lot better with WSL/Microsoft Terminal/etc… I decided to give Linux another evaluation test.
Read more →