Blast from the past – C-Dogs

When I was a kid back in the late 90s and early 00s I spent a LOT of time on these computer games: SimCity 2000, TetraBlocks (a Tetris clone), and C-Dogs.

C-Dogs was something special – a freeware MS-DOS-based game where blocky cartoon figures ran around a 2D map shooting things up. That sounds pretty primitive, but there were some great things about it: the graphics/artwork were awesome classics of the pixel-art genre, you could customize your characters and build custom maps, and the EXPLOSIONS. The best way to combine all that was great about this game was to build a custom map with lots of barrels of explosives lying around, throw in some grenades, and watch the whole map blow up. Very satisfying.

Screen Shot 2016-11-24 at 23.28.27.png

Exploding fuel barrel

Continue reading

Biography of Seah Eu Chin now online

Many moons ago, I researched and wrote up a biography of my ancestor Seah Eu Chin (1805-1883). He was a pioneer in the agricultural development of Singapore and Johor, and also one of the founders of the Teochew organisation the Ngee Ann Kongsi. The draft has been sitting around for a long time, and I have now finally converted it to a website,

Working on his biography has stimulated my interest not only in Singapore history, but also in the broader fields of economic and social history. I hope that the way I present his story does not seem like hagiography, but instead puts his life into the context of the times that he lived in. Like a fish oblivious to the water it swims in, we tend not to think too much about the origins of the social order we live in and the institutions embedded in it. The 19th century seems irrelevant to most Singaporeans, and we only learn the barest outlines of the political history of this period in school. The history of immigration, for example, is often depicted as a dichotomy between faceless coolies on one hand, and the rags-to-riches stories of rich merchants like Seah Eu Chin on the other.

In fact, echoes of the 19th century are still with us. Some of these are indeed forgotten corners waiting to be rediscovered – the tomb of Seah Eu Chin was long thought to be lost and was only found again in a wooded area of Toa Payoh in 2012. But other traces are right in front of us just waiting to be seen:

Why do we have several place names in the north of the island that end in “Chu Kang”? This is a relict of gambier agriculture that used to be organized around river or inlet “harbours”, from which the goods and provisions could be loaded. These plantations were not just on Singapore island but also along the Johor coast, and boat traffic connected the Johor plantations with the merchants, like Seah Eu Chin, in the port of Singapore.

Why is one of the biggest malls in Orchard Road called Ngee Ann City? What business does a charity have in owning a shopping centre? It turns out that the site used to be a Teochew cemetery, run by the Ngee Ann Kongsi on land that it bought in 1845, and Seah Eu Chin was one of the original trustees.

Many issues that were once argued over in private homes, at clan organizations, and the legislative chamber are still with us today. I found it remarkable to read in the archives about disputes over the regulation of gambling, anxiety about immigration, and potential tax evasion. Of course the details may differ – people now bet illegally online and not in shady gambling dens, convict labourers are no longer a key source of manpower for public works, and opium is not subject to tax – but it is still surprising how many parallels remain.

In retrospect I should have done this sooner. With content on the web, I can easily update the pages with new information, and embed media including maps and videos. I hope that this work will be interesting to more than just myself and other Seah descendants, and that it will get at least some readers interested in connecting our present to the past.

Who’s viewing my blog?

Like many bloggers, I’m interested in whether my blogs are being read. Most blogging platforms, including Blogger and WordPress, have some kind of interface for looking at your blog’s statistics. When I looked at the stats for my site Protists in Singapore, it seemed that there was some kind of pattern to the numbers. I wanted to investigate further, but with the tools available on the WordPress dashboard, there’s not much analysis that one can do.

Fortunately, it is possible to export pageview data from a WordPress blog. You’ll need to send a query to the WordPress stats server. This forum post explains how. The only drawback is that API keys are being phased out by and are no longer distributed with new WordPress accounts.

I set up my WordPress account before that, so I could use this method to obtain my pageview statistics. The output is a .csv file with two columns: ‘date’ and ‘views’. I imported this .csv file into the statistical computing environment R for further analysis. What’s great about R is that it’s freely available, and there are various packages for different types of specialized functions. There’s also plenty of tutorial material floating around the web. I referred to a few of these: a time-series analysis intro from the University of Göttingen (pdf), and lecture notes from the University of Bristol.

My pageview data is parsed by day: each ‘view’ number represents the total views on a given day. Put together it is a series covering more than 600 days, i.e. more than 1 and a half years of the blog’s availability.


As you can see there is a small but consistent pattern of traffic. There are two spikes around week 40 and week 60. The pattern looks noisy but possibly periodic. But first, is there any long-term trend? I smoothed out the time-series using a filter, i.e. taking a running average over 21 days, and overlaid this smoothed line on the original plot.

smoothedSome warm periods and some cold periods, but nothing that I would call a directional trend. Have to work harder on the marketing….

Another exploratory tool is the correlogram, i.e. a plot of autocorrelation against lag. When two random variables are correlated, it means that they are not independent, but the values are related to each other (dependent) in some way. In autocorrelation, we deal with pairs of points along our time series, spaced a certain width (“lag”) apart. For example, if we calculate autocorrelation for a lag of 7 days, we are trying to see if our values in the series show any dependence on the values from one week ago. By plotting the correlation coefficients for a range of lag values, we can identify dependencies in time.

