Back from the dead (yet again)?

Hello again after so many years (just one actually). This blog has been here and there, up and down, and generally unreliable due to other priorities having taken up my time. Firstly, a summary of related events:

  1. The website server was moved onto spot pricing. Yay cheap, but what I didn’t realise was that the latest server snapshot is not saved when the price exceeds the maximum set. So I had posts that were published and then disappeared. And since the spot price kept spiking, the server also kept shutting down. This was some time after my last existing post.
  2. Amazon started charging for the Broadway Academy store instance, so this had to be shut down too. This was in December.
  3. Diablo III happened. Many loots.
  4. After very long consideration, I bought a new Haswell i5 Intel NUC. Last week. :D
    PC in a box, the Intel NUC.

    PC in a box, the Intel NUC.

    Such a tiny thing as a PC. Love it. Threw in 8GB of RAM and a terabyte drive in there for good measure. Migrated the blog over to nginx and php5-fpm. Also running XBMC for my media centre, and the ol’ minecraft server is up and running again. Next to do would be to migrate the BA store front, then shut down my presence on AWS permanently.

  5. Heartbleed happened. Patched everything up.

Will try to post more in the upcoming months. Stay tuned.

Still connected.

When you want something done, you gotta do it yourself.

When you still want to build a website over your holiday.

Greetings from Phuket! Tis officially the first day of our vacation here and we’re totally taking it easy by lazing around the pool/beach. While last year we spent most of the time reading and sleeping, this time I have my laptop along for the possible office emergency (hope they don’t call *crosses fingers*).

So here I am, as long as I can stand the screen glare, updating my WordPress JetPack settings (we have Publicize now!), and building an event registration site for our upcoming musical.

Yes, we’re in a musical. Don’t ask me how, but it’s been an enjoyable experience getting ready for the show. If you’re free on the 2nd or 3rd of March, 2013, please come and support us! Link to the Facebook event here. We’re doing RENT in Concert. RENT is a rock musical set in NY city about a group of poor artists trying to get by under the weight of HIV/AIDS. It’s pretty awesome for a musical. We’ve got profanity, homeless people, gay people, lesbians (one of which is played by my wife), drug dealers. I think the younger group would love it. :)

Going back to the event registration site, I’m now looking at possible plugins that allow payment via PayPal (that seems to be the only option readily available). The two that I’ve found, Event Planner and Event Registration, both have free integration to PayPal but Planner doesn’t seem to have MYR listed as a currency, so we’re left with Registration. If that doesn’t work, then I’ll have to temporarily shut this site down and run Magento or Spree which should have everything we need. We’ll see how it goes.

Anyway, it’s getting a little hot. Time for a dip in the pool. now on Amazon

Due to the inability of the Synology 411j NAS to host this wordpress site, we’ve finally moved to Amazon’s EC2 service. This is Amazon’s cloud service with its micro instance starting at USD15 a month if you run it 24/7.

Yes, USD15 is a little pricey for just a private wordpress blog, but Amazon allows new users to try it for free for a year. And since they have a data centre in Singapore, I thought why not?

The migration was simple enough. First step was to set up the EC2 instance, so we used one free preconfigured image by BitNami. Picked it up on the AWS Marketplace, then it’s up and running in no time.

Second step was migrating the entries over from the old blog. WordPress has a built in Import & Export feature so all the posts, including attachments, were migrated over effortlessly. Though I just realized we’re missing the posts from our guest bloggers; not sure when this happened, but it’s the same as the old site so it must’ve gotten deleted or transferred to another user during previous migrations.

Next was to point the site address from the old site to the new. The DNS server will continue running on the NAS, so it was just a matter of changing the CNAME entry from our current dynamic DNS to the Amazon one. There was a mention somewhere online that the Amazon hostname will change if the instance is restarted, so we’ll cross that bridge when we get to it.

After that, WordPress was running off the /wordpress subdirectory, so we needed to SSH into the instance and setup redirection from the root directory. A quick uncomment in /opt/bitnami/apps/wordpress/conf/httpd.conf and it happens, but permalinks are still pointing to the /wordpress subdirectory so I’m going to have to figure out how to work that with redirection.

As you may be able to tell, the server is running zippy as ever. Will just need to keep a reminder to move the blog again to a paid local web host before the AWS Free Tier expires. :P

Installing Playstation Media Server (PMS) on a Synology NAS (411j)

So I’ve recently acquired a Synology DS411j, which I hoped would have flawless built-in DLNA compatibility with my PS3. I should’ve known it was too much to ask for proper transcoding.

There’ve been plenty of discussion regarding how to get the PS3 media server, something I’ve been using on my Windows PC, installed on a Synology NAS. The most complete guide I’ve found is here on Mark in the Dark. I followed it, but I had to do a few things differently and additionally to get it to work proper.

In the end, transcoding was horrifyingly slow on the 411j’s processor. I could barely get the first frames off a 720p movie. But for those who have more powerful units and would like to try anyway, here are the modifications to the original guide. Props to Mark and synops for the original guide. My DSM version is 4.0-2197. Continue reading

ABAP: Stay logged into SAPGUI indefinitely

Sometimes you’re doing something midway on your system, and you’re interrupted for a meeting or lunch or whatever. You come back and you’ve been automatically logged out, losing whatever you were working on earlier.

