MGS 2018

A month ago, I was at MGS 2018:

What a nice gathering and learning opportunity!

I followed the lambda calculus, category theory and machine learning till the end. The materials were all top-notch.

Most importantly, got to talk about the learning process with fellow students, made new friends, worked on new things. Connecting the dots.

Some unfortunate episodes include getting a cold, spilling water on my laptop (but it caused no damage!), etc.

If there’s another opportunity, I would totally go again: for learning other modules, and the whole experience!

The computerphil binge

I have been following this wonderful channel for a while now:

But I never really got the time to watch the old videos, and occasionally I miss a episode or two…

It was great binging it over Christmas: got to review the basics, know the history, laugh at a joke or two. Plus expend it with more search, discover more channels and articles and learn even more from them!

For sanity’s sake, it’s probably good to think about why do I want to know about this at some point…


Try out open frameworks

I tried the the library on both windows and ubuntu. My impression is it’s easier to install with VS on window. The first errors to run the library is 99% likely to be some wrong about the setting of the project directory. But it’s easy to fix with the information provided here:

Installing on Linux is mostly interaction with the shell. Learnt a lot through the process. Some information that is not provided here includes:

  1. chmod a+x **.sh (to make the script executable)
  2. dos2unix (in case there are errors related to different format on windows and linux)
  3. projectGenerator -o”your openframework path” new (execute this inside the example folder will make things work immediately)

During the process, also tried with different tools and environment: code blocks (a bit buggy), eclipse, gcc, etc. Always nice to learn more on the way!

Screenshot from 2017-12-10 17-16-05

Continue reading

Learning Dutch

First summer in the Netherlands, I signed up to a 4 weeks dutch language course at 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 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 (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:

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:

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:

Website of previous summer schools:

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? 😀