Welcome to the personal blog of student,
writer and occasional bum Eli James. More...
Showing posts with label University. Show all posts
Showing posts with label University. Show all posts

Tuesday, April 03, 2012

Singapore



Watch this and you'll see the Singapore that most tourists see. It is beautiful and clean, and every bit as dynamic and crowded and colourful as this video makes it out to be.

But there are also other Singapores. The Singapore that the typical NUS student sees consists primarily of the NUS campus, followed by a depressing number of study rooms and computer labs and student lounges and (occasional) rooftop barbecues.

The Singapore that the typical Singaporean sees is very different from the rich places you see in the video above - their Singapore consists of HDB flats and void deck events like the occasional marriage, and old men playing chinese chess on stone benches. (Void decks are the empty spaces underneath HDP flats, designed to be community gathering points by the Government). This Singapore, is, I think, more realistic.

And there's also a dark Singapore, consisting of night clubs and KTV pubs and Thai bars, which my friends tell me range a spectrum of raciness. The old fashioned Chinese KTV pubs have older women singing and sitting with men, the younger Thai bars are covered in mist to hide vice (and other, erm, activities).

Singapore is beautiful, but only if you can afford it.

Monday, January 23, 2012

A Lonely Chinese New Year

I'm having a lonely little Chinese New Year in Singapore - where the only highlight was an awesome dinner with cousins Aaron and Karen and their family.

A couple of quick, loosely connected thoughts: productivity is at an all-time high again, in proportion to the loneliness. This is one of those times where I'm absurdly thankful I'm not on Facebook; my friends tell me that it's depressing to see all their friends celebrating Chinese New Year back home. Sometimes ignorance really can be bliss.

Facebook Badges

I had a fascinating conversation a few days ago with Dr Connor Graham, the House Fellow for my floor. I was into my 5th glass of wine by that point (a dry white, a medium white, two glasses of Shiraz, and two flutes of sparkling wine), and was slightly wobbly, and so more prone to talk to Random Professors about Life, the Universe and Everything. In this case, what I found interesting was how his wife (who's from China) came to Singapore and discovered so many Chinese festivals that the mainland Chinese never celebrate, due in part to the PRC government's crackdown on culture over the past 50 years.

It's rather amazing to think that Chinese culture is preserved in immigrant communities such as in Malaysia, Indonesia, and Singapore, perhaps to a larger degree, than it ever was in Mainland China.

And so anyway, I'm going to leave you with that thought, as I go back to do my Operating Systems homework. Till we meet again, Gong Xi Fa Cai!

Wednesday, October 05, 2011

Decision Trees

Dead Bird

There is some justice in life.

How did you win that? It's so good that you know what you want to do. Wah, what you're doing is so interesting! How you so keng arr?! That's pretty cool. How come you so lucky?

Sometimes I walk down from Tembusu college and see people playing frisbee on the commons. There's a lot of shouting. It seems like a lot of fun.

And sometimes I read blogs from people of my age group, where the bloggers go out with friends, take pictures with each other in restaurants and on beaches and in cars. They go to church; they thank God for saving them from the latest weekly catastrophe.

That could be me, I think to myself.

Then I return to my work. On a given day I deal with at least 15 emails from 5 different people, minimum (still manageable due to the filters I have in place in Gmail). I code; I write, I do homework for school. Then, when it's late at night, I open a different set of editors and write code for external projects (Pandamian, NUS Hackers, contract work to finance my trip to San Francisco).

Friday Hacks #4Friday Hacks #4

I wonder how things might've been had I had chosen the easy path - to study and go out with friends. Like how everyone else is doing it. This blog might get updated more often. I might attend big campus parties.

But I didn't. And so I don't.

In exchange, I am head of NUS Hackers. I'm invited back to San Francisco, for Books in Browsers 2011. I am a member of the private Reading20 mailing list. But I don't go out with friends much. And I don't party at all.

Today, my school gave me 600 dollars to fly to San Francsico.

"You're so lucky!" my friend tells me.

I am not lucky. Life just gives as good as it gets. It is — occasionally — fair.

Monday, October 03, 2011

Some Quick Lessons From Barbara Liskov's Talk

I don't have much time to write this, but I think I should get everything down before I forget it.

I attended a talk by Turing Award winner Barbara Liskov last Thursday. The Turing Award is Computer Science's equivalent of a Nobel Prize. She won it because she invented Object Oriented Programming (gross oversimplification, but I'm just writing to provide some context).

A number of things struck me about her talk. The first was that she said that ideas had their time — not a new observation, but one worth remembering (see this Gladwell essay on just that). She discovered OOP because i) it seemed like its time had come — she could see hints of the idea in all the papers of the time. And that ii) she thought really, really hard about the problem.

The next thing to strike me was how important Programming Languages research is. Her view of the current languages in vogue (Python, for instance) was that "you can see the attraction, but it does so many things wrong" and that "it's sad that the academic community dropped the ball on creating a language ... (that meets the requirements of) industry. The kind of language that's easy enough to teach programming to a student, but also good for industry. Instead we've been so hung up on the theoretical bits. So we've had languages created by people outside the field, and they get so many things wrong."

Which is an interesting observation - and pretty true, no? Ruby was created by Matz; and Python by Guido, and they weren't doing PL work at the time. Nor, for that matter, was Ritchie, who did the bulk of the work on C.

