Blog

The Art of Posting

It's both self-promotion and communication

This piece is specifically more about Meta’s unique culture of “posting” about things but I imagine it can be a useful reference on communication in general. Many people loathe this process and complains about how it’s just a lot of “self-promotion” and while there’s definitely some truth to it, it’s also a valuable communication avenue that you can leverage to your advantage. As we will explore further below, posting by itself is more of a bonus as the post will still require actual substance (which is your work lol). ...

May 16, 2025

Push Fearlessly with Automated Testing

Move faster by moving slower

Conventional wisdom is that writing tests slows you down, because the alternative is that you don’t need to write tests. In fact, Meta (then Facebook) was famously lacking of automated test inline with it’s famous “move fast and break things” mantra. However, from what I’ve seen, I beg to differ. This is part of a series (The Opinionated Engineer) where I share my strong opinions on engineering practices. When to write tests? If you love something, put a ring test on it. ...

May 4, 2025

The Opinionated Engineer

Strong opinions about engineering practice

Historically, my personal blog has been mostly about “how to do x”, “guide on making y” but never about ideology or engineering practices. This new series intends to change that where I’ll explore the more opinionated side of myself especially around engineering practices instead of just the pure technical stuff. Topics I have not fully planned out the entire series but here are a few topics I have in mind (or have released) so far… ...

May 4, 2025

Self-Hosted GitHub Actions Runners

Turning your old laptops into GARs

This post will focus more on the “why” and some of the quirks around doing so instead of the “how” since GitHub already have a very comprehensive guide around it. Just wanted to take a bit of time to acknowledge that it’s been almost 3 years since I last wrote a blog post. It’s been a busy 3 years for sure but hopefully I’ll be writing more consistently moving forward. (I do have quite a few half-written drafts that I’ve never published which I can’t tell if it’s still relavant at this point.) ...

April 25, 2025

Automated Link Preview Image Card

Taking screenshots with Playwright

A while ago, I saw this tweet thread from Simon Willison about how he added social media preview cards to his TILs. He detailed how he did this through a combination of Puppeteer, Vercel, SQLite, and some other stuff I didn’t understand 😅. At that time, I was manually taking these screenshots by hand to be included as part of the commit, which is to say it’s not very efficient. Anyway, this stayed on my backlog of “things to explore” for a really long time until recently during this long weekend (where I also took additional PTOs), I had some free time and decided to look into this. The goal is simple, automate creating the preview images for a list of given / defined urls. ...

May 31, 2022

Rebuilding Personal Site from Scratch

Only HTML + CSS with no frameworks

As time goes on in my journey of experimenting with different technologies on building a web interface, I figured it’s time for my personal site to return to the fundamentals. So I decided to build it with only HTML + CSS with one of the goals being that it should work perfectly fine with JavaScript disabled. Before this, it’s built with Vue. You can still find the source here. Design Inspiration Skip this next paragraph if you’re not interested in my old site’s origin story. ...

January 31, 2022

Upgrading Vue TS Project (2.x -> 3.x)

Migrating from Parcel to vite

While Vue 3 has been out of beta for quite a while, (as noted on their website) a migration build is still a work in progress so the current advice is to stay with Vue 2 if it’s a non-trivial project. I procrastinated on this article for so long that a migration build has since been released. Feel free to check it out here. That said, as Parcel v1 is no longer maintained (and with v2 supporting only Vue 3), I figured it’s time to upgrade. ...

December 12, 2021

Ava with Vue (2.x) + TypeScript (and NYC)

Component and Unit Testing with Test Coverage

When working on a project with Vue (TypeScript), I faced a lot of roadblocks trying to get code coverage to work. The issue is largely covered in this issue thread. Most solutions / workarounds for that seems to revolve around changing the bundling flow with webpack. Considering my lack of familiarity with webpack (on top of my use of scss and pug in Vue files), putting together a webpack config that works for me turns out to be extremely challenging. That somewhat prompted me to move the build and test process away from vue-cli while starting to experiment with different tools that could work. One thing to note is that, I’ll be using babel to handle TypeScript compiling / transpiling instead of ts-node as recommended from Ava’s guide. ...

May 22, 2021