Recess, and Code Golf.

It’s recess week! Also known as the week of pure studying for mid terms, at least for us CS students.

To start the recess week off proper, I attended a Code Golf session by NUSHackers. It sort of show me how detached I am from recreational programming. Lately CS1101S is getting more intense, and I’m often coding out solutions in JediScript, a neat little subscript of JavaScript. In fact, I’m more used to the JediScript library now compared to the usual JS things I’ve learnt before.

Code Golf has taught me something valuable though:

The people who understand their tools well are usually those who solves problems.

I’ve done JS programming for quite a while now, but I still couldn’t return the index of the n-th occurrence of string s in string t. But what I’ve really learnt were neat and elegant concepts such as recursion, order of growth and data structures. There’s still some missing dots that I’ve yet to connect. One of the ways I could do that would be by coding my own projects with concepts learnt from this module so far.

As Ryan mentioned I should probably fix my TicTacToe.

As always when I try something new (Code Golf), I had a feeling that I suck. Interestingly I always tell myself it’s okay to suck. So long as I’m getting better and I’m trying.

So yes, that was my ‘virgin’ Code Golf experience, and what I’ve taken away from a short 2 hour session of coding little snippets. :3

Week 4, and beyond.

Week 4 has just ended, and it’s 2 more weeks to recess week, 3 more to midterms. That’s really very, very fast.

Where did all the time go?

Newton’s first law explains this very well. I read an article recently about how the laws of physics can be related to productivity, and this is exactly what is happening. The ball is starting to roll, and I believe it’s only going to roll faster as time goes on.

I think it’s good to do a module by module reflection on what I’ve learnt, and let’s try to connect the dots.

CS1101S: Programming Methodology (5 MCs)

People who take this module are often viewed as ‘crazy’. It’s probably one of the first few ‘difficult choices’ that a student can choose in School of Computing. I believe I’ve written in my previous post that I had to go through an interview to make sure that I was crazy enough to take this module. This module is a game. We submit our code through an online academy called the JFDI Academy, and there will be regular missions and sidequests. This online portal will constitute 35% of our overall results. What I feel about this system is really simple.

It encourages you to do your work. 

What’s more fun than applying what you learnt in lesson to a certain task you have on hand? Previous weeks we’ve done 2D/3D graphics, along with curves and fractals. Along with really advanced analytical things such as order of growth, data abstraction and next week, we’re diving into RSA Encryption. This is one of the few modules that I’m really into, though it really frustrates me at times when I don’t understand what’s going on in the code. (That’s what professors/tutors are there for right?)

Oh did I miss out that there is a leaderboard? My logic for getting onto the leaderboard is simple. It doesn’t matter who is consistently on the leaderboard, so long as you make it onto the leaderboard in the end, you are the final winner. Such a ranking system is dynamic, and being on the leaderboard for once or twice right now doesn’t signify anything. Rather, it signifies who has been consistently doing work early, and participating actively in the discussion forums. It does not reflect solely on how well your understanding of the material is. There’s mid-terms and finals for that.

Value learning over results, quality of work over how early you finish your work. 

That’s what I have to convince myself for this particular module. Of course I have to at least score an A- for this module in order to do the next crazy module, CS2020: Data Structures and Algorithms (Accelerated) (6 MCs), next semester. But first we have to understand, then synthesise, followed by the results. :)

CS1231: Discrete Structures (4 MCs)

This is a module that (almost) every senior warned us about. Yes, it is difficult, it is something new, but it is definitely not something useless.

So far we’ve done proofs, logic and boolean algebra. Right now we’re at Set Theory. This module is changing the way I think about problems, and in fact about life as a whole. We’re essentially studying logic. The module is not exactly as mathematical as it seems, but then again, what is mathematics? It is a study of logic, of how we could use our brain to make sense of a certain idea. 

We’ve learnt in lectures that a set is simply an idea. You can’t see a set, you can’t feel a set, but you know that it’s there. If this is the case for mathematics, then mathematics itself is just an idea. We’re playing with ideas that may or may not even exist!

So far, this module has been about a play on words. How to make sense of mathematical notions and symbols in English. The crux of this module is to train how we think, to sharpen our logical abilities. How the hell is this useless?

MA1521: Calculus for Computing (4 MCs)