Prior to our upgrade to ECC6, you can simply keep yourself logged in by making timed calls to function module SAPGUI_PROGRESS_INDICATOR. Once upgraded however, the code has changed, causing it to no longer extend your GUI session.

For those who missed out on the old code that does this, here it is:

*”*”Local Interface:

EXIT.    “do nothing in batch

EXIT.    “do nothing if turned off via SPA/GPA

IF PERC < 0.   PERC = 0.   ENDIF.
IF PERC > 100. PERC = 100. ENDIF.

MODN       = MODNO


Upgrading my 3.1.3 Spirit iPhone 3GS jailbreak to 4.2.1 greenpois0n

Just some notes for future reference.

Steps taken:

  1. Update stock firmware to 4.2.1
  2. Follow iClarified steps using greenp0is0n.
  3. Reinstalled Cydia apps, etc.


  • greenpois0n JB stopped at “firmware download etc etc 60000ms”. Waited 10 mins after that but it wouldn’t budge. Just reset the device and restart the whole JB process.
  • Old jailbreak files were not removed, particularly stuff in /var/stash. Will need to remove the old duplicate to get some space back.
  • Infinifolders is a good SBCategories replacement. :)

Wireless proxy configuration for your jailbroken iPhone

You are on your company’s WiFi network. You’ve been able to access intranet sites so far, but now you’d like to access an external site via the company’s HTTP proxy. Your company, however, does not provide a proxy auto-configuration URL. You are therefore stuck with having to add or remove the proxy manually in your iPhone WiFi settings each time you’d like to access external or local sites, respectively.

So how can we make things easier? Simple, create your own proxy.pac file.

Create a text document on your computer. In this file, write the JavaScript code necessary to help Safari use your proxy only when needed. See this Wikipedia page for examples. Here’s what mine looks like:

function FindProxyForURL(url, host) {

proxy = “PROXY″;

// Next, we want to send all traffic to browser direct
if (dnsDomainIs(host, “”)) {
return “DIRECT”;

// Loopback and localhost goes browser direct always.
if ((host == “localhost”) ||
(shExpMatch(host, “localhost.*”)) ||
(host == “″)) {
return “DIRECT”;

// Test to see if host is an IP address
reip = /^d+.d+.d+.d+$/g;

if (reip.test(host)) {

// Check for local IP address
if (isInNet(host, “″, “″)) {
return “DIRECT”;


// Default return condition is the proxy, since it’s assumed that everything
// else is on the Internet.
return proxy;

} // End of function

Save and name the file as proxy.pac. One site recommended that the file encoding be set to UTF-8, which I followed and it seems fine. Take this file and copy it to anywhere on your iPhone using tools such as iFunbox or iFile or SSH. I put mine in /var/mobile/Documents.

Now go back to your iPhone WiFi Settings in Settings –> Wi-Fi. Tap on the > button of your WiFi network to view its settings. Swipe all the way down and change HTTP Proxy to Auto, and in the URL field type in the file location, e.g. file:///var/mobile/Documents/proxy.pac. Exit, and all your programs should now automatically detect whether a proxy should be used whenever you are on this WiFi network.

SPCA confusion

The SPCA is great and all, taking in strays and whatnot, but seriously, their administration and ‘customer service’ could use some work. Love their doctors though.

As you may know, both our cats are formally adopted from SPCA.

Cat #1: Shcamper. Not yet neutered since he was still a ‘teenage’ kitten when we picked him up. The neutering fee should be free as part of the RM100 adoption fee. Called them to see if we can walk-in or schedule an appointment and the lady on the phone flat out said that they don’t do neutering. Told us to go to the Kembiri clinic instead. And we did, but the guy told us that actually SPCA cats should be neutered by SPCA back at Jalan Kerja Ayer Lama. Since we were already there we might as well proceed, with an additional RM50 donation for the procedure.

Cat #2: Chewmil. Spayed by SPCA but still shows signs of heat. Called SPCA to get her checked out but the girl on the phone said they don’t tend to adopted cats after one month of adoption. Like lepas tangan only right? Will most likely have to spend another RM100 for another procedure at Kembiri. Poor girl.

It would have been great if these people behind their desks would take the trouble to explain to people exactly how and what the process is. If there’s going to be just one month of support, at least say so in the beginning. I don’t know if these people are there just for the job or for the cats, but please lah, be more emphatic with the people you deal with.

why the hate?

Last month, while we’re on our way to Bali, some guy decides to post a comment on a 2-year old post:

Okay, you don’t like the post. It’s 2 sentences and piggybacks a reputable site. So? I don’t see why I must give my own thoughts to every single thing that happens in the world. I don’t see why I have to try to improve on something even when I don’t have anything to add. But if it’s useful, why can’t I just forward it and make it known? It’s a reputable site after all, so shouldn’t we link to reputable sites? Would you rather I link to your site instead, if you would have cared to share it with us?

Just because you can’t find anything of useful value here, doesn’t make this site useless. You might be the god of {insert subject matter here}, but what gives you the right to be so aloof and condescending to others? Everyone has something they’re good at, but not everyone needs to show off and be a prick. Before you even try to point out other peoples’ faults, why don’t you look at yourself in the mirror first and do something about that attitude of yours.

Oh, and Donald, why don’t you add me on Facebook so that we can compare friends? Maybe even Friendster? If you’re anything the smart guy you put out to be, you should be able to find me easily. Regardless of that outcome, go fuck yourself.