Blog

Self-Hosted GitHub Runners

Turning your old laptops into GH Runners

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 a Vue TypeScript 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

Multi-language Support Build Tool

Developing with Please

I recently started learning about Go to find out what’s all the hype about. So I figured what’s a better way than to build a project out of it? As I was setting up my machine and going through tutorials step-by-step, I was slightly annoyed by the fact that the development of Go projects are limited to inside the $GOPATH. Personally, I have all my side projects stored at the top level of the computer. It might not be the best way to do it but I’m liking that I can see all my projects at one glance. I guess one could argue that you can soft link the folder into the folder inside $GOPATH and I would pretty much achieve the same effect. But it didn’t quite feel right to me, sounds like a really hacky workaround that might not worth the maintenance cost as I switch to a separate machine only to have to do everything all over again. ...

August 7, 2019

Functional and flexible shell scripting tricks

Shell scripts vs python or perl Its 2019 now, who writes shell scripts anymore? Am I right? Well, apparently I do. ¯\_(ツ)_/¯ There are some good arguments for that here and here which mainly revolve around 2 things: Shell exists in all Unix systems and makes use of system default features. Shell is an “interactive command function” designed to get user inputs during the process of running them. Also, here’s an additional relevant reading about the differences between sh and bash. ...

May 7, 2019

Test Driven Development with Alexa SDK

Quick guide to building and unit testing an Alexa Skill

What is Test Driven Development? According to Wikipedia, it means “Requirements are turned into very specific test cases, then the software is improved to pass the new tests, only.” Basically, you would first have to write the test of the software/feature you are developing before you start working on the developing the software/feature itself. Here are a few more articles on the benefits and why you should apply TDD: Test Driven Development by Jan Olbrich Isn’t TDD twice the work? Why should you care? by Navdeep Singh Preparation Here are a few thing you might want to have set up or installed before getting started: ...

October 29, 2018