In a way, this feels easier than H2 mathematics. Or is it because this is just the beginning? Either way, this module is currently is simply calculus, and the mathematics that we’re all so used to. Differentiation and integration. Study, practice and you’ll probably do well. What’s new right?

LSM1301: General Biology (4 MCs)

This module is surprisingly fast. The lecturer goes through most of the slides every lesson, and always assigns us to watch the webcast afterwards. In a way I’ve been neglecting this module a lot. Not reading it etc. Some say this is an easy A. But I guess nothing is easy in university, and I’m not taking any chances with that.

I should probably start revising some of the stuff for this module :\

GEM1902M: On Blindness

This is a Tembusu Junior Seminar that I’m taking. There are lots of advices online about taking a ‘fun module’ every semester. This would exactly be what this module is about. Fun. 

In fact, what we learn has nothing to do with blindness at all, since blindness could really mean anything. We’ve read Fragments by Heraclitus, and Before the Law by Franz Kafka. In fact, what we discuss about in class is so broad and deep that sometimes I have a tough time connecting the dots. Maybe just an example (my favourite) to illustrate what we discuss about:

You cannot step twice into the same rivers; for fresh waters are flowing in upon you.

As we interpreted this fragment, or as anyone else would interpret it, it really has the notion of change is constant. The river is always flowing, and the water we are standing in changes for every moment we step into the river. But then, what happens at the very instant when our feet touches the water? There is no comprehension. What happens in that moment becomes the past in the next frame, but at that very exact frame, there is no meaning. In a way, it could mean that life has no meaning if you don’t compare it with memories of the past.

Deep? You bet, that’s the first lesson, but the next few lessons are on more solid passages. Previous lesson was on Kafka, and the next on another passage not as abstract as the one above.

Remember I mentioned about CS1231 changing the way I think about things?

Its usefulness can be seen in this module that I’m taking. How do I know if something is true? What implies what, proof by exhaustion, contradiction etc. In some ways, philosophy and mathematics are very related. Plato was a philosopher as well as a mathematician, so were Archimedes and Socrates.


I think based on the length of each module, you could see which modules I’m really interested in, and which few I’m taking for the sake of taking. :) But fret not, I have learnt that to make life easier, fall in love with the things you don’t like. This way doing work wouldn’t be a chore, but something enjoyable.

Oh and did I mention, I made it into my faculty’s basketball team! :D

Photo 5-9-14 22 13 52

Photo 5-9-14 22 13 44

The jerseys look really awesome, and 18 because I really didn’t have any preferences. I was so glad to just make the team. The competition is tomorrow, and hope things will go well!

I think basketball has given me a boost in confidence in whatever I do. It’s a sport that requires you to be self-confident. Taking wide open shots with courage and stability. Really a useful skill to have in life as well.

Side note: I think I’ve been studying too much recently, spent my last weekend in school finishing work that was piling up. I’m glad I did it though, my week was relatively more manageable. Basketball is somewhat a stress-reliever. Oh and not to forget, my suite mate installed a chin-up bar at the toilet door. Best. Thing. Ever. :D

Here’s to three more weeks before mid-terms, let’s go! :)

Being an underdog, intentionally.

School is officially starting tomorrow. I’ve went through my previous posts (once more) and figured how far I’ve come, and how long I’ve waited for this moment. But now that school is really starting, there is an overwhelming sense of loss. 

It’s time to be a student again. 

After a short get together with Hume in the lounge tonight, and a really subjective (haha) conversation about which science is the best, I realise that I used to embrace studying in the past. I wasn’t anything like that when I was younger, but somehow, getting into JJC changed some of that. 

Here’s what I have to convince myself in order to perform at such a peak once more:

I’m not at the top, and probably never will. 

Sure, getting into NUS and Tembusu has proven that hard work pays off. I’m in an environment where people are really smart and hardworking. Almost everyone I meet are either from one of the top JCs or scholars. I’m an underdog. Not underestimating my own abilities here, but we have to admit that the education we received and the environment we grew up in is very different. 

This underdog feeling is somewhat motivation for me to work hard. The constant need to prove to others what you’re made of, instead of thriving in an environment where everything was built for your success. I think I’ve written quite a bit about being an underdog previously, and hopefully all that I’ve reflected on will remain in my head. 

Be an underdog, intentionally.

Other than that, there’s the Ponya orientation that’s taking place next week after lessons. I might just skip some of it, considering that I have basketball trials. Not to say that I’m worried, but I’m really concerned about partying and drinking. Two activities which I’m not strongly[1] against. 

