Is copying people’s work ok?

I know a guy who dislikes 9gag because the content are simply copy-and-pasted from somewhere else and credits are given to the 9gag author.

His main beef is that people at 9gag are getting credit for simply copy and pasting from somewhere else. I personally don’t see a problem with that. It is not that I do not respect intellectual property, but I think the content were anonymous to start with and it’s purpose was to spread. Take jokes for instance. A lot of jokes are anonymous, in a sense that we don’t attribute an author to it, although someone must have invented it. Jokes have also evolved and migrated over time, so a blonde joke at one place will appear somewhere else as a joke about another group.

However, that analogy falls short because his argument is not against the spreading and evolving of jokes, but rather giving credits for a work that is copied somewhere else. So the argument on jokes falls short because we don’t usually credit someone for the jokes he told. We usually see it as a carrier of the jokes, but not the ‘creator’.

A better analogy would be sites like reddit. It serves to provide links to interesting articles filtered by millions of people by category. It is quite common to see people quoting reddit as their source instead of the original site. Is there are problem with that?

I think that sites like 9gag serve as a content aggregator for internet memes. I admit that some of the contents are merely copied from somewhere else without giving credits to the original author but I also want to point out that some of the contents are, in my opinion, original work from the contributors. There are memes that are in direct response to older memes,

Secondly, given the vast amount of resources online, it is very hard to give credit where credit is due. This is because, like the case of jokes, most of the ideas are anonymous. I believe that if the original author wanted credits for his work, the people that are propagating the memes would gladly give credits. After all, there is nothing to lose by crediting the original author; they should be grateful for the author for coming up with such a good idea.

Question: Where does compilation books like “Damn you, Autocorrect”


Hiding your birthday on facebook

We share many information on Facebook, such as name, country, date of birth, and other details, personal or not. After all, Facebook wants to make the world more open.

However, I believe that there are still legit reasons for people to keep certain information to themselves. Sometimes, it’s an obvious judgement of whether certain information should be available (to friends) or not, but some other times, it is less clear. One such information that this post is concern about is birth date. Birth date is something that is not guarded against that strongly. After all, you share that information with your close friends, and it is on most identification card (to check if you’re legal to buy alcohol). As a result, most people are willing to share their birth date online, and may not be aware (or don’t really care) that they are making it accessible to people who are less than close friends.

What’s the harm there, you might ask. The risk here is possible identity theft. Some services try to authenticate you by asking you to verify your birth date (among other things, which can also be stolen in a similar manner). Some password recovery system for online services and call centers comes to mind.

That’s silly, I hear you say. But sometimes we willingly use our birth dates as an authentication method. For example, when choosing a memorable pin, birth date is a perfect candidate! (I’m sure most readers would have used their birth dates as their phone unlock PIN at least once). It’s all about risks, weighing the cost and benefits of using complex PINs.

A research was done on the distribution of 4-digit PINs, which shows that PINs are not as random as they should be. The following diagram shows the distribution of 4-digit PINs, the x-axis is for the first two digits, while the y-axis is for the last two digits.


What readers would notice is that the dark regions, which represents high frequency, are not randomly distributed. For instance, we see that the dark vertical line corresponds to 19xx where xx is from the range 40 to 99. One might guess that it corresponds to birth year. The next observation is that at the bottom left there is a dark corner, almost like an L-shape. Here we see the boundaries are 30 and 12, corresponding to the number of days and months. It is not too far fetched to conclude that users probably use their birth dates as their PINs.

Would you make your PIN accessible to your friends (or acquaintances) on Facebook? If the answer is no, then it is sensible that people shouldn’t readily reveal their birth date on Facebook.

So I started a journey to try and make it harder for people who didn’t know me well to figure out my birth date. It starts with setting the visibility of birth date to “only me”. But I realised even without explicitly stating my birth date, an intelligent person might browse through my news feed and find out when people sent birthday greetings to me, hence deduce my birth date. (I have tried this one some of my Facebook friends and have successfully inferred their birth date despite not having direct access to that information on their “about” page.) So the next sensible thing to do in this endeavour is to hide those posts.

