I’ve been there. My friends have been there. Maybe you’re there right now. It’s easy to do. You work accesssing a number of different servers, one for your company’s git server, one for a deployment server, one for testing/ staging. Maybe you also have a peronsal git server & web server for your blog.

Accessing that many servers can get to be a mess, but thankfully ssh-keys often make that process better. Even so, you’ve probably either entered the wrong password or forgotten to add your key to ‘authorized_keys’ and locked yourself out of your server with denyhost.

I’ve done this a number of times, and have also had friends do it, and DenyHost can be tricky to unblock. Fortunately I found this nixCraft post that outlined how to remove myself (or my friend) from each file that DenyHost uses to block users.

Using that as I guide, I’ve made a simple tool that allows me to easily remove a given IP from the list of blocked addresses. It’s a rather basic python script, but is super easy to use.
Check it out, it’s called Unblock.

It’s really basic, but it works well. If your friend gives you a shout ( since you still have access to the server he is blocked from), just have him email you his IP-Address, clone the repo and run the utility on the server. If you’ve locked yourself out of your personal server, you’ll have to login while physically present and clone the repo locally, or use your VPS’s web shell console (both linode and rackspace provide one by default) in order to get yourself back in.

So I’ve started learning a bit more about web application programming and javascript, and my blog seemed like a nice place to start learning about the new javascript framework AngularJS being developed at Google.

It’s really cool and thanks to John Linquist’s videos, it is really easy to learn too.

This being my first foray into a javascript framework (outside of jQuery/ jQueryUI), I had a lot to learn but it went quickly enough. You’ll notice now that clicking the “Older Posts” & “Newer Posts” on the front page don’t cause the entire DOM to reload. Just the content. This is being done with an AngularJS “ng-view” that is linked to based on the route, also defined with AngularJS.

This all was relatively easy to set up; I did had the site setup to cause links to posts to also be loaded in the ng-view, but decided against that for this particular use case because it causes permalinks to fail. Even so, the main page navigation is much more responsive.

On the home page I’m using Jekyll to generate a posts.json file and then use “ng-resource” to do a “Post.query()” on the home page and then limit the array to 5 items on each page. You can check out the full source code for that in main.js

Right now the biggest issue for me is the fact that the routes don’t match cleanly to actual URL’s, so it makes permalinks hard to use with statically generated sites, but I really like the framework overall and am looking for ways to integrate it with some other projects I’m working on.

Having had my fun with Wordpress I’ve decided to redo my blogging platform, and hopefully blog a bit more in the process. I really like what Wordpress has done, but I first set that up years ago before I was familiar with general web development, and lately I have decided that it too restricting if you have a developer background. I’ve gotten started with Jekyll that’s being developed by the folks at github, and thus far am really loving it. I can now write posts in any text editor using markdown or just general html. Right now I prefer using html, but may start using more markdown as that’s what github is currently using.

Converting my existing posts from Wordpress hasn’t been too challenging thanks to tools like exitwp, but there is still a fair bit left to be done. I’m still in the process of converting over existing comments and signing-up/integrating [Disqus]. Then I need to verify that the permalinks are still correct for old posts. I’ll finalize the conversion by migrating my images over and ensuring that they display correctly with my new theme. None of these should be too troublesome.


Disqus is now integrated; they’ve really done a great job of easing integration. Just copy and paste a string of javascript and you’re good to go. The only thing left to do is to integrate the pictures from the old posts into this new format. (This ended up being pretty tricky as the version of [Nivo Slider] I was using in Wordpress depended on a different version of jQuery than the blog, which is also a different version of jQuery than the version of jQuery UI that I’m using in the archive buttons to the right required, so that was kind of a mess…)

Having finished all of our classes and tiring of studying over lecture slides, Nick and I decided to go check out Saigon over the weekend.

In order to save money (initially my flight was cheaper, but apparently I got the last ticket with the good rate), Nick got the flight behind mine. We discussed it, and decided to meet at the corner of a particular road and a market. Clearly marked in the maps we had in Lonely Planet (A book that makes suggestions for places to go and stay while abroad).

I get there, and there I am, clearly not from around those parts, with no decent map, except the one in Lonely Planet, and I had resolved not to use that one because I didn’t want to be taken advantage of as the obviously ignorant tourist.

So I went to a hotel, bought a map, got sorta kinda oriented, ran into a guy trying to sell me a tour, who, in all his enthusiastic gestures at proving himself not to be a crook, decided it might be beneficial to help me along my way. So now I really was oriented.

I visited another hotel and then went to the one in Lonely Planet and, sure enough, as the book had said, it was in fact the best deal.

All this time though, I was like, “what have I done?” I finally got to the aforementioned market corner and was like, hum, I’ve definitely had better ideas.”

It would have been one thing to have been by myself, but trying to find someone with no phone amid a city with the most traffic I have ever seen seemed daunting.

But Nick has good sense, so I went and got a bottle of water, a bag of chips, and sat in the center of the street corner we talked about, a sore thumb in the center of Saigon, and sure enough he showed up in 20 minutes or so and easily spotted me.

Upon his arrival, the first thing he said was, “well, we’ve had better ideas”. I died laughing. I knew it’d work out, but it was definitely a relief.

Traffic in Ho Chi Minh City (Saigon) was unlike any I’ve seen thus far. Basically it never stops. The only way to cross the street is to walk into on-coming traffic at a constant speed, with no drastic moves, and allow traffic to flow around you as you walk. An interesting experience indeed.

We managed to squeeze most of the sights in and around Saigon into two days. We saw a Cathedral, went to the Independence (Reunification) Palace, where South Vietnam surrendered after the gates were overrun by tanks shortly after the American withdrawal.