Yeah that’s about it. Let’s have a first taste of what University life will be like tomorrow! 

[1] I don’t like excessive drinking and partying, or random drinking and partying. If it’s for a certain cause, and is justifiable, I wouldn’t mind it. So long as nobody gets hurt.

New room, new beginning.

I've moved in to Tembusu College, finally.

Photo 3-8-14 13 01 10

Room number!

Photo 3-8-14 13 01 16

How the room looks like when it just started off.

I’m staying really, really high up on the 19th floor. Pros and cons of staying so high up. Well but the pros definitely outweigh the cons. Sadly most of my friends are staying in the lower levels. :(

We’re still neighbours though, living in the same block!

So what have I been up to so far?

Bill splitter.

I’m busting my head over this project. It was all going really well until I had to figure out how to split the bill among people. Not that I do not understand the math, but I couldn’t figure out a design pattern to link all of it together. This is taking up way too much of my time. But I have to finish this project before school officially starts. Right now what I have is just a pretty interface that adds items to a person’s item list. 

That’s it.

Really, really pathetic. :(

At least I learnt the importance of design patterns (the hard way), and I’m diving into that right away. I haven’t really been working on my Head First Design Pattern that I bought online, and Eloquent JavaScript which I’ve been delaying since I first read the introduction chapter. 

I think a more important skill worth having is to read multiple books at the same time. 

I couldn’t ‘multi-read’. Currently I’m at Game of Thrones and every time I fire up Kobo on my iPad, I’m just lost inside the world of Westoros. Perhaps I should read more simultaneously! 

Lessons are officially starting in a week’s time, so I got a few more days to sort myself out mentally. It feels kind of like the calm before the storm. :/

Hope everyone is ready for school! :D

Technical Interviews and debates.

Yesterday marked the last day of Tembusu Orientation Week, and it was a totally different experience of freshmen camp. In my opinion, camaraderie and friendship forged during the camp was more important than the camp itself. I’m really proud to be part of this amazing OG, Hume!

#NoPlaceLikeHUME

Yep, that's us!

Yep, that’s us!

Other than the amazing friends made, I’ve attended two events which I’ve never experienced before in my life.

Technical Interview

I did not attend this in the camp, but I was told to attend an interview for CS1101S. It’s an introductory programming module which is harder and has much more workload than CS1010. In this module we learn much more through functional programming instead of doing the same old module in C. Which I’ve already more or less learned.

Yes, I should’ve said all of those in the interview, but no. Instead I said that I’ve learnt Javascript and wanted to hone my Javascript skills. Massive facepalm. Nobody who understands Computer Science would tell you that CS is about programming. It’s about the concept. That’s just the first part of the interview that I screwed up.

Afterwards, I was told to explain mathematical function, and subsequently explain some fundamental concepts that I should’ve been able to explain. I blew it. I couldn’t do it without the help of the professor, and made some really, really, fundamentally wrong mistakes. I think it went so bad that before I even finished explaining, the professor told me straight up

Ok I think I have an idea of how good your mathematical abilities are.

Man.

Perhaps I’m really not good enough for this module? I refuse to believe that is the case. I could’ve easily used the excuse that army has led to my rusty mathematical abilities. But like I said, that’s just an excuse. 

The point is I screwed it up, and there’s no way I could make up for it. The only option that I have would be to not screw up CS1010 if I get rejected. Nothing short of an A. 

MAJOR EDIT:

I got the module! I have no idea how, but I won’t throw away this chance given to me. :)

Moving on…

Debates

If you’re not aware, the last day of Tembusu Orientation Week was a Model United Nations. We discussed on ideologies, and how does it represent human rights. Yeah, if you know me well, I know nuts about these things. Plus, it was held as a formal debate, so that’s another thing I’ve never done before. Placing these two together led to me stammering in front of the mic, not knowing what the hell am I talking about.

This is probably an area that I’m lacking in. Not only public speaking, but having an opinion about something. I rarely have strong felt opinions, and Tembusu encourages us to have an opinion. 

There’s a first for everything, and everyone has to start somewhere. Just like I mentioned previously about coding and basketball. I’m giving myself the permission to suck, in order to get sorta good at something. Tembusu college is probably the best decision I’ve ever made in my life to expose me to such events.

Oh, the least important part, I suited up for the second time in my life.

The HUME-MUN (get it) team with our OGL, Alif!

The HUME-MUN (get it) team with our OGL, Alif!

After experiencing these two things which pointed out (yet again) my weak areas, it’s time to start working on them! Not going to make any resolutions this time, because I have not formulated any yet. But the idea is to keep talking, keep thinking, and keep writing.

Can’t wait for school to start and move in to my Tembusu room! :D

Keep up the learning.

I am hitting a plateau.

It could mean a lot of things when I’ve reached a plateau. 

Firstly, it could mean that I am getting good at what I do. Which leads to what I like to call a pro comfort zone. It’s the nirvana of what you’ve been working for. The highest level of your skill.

Obviously, I’m not reaching, nor am I anywhere near that stage.

It simply means that I need to switch up my methods. Plainly reading has bored me, well sort of. Coding for the sake of coding everyday is desensitising my thirst for learning new things. It’s another comfort zone, but a fake pro comfort zone. Where I think I’m getting too good for myself, and instead fall into a vicious cycle of procrastination. We all know these excuses.

Oh I’ll do it tomorrow. It’s gonna go down tomorrow, I promise.

For a change, here’s what I have in mind for the upcoming month:

  1. Start on a new project, making use of what you’ve learnt from your previous project.
    I learnt quite a bit of Angular and new Javascript tools from my previous project, but I can’t seem to understand how it comes together. I ought to piece them together by myself to see clearly how each of them are connected. Take a look at my previous project here! It’s not perfect yet, and I plan to leave it that way. There are certain bugs which I cannot find (mostly due to typo), and solving them is too great an opportunity cost. I rather re-write an app that works, and learn something more out of it.

  2. Read more, but this time, more on coding.
    I’ve read lots of other stuff, but not programming specific articles. I always thought those stuff were too advanced for me. Oh design patterns, machine learning, etc. Everyone has to start somewhere. Perhaps reading about technical topics would encourage me to understand on a deeper level what is going on. 

    That being said, I’m still going to continue reading fiction and self-help books and articles. (Yes I’m looking at you A Song of Ice and Fire) Tembusu college has a great reading room, where reading is encouraged in it. No homework allowed! A great resolution would be to spend a minimum of 15 minutes in the reading room before bed everyday, just to read whatever. :)

  3. Edit one Wikipedia article everyday.
    What?! What has this got to do with anything at all?!

    I signed up for a Wikipedia account recently, and I found that there are lots of mini-tasks on Wikipedia to be done. Such as citing sources, grammatical errors, etc. All these work on my reading, writing, and most of all, research abilities. 

    What’s more, you get to learn something new everyday when you research Wikipedia topics! Isn’t that a win-win?

    I know, this sounds as ridiculous to me as it is to you. I’m not sure if this would work out fine, but you never know if you never try!  :D

  4. Keep coding.
    I don’t think I have to elaborate on this any further…

