Sign up

Karn Wong

Not verified No WebSub updates No webmention support Not yet validated

Homepage and blog by Karn Wong

Generator
Zola
Public lists
I ♥ RSS
Fetched

Karn Wong
• Unknown

2025-10-23

Was implementing SMART reading feature for my cli utils app, and found that my server's ssd is on its last legs. Replaced the ssd and use the old one for a temp mountpoint. 2 weeks later it suddenly disconnected, and sudo blkid hangs. I think I dodged a bullet there.


วันก่อนเจอว่า ssd ที่ใช้ใน server มี bad sectors เยอะมาก เลยรีบซื้อมาเปลี่ยน

แต่ ssd เก่าก็น่าจะพอยังใช้ได้อยู่ เลยเอามาเป็น external drive เก็บ temp files ใหญ่ๆ

ผ่านไปสองอาทิตย์ ssd ตัวที่ว่านี้ อยู่ๆ หลุดจาก mountpoint, ใช้ sudo blkid ก็ไม่ขึ้น

หวุดหวิดมาก มี backup ไว้ทุกอย่างก็จริง แต่ก็จะเสียเวลาประมาณนึงในการ restore ทุกสิ่งอย่าง

ขอบคุณที่อะไรไม่รู้ดลใจให้ไปงอก SMART feature ใน cli utils ของตัวเอง เอาไว้เช็คสภาพ hard disk เลยเจอว่า bad sectors อย่างเยอะ

Karn Wong
• Unknown

2025-10-21

Recently gave a talk at PyCon Thailand about ONNX.

TLDR; stacking ONNX with rust can reduce latency by 20%.

See workshop repo in the slides.

https://karnwong.me/speaking/


อัพสไลด์งาน pycon แล้ว ขอบคุณทุกคนที่ให้ความสนใจ ถึงแม้ว่า session จะเป็น classical ML แต่ก็มีหลายคนที่สนใจ LLM เข้ามาถาม

ขอบคุณคนที่รีวิวสไลด์และป้ายยา vllm ตั้งแต่ปีที่แล้ว เลยไม่ตายไมค์ตอนคนถาม 🙏

workshop repo ดู qr code ในสไลด์

เสาร์นี้ไปงาน data & ai day มาเจอกันได้ รอบนี้พาทัวร์ DataOps

https://karnwong.me/speaking/

Karn Wong
• Unknown

2025-10-16

ไปแงะ ML inference ecosystem ของฝั่ง web มา

ก็คงไม่ train/eval บน web stack อันนั้นทรมานตัวเองเกิน

สรุปสั้นๆ คือ google ทำ mediapipe library ที่มีหลาย module หากินในงาน ML ไว้ให้แล้ว พวก LLM/audio/vision/text

ไม่ได้แงะทั้งหมด แต่เห็นบางตัวอย่าง face detection ยืนอยู่บน tensorflow lite (เปลี่ยนเป็น LiteRT ละ รอบนี้รองรับ pytorch และ jax แล้ว) ซึ่ง browser runtime ก็ไม่รู้จัก tensorflow กะเขาหรอก แต่ไปยืมมือ wasm แทน

ถ้ามี scikit-learn ก็ได้สองท่า ไปเกาะ pyodide ที่เป็น python runtime in browser เอา หรือ ไปออก onnx ยืนพื้น wasm เหมือนเดิม แต่มี accelerator ตัวอื่นพอใช้ได้เหมือนกัน

ส่วน neural networks ก็ไปเกาะ LiteRT เอา

อันนี้ mediapipe catalog สำเร็จรูปมาให้แล้ว ใช้ไม่ยาก ตึมึน vibe coding ได้เลย ลองมาละ

https://ai.google.dev/edge/mediapipe/solutions/guide

Karn Wong
• Unknown

2025-10-09

ไปเล่น unikernel มา

เล่าแบบสั้นๆ คือ เอา binary/runtime+code โปะบน kernel ตรงๆ เลย ไม่มี os คั่นกลาง - boot image เล็กจริง binary จิ๋วๆ boot image อยู่ที่ 15 mb

ตอนเทสมันจะทะลุ kvm ซึ่ง ผลค่อนข้าง inconsistent กัน บางเครื่อง unikernel ช้ากว่าแบบไม่เยอะมาก แต่บางเครื่องช้ากว่าเกินครึ่ง

docker ยังไงก็ไวกว่า ใกล้ๆ กับการรันแบบ native

