Learning Dutch

First summer in the Netherlands, I signed up to a 4 weeks dutch language course at babel.nl in Utrecht.

The schedule was intensive. We had 3 hour lectures and 2 hours self-study per day, 5 days per week. I got a certificate says that I’m at level A2 but I’m not very confident about it..

But the course definitely helped me with learning the language. I took the course 5 months after I got to the Nethelands. I already tried a few ways to learn the language during these 5 months (or even a little bit before), but this intensive experience brought me something different.

First of all, it forced me to give more time to language learning. I’m doing a PhD (along with a bunch of other stuff,) so sometimes it’s hard to convince myself to allocate time for learning languages “properly” (it’s actually not that hard when I use it as an excuse to watch Netflix in different languages).

Second, about this “properly”. In the course, I had a text book, I downloaded podcasts and listening materials, I used apps, I did the exercises, the reading, the in-class conversation, used more dutch in whats-app with friends, etc.. There was a variety of combinations of learning the theory and applying it to daily life. And the (theory <-> application) pair is just like a self-boosting never-ending machine. You feel better and better about both when there’s a balance.

Third, it helped me notice my weakness in other languages. It’s been a long time since I felt a great divide in communication. I struggled so greatly to try to get my points accross in the classes that it helps me to think about what I was doing with other languages and further reflect whether I’m doing it right with other languages. I’ve always been afraid of getting blunt in my senses for languages and stagnate. Now I think the solution is: learning (or polishing) another language!

Speaking of other languages, I was also puzzled at one point, deciding which one is more important in language learning in general: input or output. (The answer is always: it depends.. BUT) Now I think, at least for me, I need more input at first, and make a lot of efforts to output later. (This might even apply to programming languages? :P)

I always knew that doing something intensively is good for life and health. But the hard part is that it also means lots of sacrifices on other stuff you’re doing. There’s always a trade-off. So probably it’s about making the decision of whether you want this to stay with you for the rest of your life. I think I want it and will be doing more courses in the future!

Some photos of babel (they have a nice “campus”) and from my process of learning dutch…


Coursera and the recent deeplearning.ai course: Notes on the interview with Geoffrey Hinton

In 2013 I was hyped with the coming of MOOC. Probably took more than 20 courses during a summer. But of course, MOOC had its problems and still has some problems even now. So I didn’t really take many full courses after the summer (it was also the summer when I graduated and had free time): only search for videos or materials I need on the internet.
Although I haven’t finished this recent deep learning course, I was already impressed by the quality of the course in the first module, especially the bonus interview with Geoffrey Hinton. It was an interesting mental exercise just to keep us with their conversations. Here are some notes I took (a bit messy but I was trying to following real time and it was hard to pause in-between because the topics are very interesting!):

Continue reading

Clojure and Overtone

My first time encounter with Clojure is through the Amsterdam Clojure Dojo (but it was in Utrecht, just under the Dom!)

It was a time that I went to lots of tech meet-ups (will be more posts), and I really liked this one. I didn’t know it’s going to be learning through solving a small problem: the maze problem here https://github.com/ams-clj/wonderland-clojure-katas (love to alice in the wonderland)

It was lucky that, coincidentally, I just revised some tree search algorithms the day before. So I felt like I know the solution, I just needed to learn the syntax.

There were lots of brackets! We had an experience member in the team of three, so it was a nice learning process. The host used a time-management scheme that we could only work for 25 mins and then we had to take our hands off the keyboard for 5 mins. TBH I didn’t like it that much. Time management methods are preventing all the breakthroughs!

But anyway, we managed to solve problem one. And then every team (5 in total) presented their solutions. And the pizza was nice!

And then, second time, I was trying to get the music related clojure package Overtone to work


First I tried it in windows a few weeks ago, but it wasn’t successful after tickering with a few things, so I let it go. Today I went back to it, still no luck in Windows, but this time at least I know from the error message that it’s the problem of the operating system.

Screenshots from Windows:

(First stupid error, forgot to change the project file)


The file looks good now


But java tells you that windows is no good..


Screenshots from Ubuntu (feeling very lucky and cursed by having three operating systems):

Setting up everything from the beginning in Ubuntu (from installing lein):

Screenshot from 2017-08-30 18-52-09Screenshot from 2017-08-30 18-51-52Screenshot from 2017-08-30 18-51-37

Trust me. There was sound.

Also in the AFP summer school last week, I met someone who uses clojure for work, and learnt that clojure Dojos are everywhere, and the inventer of the language is a really cool guy (a musician)!

Experiencing the cabal hell with Fcomp

This is an effort to try to run the FComp Haskell package described here: http://dreixel.net/research/pdf/fghm.pdf

So, with the help from an awesome colleague, the story goes like:

It complained when I did cable install -> delete all sorts of upper cap of dependencies -> can’t install instant-generics 0.6, only instant-generics 0.1 could be successfully installed -> delete instant-generics 0.1, which was not straight forward… one had to find all files on the system and unregister it from ghc-pkg -> leave the mess and try cabal sandbox and install fcomp from scratch -> found out there’s another problem about template haskell -> delete and change all sorts dependency restrictions again, even tried to go from larger to smaller number… used instant-generics 0.4 for example -> then a problem come from uuparsinglib -> then from haskore splitbase -> then from special-functors, and we found out it’s because this package hasn’t been updated for a very long time, maybe got abandoned by the author 😦 and the incompatibility comes from something in Control/Monad/Instances.hs

