Tuan Anh

container nerd. k8s || GTFO

A conversation with stranger

Stranger: So you’ve been living here for nine years? How come you don’t speak Thai?

me: Well… (chuckle)

Stranger: What do you do for a living?

me: I’m a programmer. I write softwares.

Stranger: Aha. So you’re a nerd? You don’t feel the need to talk to people.

me: Well…yes.

Social sharing button without embedding sharing script crap

Found this collection share url structure from various social networks on Github.

Example, for Twitter:


social sharing buttons

Use this along with font-awesome icons and we have some nice social sharing buttons without tracking scripts or slowing down your website one bit.

When static website isn't fast enough

I have recently taken a look at my website loading speed again.

A bit about my website, as of currently:

  • I hosted my website on a smallest, cheapest VPS plan at RamNode ($15 per year, massive plan) which shares the physical machine with a numerous other people.

  • This website is powered by jekyll - a static site generator.

  • The website is using a custom theme, based on Bootstrap. I loaded two addtional fonts from Google Fonts (Ubuntu and Merriweather) for heading and paragraph.

  • I have Jquery and Bootstrap script on my page for some fancy stuff I might need later, along with Google Analytics script (async).


As for the testing setup, I will compare the loading speed of two posts with text only.

  Gtmetrix Webpagetest
Total load time 2.8s 2s
Size 247KB 221KB
Number of request 14 17
Location Canada US
PageSpeed 98 96
YSlow 96 -

2-3 seconds to load isn’t too bad itself but it’s definitely not good enough for me. My idea number would be something less than 1 second. I know that custom fonts come with the trade of loading speed but I would expect it to load faster than this, especially when they’re served by Google.

Stuff I have already tried:

  • Combine CSS into a single file, minified and served by CloudFlare.

  • Images are optimized with ImageOptim for optimal size.

  • Defer/async script when possible. Loading JS script right before </body> tag.

Webpagetest gives my website A for everything except: First Byte Time (B) and Cache static content (C). Let’s break it down.

First Byte Time

  • 845 ms First Byte Time
  • 717 ms Target First Byte Time

Apparently, the VPS my website is on is slow (which is expected). I can’t do much to enhance this either.

Cache static content

Webpagetest also complains about there’s no max-age or expires set in header on fonts.googleapi.com. I have no idea why Google didn’t set max-age or expires for this. Maybe someone with better understanding about this can help explaining to me.

As much as I would like to make my website load faster (I’m sucker for this kind of stuff), I either have to upgrade the VPS plan ($$$) or go with web safe fonts (Ewwwww!).

I guess I would have to settle with this for now. Hopefully, you don’t find this website too slow.

New theme

My blog is now using customized Shiori theme - a Bootstrap-based theme for jekyll by Elle Kasai.

The switching process is painless. I just have to copy my data over from old jekyll instance, tweak here and there a bit and git push. BAMM! The blog now has a shiny new modern look :)

new theme

BAT script to execute commands on remote Unix machine with PuTTY

putty -i private_key.ppk [email protected] -m local_script.bat

In the example above, I use public key authentication to authenticate and then execute the commands inside local_script.bat on the remote machine. Alternatively, you can use plink which is basically putty without the GUI part. All other options are basically the same.

You can also use password for authentication, just replace -i option with -pw and your password.

youtube-dl - A must have little gem in your toolbelt

youtube-dl is a small command-line program to download videos from YouTube.com and a few more sites.

Installing youtube-dl is as easy as brew install youtube-dl on OS X.

youtube-dl allows you to download from many online audio/video sharing websites, not just Youtube.

You can use it to download all videos from a playlist, from a channel or simply extracting the audio from a Youtube link.

From a channel:

youtube-dl -citw ytuser:channel_name

From a link/playlist

youtube-dl youtube_link

Listing all available formats:

youtube-dl -F OKbtC223e30

Download a Youtube video as audio

youtube-dl -f bestaudio OKbtC223e30

youtube-dl is included in many distro’s repo but I recommend you to install from the main website for quicker update. The version in the repo is usually very outdated.

link bài gốc

Shorter code is better?