จะเหมาะสุดถ้าเอา binary โปะทับตรงๆ เพราะไม่ต้องหอบ runtime + deps + file ติดมาด้วย (แปะไม่ครบ วนลูปเทสนานหน่อย)

แต่ถามว่าควรใช้มั้ย คิดว่ายัง เพราะมันยังดูไม่ค่อยสุกดีซักอัน debug ยากด้วยเพราะไม่มี os ให้เกาะ เลยทะลวงยาก และ docker ก็ไวกว่าแบบไม่ต้องคิด จะไปโยนขึ้น cloud ก็ต้องไปท่า vm ก็จะเหนื่อยหน่อยกับการทำ monitoring + scaling

Karn Wong
• Unknown

2025-10-07

viz เป็นแบบ interactive, กด filter เองได้บางส่วน

มี viz ที่เป็นของ gpu clusters ด้วย

ถ้าไม่อยากแปลผล viz เอง มีสรุปให้อ่าน

ถ้าสงสัยว่าข้อมูลได้แต่ใดมา มี faq ให้อ่านคลายความสงสัย

https://epoch.ai/data/ai-models

Karn Wong
• Unknown

2025-10-02

SedonaDB มาแล้ว syntax เดียวกับ sedona ที่ใช้กับ spark

ลงเป็น lib ใน python ท่าปกติ ยืนพื้นบน datafusion ไวแน่นอน (ขอบคุณที่ไม่ไปแตะ geopandas เลย)

จะได้ไม่ต้องรำ spark + setup JARs ตอนปั้น query

(ยังคงเจ็บกับ duckdb ที่ spatial implementation มีไม่ครบ และ h3 extension ก๊องขั้นสุด)

https://sedona.apache.org/sedonadb/latest/

Karn Wong
• Unknown

2025-09-26

I have a secrets sharing service deployed for personal use. Once the secret is accessed, it's gone.

My friend just told me that he's been using the said service I deployed for "personal use" with his "team". Because he trusts my server.

I'll take that as a compliment 😆


วันก่อน pair programming กับเพื่อน (ก็ไม่เชิง คือมันต้องไปขูดของออกจาก vm เลยคลำทางกับปั้น bash script แบบหนักๆ) คิดถึงความ mind meld ที่เดากันออก ว่าแต่ละคนกำลังจะทำอะไรโดยแค่ดูว่าอีกคนถามหรือพิมพ์อะไร

เจาะของเจอแล้ว ต้องขูดออกมาแยกก้อน เลยต้องให้เพื่อนส่ง artifacts list มา จะได้ปั้น bash script ให้ เพื่อนเลยบอกว่า ทุกวันนี้ใช้ secrets sharing service ที่เรา deploy (บนโดเมนตัวเอง) กับทีมเขาอยู่

เป็นเรื่องดี? 😂

Karn Wong
• Unknown

2025-09-13

สาย privacy ถูกใจสิ่งนี้ ในลิ้งมี paper + technical report

huggingface มี แต่ถ้าอยากใช้บน ollama ต้องใช้กำลังภายในนิดนึง

https://research.google/blog/vaultgemma-the-worlds-most-capable-differentially-private-llm/

Karn Wong
• Unknown

2025-09-12

This secrets scanning tool is very fast, and it returns normal exit code when found secrets. Very impressed!

Normally I don't use mongodb (only for storing logs) but gotta say this is a gem.

https://github.com/mongodb/kingfisher


ส่วนตัวเข็ดกับการใช้สายเขียวทำ app db แต่ถ้าใช้เก็บ logs อย่างเดียวจะดีกว่า

แต่รอบนี้ทำถึง secrets scanning tool ตัวนี้ไวจริง ปกติใช้ trufflehog แต่รู้สึกมันผีๆ ไปหน่อยตอนพ่น exit code ถ้าเจอ secrets ต้องอ้อมกันนิดนึง แต่ kingfisher ใช้ท่ามาตราฐาน ไม่ได้หมก exit code ไว้

แนะนำให้ปักเข้า pre-commit กันมือลั่นตอน git push ขึ้นมา

re-roll secrets จะไม่ค่อยสนุกถ้าต้องทำ เสี่ยง downtime อีก

https://github.com/mongodb/kingfisher

Karn Wong
• Unknown

Multi-machine work setup