It’s been the quite a journey and we decided to let it go for now…

Something I learnt from this:

It’s good to save the terminal history as a txt file and look back on it later. Kind of like a cool journal 😀

The importance of Vim and command line is paramount. This is what I’ll be doing for a while now:


The difficult really lies in the intertwined complexity amongst the cabal files. My poor memory is just not holding up.

Why there’s no self-container (with all the proper dependencies versions) to just make everything reproducible at anytime? It might be big but shouldn’t be a problem with current storage ability?


The Applied Functional Programming summer school @ Utrecht


I attended a great AFP course last week: https://www.utrechtsummerschool.nl/courses/science/applied-functional-programming-in-haskell

What I learnt:

The lectures happened in parallel with my reading of the Graham Haskell book. It definitely went much faster than the speed of my reading, but it gave me more motivations and provided lots of tasters of the more advanced stuff. From my own and others’ experiences that I heard, Haskell needs patience, iterations upon iterations (will get there eventually..). I already feel I can understand more in comparison to when I took the Advanced Functional Programming course in Spring. Especially that I was more daring to read the actual code and tried to think how I would have written it myself.

I found examples in the lectures very helpful. The research way of thinking lies more in little toy examples and snippets. And also it was great to see Haskell being used in the industry on the last day. And there seems to be much more that the langauge could offer (in DS, ML, NN, etc.)

In general, I would say I only understood about 50% of the course, and there are still many questions left with the assignments and the lecture slides. But it’s still great because I got so many pointers from the course as to how I should go further with this, and I’m blessed by my great colleagues to whom I could address my questions!


Website of this year’s summer school: afp-2017.github.io

Website of previous summer schools: http://foswiki.cs.uu.nl/foswiki/HaskellResources/WebHome

Chat channel: IRC, Slack

(There are pointers to nice books, videos, tools, etc.)

What else we did: 

We also had good catering food for a week. People socialed during coffee breaks, lunch, dinner and lab sessions. Lots of interesting “inside” small talks.

In the future

Some participants asked for answers for the assignments, which could be a double edged sword, but it would be nice to have one. Some others said that it would be nice to have more functional programming elements from other languages than Haskell. And there are always people starting at different levels, so the speed of the course was at the contre of lots of discussions. It seems people have been thinking about this for the next year. And maybe video recordings of the lectures could help, too?

This might be hard, but it would nice to have a MIR summer school at some point, too? 😀

Pattern Recognition Course in Delft

Almost a month ago, I went to this ASCI course to fulfil my “study plan”. It wasn’t very pleasant to get up everyday at 6:30am and take the train to Rotterdam and then bus to Delft, but it was better with my office mates 😛

The course was a good overview of the machine learning and pattern recognition materials I learnt before. Some of them I only learnt on my own and had some loopholes, so it was good to have them solid in this course.  There are new theorems, new concepts and new applications, too, like the impossible theorem for clustering. I now know why some people hate clustering…

One unfortunately thing is that the main package used in the course is in Matlab. I admit it can still be sometimes useful though. I also took the opportunity and learnt Weka. Can be handy, too. The slides and exercises of the course can be found here: http://www.prcourse.net/about/

The campus of TUDelft was quite nice. A little resemblance to Utrecht but seems to be bigger. Had a lunch outside Aula on the grass!

Language learning phase one

I went to the North American Polyglot Symposium in June 2016. My passion for learning languages got rekindled there (it was never completely gone!)

I’ve been listen to many good podcasts about language learning since(I can’t believe I didn’t even know they exist!):

I will teach you a language: http://www.iwillteachyoualanguage.com/category/podcast/

Actual fluency: http://actualfluency.com/actual-fluency-language-learning-podcast/

Sometimes the topic is a little repetitive, but everytime I think about this topic, there’s something new, especially if I’ve learnt a new language.

There are more good resources I’ve been using:

Multilingual DVDs: I have loads of them at home now (thought of using them for research at one point!). It’s very easy to get in Europe. There’re always subbed/dubbed in 3+ languages for one movie/anime/TV show. Now Netflix Originals have this feature, too. Learning with fun!

Various youtube channels like (영국남자 Korean Englishman, Golden MoustacheEasy Languages, etc.) and a Chinese website that has proper lessons: http://www.wanmen.org/#/

The real thing is always practice with native speakers, or just ask them questions. I’m lucky to have many friends who want to like to skype with me. Thank you guys so much! It’s also good to have a teacher who has more experience in teaching the language, and I do pay a little for that. I’m gonna shamely paste my invitation code here (it’s a really nice system though!):



More personal experiences:

The most fun I get from language learning is to look at different representations of the same object and new strutures of new concepts.

I don’t know why but it’s also very automatic to me to repeat after people, especially when it’s a new language and it’s something worth remembering. Imitation, down to every detail, is fun. Strecht the perception!

And plus that I like to talk to myself using different languages: different medolies associate with the same emotion, more ways to express, etc.

Finally, it’s just much more reassuring when you understand more, right?