So much for housing NDT inside UoM

I’m writing this with tears in my eyes. Just witnessed the damage the NDT has done to the University of Moratuwa premises yesternight. The rooms we used to stay in have been ruined. The doors axed and the windows shattered. They have raided the girls’ hostel as well. Several students from the Engineering Faculty are now being treated, and it’s said that the condition of one is critical.

This is history repeating. The damage NDT has done to the name of University of Moratuwa through the years is huge. In 1999, after considering the circumstances, the (then) vice chancellor had filed the Jayantha Wijesekare Report stressing that the resources allocated to the NDT and the head count of that institute should NEVER be increased. The NDT was not abolished to cater to the need of technical officers in the country. Despite this, the violence has continued.

In 2007 (as I remember), they were allocated a block of land in Diyagama to shift the institute from the UoM premises. The administration agreed that having them here at Moratuwa would cause only more trouble. The land thus allocated is lying without notice now. The last time we inquired, no money had been yet allocated from the budget to continue with the constructions.

As you may know, the NDT is not even a faculty of UoM, but just an institute offering a technical diploma. Their close connection with that notorious political party is well known. The infamous ‘NDT Api’ (we, the NDT) slogan is used to force-feed their power inside the university.

Someone who doesn’t really know the circumstances might not see the gravity of the situation. All they can see is one group of students firing petrol bombs at others. The only solution for this problem is banishing the NDT from UoM premises. Despite the being harsh, in reality, no other solution would work.

They have never worked.

(Pictures are from Dailymirror)

Spaced repetition like a boss

Derek Sivers has a post about spaced repetition. If you are new to Spaced Repetition or even if you are not, I highly recommend reading his article or googling about this cool technique a bit. Derek’s article is focused on memorizing a programming language, which is a cool use of SR. However, the way he does it has a weakness: he’s using Anki.

I came across SR while I was learning Spanish. This technique is widely used among language learners to remember new words and phrases they are learning. Most of them use Anki, which is an app built for remembering stuff using flash cards and spaced repetition. But unless you are the really persistent type, it’s not an easy task remembering to load up Anki every day and reviewing the day’s cards.

I used Revunote for some time. It’s an Android app that integrates with Evernote. It gets the notes that you tag as ‘Revunote’ from Evernote and shows them up in increasing intervals (1, 3, 7, 14, 30 and 60 days). Revunote is simple and does exactly what it says, and I still use it; but is there a better solution?

A possible candidate is email. We don’t ‘forget’ to check mail and we check them every day, no exceptions. If we could plug in SR to our email, that would be perfect. And how do we do that? FollowupThen.

Email followups

FollowupThen is a free email service (with optional premium service) that lets you make email reminders. For example, if you send an email to, the mail will be sent back to you in the 3rd of February. If you send it to, it would bounce back in 10 hours. If you want to reply to an email and if you can’t do it till tomorrow, you can forward it to and you can guess the rest. Pretty cool, huh? It’s can be a life-savior to most of us. There’s a comprehensive how-to on using FollowupThen here.

Now think about this: what will happen if you send a mail to both and You will get the mail both tomorrow and in three days. Can you see where I’m getting at? Spaced repetition coming into play!