And lastly, I'm struck by how Programming Methodology is really a study on human thinking. Before Liskov invented OOP, programming languages were flying spaghetti spitballs. What OOP did was to introduce a level of abstraction that made it easier to think about programs (and more importantly — made it easier to reason about correctness).

I had never considered this. I'd always wondered at research done in the field of programming languages - weren't languages these dinky little things you used on a daily basis? What discoveries could possibly be made in the field?!

But of course that view was wrong. There are good ways of doing PLs, and also bad ways. Liskov said that we haven't yet found the right kind of abstractions for concurrent programming (and I asked her about Go, which proposes to create an abstraction for exactly that, but she professed to have not heard of it. Sigh. I wished she did; her opinion would undoubtedly be very interesting!). She also argued that we didn't yet know the right way to think about massively distributed computing systems, though Google's MapReduce algorithm was a big step in the right direction.

At any rate, that is what I've learnt, and I'd do well to remember some of it.

Thursday, August 11, 2011

Sometimes, A Little Worrying

So there's Linear Algebra coming up this semester, and a couple of friends have told me that it's impossibly hard. Harder than MA1521 (Calculus). I'm starting to be a little worried. One of my friends got an A- for it. Another, who does consistent work, got C+.

"How'd you do it?" I asked.

"Being consistent is not enough. It's just not enough." says the latter friend.

"Oh, urm, do everything." Says the former. "All the tutorials, and all the questions in the tutorials. And if you don't understand, just redo the questions."

So, in theory the strategy for doing math is simple: keep doing consistent work, and keep practicing. But knowing something and being able to execute it are two different things. I'm able to consistently execute practice-heavy modules if I like it (e.g.: programming). But I have a history of being bad at Math. Math's my Kryptonite.

I'll have to figure out what's the difference between the two. And why I seem to shy away from anything that requires math (e.g.: physics). This is largely internal; local to the way I think, and no amount of advice by well-meaning people would help until I do.

The first Linear Algebra lecture starts in one and a half hours. Eigenvectors, here I come.

Tuesday, April 19, 2011

Sometimes

"Have you been to the library recently?" I ask Yipeng and Shawn. We are studying at the COM1 basement, books and papers strewn across the tabletops.

"Uhh. No." says Yipeng. "The last time I went to the library was last semester."

"They had this sign at the main entrance."

Study Overnight!
A pause.

"Sometimes I wonder if I made the right choice, coming to a Singaporean university."

Yipeng looks up from his papers, looking stressed. "Yes, sometimes I wonder that too."

Saturday, April 09, 2011

Things I Like About Computer Science


I bumped into my Form 6 Physics teacher Pn Loh late last year, while at St Thomas's to teach debate. She looked harried, but smiled and stopped for quick chat.

"Oh hello!" she said, "What are you doing now?"

"Err ... holiday," I replied. "Here to teach debate for the afternoon."

"Oh, no, I mean what are you studying?"

"Computer science. NUS."

Pn Loh's eyes popped. "Wahh!!" she exclaimed. "How did you get in ahh?!"

"I also dunno." I say, but amused. We talk a bit more, and then she went off. But not before turning and saying: "Oh you know, maybe you should come back and talk to some of our Form 6 student here. They don't really know — I don't think many people here know — this computer computer thing."

Well I do know a thing or two about this computer computer thing. Here are a couple of things I like about it:

1. The Newtons Are Still Alive
There's this thing in Computer Science called object-oriented programming. The person who sort-of invented it (or most of its current ideas, and in particular modularization) is a woman called Barbara Liskov, winner of the 2008 Turing Award. She was my professor's PhD supervisor at MIT.

Computer science is such a young field that most of its legends are still around, teaching in the faculties of the various universities worldwide (though most of them, admittedly, are in the US). This youth means two things:

1) Big chunks of what you'll learn in computer science is wrong. You know this, your professors know this, but it's still slightly exciting to think that so much about compsci are still things that are horrendously broken, and in need of a fix.

2) You are still able to talk to the legends. Physicists can't talk to Newton or Einstein, but if you're in computer science it's still possible to find the equivalents, learn from them, and take them out to lunch.

(While I was at the Internet Archive I bumped into Ted Nelson, the inventor of Hypertext. I was showing his wife the Archive's new Javascript-based ebook reader, when he came wandering over. His wife introduced us. "Hi, I'm Ted. I did Xanadu. I invented Hypertext. You know — HTML?" He was eating sushi.)

2. Nobody Really Knows What You're Doing
This is slightly frustrating, but also slightly funny. A famous introductory lecture at MIT describes Computer Science as such: "Computer science has nothing to do with computers. And it's not really a science."

To your friends and relatives, being in compsci means that you're the guy they turn to when they have a problem with their computers. I use a Mac, and often have no idea as to how to best fix their Windows machine. (Most compsci majors use Unix systems, by the way. That means Linux or Mac. Rarely Windows).

The simplest way I can describe computer science to a non-techie friend is to say that compsci's a lot like add math. In primary school, we weren't allowed to use calculators to do our math. In secondary school, we were — but the math problems became so difficult that using calculators didn't help us as much. Computers are the most powerful calculators of all. Like add math, we're more interested in the potential problems we can solve with them than with the calculator itself.

(An apt analogy is that calling computer science "computer science" is a little like calling biology "microscope science". Like many biologists, we can't really help you if you've got a problem with your microscope.)

3) Has Created The Most Number of Billionaires Under 30
During the railroad revolution a disproportionately large number of people who became rich were in the railroad industry (or in other complementary industries such as steel; see: Andrew Carnegie). The same thing is happening in the digital industry today: the people who are creating the most value in the world are the ones either working on or with the Internet.