Annoyingly, Facebook doesn’t have the feature for people to hide multiple posts, and I wasn’t going to click through hundreds of birthday wishes just to hide them. So I decided to use some javascript to automate that process.

The first step is to load jQuery, which is simple enough. Once I got jQuery, it’s a matter of selecting all the posts that have birthday greetings, such as “happy birthday”, “HAPPY BIRTHDAY”, etc, and simulate mouse clicks to change the visibility from allowed to hidden. The code that does that is described bellow.

$(".pam ").each(function(x) {
    // test is the content of the wall posts
    var test = $(this).text();
    if (test.indexOf("birthday") >= 0 || test.indexOf("BIRTHDAY") >= 0 || test.indexOf("bday") >= 0 || test.indexOf("Birthday") >= 0) {
        // t2 is the edit button which brings out the menu
        var t2 = $(this).children().children().children().children().last().children().children().last().children();
        // check if it's currently allowed on timeline
        if (t2.attr("aria-label")!==undefined && t2.attr("aria-label").indexOf("Allowed") >= 0) {
            if(t2[0].click !==undefined) 
            var n_id = t2.attr("aria-owns");
            // t3 is the button that says hide from time line
            var t3 = $($('#' + n_id).children().children().children()[2]).children()
            // check if it really is that button, or it might be a delete button, in that case the length is zero
            if(t3.length>0 && t3[0].click !==undefined) {

So after coming up with this tweak, I managed to make most posts about birthday wishes hidden from my time line. There are of course some hiccups along the way. For instance, finding the criteria for such posts proved to be not as trivial as searching for the word “birthday”. Some people might say “happy x-th” instead, but those are easy to spot from a list of circular icons and can be manually rectified later.


One thing to mention here is the posts are not lost, they are still visible when I look through my own time line – so I can look back and reminisce on people sending me wishes. But at least it is currently more difficult to know my birth date without asking me.

The trade off between privacy and convenience is inevitable. In making my birth date private, I have made it difficult for people to send me birthday wishes on my birthday (without Facebook reminding them to do so). But I think I can make do without that social contract, and not make people feel bad by giving them an excuse – “because Facebook didn’t remind me to”. Similarly, I stopped posting birthday wishes on Facebook because I would be hypocritical to do that. This is probably also a good way to filter your friends to people who actually bother to remember your birthday. But readers be warned, you might not like what you learn.

To conclude, this method illustrates the usefulness of knowing some programming languages to automate mundane tasks such as the one I was trying to complete. It is a simple modification to change it to hide posts that meet some other conditions, or even like all posts from a person! (way to show that you actually appreciate their posts)

XinYao: Singapore folk songs

I finally found a link today to watch “that girl in pinafore”. I think it’s a great local production, very authentic on the fronts of  the story line and Singlish, and it touched on the issue of xinyao, as analysed by this article. It made me feel so nostalgic that I went to research a little more about xinyao.

Xinyao, a term for Singapore folk songs, is composed and sung by Singaporeans about the life in the country. The movement started in mid 1980s and was popular in the 1990s but it started to die down come the millennium.

This genre is usually characterized by clean acoustics and ballad style lyrics, and that makes it a great way of learning the language. I now can understand and appreciate that my primary school teacher used these xinyao songs to enrich the learning experience. My favourite songs are 一步一步来 which sings about how life and expectation change as we grow older, so we should take life one step at a time and 细水长流, which talks about friendships lasting a long time and how it change over time. I think it’s very appropriate for me to take a second look at these songs about 10 years after I was first introduced to it. It is very nostalgic and very fitting, because like in the songs, I feel like I am starting a new phase in life and can ‘feel’ the songs.

If my non-Singaporean friends asks me to show them something uniquely Singapore, this will definitely be on the list.

Link for the film, if it still works:

Might be better to break it into smaller 7 minute chunks like this website does:

What we lose as we grow older

Growing older sucks. This is a brief personal reflection on growing up.

0) We start judging others and stereotyping people. In contrast, there is no such rascism in a kid’s world. But society change our opinion and behaviour as we grow up.


fb post

1) We have to put on masks and personas just to avoid judgement. A child can be him or her self because no one will judge him or her, you can fully express yourself and if people don’t like it, they shrug it off as “you’re just a kid”. When a child smiles, you can see its purity.

2) We can no longer speak our mind, because we worry our words might offend someone and ruin the relationship. Instead of saying “I don’t think that’s a good idea because x”, people now say “In my opinion, x, but it might just be me, (so please can we still be friends?)”.

3) We have to observe social etiquette and read between the lines. Passive aggressiveness and sarcasm spring into mind.

3) You lose support, or have to work hard to maintain one. Being young means your parents, your friends, and people around you are more willing to support you in various decisions. As you grow older, people have other priorities in life and you seem to be left by the wayside. Sure you still get support from family and close friends, but those can no longer be taken for granted.