So here you go:

  • Open up your email client and create a new contacts group.
  • Add the following contacts to that group (with each followed by
    3h, 24h, 3days, 7days, 2weeks, 1month, 3months, 6months.
  • Compose a mail with what you want to remember.
  • Send it to your new group of contacts.

Voila! FollowupThen will make sure you remember whatever crap you put into that mail! You can add/remove the times you’d like to review as you wish. YMMV. Just make sure you read each email that followupthen sends; no skipping, please. If you can stick to this simple rule, I’m telling you, this simple system can work miracles.

What do I want to remember?

Fair question. What, indeed? Here are some suggestions.

  • Some new words or phrases in a language you are learning
  • An interesting code snippet or a design pattern
  • Lyrics of a song or a poem
  • A Linux/Git/Vim/whatever command
  • Facts for general knowledge
  • Some telephone/credit card/whatever numbers
  • Anything that you wish you could remember

This is no rocket science. There’s little effort required to set it up. And there’s no reason why you shouldn’t give spaced repetition a try. Go!


It’s been just a day since Kichibichiya was released. Here are some thoughts on the new app.

For those who heard the name for the first time, Kichibichiya is a Twitter client for Android written by the Sri Lankan developer Pahan. Kichi-bichi is Sinhala for the chirping of birds; hence the name. It has extracted all the goodness of the open-source client Twidere and added loads of useful features into it. The chief motivation for the app has been coming up with a Twiiter client with seamless Sinhala unicode support.

I was skeptic at first. Pahan was posting screenshots of his not-yet-released prototype since a few weeks and they mostly included tweets with Sinhala rendered beautifully. But would you use a Twitter app if all it did right was rendering a language properly? Well, I wouldn’t.


Sinhala tweets
Sinhala tweets

The first impression I got after installing Kichibichiya was, “Oh man, this is slick”. And it indeed is. Smooth scrolling between timelines, holo theme and less messy interface. Most common actions a regular tweep would need are easily accessible. Username auto-completion can improve, though. The customizability is impressive. Custom tabs, day and night themes, custom notifications, multiple accounts, ability to set DNS servers, host mapping, hardware acceleration are only a few of them. You can even set your own retweet format.

My favorite feature is the content filter. Kichibichiya lets you mute users (eg: @NisansaDdS), keywords (eg: changumee) and sources (eg: foursqure) hassle-free. Not every good client out there supports tweet filtering well, but Kichibichiya does it like a boss. It feels good when the timeline is not cluttered with foursquare and getglue tweets anymore.

Apparently there’s support for extensions as well. Not quite sure if it would allow third-party extensions or not, but it’s good to know that the app is extensible.

Composing tweets
Composing tweets

Some of the settings
Some of the settings

Kichibichiya is awesome. I say awesome and I mean it. Not saying that it’s the best Twitter client out there. It’s hard to beat powerful clients like Falcon Pro, but then, Kichibichiya boasts of several features the former doesn’t offer. Of course, it was just launched. You’d find an obscure bug now and then. Some setting might not work perfectly. But let’s hope the developer keeps up with the good work and continue to come up with updates. And more cool features. This is one app with great potential.

Diving into Haskell

As mentioned in the previous post, I started a ‘Learn Haskell in a Day’ project yesterday evening. As of this writing, I’ve finished the 5th of the 14 chapters in the tutorial.

Yeah, it’s a bit disappointing. Well, my uncle and his daughter came to stay yesternight, so I couldn’t focus on Haskell while they were here, could I? Could have made a better excuse out of that, but to whom am I cheating?

Even the tutorial I’m following is quite

Anyway, here are some interesting stuff I came across after yesterday’s post:

Types and Typefaces
Types are much like the types of variables you can use. Those include Int, Integer (which is an unbounded int), Char, Bool, Float, etc etc. A string is a list of Chars. Talking about lists, they play a central role in Haskell. Much more powerful than the lists in the languages we are used to.

Typefaces are sort of like interfaces in OOP. Types implement typefaces. (At least that’s what happens as far as my current understanding goes). A type that implements the Eq typeface can be checked for equality. One that implements Show can be presented as a string. For example, you can make a function that takes types that implements both Eq and Show.

No loops for you, baby!
Haskell has no for or while loops. Like, seriously. But you can use recursion elegantly to achieve what you’d have done with loops in an imperative language. This can be tricky at first; how does one do _anything_ without a loop?

Suppose we want to write a function to get the maximum value in a list. Of course there’s an in-built function, but say we wanted our own. How we do it is create a recursive function that would return the maximum of the current element and the maximum of the rest of the list, which, as you can see, is a recursive call.

maximum' :: (Ord a) => [a] -> a
maximum' [] = error "maximum of empty list"
maximum' [x] = x
maximum' (x:xs) = max x (maximum' xs)

This uses the in-built max function to get the maximum of two values.

Tabs are evil
The GHC compiler does not get on well with tabs. Spent nearly 20 minutes one time to find a bug which had been caused by using tabs. The solution is to ask your editor to use spaces for tabs. If you use Vim, this can be done using :set expandtab.

I tried implementing stuff like the fibonacci series and some math problems, which, IMO, is one of the best ways to learn a language. There’s always a better implementation with more elegant code, though.

So.. I’m hoping to finish at least 3 more chapters by 6pm today. Guess it’d be as easy as it sounds.

Also, funny story, the internet connection here sucks so much that I wasn’t able to clone a 6MB repo from BitBucket. And I tried 6 times. Yeah, not easy to imagine.

Await another update later today.

Learn Haskell in a Day

I was intrigued by Raditha‘s posts on learning Ruby and Python in a day (though they were dragged to 48 hours). Now I’m going to make that inspiration into action by trying to learn Haskell in a day.