There are a couple of reasons for this. Kevin Kelly, in his 1999 book New Rules For The New Economy, points out that the Internet is essentially a communications accelerator. This is important because communication isn't just one part of the economy; communication is the economy. In simple terms, anything that accelerates communication accelerates the economy (or at least disrupts the power structures within it). And this has proven to be true: almost every industry that has come into contact with the Internet has been irrevocably changed, often with chaotic, ugly results.

Newspapers are struggling to make money. Music labels are going to hell, and blaming digital piracy for the disruption of their business models (they're wrong, but this isn't immediately clear if you haven't been thinking about the problem for a long-enough amount of time). Publishing, which I work in, is being slowly disrupted by the coming ebook revolution, which prices ebooks at less than 20% of the current retail price.

This chaos presents an unparalleled opportunity for anyone with the guts and the brains to build the (digital) economic structures of the future. It's not going to happen immediately — I started writing and thinking about the digital book-future four years ago, and much of it has yet to happen — but if you're daring enough, and smart enough, you can very well shape the fabric of the future. (And get rich in the process; but that's secondary to making the world a better place, isn't it?)

4) Has The Largest Potential For Empowering Social Change
Exhibit A: in the aftermath of the 2008 Kenyan elections, blogger Ory Okolloh put a call out to her readers: “Guys looking to do something: Any techies out there willing to do a mash up of where the violence and destruction is occurring using Google Maps?” The NYTimes reports:
A few days later, Kenyans had a Web site that allowed people to text or e-mail reports and see them plotted on a Google map of the country. It became useful not only for rapid intervention, but — as the name suggests — to document the deaths, injuries and destruction when virtually all other media were blacked out.
The software they built is now an open source project called Usahidi. It's been used in just about every disaster since: two hours after the Haiti earthquakes, Usahidi set up a Haiti site and got a Usahidi compsci student at Tuft's University to organize a group of 300 volunteers. Radio stations in Haiti then got listeners to text in reports, which thousands of US-based volunteers then translated and aggregated to the maps on the Usahidi site. Any report requiring immediate action (from a trapped person, for example) was forwarded to the closest rescue team, again through Usahidi software.

Usahidi has been used to catalog and report election fraud in Mexico, report damage caused by the Gulf spill, and organize efforts around medicine shortages in Uganda. Something to think about: why haven't we used Usahidi to catalog and organize election efforts in Malaysia?

Accelerated, accessible communication changes just about everything it comes into contact with. Recent revolutions were powered by Facebook and Twitter (in Egypt, organizers got tips from Tunisian revolutionaries through Facebook as to how to resist tear gas). And the enablers of this change will very much be the builders of the digital world: the computer scientists, the engineers, and the programmers working on the technology to connect people in new and often surprisingly novel ways. Some of them are working in Google and Facebook, but many more in universities and startups around the world.

But what does communication have to do with computer science? There are a couple of things. For instance, as the web has become more 'real-time', so the technologies written to support it have to adapt to the speed of transfer. Facebook's feed, for instance, is updated so frequently it has to use a non-relational database system called Cassandra. NoSQL datastores are fairly new in computer science, and it's not entirely certain how they'd do in most production environments. (There are many more other challenges, but I'll not go into detail here)

The point is: I am a computer science student in an era where so many things are being thrown into chaos by a digital shift. It's exciting, it's young and it's scary, but it's also what I like most about my field.

Friday, October 15, 2010

San Francisco

bnb
A couple of things:

1) I'll be speaking at a conference in San Francisco next week. It's called Books in Browsers, organized by the Internet Archive, and is essentially a technical meeting for people currently working on the future of the book. Am subsidized by Brewster Kahle (founder of Alexa Internet and the IA), the NUS School of Computing, and the awesome people over at Hackerspace.sg.

I'll be talking about Pandamian, this little startup thing I'm doing. The underlying agenda for BiB is to consolidate efforts in the web-based publishing sphere. I suspect, too, that the IA is going to be pushing its standard for distributing book-catalog metadata: it's called OPDS, is open-source, and will be a fairly important first-step in standardizing the way books are consumed in the future.

In simple terms: what happens there is likely to change the future of reading, and so I'm rather excited to be a part of it.

2) Yes, I'm doing a startup; have been working on it for 6 months now. I'm still debating for/against writing about it on Mochaspot, because I've always kept work separate from this blog. But then again Pandamian is beginning to define my life. So we'll have to see.

3) And I'm swamped with schoolwork. Am a little worried about my math at the moment, will probably be bringing some assignments/homework to do on the plane along with me. Hope I'll survive the rest of the semester, there're only 4 weeks left!

PS: Thank God funding was possible! And I suppose I should talk a little about the journey, in a bit. But yes: I am thankful, and yes, I am in debt to so many kind people who made this possible. Thank you all.