4) We have so many ‘balls’ to juggle – work, love, hobby, exercise – that we have less time to pursue our dreams. A child have all the necessary infrastructure and support in place so they can focus on perfecting their skills.

I’m not saying these are bad things. I think this is a natural course of life, which stems from mammals taking care of their young and teaching them skills until they are mature enough to care for themselves. This explains why human have the innate desire to care about the young (A lost wallet with a baby photo is more likely to be returned). As we grow older, we are expected to be able to take care of ourselves and to fit into the society we live in, hence the hoop jumping.

Similarities between conversation and computing and ball game

These are some preliminary ideas fleeting through my mind when I look at how human have conversations. I’m sure there are many ways to draw similarities in two quite different areas and this is just one way of seeing it.

Conversation and computer networking

Conversation etiquette is like TCP handshaking. You don’t just launch into a conversation topic. You need to establish it by following the protocol. You start with “Hi, how are you”, which is equivalent to sending a SYN request. You wait for the SYN-ACK response “I’m good thanks”, before diving into a conversation.

With new network connections, the next step is establishing the protocols which both of you can use. In computer networking, this could mean HTTP, FTP, etc. In real world, this could be finding a common topic to talk about. For example, “what’s your favourite sports?”, “Oh I like to play badminton”, which would be something like “Do you accept HTTP requests?”, “Yes I do”. Without these protocols, the other party might not be able to decipher the gibberish you say. He or she may simply not bother trying to decipher and appear bored.

A conversation is like a ball game

A conversation is like a ball game. You start a conversation – that’s your serve. The other party replies and expands on the topic – that’s the return volley. You spice up the conversation with jokes, sarcasm, witty wordplay – that’s executing moves like smashes and drop shots. You bounce it back and forth until one or the other of you misses the volley – that’s the end of the conversation. Then, either you start a conversation – a new serve – or you don’t. Maybe your partner will start one instead.

Taking the analogy further, at any point the ball is in someone’s court. Possessing the ball is to take initiative and giving the ball to your partner is a friendly gesture and can also be a defensive play. For example, when things go sour, instead of trying to remedy it with an aggressive play, it might be better to leave the ball in your partner’s court and let him or her decide how to play it.

Multi-tasking and context switching

There are several types of conversation. There is the brief hi bye greetings, which takes up only a short amount of time. There are also the long deep conversations which take longer time. Choosing the right medium and time for such conversations is vital to having a meaningful and successful one.

In computer memory allocation, programs want to find contiguous memory for the program to run. A set of memory that a computer process is using is known as its working set. If the entire working set is in memory, the process will run. If the available memory is too small to hold the entire working set, the process will cause faults and will run slowly. This situation is known as thrashing. This happens often when there are multiple programs running at the same time.

Human conversations have different commitment requirements – size of working memory set. If one tries to start a deep discussion – large working memory set – when the other party does not have the time (enough memory) to commit to, then the conversation is going to “thrash”. Considering how some people, and myself, use Facebook, it is extremely difficult to have any deep discussion using Facebook messenger. A more common type of conversation are those to catch up.