Why Haskell?
I’ve always wanted to learn a functional programming language. Have never even written a Hello World with one. Heck, I even don’t know what functional programming is. My first choice was Clojure, but then, after spending some time on the web, decided it would be Haskell. So the main reasons were:
1. Haskell is purely functional
2. There’s a strong, near-fanatical community. Smaller ones are frustrating to work with (that’s what she said).
3. I had heard of ppl solving problems with Haskell in numerous forums
4. When asked what languages I’m proficient in, it’s always nice to add “and, of course, Haskell” at the end.

As the tutorial, I chose LYAH (Learn You A Haskell), which is the ‘funkiest way to learn Haskell’. It’s aimed at those who already know how to programme, so, yeah.

And this will be just a crash course. I very well know you can’t become a master in a language within 24 hours. What I’m trying to achieve is being able to write code to solve basic problems and being able to read Haskell code when I see some.

And here we go:
Language: Haskell
Compiler: GHC (This gets installed when you install the haskell-platform)
Editor: Vim
Tutorial: LearnYouAHaskell
Motivation level: High

Was going to start in the morning, but started just an hour ago coz of the darn slow connection which is a luxury in this wilderness. It took more than half-an-hour to download the 70MB of packages for haskell-platform, just imagine. Hoping to finish by this time tomorrow if the connection keeps up till then.

As of this writing, I’m in the section “I’m a list comprehension”. Here are a few interesting stuff I came across so far:

As you may have guessed, functional programming languages are all about, well, functions. So is Haskell. Declaring a function is as easy as declaring a variable.

squareMe x = x * x

Functions and parameters are separated by spaces and not parentheses, just like in Bash. Also, if the function takes exactly two parameters, you can call it as if it were an infix function. For example, the ‘elem’ function takes two parameters. If we wanted to pass 2 and someVar to it, both of the following will work:

elem 2 someVar
2 `elem` someVar

Using infix functions can be less confusing in many circumstances.

Error messages
Ugh. The error messages Haskell gives are almost incomprehensible. If you tried to add a string to an integer it would be,

No instance for (Num Char)
arising from a use of `+’
Possible fix: add an instance declaration for (Num Char)
In the expression: 2 + ‘c’
In an equation for `it’: it = 2 + ‘c’

An if statement is an expression
You can do cool stuff like this:

coolFunc x = (if x > 10 then x else x*2) + 1

So if we passed 4 to coolFunc it would return 9 (= 4*2 + 1) and if the argument happened to be 15 it would return 16 (= 15 + 1).

Haskell is lazy
Haskell is a ‘lazy‘ programming language. By lazy, it means that it won’t compute anything until its result is specifically asked for. For example, we can use the following to obtain the first 20 multiples of 7:

take 20 [7,14..]

[7,14..] denotes the infinite array 7,14,21,28 and so on. The above statement asks for the first 20 elements of this infinite array. In another language, the interpreter would try to calculate the infinite array first before taking the first 20. But since Haskell’s lazy, it doesn’t do anything until the function ‘take‘ asks for the first 20 elements. It will only calculate the first 20 elements.

Quantum particles are like boos

If there’s one single subreddit that’s worth subscribing to, it’s /r/explainlikeimfive. The subreddit aims at answering to questions like you’re explaining to a 5 year old, i.e. in a language that everyone can understand.

When I come across a good explanation I clip them to my evernote. I was going through some notes today and came across this clip from a post that dated about two months back. The post explains the work of 2012 Nobel prize winners. There is an explanation that says quantum particles behave differently when we observe them. Someone raises the reasonable question “How do they know they are doing something different when we don’t observe them if we can’t observe them without affecting them previously?” Look at the explanation it got (permalink):

super mario boos

It’s like the boos in Mario. Whenever you look at (measure) them, they stop moving (act like particles). When you look away, they chase you (act like waves). When you look at them again, they’re somewhere totally different.

And just like boos, sometimes they go through walls. But only when you’re not looking.

Exactly what a 5-year would need to understand what’s going on. What’s more, it explains a scientific principle so brilliantly that any of us can understand (albeit it may not be 100% technically correct).

I highly recommend reading the whole thread.

Few hours with

So I joined today. An year’s subscription costs $36 and there’s a monthly option for $5. I chose the latter for a start.

The global feed, similar to Twitter’s public timeline

It’s pretty much a Twitter-like service with a slightly different vocabulary. You create posts with a maximum length of 256 characters, as opposed to Twitter’s 140 limit on tweets. You can @ reply to other people’s posts and repost the good ones (just like retweeting). Or quote them (old-school retweet) and star them (favorite). There’s no counterpart to Twitter’s DMs as yet, but it’s coming soon. You can follow and unfollow other users.