PPS: Woohoo Paul, who's Yayasan Sarawak Champion!

Saturday, September 04, 2010

Don't Be Afraid

I've been spending a lot of time with Madan and Zakil recently. They're both med students, the two of only three Malaysians (that managed to get into the program) in our year.

IMG_0357.jpg
(That's Madan on the left, by the way. I don't have any good photos of Zakil - the one photo that I do like is of him holding up a human skull to the front of his face, and as you can imagine that's not particularly flattering.)

So we're walking back from dinner at the Science Canteen, and we meet Reuben - this Sabahan who's currently studying Physics at NUS. And he's distraught. He's upset. He can't get any As in his course, try as he might, and he is very unhappy about it. He's almost always unhappy when we see him, about one thing or another. The course is tough on him.

Madan hears him out. Zakil and I make Russell Peter jokes. And then we board the bus and we head back.

Somewhere along the way Zakil takes over the role as counselor, and I have a talk with Madan.

"Do you ever think, do you believe that he might -" (here I gestured at Reuben) "- get so depressed and stressed that he might kill himself?"

"No la," Madan says, "He's just going through a tough patch. He keeps feeling jealous about the other people in his class who can get As."

We walk for a bit more.

"I mean - I was like that too, when I first came to NUS. I was so frightened by all the other people in the class, all the Singaporeans. They seemed to know so much more than me. It was like - what was I doing here?"

"Really?!" I say, surprised. "But I was like that too! I was constantly watching all the other people in the course, and I was scared. Like - how can I ever get an A -"

"With all these people who are so pro around right?"

"Yes."

We continue walking.

"But in the end, I realized that it's dumb to be scared. That's nothing I can do about it what. And if I can't get As, that's alright. As long as we learn enough so we can go out to be good doctors."

"Or good computer scientists," I say, smiling a little, because that's what I'm training to be, "Or good physicists."

IMG_0356.jpg
Life is better this way.

Monday, August 30, 2010

Insert Angsty Post Title Here

I'm sitting at the science canteen, where I'm supposed to be making notes for my biology lecture. Red plastic tabletops, brick walls, F*CK NUS graffiti scrawled in tiny handwriting on the pillar to my right. There's a grey sky overhead, and a cold wind playing about my ankles. Really rare, in humid Singapore.

I'm running on two hours of sleep and a can of coffee. Completed a whole chapter of differentiation last night. Sheer willpower. And I've done most of my schedule for today.

I suppose I should lie here and say that I'm going to blog soon. But that's not true. I've lost the ability to sit down and think thoughts about life, about the world, about my inner universe. And what a rich universe that is! There's this long backlog of ideas, stretching out into the past, and beyond a certain point there's this darkness where I can't remember. I've lost count of the number of times I've told myself: 'oh you've got to blog that', or 'that's an interesting thought, what might that mean? - perhaps write an essay to think about it?' and I never do, and so life goes on, dragging the darkness behind me. Soon I'll have thoughts and I rush to class and the darkness is but a couple hours behind, and all the interesting ideas I have for the day are lost in that fog, forever.

There's this primary school girl now, in her dark blue pinafore walking past. What she's doing in NUS is beyond me. And I wonder at how similar it is to the Malaysian primary school pinafore - and yet how different her life is, for the Singaporean education system is the most bizarre meritocratic system you've ever set your eyes on, with streaming exercises all the way down in primary 4, and your future mapped out for you based on your grades when you're 10 years old.

There you go - that's an interesting thought, all on its own. I wonder if there's anything interesting in there.

*pause*

I better get back to work.

Friday, August 06, 2010

Today: On Logic, Concentration and Code

(This post was originally posted to Metacog.)

I learned three new things today:

The first happened as I was coming out of the undergraduate office in COM1. I sat next to Yipeng, took out my laptop, and got thrust - almost immediately - into a conversation with a friend of his, Chris. Chris is a tutor for CS1231. He also happens to love mathematics.

Chris told me about this cool thing he had learnt last semester (the module he took is called Logic in Computer Science, and it's pretty darned crazy). The idea is called intuitionism. It goes something like this:

Let a and b be two irrational numbers. Is it true that ab is a rational number?

It turns out that this statement will always evaluate to true, regardless of how you look at it. A simple example of this is how √2√2 evaluates to an irrational number (and is therefore false). And yet, when you have (√2√2)√2, you get two irrational numbers that evaluate to a rational one. So this means that the statement "ab is a rational number" can both be true and false: either ab is rational, OR it is irrational, and which it is really depends on the numbers. What you have now is an OR evaluation. And we all know that a false statement OR a true statement always evaluates to true - in other words, you have a tautology.

An English example:

It is World War 2. I am enlisting to go to the frontline. I know for sure that I will or will not be killed. One of the two will certainly happen, I just can't show which. But taken as a whole, my statement "I know for sure that I will or will not be killed" is a true statement!

Well that's obvious! I said. How is this useful to computer science?

Chris grinned. "So you probably think you're smart right? That this is not beyond you? Well now try something: as a budding computer scientist, write a piece of code to prove this exact same statement."

A long silence, as Shawn and I pause to consider this puzzle. We take maybe half a minute of silence and some serious internal code-crunching before Chris cuts in: "Let me give you a hint: it is impossible to write code that evaluates that truth statement."

Wait ... what?! we said.

The reason for this, in turns out, lies in the above example of the WW2 soldier: "One of the two will certainly happen, I just can't show which." Computers can't handle things that you cannot show. And this problem - called Pv¬P, cannot be proven computationally. Chris told us that there are two kinds of logical evaluations: classical and intuitionistic logic.

Classical logic is concerned with truth. But intuitionism is concerned with justifiability. That is: if you have something like the Pv¬P problem you have something you can agree is true, but which you can't prove because you have no way to justify that conclusion. In the case of the WW2 soldier you can't prove which of the two cases it is (killed or not killed); in the case of √2√2 you have something that may or may not be irrational.

And the link to computer science - what of it? Intuitionism, Chris says, is how you know if something is computable or not.

The second lesson I learnt today is that it pays to develop focus. I spent a full afternoon programming with Yipeng and Shawn and Low Wee, but only in the last couple of hours did I get good work done. I'm not sure if this is a focus problem - I didn't really waste time the first couple of hours, having spend all that time reading and gaining my bearings in the code - but I certainly have to train my ability to focus for longer and longer periods of time. I'm currently on 15 minutes per block of work (with a 2 minute rest in between); I hope to increase this to 20 minutes soon enough.

The third lesson today is that I have learned (or relearned!) how Python is truly beautiful. I am amazed at the level of readability inherent in Yipeng's code: I glance through it now and I usually have a good idea of what's going on. In any other language this can be attributable to programming best practices; in Python certain best practices are forced upon you. Funny - to think we used Python because Yipeng wanted an excuse to pick it up!

Friday, July 30, 2010

CS3216

Wednesday, March 24, 2010

Work Work

Henry graciously offered to give us a lift back to our residences, and so Adhi and I are in the car, talking.

"You know the irony is that the weekends are less free than the weekdays?" Adhi is saying, waving his hands in the front seat, "On the weekends we have to do this, but on the weekdays it's less busy because we have other modules to worry about. Now what kind of twisted logic is that?"

I murmur my agreement. We had just spend the evening discussing our app's implementation and there was still a lot of work to do.

"Sometimes I wish we had extra hours in the day." Adhi continues. I see Henry smiling in the rear view mirror as he turns the car past the Mochtar Riady building - we're only minutes away from the bus terminal, now.

"But why just extra hours?" I say. "You know, there's this comic called Dragon Ball, and there used to be a room in the comic where one minute is one hour, or something like that. I sometimes wonder what it'd be like to have that room - imagine preparing for your exams 20 minutes before the paper, or even 5 minutes ..."

"Sure from Dragon Ball?" Henry asks. "Sounds like something from siaw ting tang."

"Yeah sure." I say, and then to Adhiraj: "But why would you want extra hours? Why have hours when you can have days?"

"Oh no, that won't work." Adhi says, "We'll still have only two free days per week."

"What? Wait ... why?"

Adhi turns round to look at me. "Because NUS would take away the extra days from us." he says, in all seriousness. "They'll take that for themselves and just leave us with the two normal weekend days to relax."

I pause.

"Damn, you're right."

"Uhhuh."

"You're absolutely right."

And so, with that disturbing thought in our heads, we left the car and walked to our rooms and got right back to work.

Sunday, March 07, 2010

After The Midterms

Cross posted from my ifisnerdreturntrue blog:

24 hours after we first sat down to code in Sheares hall, I looked up and said: "I must blog about this."

"Ya, you should," Xialin said, and she looked up from her code for all of like 0.5634 seconds before looking back down at her computer screen. And I think that was the end of that conversation.

It could've been at 2 in the morning. Or 5am. Or maybe 7. Time kinda disappears when you've spent a whole night staring at monospaced fonts. I remember being hungry at around 2am. I also remember Biyan placing her head in her hands - I think I was plugging Haocong's backend into the UI then, and we both looked over at her and asked her if she was okay and she looked up and said she was thinking - but that might've been on Sunday night.

Like I said, I don't know. I can't remember. It's now all a big blur in my head.

What I do remember, however, is how much I've learnt from the Wave assignment.

What struck me the most about Wave was the sheer intensity with which Biyan and Haocong worked. I learned a lot from them. I can be very indisciplined - earlier on Saturday night I sat down to watch an animated video, putting off coding the UI, and Biyan said: "Cedric, I need to plug in my code into yours soon. So please work?" and I felt very guilty about that.

And even after I started work - and I didn't sleep like the other two - I knew that I did not match up to their level of focus. Sometime around 4 in the morning I did a count of Biyan's code and it was up to 1500 lines. Sure, there was a lot of whitespace, but my jaw dropped when I did the count, because I was quickly scrolling through the file and I figured out what she was writing and it was bloody complicated. The algorithm for check probably gave her the most trouble. And she was doing this on 2-3 hours of sleep.

Wave was also the first assignment in which I finally got to write code. As in - proper code - not the weak little descriptive languages like HTML and CSS with which I'd been playing since I was 15. Haocong said: "I need you to write this function, and you call this function from the back-end, and the parameters are this," and then he left me to do it. I really liked that. Here he was, an NOI programmer from his home country, and he trusted me to write stuff. I did it and I was quite pleased with myself after that. Learning a new programming language felt very satisfying; I'd only wished I'd done it sooner.

And there are other things, of course. Haocong spent a lot of time helping the two of us, because he finished his bit - the backend code - in about a night. I found that amazing. Haocong is probably the most understated elite programmer I've seen in 3216 so far - he doesn't say much, and he doesn't show off, but he gets things done. And then he tells you what he still needs done, instead of writing it himself, even though you probably know your code would take him all of 30 minutes to do. "When did you learn Javascript?" I asked him - and he said (without any trace of irony or inflection): "Last night."

(I think he took slightly longer to learn objective-C, but Mismatch currently has an iPhone version, and it looks great on his laptop. So I must say that, overall, it was a real learning experience working on this Wave app with him.)

Two more things.

First: our team made the mistake of waterfalling our software. I believe I've learnt my lesson - I won't do that again. Ever. Halfway through - at around 4 or 5 or 6 in the morning, I looked up from my code and said, thoughtfully: "You know what we should've done? We should've sat down together and written a whole list of interfaces before we started." And I remember Haocong sighing to that.

In the end, however, our app managed to work when we plugged things into each other the night of the deadline - but just barely. I thank God that we were writing a webapp, and not something bigger or more complex. And that became very true! Things began to be really scary when it hit 11pm and we were still nowhere near a playable chess game. Never again, I tell myself; never again.

Second: I no longer find myself insecure about my programming abilities. That is not to say that I'm great at it. I started real programming last semester, which was really late, and I found - to my surprise - how much I really enjoyed writing code. It was like finding a long lost friend. But because I was new to the school then, and new to so many things in Singapore, that I became scared and defensive when I saw all these great programmers in 1101 speaking in Java like it was their second language. They were better than me and they knew it. They didn't hesitate to talk over my head to show off how good they were with their code, and they compared lab marks with each other, and they asked me how much I got for my exams and my tutorials, sizing me up as potential competition and then then reconsidering that when they learnt I was new to this. And this made me really insecure - as silly as that may sound.

Today, however, I now know that these kids - while good - are nowhere near the level of Haocong or Biyan or Hung or Adhiraj. And that's a comforting thought. It means that I don't have to worry about those kids, for they are an order of a magnitude below than the 3216 programmers ... who are, in turn, an order of a magnitude below than the best programmers in the world. And I think that's important to know. What this means is that I needn't compare myself to them - because I know I'm new to this and I now know there's always somebody who's better than me. I have learned that what I really should be focusing on is the programming itself, because it's fun, and it's beautiful, and not the competition, or even the grades, because I shouldn't let all that taint the learning itself. And I think that is important.

Programming to me is fun and I hope to keep it that way. I'm glad I learned that from Wave. And so now: onward.

Thursday, February 04, 2010

The Second Semester


I met Amelene over dinner a couple of days back, and as I set my tray down I asked: "So how's the second semester?"

The short answer: terrible. The long answer: incredibly fun. It seems impossible that a semester can be both and more at the same time, but it is. I'm taking five modules this semester - the typical load - except one of them is this crazy, 8MC-equivalent course named CS3216 (alternatively known as Software Development for Existing Platforms; alternatively known as "The Facebook Module") and suddenly I look up from the grindstone and it's Week 4 of Sem 2 in NUS, and I wonder how I got here.

A short explanation: the 'Facebook module' is this course that emulates - approximately - how it feels like to be working in a tech startup. You're dunked into this pool of talent, and it's up to you to pick your teammates and choose your projects and program and design and market your way to riches. Or at least to a big nice A. And it's really tough, because we're asked to build whole applications in just two weeks (each), and the pressure is intense to deliver on whatever it is you set out to do.

I don't intend to go into detail on why CS3216 means so much to me, or even what we do in it, because blogging's part of the module and I've got a place set up where I can write about my experiences. But the course is really heavy, and it probably explains why I've been so inactive here over the past coupla weeks.

I have four other modules: EC1301 (basic economics); MNO1001 (bullshit, err, management); ACC1002X (accounting) and CS1102 - (a programming module called Data Structures and Algorithms ... and it is challenging, believe you me). I've spent four or so sleepless nights thus far in the semester, all of which were in COM1, programming for the Facebook module. Which means I have yet to catch up on all my other modules. Which means I should get back to work. Which means I am sorta kinda totally screwed.

Sunday, December 27, 2009

So The First Semester's Over

I'm not particularly sure where I'm going with this, because the last time I really (and I mean really, really kinda really) wrote in this blog was when I did this carefully-constructed essay, written over the space of two weeks, and I'm not sure I want to do something like that ever again. (The drafts I wrote and discarded, for that essay, are still floating about somewhere in the bowels of my hard disc, in the form of an overstuffed Scrivener project.) But anyway. Digressing. Here goes.

The first sem's over, my holidays are halfway done, and my results are ... well my results aren't that bad, to be honest. But I'll get to my results in a bit; got a few other things to talk about first.

I'd like to talk a bit about Singapore. I think most of us know, by now, that different cities tell us different things. This is particularly clear when you've lived for sometime in one city, and then you move - rather abruptly - to live in another. Take New York, for instance. New York tells you that you should be wealthier; that you should have better class; better taste. Compare this to Silicon Valley. Silicon Valley tells you that you should have more influence. That's not to say that people in the valley aren't impressed by wealth; they're rather more impressed if you're in charge of digital operations in Google, say, than by the fact that you're rich. Apply this to other cities and you'll have variations on the same theme: Cambridge, Massachusetts tells you that you should be smarter; Los Angeles tells you that you should be more famous.

Singapore, if anything, tells you that you should work harder.

This isn't particularly surprising, not if we take into account the fact that Singapore is one of the most meritocratic countries on the planet. But it does take some getting used to, and it does bear some thinking about. I now know why even Singapore - glorious, bright, beautiful Singapore - has its own brain-drain: people just can't stand the crazy lifestyle.

I'm bringing this up because I'm back in Kuching now, and Kuching is worlds apart from the pressure-cooker environment of the city-state. Kuching tells you to take things slow. To relax a little. To drive, and drink teh-c-special, and go to church with friends. (Okay, so maybe I'm not the best person to talk about Kuching, which is at best sleepy and at worse ... corrupted, but you get the idea).

I love Kuching. I love the fact that the city doesn't tell you how to live your life, and you're free to go about doing things the way you want to do things, and that you can go out for lunch with friends, safe in the knowledge that there's always a bowl of laksa out there with your name on it. Always.

Ain't that just cool?

I spent the first half of my holiday going out with friends. And now - in the second half - I'm forcing myself to stay indoors to do some serious web development (which is failing, of course, because I can barely sit in one place without writing or reading or doing some meddlesome Internet thing. Like blogging. Which is what I'm doing now. Very quaint, yes.)

And what of my results? I got a 3.83 (out of 5.00) for my first sem, which is okay, considering I entered university feeling absolutely distraught over my academic ability. The strangest thing about my results was that I got 2As for two arts modules; which isn't particularly encouraging, since I didn't spend much time studying for either.

I also got a C+ for Discrete Math, which was a real disappointment. Math takes a lot of work and so in retrospect I guess I should've stuck with it, hard, for the first three weeks, instead of falling behind on the logic chapters. There were some cool topics in the module though; I particularly enjoyed graph theory and induction. I just couldn't keep up with the rest, and so am starting to worry if I have what it takes to do a degree in Computer Science.

So what have I learnt this first semester in NUS?

I've learnt programming, which was really, really fun. And I know that Java isn't a really good language to start your programming career with, but boy oh boy was it easy to learn, and cool, and so very satisfying. Java reminded me of playing with lego, and what geek can say no to lego? And the strange thing is that I've been reading articles out there, about how Java's bad for new students (because it doesn't teach this multiple-level-of-abstraction style of thinking that Scheme/Lisp supposedly does), but no matter. The way I see it is that there's no point worrying about a talent I may or may not have, and since I'm pretty dead-set on this programming thing, I'm sure that I'll figure out if I have it sooner or later.

What else have I learnt? I took a year-3 theatre module and got an A for it, without too much effort, and from that I've learnt to read literary novels. I read Phillip Pullman's His Dark Materials shortly after I took the module, and I must say that I was taken by surprise by how easy it now was to get, really get, what he was trying to say. So that was one module that was certainly worth it, in a no-relevance-to-my-career kinda way.

And there's also this thing I've learnt about arts programs, particularly at University level, which is really weird, but I'm going to save that for another day. Forgive me if I'm not making sense - posts like this tend to happen once every year, right after my exams. More coherent thoughts coming in a bit.

Friday, November 27, 2009

The Fear

So here's the thing. I have only one exam left, and it's still bad. I've figured out by now that I'm scared of exams. As in, phobic. As in psychologically-scarred-when-young-because-cat-bites-you-and-you-now-no-like-cats kinda scared. It's probably the STPM speaking again. Can't shake it off. And so but yeah, I got into university because I did a few really cool things. So what? I know you're going to tell me that academics don't matter, but fact remains, when you're in school and you're studying because it costs so damn much per semester, comments like that don't seem real. No kidding, you say. But academics do matter, especially when you're talking about an exam-oriented society like ours. (Yes - if it makes you feel better it's the same thing in Singapore). And so it's rather anal - you're studying programming, say - which is the most practical thing you'll study in my course - and then you meet people who're all about "How many marks did you get?" and "I thought they might ask this in the exam, so I worked on it!" and "Ah I didn't get full marks for that lab" and the focus suddenly becomes scoring As, instead of learning the tools for the sake of learning the tools, and/or you do things because you want to beat all the other people so you can win that scholarship/bursary/summa cum laude.

I know this is unfair of me, especially since we don't really have any alternative to exams, and marks, and bell-curves. But it's produced really strange behaviour, all around us. Like, for instance, you're discussing the application of ethics on computing in the real world, and the discussion suddenly turns into a 'how to answer this for the exam?' smooge fest. Have you had an experience like that? Have you thought it strange? I have! I find it very strange! I couldn't get my head around it! Why on earth would you talk exams, if ethical conundrums and technological paradoxes really might happen to you in your professional life, later on? Has this no relevance to your life, beyond the testpaper?

But even as I'm saying these things, a small voice at the back of my head tells me that I have no right to talk. Who am I, after all? I have no good reason to strut into classrooms, looking like I understand the technicalities of everything being taught before me; nor do I have the confidence borne from a long history of academic excellence. I am a scraper. I am a weird hodgepodge of talents that don't count in any academic assessment. I am a square peg in a round hole (or was it the other way around?) And no, I am not very useful in an exam ... in everything else, yes; in the real world, maybe - but in an exam it feels, at times, like I am a sneak. I know I should stop ranting. But it's frightening to pause and think of all the exams ahead of me in the next four years, and all the other academicos that I have to compete with. Fours years. Rather long time. Frightening indeed.

Saturday, November 14, 2009

Vignettes

It is 2am and I'm filling my bottles with hot water, from the shared dispenser in Block 4. I meet Kris, who's in Comp Engineering, and there's this other guy with him. They're both buying food from the junk-food vendor.

"Wow, up late." I say, stirring my noodles.

"Yah, going back now."

"And you?"

The other guy gets his packet of chips. He pauses and looks up at us. Grins. "Oh, just got back from practice."

"At 2am?!" I say; "From where?" Kris says.

"School of music; I'm a music student."

We stare at him, blankly.

"Woww ..."

"Yes -"

"What instrument?"

"Oh, piano - "

"And the school of music is open till this hour?!"

"Oh yes," he says, "We got about 40 practice rooms in the conservatory. All grand pianos."

"Grand pianos?!" Kris and I say, together.

"Yes." He laughs.

"Is it hard? I mean - the course, is it hard?"

"Oh yes. Very. I mean - I practice until 2, right?"

We talk about a few other things, and then I gather my bottles and my mug full of noodles, and gesture towards my block. "Got to go now."

"Okay," Kris says, and then - as an afterthought: "You going to sleep?"

I don't pause: "No," I say.

"I thought so."

Kris nods, the music guy smiles understandably, and I return to my room.

Monday, October 19, 2009

Things I Have Learnt In University (So Far)

1. Writing is important. No, make that ... very important. This may be less true in other universities (ones where you're not required to take arts electives) but for NUS, and for other module-based unis, good writing is a skill you'll have to learn. I've lost count of the number of academic papers we've been asked to write, as freshmen. And it turns out that for certain degrees, the ones with accreditation (Computer Science, say), you'll be forced to take arts modules in order to meet the course's accreditation standards. So learn to write, and learn to write well. You'll have far less problems that way.

2. In lecture theatres, learn to sit in front. It's easier to ask questions from the first four rows. And you're not likely to drift off and dream when the lecturer is up-close and personal, and near enough to pick on you. I wish I'd figured this out earlier.

3. Check for announcements early and always. In NUS we use something called IVLE, an online module-notification system. Some universities use email, others use noticeboards. I've learned to check those, for fear of forgetting deadlines and loosing digital files. And those things do happen. So I check early now. And I do it every single day.

4. Eat fruit. This should be self-explanatory.

5. Don't chuck underwear into the washer and expect 'em to come out clean. Again, this should be self-explanatory. And no, don't ask.

6. The university library is your best friend. Especially if aforementioned library is one of the biggest in Asia. Make use of it. Search for books: online, on shelves, whatever. You'll never know what you might find.

7. Find good team-mates. I haven't yet been in a team I wanted to get out of, but having good team-mates is a must. (This is, mind you, second hand experience). You make better friends when you're working together and producing good work. I like all my team-mates so far. I hope to find good ones next semester. Oh, and if you're wondering? Control freaks ... skip 'em.

8. Run. You know the Freshman 15? You've heard of it? Good. It means that freshmen get fatter in their first year of school. You don't want that to happen. So run. Either that or pull all-nighters for multiple nights, which leads me to ...

9. All-nighters are normal. I've had 7 so far. Some of them were for stupid things I could've just left till morning. But most of them were necessary. I don't like all-nighters. But if you must -

10. Don't take naps at 3am. Trust me, you won't get up.

Friday, September 04, 2009

Hyperfunction Air And Sleep

I am at the School of Computing. Four macbooks including mine, one vaio, a lego-bot and the hushed sounds of people looking over each other's shoulders, at laptop screens. The soft tapping of keyboards. Half the people here have IDEs open and code on-screen. There are full ceiling-to-floor windows at this part of SoC. It's bright. The windows overlook Research Drive. I can see the Synchotron Light Source from where I'm sitting - it's this circular red-stone building that houses a compact superconducting storage ring. I do not know what that means. There is a soft buzzing in my ears. The light is bright and a little overwhelming and there's this tightness in my chest where my heart is, like a hand's holding it, and it's gripping ever so slightly. It's still buzzing. Or maybe it's the sound of the water pumps spraying the wooden deck outside? A woman walks past, her heels clacking on tile and I swallow. Too loud. I am hyperalert. Colours are bright, a little too saturated. I have finished my tutorial assignment, the code is good and it works. I know. I checked it at 4 this morning. I stood at my windows at 6 and stared at the sunrise. I slept at 7. Passed up assignment at 9. I am running on two hours of sleep. It's funny. I don't feel tired. I'm waiting for a friend to come out of a lecture so we can discuss our NM1101E assignment. It has to be done by Wednesday. But we're only free on the weekend. I may have to go to church later. Youth. Or maybe not. I promised. I don't know. I might be asleep by then. University is a very free place. I should be sleeping now. Maybe I will.