I have three machines that I use regularly: linux desktop, linux laptop and a macbook. The reason is because the pc is my desk setup, laptop for bedroom, and macbook for when I go out. Having these machines share the same state(ish) would be ideal because the machine switch ...

Karn Wong
• Unknown

2025-09-10

ชีวิตเด็กวิศวะ จะได้ยินคนกรี๊ดประจำ ตอนได้ parts ออกมาจากเครื่อง CNC แล้ว mating ไม่ได้ เพราะ margin น้อยไป

Software engineering is unlike traditional engineering disciplines in that for most of its lifetime it's had the luxury of purely deterministic expectations. This is not true in nearly every other type of engineering.

— potatolicious, in a conversation about AI engineering

Karn Wong
• Unknown

2025-09-01

Controversial แต่ก็อ่านได้ จะได้รู้ว่ามีคนคิดแบบนี้จริงๆ

Top comment เป็นตัวแทนให้ทุกคนแล้ว

คือจะคิดแบบนี้ก็ไม่ผิด แต่มันมีจริงๆ ที่ชาว swe ต้องมาผ่าตัดของที่ data ขึ้นไว้

แต่สลับกันก็มี คือทีม swe ขึ้น data pipelines ไว้ ชาว data มาเห็นคือจับผ่าตัดยกใหญ่

ถ้าจะสรุปก็คือ มันก็ไม่ใช่ว่ารู้ data อย่างเดียวแล้วจะทำ pipelines รอด มันต้องรู้หลักการ swe ด้วย รู้แค่อย่างใดอย่างนึงก็ขึ้นของได้แหละ แต่อาจจะมองไม่ครบมุม

ส่วนงาน ML ก็บันเทิงพอๆ กัน dev ใช้งานได้ พอจะเอาขึ้น production ต้องผ่าตัดชุดใหญ่ (ด่านยากสุด คือ ขอให้ DS ใช้ git)

https://medium.com/better-programming/data-engineering-is-not-software-engineering-af81eb8d3949

Karn Wong
• Unknown

Spatial join performance

In a community I'm in, someone asked how to optimize a slow spatial join query. There are multiple approaches, but the general idea is to reduce the resulting set (setA would be your polygons, setB would be your points) from a join operation (hello set theory). Tools & F...

Karn Wong
• Unknown

2025-08-28

ทำให้ pain points ย้อนกลับมาที่คนสร้าง เดี๋ยวเขาก็แก้เอง

ใจเขาใจเรา business logic ดีแค่ไหน แต่ถ้า users ไม่เข้าใจเหมือนคนสร้าง ก็ล่มอยู่ดี

นึกถึงเคสนึงที่น้องๆ มัด 3 features เข้ามาไว้ใน pr เดียว

จริงๆ ก็ทำได้ ไม่ผิดกติกา แค่ตอนเอาขึ้น production จะลุ้นหนักหน่อย ว่า feature ไหนทำร่วง

แต่ในเมื่อ features พันกันใน pr ไปแล้ว ก็..... stand by อยู่แก้ยันเช้าละกันนะ

หลังจากนั้น น้องๆ ทำ pr แยก features กันโดยอัตโนมัติ เจ็บนี้อีกนาน

https://www.reddit.com/r/Entrepreneur/comments/1mw5yfg/forced_every_engineer_to_take_sales_calls_they/

Karn Wong
• Unknown

2025-08-27

polars is faster than pandas. But when it comes to spatial operations everyone fallbacks to geopandas, especially when it comes to reading geoparquet files.

I find this very amusing, but personally I use spark sedona 😛


โลกนี้มี polars ที่ไวกว่า pandas

แต่บทต้องทำ spatial operations ทุกคนใน polars ecosystem พร้อมใจกันไปยืมมือ geopandas

โดยเฉพาะตอนอ่าน geoparquet สุดท้ายโดนไล่ไปคุยผ่าน geopandas parquet reader ตายที่ parsing bottleneck อยู่ดี

WKB/WKT/geometry column อีกล้านแปด ที่แต่ละ implementation คุยกันคนละอย่าง เพราะแต่ละยี่ห้อมอง geometry column คนละแบบ

แต่ถ้าเจ็บทีเดียวแต่จบ จะแนะนำ spark sedona เล่นใหญ่หน่อย แต่จบทุกงานจริงๆ

Karn Wong
• Unknown

Static lib linking in Go program