From there, we went to the War Remnants Museum. Of course, one has to keep in mind that everything there is slanted toward the communists, but that certainly doesn’t negate the tragedies present in the photos along the Museum’s walls.

Agent Orange in particular was a horrendous attempt to cleanse the dense Vietnamese forest hiding Viet Cong. Even as I walked the street, I caught a glimpse of what must be the remains of the awful chemical. There was a midget whose check and back looked like it had grown over a horizontal rod. Put two cones together and put skin over the top of them, and you would have this guy’s chest and back.

One of the more interesting aspects of our trip was our tour of the Cu Chi tunnels. Cu Chi was a strategic location north of Saigon, therefor was a central location of conflict.

The Cu Chi guerrillas were locals who sympathized with the North. In order to evade the US and S. Vietnam, they dug tunnels no larger than two feet across and one feet high. They would crawl for miles in these, often shooting the opposition before jumping into a hidden entrance.

At the end of the tour we saw a 1967 video showing and honoring those awarded as “American Killer Heroes.” There was even a young girl of about 12, who, in the video, had an innocent smile as her peer congratulated her for opposing the Americans.

Imagine the thought of the young American soldier as he approached an innocent looking girl, not so unlike his sister, only to realize she was armed and posed just as great a threat as the VC soldiers.

No matter who won that fight, both would be left unable to live as they were meant to. Yet this video encouraged further action of that kind.

Despite the macabre atmosphere, our tour guide made the trip hysterical. He was always in a rush to show us something, and then get us to the next location as quickly as possible.

This was particularly funny considering there were three French guys who always seemed to lag behind. In fact, they even got left in the tunnels, while the rest of us went for a Cu Chi style snack of tapioca and tea.

Upon their sitting down at the table, the guide quickly said,”Come, come, next place, next place.” It is hard to represent the accents here, but it was very amusing as the French guys called out, “Chill out man, chill out, we’re in no rush.”

As we returned to the Saigon the guide who had introduced himself as Slim Jim, because he “ate very little, and smoked like a chimney”, informed us how we better get our stuff off the bus, because while he was on the wagon now, he would soon be off, and no one would hear from him until tomorrow’s tour.

Well, I’m going to go listen to Charlie Daniels and try and get some studying done for these exams I have on tomorrow. Oh boy!

nivo slider image nivo slider image nivo slider image nivo slider image nivo slider image nivo slider image nivo slider image nivo slider image nivo slider image nivo slider image nivo slider image nivo slider image nivo slider image nivo slider image nivo slider image nivo slider image

Well, I’m just about to go in and take exams.  I have two coming up on Friday.  Both Discrete Mathematics and Operating Systems in one day.

Students at NTU are always pretty serious, and certainly very competitive.  Multiply that attitude by 5 and you’ll have the exam season atmosphere.  Everyone spends hours upon hours in the library “revising” as they call it in order to out perform their classmates.

No really, “out perform.”  I’m not just using that phrase to emphasize competitiveness here.  Your grade is based on your outperforming the guy sitting next to you.  This can make for some very interesting outcomes when it comes to scoring.

Take my roommate for example.  He made a 94 on a test; clearly excited that he did well.  The class average on the test was a 95, therefore he came out with a C.  This is known as the NTU Bell Curve.  In fact, from what I understand, the entire society functions like this from grade school on.

This is an interesting concept.  At first it sounds horrendous, but it does have some redeeming qualities.

Because of this everyone puts some level of effort towards everything they undertake.  I’m not doing good at summing this up, but basically it is the Asian version of “No Child Left Behind”.

In the US “No Child Left Behind” basically leaves no child behind by bringing down the rest of society.  (They literally punish teachers if the pupils don’t try, but that’s a whole debate in and of itself….)

Here, this basically attempts to leave no one behind by forcing everyone to keep up.  And you will very rarely be the top of your class; there is always someone smarter.  But because of this a B or B+ is considered to be very good.  Doable by most people, it just requires a bit of effort.

This ensures students remain committed to their work.This is also its biggest drawback.  You can only be so committed to something.  There has to be a cap to this commitment, but if you are competing with others, this commitment will grow exponentially in response to another’s (now also exponentially growing) commitment.

Since everyone does try though, professors are hard pushed to give you lower than a C.  In fact, a C is considered fatal to a GPA, so unless you really don’t care or are incredibly unprepared, you should do relatively fine.  At least, that’s what I’ve been able to glean off other students.

Regardless, this competitive mindset has a tendency to make people very stressed.  Last semester a guy jumped off of the B3 balcony in South Spine (Basement 3, which is 4 stories high in South Spine).  This semester a girl was either dead or severely wounded by a knife in an attempted suicide.

The details of these kind of events are kept mum, but their frequency highlights the increased stress levels placed upon local students.  It gives the serene, quiet library a whole new dimension as you look across the vast expanse of computers, tables, and books only to be greeted by the bane of your existence, the blank faces of seemingly more dedicated students as they stare at lecture slides for hours upon hours.

These “competitors” can do untold damage to your ability to get a job, not to mention the respect given you by your parents and grandparents.

I can’t emphasize the library enough.  People flock here as if it opened a previously unknown realm in your mind, a realm only available to library goers. Check out this You Tube video of the Lee Wee Nam (the biggest library on campus) as it opens.

That happens every day during exam season.

You can never seem to find a table, so you get there earlier and earlier in an effort to get a place to work, set your stuff down, then go get breakfast or just chill, or do whatever else you might rather be doing instead of grabbing that seat.  Nothing is ever stolen; that’s just not something you worry about in Singapore.

Well, it’s getting late and I know that I’ll have to make it to that library tomorrow morning.  I’ve got to study there right?  Anywhere else and it just won’t count….