Copying slices in Go

As we know, Go slices hover on top of fixed arrays; modifying elements in a slice also modifies the underlying array. In some scenarios, that’s unacceptable. Hence, we need slice copying! 1. Use slices.Clone slices.Clone is available from Go 1.21 onward. What’s cool about it is that it takes care of the pre-allocation of space… Continue reading Copying slices in Go

Map-as-Set in Go

In programming languages like Go, there is no built-in type for set. A set essentially answers yes or no: is a given element present? We can use the built-in map type to implement sets. I used to implement map-as-set like this: Apparently, Gemini thinks there’s a better way: Gemini thinks this is better because it… Continue reading Map-as-Set in Go

KompacPlus

KompacPlus is marketed as a counter top material, and sometimes wall material. The sellers often claim it’s comparable to quartz and sintered stone. KompacPlus is made in Italy, but only sold in Singapore and Malaysia. It’s essentially “made from layers of resin-soaked kraft paper” and compressed with extremely high heat and pressure. It’s non-porous, somewhat… Continue reading KompacPlus

Let’s Encrypt! certificate always expires

Update (October 2026): While the manual command below still works, it’s actually outdated! Modern Certbot installations handle renewals automatically via background systemd timers. If your certificate is still expiring, your background timer might be broken. Run: to test the automation instead of SSHing in every 3 months. Original post: I usually don’t SSH into the… Continue reading Let’s Encrypt! certificate always expires

Interface implementation in Go is implicit

I’m quite familiar with the concept of interface in Java; but on my first day reading my colleague’s Go code, I was a little confused. Here’s how: In Java, implementing an interface is explicitly declared with the keyword implements, followed by the names of the interfaces being implemented. For example: By looking at the class… Continue reading Interface implementation in Go is implicit

Best MySQL data types for storing date & time

When it comes to storing date/time in MySQL, several data types are commonly used. My colleagues and I had a brief discussion today on which type we should use for storing created and last updated date/time. Folks were divided into two camps. Those who preferred to work directly with UNIX timestamp wanted bigint, while people… Continue reading Best MySQL data types for storing date & time