How does it differ from Twitter?
For one thing, will never advertise or sell their users’ data, as promised by the developers. It will be funded by the subscription fees. This also means only the people who are really interested will join

Secondly, _is_ an open-source API. It focuses on users and third-party developers. Compare this with Twitter which now shuns third-party apps. Everyone had big hopes on Twitter a few years back, but not anymore. I tweeted a good post on this by Terence Eden some time back. Everyone should read that. may still be in its early stages, but developers have gathered around the platform and are building apps actively. There are quite a few apps already in the directory. Other than the Alpha webapp by itself, I tried out Dash for Android, NoodleApp for the web, and Texapp, a text-based client written in Perl just like Ttytter by the same developer. Best of all, you can use with IFTTT as well.

appnetstats gives a realtime overview of the current stats. Currently, majority of the users are developers and geeks, which is perhaps a good thing. Lots of constructive conversations going on.

Is going to kill Twitter?
I don’t think so. Not being free will make most users stay out of it for the foreseeable future and stay with Twitter. But will grow into a good community without any of Twitter’s stinking aspects. I really hope this will be the case. It’s been just a few hours, and if the going gets good I may subscribe for a full year. One may argue that no one should pay for a service that you can get for free, but in reality you cannot get what offers from Twitter. You just can’t. They have explicitly defined their core values in their home page and Terms of Service in github.

Follow me on if you’re there; I go by @thameera.

Quantal Quetzal – the all new Ubuntu 12.10

It’s been 5 days since Ubuntu 12.10 (aka Quental Quetzal) was released and I downloaded the ISO on 19th, but got the time to install only today. Finished the install just 30 minutes back from the time I started writing this. By the way, the following ain’t gonna be a review, just some stuff I did after installing and the problems I had. If you want a review let me google that for you.

Ubuntu no longer fits in a CD. It’s got bigger (that’s what she said). The ISO is 800 MB now, so if you’re not installing online, you need to create a DVD or a USB.

I had previously fucked up the whole 12.04 install by messing up with xorg.conf, compiz and even wine, so formatted /home as well. A fresh install, literally. It went without a hitch.

Was expecting everything to work smoothly after the install, but some did not. Nvidia drivers do not come by default (which is normal) but they did not appear under Additional Drivers as well. I tried sudo apt-get install nvidia-current and restarted, but the screens were messed up. Unity launcher was hidden and the screen resolution was fixed. A bit of googling showed that this was a known bug in the kernel. The following workaround solved the problem:

sudo apt-get install linux-headers-3.5.0-17-generic
sudo apt-get remove nvidia*
sudo apt-get install nvidia-current

The dual monitor setup got detected and the display was set to TwinView automatically, so had no need to do them manually as I’ve mentioned previously in the other blog. Anyway when you move the mouse from one monitor to another, there’s this deceleration which is a headache. This could be disabled by going to Displays and turning off Sticky Edges.

I keep the Unity launcher on both desktops coz it’s more convenient that way

Installed ubuntu-restricted-extras next. Nothing special there.

Then I downloaded the Google Chrome deb and tried to install, but this gave ‘The package is of bad quality’ error. As it turns out, this is also a known bug and continuing with ‘Ignore and install’ is the way to go.

The next step was to completely remove Ubuntu One. Coz that’s how we roll. The command is:

sudo apt-get purge ubuntuone*

In Quental, there’s this new Online Accounts section, in which you can log into most services like Twitter, Google and Facebook. After logging in I noticed that the Messaging icon was missing from the top panel. This could be turned on by going to Broadcast Preferences and checking Start service at login.

Some of the things I’m gonna do next are installing the blinking messaging menu icon and installing some cool stuff like Everpad, fogger, pinta, clementine, rubygems, ttytter and apvlv. And ccsm of course (just noticed it’s missing). Then enable wobbly windows. And then edit /etc/fstab to my liking perhaps. I may post some tips on new features, workarounds, etc in Accidents Happen.

Since it’s been less than hour, it’s too soon to tell how good Quental is compared with Precise (12.04). Anyway I’m disappointed by the nvidia issue. Fuck you nvidia!

On Galaxy Note II

The Note started as a controversy, but in the end, it was a resounding success. Contrary to many initial reactions, people actually liked the big screen. More than 10 million were sold. I’ve been using the Note for over 8 months and was constantly asking myself, is it even possible to come up with a better phone? Turns out, it is. Welcome the Samsung Galaxy Note II.

Yes, it is!

Thanks to It’s About Gadgets by Etisalat, I got the chance to use the new monster for a week. And, ugh, I forgot to take any photos or screenshots, so all the photos in the posts will be stolen ones from the interwebs.