acfIn this correlogram, the blue dashed lines represent the 95% confidence interval. Values beyond the interval are statistically significant (i.e. the probability that you’d get a value beyond this interval by chance alone is only 1/20). Some features: Autocorrelation at lag = 0 is 1, which will always be true because values have to be perfectly correlated with themselves! There is a significant ACF at lag = 1 day and 2 days, suggesting that the previous day’s traffic could have predictive values for the next day’s web traffic. There are significant “peaks” at 1 week, 2 weeks, 3 weeks (etc.), suggesting that there is some sort of weekly pattern in the pageviews. A look at the raw data shows that weekends have lower traffic than weekdays. Why would people be browsing my protist blog on weekdays?

The answer is revealed by the top search engine terms that bring people here:

euglena 233
euglena animation 220
scenedesmus 185
amoeba 182
cyanobacteria 107
euglena image 106
euglenids 94
vacuole 93
vorticella 86
ciliate 86
trachelomonas 79
ochromonas 77
opercularia 76
heliozoans 74
halteria 71
why are protists important 68
closterium 67
scuticociliate 66
litonotus 63
cinetochilum 58
what are protists 55
staurastrum 55
oxytricha 52
diatoms 51
flagellar movement in euglena animation 48

People want to know “what are protists”, and want to find pictures of particular species. My suspicion is that the people visiting my page are mostly students who have to look up these organisms for school work. That would explain the pattern of web traffic, and also the search terms that bring them there!

Travel diary Easter 2013

On Easter Sunday I took a train to Schipol then flew home to Singapore via Paris. Some observations along the way…

On the Train

The first train was delayed and so I had to reroute when I arrived at Münster. New train took me through Hilversum. Just before I got off, an American boy asked me if this was Amsterdam. “Are you going to the airport or the city center?” “I don’t know, I’m on a school trip.” “This is not Amsterdam.”

The next train had a lot of men wearing scarves. They all got off at one stop and I figured they were off to see a football game.

At Schipol Airport

First thought: This is a nice little shopping mall, but there must be an airport in here somewhere!

I arrived early, and dropped my bags off at the check-in counter, where they now have these automated boxes that weigh your luggage and print out your tags for you.

Afterward I went to sit down at a bench and read for a while since there was nothing else to do. The lights above were dimming and brightening rhythmically, maybe to discourage people from sleeping there, but nonetheless, an older man was sleeping nearby, with a trolley of suitcases. After about an hour (and an entire packet of chocolates) I saw him get up and walk off to a corner. Then there was an oddly familiar yet inappropriate smell, and a sound of water flowing. I looked up and saw him in profile, standing with the trolley, and a cascade of water coming from the front of his trousers. He turned around and caught my eye, paused, and then continued nonchalantly on his way. I looked around and realized that nobody else had seen this happen: the man opposite me was listening to his music, the woman behind me was facing the other way.

Later on I saw a man with a really big moustache.

At Charles De Gaulle Airport

Having never been to Paris, I was originally worried about how the airport would be but the experience was very smooth. The strange convex exterior of the building was weird though, making it look like a starship. Uneventful otherwise.

At the boarding gate, I saw that everyone ahead of me was being greeted in French: “Bon soir!” (attendant scans the boarding pass) “Merci!” Some travelers responded in French, while others mumbled in English. I decided to try the French. “Bon soir!” I replied, and she scanned my boarding pass. Then a loud beep from the scanning machine. Uh oh. Please don’t start talking to me in French, please don’t start talking to me in French…. She looked at me, “do you speak English?” “Um, yes.” “Sir you will be sitting at the emergency exit row; can you confirm that you will be able to assist the crew in the event of an emergency?” “Yes…” I’m fooling nobody.

Flight to Singapore

Boring flight, but I did manage to get through two movies, though I could barely hear anything over the engine roar, and could barely see anything on the tiny screen. Eating with knife and fork is also a challenge when one’s elbows cannot extend more than 5 cm beyond the width of one’s hips.

Finally the arrival approach. The person behind me opened the window just behind my ear (there wasn’t one beside me) and I turned back to have a look. Still just clouds, and a few ice crystals on the window. Descending now, the captain says. I look again, and we’re almost through the cloud layer, and the ice has melted to droplets of water. I see islands (Malaysia? Indonesia?) and the wave ripples on the surface of water. I wonder if one could estimate one’s distance by the smallest objects that one is able to resolve. If I can just barely resolve people, and I know the width of people… but what is the angular limit of resolution of the human eye? (1 arc minute, apparently) We continue descent and I see ships, some at anchor, and some sailing. One larger ship was going quite quickly, leaving a churned stripe of turbulent wash behind, but also the bow waves spreading out behind. The sun was at just the right angle in the sky to make all this visible. I could even see the wake from that ship being diffracted around another anchored ship.

How high are we now? In the distance, the Singapore skyline, and I can recognize the buildings. It seems we’re just beginning to level with them. Can’t be much more than 200 m, which is roughly the height limits for buildings here. I recognize East Coast Park, Marine Parade, Siglap, I know people who are in those buildings right now as I’m flying above… Changi, the airport perimeter road, I can see the pink blooms of the bougainvillea bushes lining the road, and we’ve touched down.

Back home again after more than a year.

Stepped out onto the bridge to the terminal building, and the humidity immediately hits me. Zip through immigration (great to be a citizen) and to the baggage belt (“odd-sized baggage will be on the odd-sized belt”), and I see my mother waving at me from behind the glass windows. Definitely back home.