Background I have a Go program for various utilities. Some of the features talk to hardware: sensors and battery statistics. For funsies, I ported this program into Rust because I want to get a feel of the language outside the data/ml ecosystem. To my surprise, I found that...

Karn Wong
• Unknown

2025-08-25

Services และ tools ต่างๆ ที่ใช้ ให้ความสำคัญกับ privacy ไม่เท่ากัน อันนี้ก็แล้วแต่ว่ายอมรับกันได้ขนาดไหน ความเป็นจริงคือ email: ยังไงก็ต้องติดต่อกับชาวบ้าน ถ้าเป็น email provider ที่มี video call ผูกมาด้วย ไปสมัครติดไว้ก็ดี จะได้ไม่ติดปัญหาตอนต้องเข้าประชุม photos: immich ร...

Karn Wong
• Unknown

2025-08-24

Google ทำถึงอีกแล้ว เด็กเนิร์ดที่จริงใจ

เพราะฉะนั้น เลิกเถียงกันเถิด คนรัน datacenter ออกมาพูดแล้ว

ไมโครเวฟ 1 วินาที ยอมๆ เถอะ

https://cloud.google.com/blog/products/infrastructure/measuring-the-environmental-impact-of-ai-inference

Karn Wong
• Unknown

2025-08-18

Norway ที่ไม่ใช่ Norway

Yes ที่ไม่ใช่ Yes

อยากลุ้นระทึกตอนเขียน yaml เชิญได้ที่สถานี kubernetes

https://www.ohyaml.wtf/

Karn Wong
• Unknown

2025-08-16

ส่วนตัวใช้ todo.txt มาน่าจะเกิน 10 ปีละ ก็ยังไม่ย้ายออก flexible สุดในสามโลกล่ะ

reminder ใช้วิธีปักใน calendar เอา อะไรที่ต้องทำแบบมี timeline เอาลง calendar ให้หมด

อะไรที่อยากทำ แต่ตอนไหนก็ได้ ก็ใช้วิธีดู calendar เอาว่าว่างช่วงไหน แล้ว block เวลาเคลียร์ task เป็นอันๆ ไป

หรือบางทีพอมีเวลาว่าง ก็เช็ค todo เอาว่าพอมีอะไรทำเสร็จภายในช่วงนั้นมั้ย

เจ๋งสุดคือใช้ผ่าน command line ได้

ท่าโกงอีกอัน คือ เวลาเขียนโค้ดแล้วต้องงอก todo ก็งอกใน terminal แบบไวๆ เอา แล้วค่อยมาไล่เก็บ

แต่ถ้าท่านี้ไม่เวิก ก็ไม่ว่ากัน หาท่าที่เวิกกับตัวเองให้เจอก็พอ

https://www.al3rez.com/todo-txt-journey

Karn Wong
• Unknown

2025-08-15

I gave jujutsu a few tries, still doesn't click. But then I heavily use git staging area. I guess it makes sense in a way.

Karn Wong
• Unknown

2025-08-11

Been using Immich for a very long time, really love how the creator documents "bugs".

https://immich.app/cursed-knowledge/


ใครที่ทำ product ตัวเดียวกันนานๆ จะโชคดีได้เจอ bugs ประหลาดๆ (ถ้าได้ engineer ที่ทำงานที่เดียวกันมาเกิน 2 ปี แล้วมีส่วนในการทำ features และเก็บ bugs ถือว่าเจอของดี คว้าไว้แน่นๆ นะ คนที่อยู่นานพอเก็บกวาดซากตัวเองไม่ได้มีเยอะ)

มีคนทำ product ตัวนึงมาหลายปีละ เขาจดบันทึกไว้ ว่า เจอผีอะไรบ้าง เป็น case study ที่ดี ว่า ใดๆ ก็ตามที่ต้องมาไล่เก็บ bugs ควรจดบันทึกไว้ ว่า ไปเจออะไรมา ถึงต้องแก้กันท่านี้

https://immich.app/cursed-knowledge/

Karn Wong
• Unknown

2025-08-07-1

I write a lot of apps for personal use, ranging from gui, tui, mobile app.

In all cases, adjusting the layout and padding takes the longest time. No surprises here 🤣


พอดีเขียนแอปใช้เองเยอะ มีหมดทั้ง gui, tui, mobile

ส่วนที่กินเวลานานสุด เหมือนกันทุกเคส คือ การจัดหน้า,ช่องไฟ, layout

