All Posts
- OpenTelemetry for NextJS and Google Cloud Trace
- Next.JS dynamic import and 500 error
- Memoize and memory leak
- Heated gloves
- Campervan to Slovenia 2024 🇳🇱🇩🇪🇦🇹🇸🇮
- 2023
- Cloud services for my personal projects in 2023
- Keyboard
- หนึ่งปีที่ผ่านมาใน Netherlands
- Feeds 2.5, bring back files database
- Mastodon timeline
- Firestore
- My wrong assumptions with ActivityPub
- 2022
- Mastodon server with NextJS
- Infinite Scroll
- Gallery Page
- Container Query & overscroll-behavior
- Next.JS 13
- iCloud Photos shared album
- Amsterdam after 6 months
- NextJS middleware 12.1 vs 12.2
- First fall in Netherlands
- Amsterdam after 3 months
- Netgear MR5200
- Test & Go
- 👋 Singapore
- Javascript unicode text splitting
- Apple Watch Browser
- 2021
- Modern Java
- URI matrix parameter
- DSM7 vhost
- Freestyle Libre 2
- Moots 20,000km
- Lasik
- Debian 10 arm64 with qemu
- Fetch API with progress
- Static feeds aggregator
- Festive500
- 2020
- M1
- Singapore round island ride
- DynamoDB virtual table
- Bounce & Complaint
- Libby
- OpenMapTiles on Synology
- Indoor cycling
- Moots 10,000km
- 11ty
- Gran Fondo 2019
- 2018
- ECS and EC2 on spot instances
- Windows as my work machine
- NTU Bike Rally 2018
- 2017
- Building my own router and HomeKit hub
- Ruby and new Nodejs on AWS Lambda
- Cycle to work
- Fenix 3 HR
- 2015
- Bishan park to circuit road
- 2014
- Ember.js
- Renew EP
- iPhone6
- OpenVPN + DD-WRT
- function.bind()
- Logging in PHP
- chai.js deep equal
- 2013
- q.js and Mocha
- Angelhack Singapore 2013
- ดูหนังรอบๆ Southeast Asia