That’s what I have in mind so far. It’s three weeks before school starts, and I have two more school camps to attend. Which leaves me with just one week to achieve these small little goals. 

Until I hit another plateau, I’ll stick with these little habits! Code on, live on! :P

Where do we go from here?

I was lazing in bed this morning, when the long awaited acceptance email from Tembusu College came. 

I made it. 

They had accepted me. I do believe that after all the reflections and lessons learnt, this is the fruit of my labour. But what’s more important is to view this not as a destination, but just the start of my journey. 

So where do we go from here?

A good friend of mine recommended a well-written article recently. It talks about internal motives and instrumental motives. The main point is that people with instrumental and internal motives, such as going to University to get a decent pay (instrumental), and to learn (internal), usually end up unsuccessful in achieving their motives. Whereas those with a lack of instrumental motives end up being successful in what they want to achieve. 

This sort of reminds me of So Good They Can’t Ignore You by Cal Newport. He mentioned that if you focus more on being a craftsmen of your own skill, passion and joy would come as a side product of the hard work. The true purpose of learning is so that you will emerge as a better person than you were yesterday. Be it in my craft, or the maturity of thought. All of the glamor comes as a side product of learning. 

What I’m trying to convince myself is that I’m in university to learn. To better myself, to educate myself. 

It’s only the beginning, and I have secured yet another opportunity for me to better myself. I’m excited about what the road ahead has in store, and I’ll be sure to cherish every moment of it.