เบอร์ที่อย่าคาดหวังกับ LLM เพราะยังไงก็ต้องเก็บรายละเอียดเอง

(จะบอกว่างานส่วนอื่นไม่เจอเคสแนวๆ นี้ก็ไม่น่าใช่ เพราะคนดาต้าก็สติแตกกับทศนิยมอยู่ ว่า แต่ละจุดที่ดาต้าไหลไป มีใครมือลั่นแปลงทศนิยมมั้ย)

(งาน ops ก็กรี๊ดกันตอนที่ naming convention ของแต่ละ resources ไม่ตรงกัน บางอันถ้าจะเปลี่ยนชื่อต้องทุบทิ้งแล้วขึ้นใหม่สถานเดียว)

Karn Wong
• Unknown

2025-08-07-2

Been trying to find activity recovery time on my garmin (or the app) to no avail.

But then you can retrieve the value via garmin connect sdk.

Yup, I added it to my custom watchface.

Karn Wong
• Unknown

2025-08-05-1

Found this gem while looking through garmin connect sdk.

At first I thought maybe it's for Thai numbers? But I don't think people are mad enough to do that.


ไถ garmin connect sdk แล้วเจอว่า มี config ชื่อ FONT_NUMBER_THAI_HOT ด้วย ตอนแรกงง ว่า ฟ้อนเลขไทยเหรอ แต่ใครจะบ้า localize เลขไทย!!!

garmin-thai-hot

Karn Wong
• Unknown

2025-08-05-2

That moment when you are in deep focus mode but you need to cook.

The struggle is real.

Karn Wong
• Unknown

AWS cost optimization tactics

Imagine working on a product and you finally released it to the public. Things are going great for you, then your budget got out of control and you have to tame the spending. Below are a few tactics you can utilize to curb the costs. Cronjobs -> ECS Tasks on Fargate Cron...

Karn Wong
• Unknown

2025-08-01

The lengths I go to not have to fish out my phone out to check for stuff, yup - I wrote my own garmin apps to display qrcode and my todo list.


สองสามวันนี้นั่งคลำๆ Garmin Connect SDK เขียนแอปใช้เอง เพราะความขี้เกียจขั้นสุดที่ไม่อยากเอามือถือออกจากกระเป๋าเวลาต้องการดูอะไรไวๆ

Print statement ก็ยังคงใช้ debug ได้ทุกอย่าง

เจ็บกระดองใจตรงที่โดนวางยา ตอนยิง imageRequest มันไม่ยอมส่ง headers ให้ เลยต้องไปอ้อมใช้ apiKey ผ่าน queryParams แทน

ลงทุนเขียน app เอาไว้ดู qr code แค่นั้นเลย (มีหลังบ้านแยก ไปส่องดูได้ใน github)

มีทำไว้อีกอัน คือ เอาไว้ดู todo list (คนรอบตัวที่ยังคบกันอยู่ทุกวันนี้คงทำใจแล้วล่ะ ว่ายังไงก็เลิก DIY ไม่ได้ 55555)

Karn Wong
• Unknown

2025-07-27

ใน bluesky มีคนถามว่า ใช้ llm ช่วยเขียน IaC (จะ terraform หรือ pulumi ก็แล้วแต่ศรัทธา) เวิกมั้ย

มันก็ช่วยทุ่นแรงได้ แต่ไล่เช็ค config ทุกจุดก็ดี ว่า ตรงตามที่ต้องการมั้ย

typo นิดเดียว อาจจะหมดตัวได้ตอนปัก machine size

ทั้งนี้ ถ้าใช้ ui หรือ web console สร้าง infra ไม่เป็น

IaC ไม่ใช่วิธีแก้ปัญหา จะงงกว่าเดิมด้วย เพราะมันไม่มี wizard ช่วยดัก control flow

Karn Wong
• Unknown

2025-07-24

When you can write python and other languages, you might find yourself accidentally prototype in python, then rewrite in another language.

I am guilty of this, been doing this a lot with my projects, oops.


สิ่งที่จะเกิดขึ้น เมื่อเขียน python คล่องพอๆ กับภาษาอื่น คือ

จะมีการหลวมตัวเผา prototype ใน python แล้วค่อยไป rewrite ใหม่ในภาษาที่มีการทำ typing ดีๆ

ทำมากับหลายโปรเจคจนเห็น pattern ตัวเอง

ความเผลอมีอยู่จริง 🫣