Goodbye, Moodagent!

Today I handed in my resignation at Moodagent. It’s been a great year and some months working in this fast and ambitious company! I will associate this experience most with the great friends I’ve made here, my focus on data preparation, Apache Spark, Collaborative Filtering and a feeling that I’ve really improved my programming abilities thanks to some excellent Coursera courses (this one, and this one) I completed while working here.

It’s time to move on to new pastures! An update to follow soon.

New Guitar Video – John the Fisherman by Primus

I’ve always been a big fan of Larry Lalonde’s playing style and how it so cleverly accompanies Les Claypool’s challenging and unique basslines in most of Primus’ songs. I recently decided to learn to play five Primus songs in order to develop a greater appreciation for this style. The first of these is John the Fisherman. Not a difficult song, really, and fun to play. A great one to get started with!

This is also the first video with my beautiful new Ibanez RG-3120 guitar!

Completed Programming Languages (Part B) on Coursera

Earlier at the start of this month, I began the second Programming Languages course (Part B), offered by Prof. Dan Grossman of the University of Washington. I had done the first course a few months ago and found it very beneficial when it came to my understanding of some functional programming concepts and idioms, the notion of elegance in programming and good programming practices in general. It also really helped me formalise much of what I had come across in relation to Functional Programming, and approach the adoption of this style of programming more systematically in my own day-to-day programming projects. After nearly two months of having done that very interesting and challenging course, and having felt that a good bit of it had sunk in I decided to take on this second one.

The goals of this course were three-fold:

  1. To allow one to apply some of what was taught in the first course in the context of Standard ML (SML) to a new programming language, namely Racket.
  2. To introduce features of Dynamically Typed programming languages through Racket, and compare these in contrast with those of Statically Typed programming languages, such as SML.
  3. To understand the inner workings of a language interpreter by implementing one for a very simple hypothetical programming language in Racket.

I won’t be going into much details about the learnings of this course yet. I plan to do so in a couple of months when I’ll be done with the third and final course in this module and I will have had the chance to re-visit the contents of the first two courses to gain a better overall perspective.

In the meantime, here’s the certificate I was awarded for completing it.

New Guitar Video – The Pot by Tool

I wasn’t so taken by this song when I first heard it, but I revisited it while warming myself up for the release of Tool’s Fear Innoculum last year, and somehow got really hooked onto it, so much that I ended up learning how to play it. This is the first video I’m posting with my new PRS SE Mark Holcomb Signature Edition electric guitar! I play it in the guitar’s standard tuning – Drop C.

Completed Programming Languages (Part A) on Coursera

Having been curious about Functional Programming for a while now, and tried incorporating features of the paradigm into my own work with Python, I decided to give the first (Part A) of the three-part Programming Languages course module on Coursera. The module is meant to systematically introduce one to various theoretical concepts of programming languages, while having a special focus on Functional Programming. This first course (Part A), which I recently completed with a score of 98%, illustrated said concepts with the help of Standard ML – a Functional-style language.

It was excellently designed course, and also quite challenging. Apart from spending time on introducing the very basics of SML early on, it covered some very interesting concepts such as Pattern Matching, Function Closures, Partials, Currying and Mutual Recurstion. The programming assignments really made sure you understood what was covered in the course material, and the course-handouts were thorough and clear. There was also a strong focus on the matter of programming style, with the instructor commenting on what he considered good/poor programming style while covering the various concepts. We were marked on the style of our submissions too.

Attending the 20th International Society for Music Information Retrieval Conference (ISMIR 2019)

It’s just been confirmed that four of us from Moodagent – Reinier de Valk, Pierre Lafitte, Tomas Gajarsky and I, will be attending ISMIR 2019 in Delft (The Netherlands). This year, two of my colleagues from Moodagent will be presenting their work at ISMIR:

  1. Reinier will be presenting his paper, titled “JosquIntab: A Dataset for Content-based Computational Analysis of Music in Lute Tablature” in the main conference.
  2. Tomas will be presenting his paper, titled “Reinforcement Learning Recommender System for Modelling Listening Sessions” in the Late-breaking session of the conference.