The initial reaction when I got the Note 2? This guy is fast! Of course, it goes without saying that Note 2 is one of the fastest phones currently on the market (specs here, comparison with Note here). With a quad-core 1.6GHz Exynos processor and 2GB RAM, it’s got more power than my previous laptop. The transitions are pretty slick. Could play Max Payne without any lag whatsoever. Note that (no pun intended) I tried everything in the stock TouchWiz launcher and without many third-party apps running in the background, so yeah, you get my point.

Samsung Galaxy Note II

Jelly Bean comes pre-installed in Note 2 with better camera, actionable notifications and all. (Even though the Note comes with Gingerbread, it’s upgradeable to Jelly Bean.) There’s this pop-up video player thingy and other fancy apps.

All the nonsense aside, let’s talk about the size. The Note’s screen was 5.3″, whereas it’s 5.5″ in Note 2. However, it’s less wide than the Note. Which means it feels better in the hand. Several of my friends who hated the original Note’s dimensions said they like the new design. Then how come the bigger screen? Yes, Note 2 is longer than the Note. It’s like some idiot took the Note and pulled it from either side. This has made the resolution to go down to 720×1280 (as opposed to 800×1280 in the Note). And less pixel density. I personally prefer what it was like in the original Note.

Note 2 (on the left) vs the Note

S-Pen functionality is much better with the Note 2. There’s some kind of sensor in the S-Pen slot, so when you take it out or put it back in, the phone knows. Taking the stylus out automatically takes you to a screen with many S-Pen-capable apps. Also a notification icon appears in the top bar saying that the pen is not on the slot, reducing the chances of losing it (as happened with my Note. Had to buy a replacement and it wasn’t cheap). It detects when you hover the pen above the screen as well. For example, if you hover the pen over the pictures in the Gallery (or events in the calendar), they will quickly zoom in and zoom out once you move the pen away. And stuff.

Hovering the pen over Video Player’s progress bar

Regardless of how much I hate the new screen and the dimensions, I prefer the Note 2 to Note. I would buy if I could. Apparently you’d be able to grab one from Etisalat itself in a few days. And there’s this small video interview I had with them about Note 2 which will be available in their Youtube channel in a few days.

UPDATE: Here’s my interview with Amitha on the Note II.

How I wish we didn't have to wish

Don’t you just hate wishing people on their birthdays? Especially when it’s not in real life? In real life, you can just ‘adoh happy birthday mchan, when’s the party?‘ and all. It’s simpler in Facebook: just a ‘happy birthday mchan!‘. But not so on Twitter.

I try to ignore birthdays as much as I can. Nobody will tell you it’s his birthday, so, you see, he doesn’t really know if I know if it’s his birthday, even though I know it’s his birthday and I know that he knows that there’s a good chance I’ve heard of his birthday but he really can’t prove it, so it’s just a matter of simple logic.

I wish this was always the case, but then, sometimes you really have to wish (pun intended). Like today, when I go to twitter everybody’s wishing MoAwesomeSauce for his birthday and you go to facebook and you see photos of his office treat or whatever, and when you go to twitter again you find him thanking for all the wishes he got, and then when you think it’s all over here come more ppl wishing him and then again more thanks follow.

*#?$. This is the point when you say ‘oh what the hell’ and try to compose a happy birthday message. What do you say? Happy birthday mchan? After you look at all the wishes he’s getting, such a simple one would make him think I’m like wishing for the sake of wishing, so no. Many happy returns of the day? Same story. And too common. Happy birthday mchan, when’s the party? I look at the wishes he’s got and none of them mentions about a treat so perhaps he’s the kind of guy who doesn’t give out treats? So… no.

His name is MoAwesomeSauce, so I could add some ‘awesome’ into the wish and make him feel good? So I write this and press Enter:

WTF! Isn’t that the lamest birthday wish ever? ‘Awesome’ is mentioned twice and there’s a smiley at the end! And the second sentence doesn’t even make any sense! Awkward at its best. And the worst part of it all? He thanks me with just a ‘thanks mate’! All the hardwork to that wish-with-two-awesomes-in-it dismissed with a simple ‘thanks mate’?

Has the world always been this way? Just three months to the apocalypse and we’re still sharing lame awkward birthday wishes? Will everything be alright after Sarath Fonseka forms his new party? Will Sarath Fonseka ever form a new party? Is he even out of prison yet?

So many questions. There’s nothing one can do but simply wish MoAwesomeSauce a very happy birthday and not think about it anymore.