All posts
- A collection of pronatalist pieces 18 October 2026
- 2026 Japanese learning experiment 11 October 2026
- human computing in the age of LLMs 11 October 2026
- My reading journey 30 August 2026
- My experience with aristocratic tutoring 30 August 2026
- One simple trick to have good dates 30 August 2026
- Scattered thoughts and changes on turning 30 3 August 2026
- songs I like 3 May 2026
- Pixel Art on NFC cards 3 May 2026
- Growing up in the 90s 3 May 2026
- video games are IQ shredders 9 July 2025
- improving the site (2025) 6 July 2025
- two types of ideas 21 June 2025
- A game 10 years in the making 19 June 2025
- On growth 14 June 2025
- Advice for finalists 13 June 2025
- Braindump on language learning 10 June 2025
- Deutsch Lernen 10 September 2023
- on education 15 July 2023
- How to increase brain plasticity for language learning 27 June 2023
- Georgism in Singapore 24 June 2023
- Guerilla Gardening 4 June 2023
- Joy 15 May 2023
- On Tiktok and Instagram Reels 14 May 2023
- Using technology to aid language learning 23 April 2023
- Improving the site (2023) 8 April 2023
- How to draw isometric cubes with Javascript and HTML canvas 15 March 2023
- Can NFTs be used to fund art? 1 January 2023
- Protocols for optimal health 1 January 2023
- Optimising my onebag 1 December 2022
- My "indefinite" onebag setup 1 December 2022
- Der Schatz von Hiddensee 1 October 2022
- Farming snails in Singapore 1 August 2022
- Alternative agriculture 1 August 2022
- Should we bring back the triclinium? 1 May 2022
- Ants 23 April 2022
- Recontextualising my site (2022) 3 February 2022
- Can you gain muscle doing only isometric exercises? 2 February 2022
- Is nonsurgical penile enhancement possible? 25 January 2022
- Is sauna good for you? 23 January 2022
- How to import and display Markdown files in React 1 September 2021
- How to implement role-based access control for AWS (Cognito, DynamoDB) 22 June 2021
- Solving two brainteasers 舅母 gave me 9 May 2021
- tl;dr of my Politics undergraduate thesis 1 May 2021
- MMODiscord: Run your own virtual world on any Discord server 7 April 2021
- Some ways to deal with big(-ish) data: 'why do we get an OutOfMemory error in FPGrowth?' 31 March 2021
- Notes on AWS's serverless framework 24 March 2021
- Notes on Dynamo (2007) 20 March 2021
- MIT's 6.824 Distributed Systems, Lab 2: Raft 16 March 2021
- Memcached at Facebook (2013) 15 March 2021
- Notes on Amazon Aurora (2017, 2018) 7 March 2021
- FLP Impossibility Theorem 1 March 2021
- Notes on technical mentorship 21 February 2021
- Some rough notes on React after playing with it for a day 19 February 2021
- Splitting a string into the fewest number of palindromes 18 February 2021
- Saltzer and Kaashoek (2009). Principles of Computer System Design: An Introduction 15 February 2021
- Notes on CRDTs 15 February 2021
- System design (and business case) for a EV charging station backend 13 February 2021
- What is a Golang interface? 11 February 2021
- What is the CAP theorem really about? 11 February 2021
- Rao, Shekita and Tata (2011). Using Paxos to Build a Scalable, Consistent, and Highly Available Datastore [Spinnaker] 8 February 2021
- Ongaro and Ousterhout (2014). In Search of an Understandable Consensus Algorithm [Raft] 5 February 2021
- MIT's 6.824 Distributed Systems, Lab 1: MapReduce 5 February 2021
- Dean and Ghemawat (2004). MapReduce: Simplified Data Processing on Large Clusters 5 February 2021
- Self-studying MIT's 6.824 Distributed Systems 1 February 2021
- DIY-ing a Stanford CS degree in one year 30 January 2021
- Making your habits zero-friction is a massive productivity hack 28 January 2021
- Group testing to save the world 24 January 2021
- From Third World to Utopia: Singapore could end poverty for our children forever, today 18 January 2021
- Radically new ways of living and working are for the first time available (again) to us 10 January 2021
- Planning to build a Discord spatial layer 6 January 2021
- Worlds for hyperlocal communities 6 January 2021
- Teleoperation: enabling remote work for nonremote workers 4 January 2021
- The cheater's chessboard 3 January 2021
- Debugging my thesis 25 December 2020
- Report on CS107E Lab and Assignment 3 21 December 2020
- Report on CS107E Lab and Assignment 2 20 December 2020
- Report on CS107E Assignment 1 19 December 2020
- Geolibertarianism with Harberger Taxes 6 December 2020
- Three levels of competency 30 November 2020
- A new method of training: can resting for hours between exercises maximise your gains? 30 November 2020
- Convergence is (finally) coming 30 November 2020
- How to set up bidirectional communication between a Docker container and its host machine using TCP sockets 15 November 2020
- How to install librealsense and pyrealsense2 on the Jetson NX 4 November 2020
- Pair work: the One Weird Trick to finally ship your side projects 8 October 2020
- Home gym ideas 27 September 2020
- Virtual workspaces --- working in a Minecraft office? 26 September 2020
- Clustering GPS trip data 11 September 2020
- Board Game Engine 1 September 2020
- Building a Python parallel processing pipeline package (R-3PO) 29 August 2020
- GSoC 2020: implementing real-time metrics for MGGG's Districtr app 28 August 2020
- A market-based mechanism to preserve Indonesia's forests 19 August 2020
- Rebuilding this website 3 August 2020
- Building a code sharing MVP with React and the WebSockets API 2 August 2020
- Singapore's GRC system likely advantages the PAP: a game-theoretic analysis 7 July 2020
- My 2020 fitness routine 1 July 2020
- How many solar panels would be needed to 100% solar-power Singapore? 2 June 2020
- Theopol Final Exams 1 June 2020
- QE Final Exams 1 June 2020
- PolSoc Final Exams 1 June 2020
- Micro Final Exams 1 June 2020
- Macro Final Exams 1 June 2020
- Game Theory Final Exams 1 June 2020
- Politics Thesis 23 April 2020
- Building a deep learning pipeline + model with Keras and PlaidML 17 September 2019
- Building an Bayesian SMS sender 16 September 2019
- Doing distributed data analysis on a Raspberry Pi cluster 12 September 2019
- The beta-Bernoulli bandit, Thompson sampling, and Bayesian inference 12 July 2019
- A gentle introduction to the IS-PC-MR model 21 April 2019
- Explaining Acemoglu's model of directed technical change: a primer 20 April 2019
- Building an automated, blockchain-connected model train diorama 31 January 2019
- Blocktrain 1 August 2018
- Phonics Game 1 July 2018
- Q-Step Essay 6 May 2018
- Dropship Chess 1 September 2017
- Inspector's Gadget 1 August 2017
- Building a Raspberry Pi console 30 May 2017
- Building my first Telegram bot 20 September 2016
- Automated Transaction Tracker 1 August 2016
- Form Emailer and Form Letterer 1 April 2016
Private posts
- 2026-09-29 daily note 29 September 2026
- 2025 Year Compass 1 January 2026
- What is the blockchain good for? 8 December 2025
- Classics study guide 10 June 2025
- 2023 in review 26 December 2023
- A primer on oil swaps 5 September 2023
- On Bologna 23 August 2023
- Letter to my sister 2 August 2023
- one month in berlin 23 July 2023
- On being a better friend (or, the Autist's Guide to the Galaxy) 8 July 2023
- Thoughts May 2023 7 May 2023
- A super private post! 8 April 2023
- 2022 in review 18 December 2022
- six months on the road 1 July 2022
- Figuring out how I feel about relationships 1 February 2022
- 2021 in review 31 December 2021
- Behavioural questions for Anima 10 August 2021
- Quarter-life review 2 August 2021
- How do Fleet Adapters work? 8 April 2021
- Thoughts on the VAMA2 demo we gave, and what our next steps should be 5 April 2021
- Notes on my first meeting with Cedric 6 March 2021
- Technical documentation for the Scene Understanding Module in IMDA's VAMA2 autonomous robotics project 5 March 2021
- A letter to my past self 24 January 2021
- 2021 Week 3 Review 17 January 2021
- 2020 in review 27 December 2020
- What I've been doing since I last applied to Harvard 15 December 2020
- Taking stock of all my projects 15 December 2020
- 2020 Week 49 review (29 Nov-5 Dec) 6 December 2020
- Projects to-do list 1 December 2020
- 2020 Week 48 review (21-28 Nov) 29 November 2020
- 2020 Week 46 review (09-15 Nov) 15 November 2020
- 2020 Week 45 review (01-08 Nov) 8 November 2020
- 2020 Week 44 review (25-30 Oct) 31 October 2020
- 2020 Week 43 review (18-24 Oct) 25 October 2020
- 2020 Week 42 review (11-17 Oct) 18 October 2020
- Letter to Bassel in August 2020, after my Finals results 1 August 2020
- 2020 Semiannual Review 31 July 2020
- Thoughts on a trip to Kuhlenbronn 29 July 2020
- 2019 Annual Review 1 January 2020
- Email to Bassel telling him about my internship and thesis during July 2019 28 July 2019
- 2019 Semiannual Review 19 July 2019
- Breaking up 23 June 2019
- HT 2019 report and plans for the summer 23 June 2019
- MT 2018 report and plans for 2019 1 January 2019
- 2018 Semiannual Review 1 July 2018
- Hilary 2018 report 10 March 2018
- Michaelmas 2017 report 5 December 2017
- Sep 2017 report 24 September 2017
- Aug 2017 report 22 August 2017
- May 2017 report 29 May 2017
- 2017 Quarterly Report I 31 March 2017
- 2016 Annual Review 27 December 2016
- 2015 Annual Review 26 December 2016
- ORD lo 6 December 2016
- October in review; plans for November 28 October 2016
- An eventful Saturday 8 October 2016
- September 2016 report 5 September 2016
- Long-overdue update 11 August 2016
- On Brexit, and the unreasonable effectiveness of demagoguery 24 June 2016
- An update on my life so far 26 May 2016
- Meeting with iDA staff (Oscar, Kiranjit and Eric) 11 May 2016
- Meeting with Mrs Hauw, swimming with Xiao Hui and future plans 10 May 2016
- daily report: I talk about what I've done for the past two weeks 5 May 2016
- daily report 24 April 2016
- daily report: my first post 23 April 2016