Do stop by at these posters to learn more about these interesting topics!

Passed Rock School Grade 7 (Electric Guitar) Exam… Unofficially

Two years ago, I successfully passed the RSL Awards Rock School Electric Guitar Grade 6 exam with a distinction. Since late last year, I have been preparing for the Grade 7 exam. As I’m no longer living in the UK, my guitar tutor Nicolas and I decided that I would do a mock exam over Skype that he would assess and give me a score, unofficially. We did this yesterday evening, and I’m very pleased to say that I passed the exam. And as per Nick’s assessment, it was a “strong performance” and I received a score of 88 out of 100 which is just short of a distinction. Of course, this is not an accurate assessment given the constraints we were under but it’s heartening for me to know that I obtained a score that is a certain pass.

I hope to appear for the next, and final Grade (Grade 8) in the Electric Guitar track in the next year or two. And, as in my previous RSL Awards post, here are YouTube videos of the three songs I chose to perform in the exam…

Hello, Moodagent!

It’s been about four months since I wrote here about leaving Jukedeck. So after a nice long break, I’m very pleased to share that I’ll be joining Danish music streaming startup Moodagent on the 17th of July, 2019. While the streaming service itself is new and hasn’t been launched yet, the company Moodagent A/S that owns it has been around for nearly two decades having built several products around their core technology for analysing musical content. You may have even come across their first music app on your Nokia phone back in the day! You can read all about them on Wikipedia, and find out more about the Moodagent streaming service on their website. I hear they’ll be launching it very soon!

I’ll be working in the Machine Learning team of the company as Senior Research Scientist on the design and development of their content organisation and music recommendation systems. I really look forward to the new beginning in Copenhagen and to learning a lot of new things from working on an area that’s still quite new to me. And also travelling around beautiful Europe!

Getting Started with Python Pandas

I finally decided to get myself familiar with pandas while working on a recent side-project related to recommender systems. When I got started with it, I was still stubborn that I could achieve most things I needed to do in relation to data pre-processing with Python modules like tools like glob, json, numpy and scipy. True as that may be, I found myself spending way too much time writing routines to process the data itself and not getting anywhere close to working on the actual project. This was very reminiscent of the time a few years ago when I got immersed in writing code to manually compute gradients for various neural network architectures while getting nowhere in developing a music prediction model before finally deciding to make my life easier with theano! And so, this seemed like the perfect time to get started with learning pandas.

In the past I’ve found that, especially when it comes to learning useful features of new modules in Python, a hands-on and practical approach is much better than reviewing documentation and learning various features of a module without much of an application context, so I started looking around for such tutorial introductions to pandas. In the process I came across two invaluable resources that I thought I’d highlight here in this blog post. These really aren’t much, but gave me a surprisingly thorough (and quick) start to employ pandas in my own project.

Kaggle Learn

Kaggle Learn has a bunch of very well-organised and basic introductory Micro-courses on various Data Science topics from Machine Learning, to Data IO and Visualisation. I get started with the Pandas Micro-course which proved to be the ideal starting point for someone like me that had never used the module previously. This can be followed up with some of the other micro-courses, such as the one on data visualisation or embeddings which help one understand various concepts better through application. In fact, it’s what I’m planning to do as well!

Pandas Exercises on GitHub

So the Pandas Micro-course was a great starting point, but still left me wanting more practice on the topic as I still didn’t feel totally fluent. It was then that I stumbled upon a fantastic compilation of Pandas exercises on GitHub by Guilherme Samora. So I cloned the repository, loaded these exercises up on Jupyter Notebook and got down to solving them one after another! This really did help with getting more fluent with the rich set of tools that Pandas has to offer.

By the time I was done with Guilherme’s exercises (only a couple of days after starting with the Kaggle micro-course), I felt ready to apply my newly acquired pandas skills to my own project, and to discover more about the module through it. There certainly were plenty more resources that a quick Google search returned, but none appealed as much to me at a first glance, as the two I finally went with.

I’m sure I have only scratched the surface when it comes to useful pandas learning resources, and I’m very curious to hear about those that others have found useful, and why, so that I can look them up as well! So do feel free to share them in the comments below.