There are only 2 bus companies in Singapore. SBS Transit being the largest and whose buses I travel on most frequently.

They released an iPhone app called iris, for poor people like me who cannot afford our own mode of transportation,  which we can use to check the time the next bus will arrive at a specified bus stop.

It was frustrating to use. I hated the loading screen which wastes a few seconds of my time. And then I had to spend a few taps to get to my favourites list which I’ve added the bus numbers that I frequently use.

On top of that, there are frequent unknown errors and I would have to try and reload the bus timings again and each load takes a long time to complete.

I happened to learn about the mitm proxy tool from an article that exposed how the Path app was sending user’s address book info in plain text to their servers.

This tool can be used to analyze traffic data between a phone and the internet. So I set it up and used it to analyze the HTTP requests made from the iris app.

It made a lot of requests which explains why it’s always so slow.

So knowing the structure of the data that was sent and received from the iris servers allowed me to write my own web app to get the information I want. And the result…


It worked perfectly. And very fast.

I’ve added it as a bookmark icon on my phone. One tap, it brings me to the browser and loads my web app. Instantly, I’m shown a list of bus numbers that I frequently use. Tapping on the bus number, will load the next and subsequent time remaining till that bus arrives at the bus stop. That’s all I need.

There’s even a short cut to load the timings for 2 buses that I travel on everyday to get to work.

It uses cache.manifest to make the browser cache the jQuery file and the index file, this made loading the app almost instant.

I’ve also added 2 fields at the bottom which takes in the bus number and bus stop number so I can check the bus timings for other buses just in case.

tl;dr: programming and computers are fun.


Work has begun on the next version of The Tarutaru Times Online.

I don’t know when I can finish it, and I can’t promise it.

It will be a complete rewrite of the whole system, using all the new knowledge I’ve gained since v2.

You could say the motivation for this rewrite is because of FF14. It’s that good.

And to commemorate this new beginning, I’ve updated the blog, using the new templates :o

ファイナルファンタジーXIV v2







14のバトルの基本は戦いながら動いて敵の技を避ける。そのおかげでつまんないじゃない。 でもうまく避けないと、ほかのプレーヤーさんに迷惑をかけてしまいます。





Final Fantasy XIV v2

I’ve been playing XIV for a few months now. It’s a lot better than v1. No more lag, nice cutscenes with famous voice actors (JP voices), cleaner UI, beautiful scenery.

Some of the things I like over XI is how the battles require lots of movement to avoid enemy attacks. Makes dual-boxing impossible.

Equipment cannot be switched during battle so no need to have a separate equipment set for weaponskills. (The battle system already makes this unneccessary anyway).

Though I do have 2 sets of equipment for my PLD, HP focused and damage focused. HP for the more difficult battles like the extreme primals and damage-focused for the easier ones like Wanderer’s Palace.

Community-wise, like any other MMO, elitism can easily be found. Doing Praetorium the other day with some new players, as soon as we mentioned that we’re going to watch the long cutscenes, one player immediately left without saying a word. Fortunately, we managed to finished it smoothly with just one healer.

It’s possible to re-watch the cutscenes in the inn but the experience just doesn’t feel right. I can’t tell which cutscene started at which point of the mission. The cutscenes also add more intensity and meaning to the battles that follow.

Some of the battles here require lots of movement, making it very exciting. And it can also be very frustrating for others.

While it’s good to be able to finish Titan HM with one try, trying it several times with an average group and finishing it feels great too.

I had a classic comedic moment doing Titan HM as a BRD over the weekend. As I did repelling shot to avoid Weight of the Land (WotL), another player was standing behind me, out of my screen, also had the WotL appearing beneath him. I laughed at myself after seeing my character jump back and land on his WotL.

With the v2.2 update coming soon, players will get a small boost on their stats after every wipe, in small increments for up to like 50%. This gives me some mixed feelings.

On one hand, I will probably be able to finish the extreme primal trials with less difficulty.

But on the other hand, I will definitely miss the feeling of overcoming the hard battles with players who are committed to sticking with the current group to the very end.

Deploying with Github

Just a note for myself. Or if anyone’s interested, feel free to continue reading.

This posts records the steps needed to allow the webserver to run a “git pull” command in your website’s folder.

Setting up SSH

In the case of Nginx, the home folder is /var/cache/nginx/

You need a .ssh folder here with the ownership given to “nginx”, which is the user account the webserver runs as.

Generate your PKI keys, update the public key at github and also make sure nginx owns those keys.

Website folder permissions

You will need to change the ownership of all the files in your web folder, including the .git folder and files to the “nginx” user account.

Git pull

su nginx to “log in” as the nginx user. You may need to change the bash settings in /etc/passwd in order to allow this login.

go to your website folder and run “git pull”. You will be asked to add the public key for into your list of known hosts, so just type in “yes”

Github hook

I have a php file in /var/www/html that runs the git pull in the website folder when accessed.

The line of code is simply:

shell_exec(“cd /var/www/; git pull”);

Then add the url to this file in github’s hooks section and whenever you push to github, github will send a post to this file, triggering the git pull in that website folder.