Which one do you prefer: shorter code or more legible code? As for me, legibility of the code always come first. Working in a team will make one realize the importance of code legibility sooner or later. Your code is not for you alone to read. It should be friendly and easy for whoever has to maintain your code as well. It’s not easy to write elegant code but it’s much easier to write legible code.

  • Always give a good name to your variables. It’s not random naming was talked as one of the hardest problems in computer science.

“There are only two hard things in Computer Science: cache invalidation and naming things.”

- Phil Karlton

  • Comments: comment is not a bad thing. But lots of comment definitely is. It might be a signal that the code is not legible enough that it needs that much lines of comment for readers to be able to understand. Also, it’s not a good thing to comment code and leave it there. It will create confusion for those who maintains it.

  • Uncouple your code. Uncoupling increases legibility and writing test unit a lot easier.

  • Write everything as if you were to write an API, as it should be intuitive and easy to understand. Your code should be easy to make changes when needed. It should not break a whole system when does.

“Writing specifications is like writing a novel. Writing code is like writing poetry.”

Your code can talk, so tell a story.

Where is the safest seat on airplane?

Business class seat doesn’t look very tempting all of sudden.

So when the “experts” tell you it doesn’t matter where you sit, have a chuckle and head for the back of the plane. And once your seatbelt is firmly fastened, relax: There’s been only one fatal jet crash in the U.S. in the last five-plus years.

airplan seat survival rate

link bài gốc

Filco Majestouch 2 Ninja Italian Red (TKL) review

This is a short review of a Filco Majestouch 2 Ninja TKL (Italian Red version). I ordered mine from eBay and the keyboard arrived 3 days later. The keyboard came with some additional keycaps (WASD and Escape keys in red and black) and a keycap puller.

First impression

This thing is sexy as hell. This was one of the main reason I purchase this board to begin with.

The case feels really sturdy. Let me put it this way: the HHKB case is very solidly built, this keyboard’s case is even better. That’s how good it feels when you hold the keyboard.

There’s no backlit, media keys, OS X friendly keys (can be solved with software), usb hub built-in or detachable cable. Some of those are nice features to have but not essential to me. I personally hate backlit and think it’s to gaming-y. I bought this board because it’s a simple, no bullshit keyboard. Overall, I’m very satisfied with the aesthetic of this keyboard.

The switches

I went with the blue switches option. It’s my personal favorite choice of Cherry switch. One downside as you probably already have known is this thing is really loud. I mean REALLY loud. If you want to make your colleagues secretly hate you, buy one of those blue switch mechanical keyboard.

The keycaps

The default keycaps look pretty good and it matches well with the whole design. I’ve always wanted a set of Dolch or Granite keyset but I don’t think it’s going to look good with this board. I haven’t had the luxury of trying them out yet though.

There were reports of fading key labels with other Filco’s keyboard so they release this keyboard with front face printing keycaps. I think it’s a lame reason but it looks pretty cool though.

For this keyboard’s price range, it should have shipped with thick PBT keycaps instead of coated ABS.


This keyboard is a simple, no-bs, very high quality keyboard. I love everything about this keyboard: the look, the feel and the sound. Though it’s a bit more expensive than the competitors’ keyboards, it’s totally worth it IMO. The fact that it is sturdier than a premium keyboard (HHKB) says it all.

It’s probably the best TKL keyboard with Cherry switches available right now.

Filco Majestouch 2 Italian Red (TKL) with blue switches

My latest addition to my keyboard collection: an Italian Red Filco Majestouch 2 (tenkeyless version) with blue switches.

It’s really hard to find a shop with Filco in stock here in Thailand. I could only find one with black switch in stock, which I am not a huge fan of as it’s the linear type with no tactile feedback and too stiff for my taste. Other shops mostly stock Razer, Rocco, SteelSeries and Ducky.

I was a bit hesitate at first with this purchase because I thought this board uses red switches (which is like black but less stiff) but turn out, it comes with blue one which is my favorite.

The keyboard comes with a keycap puller and some alternative keycaps: WASD cluster, 2 windows key and an Esc key, all are in red.

My next step is waiting for someone to sell their sexy SP’s Dolch (or Granite, or both :D) keyset to go with this board. In the meantime, this stock keyset probably will do just fine.