Completed Andrew Ng’s “Convolutional Neural Networks” course on Coursera

I successfully completed this course with a 100.0% mark. Unlike the other two courses I had done as a part of this Deep Learning specialisation, there was much to learn for me in this one. I had only skimmed over a couple of papers on conv. nets in the past and hadn’t really implemented any aspects of this class of models except helping out colleagues in fixing bugs in their code. So I was stoked to do this course. And I was not disappointed. Andrew Ng designs and delivers his lectures very well and this course was no exception. The programming assignments and quizzes were engaging and moderately challenging. The idea of 1D, 2D and 3D convolutions was explained clearly and in sufficient depth in the lectures. They also covered some state-of-the-art convolutional architectures such as VGG Net, Inception Net, Network-in-Network and also applications such as Object and Face Recognition and Neural Style Transfer net, to all of which convolutional networks are a cornerstone. The reading list for the course was also very useful and interesting. All in all, a great resource in my opinion for someone interested in this topic! And as usual, here’s the certificate I received on completing this course.

Completed the Course “Big Data Modeling and Management Systems” offered by UCSD on Coursera

I successfully completed this course with a 100.0% mark. It was quite broad and covered a range of topics somewhat superficially, from Relational Databases, their relation to Big Data Management Systems, the various alternatives that exist for processing different types of big data. As with the first course, there were a lot of new names to grasp and connections to be made between the things they represented. The assignments were straightforward and involved running a few specific command-line tools and spreadsheet commands to process data and carry out some basic analysis just to get a feel for data tables and how one might go about extracting information from them. The final assignment involved completing an incomplete relational database design for a game. In my opinion, its goals could have been more precise, its connection to the course material more clear, and being a peer-graded assignment the evaluation criteria more well-defined. Quite a few learners seem to have lost out due to someone else not being able to evaluate their assignment properly due to the latter shortcoming. And as usual, here’s the certificate that I was awarded on completing the course.

It looks like the upcoming courses in this specialisation contain more practical and hands-on exercises, so looking forward to that in the coming weeks!

Completed the Course “Introduction to Big Data” offered by UCSD on Coursera

I successfully completed this course with a 98.9% mark. It was easy and covered mostly definitions, some history of big data, big data jargon and very basic principles. There was an emphasis on what constitutes big data (in terms of size, variety, complexity, etc.), what kinds of analyses one can carries out on big data, what sources they can be from, and what tools one could use to analyse them. When it came to the latter, the course offered a brief introduction to the Hadoop  ecosystem that I found particularly interesting as I hadn’t ever worked with any of the software that is a part of this ecosystem. And there was also a simple assignment that gave one a taste of what working with Hadoop could be like. Here’s a link to the certificate I received from Coursera on completing this course.

Looking forward to the remaining courses in the Big Data specialisation!

Completed Andrew Ng’s “Improving Deep Neural Networks” course on Coursera

I successfully completed this course with a 100.0% mark. Once again, this course was easy given my experience so far in machine learning and deep learning. However, as with the previous course I completed in the same specialisation there were a few things that were worth attending this course for. I particularly found the sections on Optimisation (exponential moving averages, Momentum, RMSProp and Adam optimisers, etc.), Batch Normalisation, and to some extend Dropout useful. Here’s a link to the certificate from Coursera for this course.

I’m looking forward to the course on Convolutional Neural Networks!

Invited Talks at the International Institute of Information Technology – Bangalore and Robert Bosch

I’m currently on a break from work at Jukedeck until the 22nd of September, and visiting friends and old colleagues in Bangalore for a few days. On coming to know of my visit to Bangalore, my past mentors invited me to give talks at their respective organisations – the International Institute of Information Technology – Bangalore, and Robert Bosch. Today I presented the work I did on sequence modelling in music, RBMs and Recurrent RBMs during my PhD to the staff and students at the International Institute of Information Technology – Bangalore (IIIT-B). And next Monday (the 18th of September, 2017) it will be more or less the same talk at Robert Bosch.

Here is a copy of the slides for those presentations.

Participating in CSMC 2017 Panel Discussion

At 11:30 on the 13th of September, 2017  I will be participating in a panel discussion on the subject of “Applying Musical Patterns in Generation” together with Elaine Chew, Roger Dean, Steven Jan, David Meredith and Tillman Weyde. It is being organised by Iris Yuping Ren as a part of the 2nd Conference on Computer Simulation of Musical Creativity between the 11th-13th of September, 2017 at Milton-Keynes, UK.

Really excited and looking forward to it!

Completed Andrew Ng’s “Structuring Machine Learning Projects” course on Coursera

I successfully completed this course with a 96.7% mark. It was fairly easy given my experience so far in machine learning and deep learning, but there were a few new ideas that I learned here and also others that I investigated in greater depth out of my own curiosity while doing it. I felt like the Transfer Learning, Multitask Learning and End-to-End ML lectures are not really useful immediately after the course unless one takes these up after the course in greater depth as the lectures on these topics were quite superficial and brief. The practical advice, however, and the hand-on exercises that focused on real-world scenarios were useful and I wish there was more of the latter (perhaps optional) in the course.

Here’s a link to the certificate I received from Coursera for this course.

My Experience in Applying for a Work Visa at the UK Home Office

This is more a rant out of frustration than anything else, and I hope this will help others get a sense of what a nightmare it can be to deal with the UK Home Office when something goes wrong.

Over 2 months ago on the 9th of May, 2017 I submitted an application for a Tier 2 Work visa with my employer’s backing to the UK Home Office. With the fee that we paid for this application (GBP 1,354.00), a processing time of 8 weeks or less was guaranteed to us on the Home Office website. However, it has been nearly 10 weeks now and we have not received a decision or a status update on my visa application. I called them up around 2 weeks ago when the 8-week period had passed (5th of July, 2017) and after a near 30 minute wait, the lady who answered my call casually told me that there were delays, that I would hear from them in “a couple of weeks”, and not to panic. I explained to her how the fact that the Home Office is in possession of my passport and current residence permit is causing me a lot of inconvenience and she recommended that I request my documents back from them through their website. I tried this, but I was not allowed to do so without withdrawing my application altogether as my employer is not a “Premium Sponsor” – they’re only a young start-up so I was kind of expecting this to be the case.

A few days after this, I came to know through the Citizen’s Advice website that I might be able to get more information about the progress of my application or possibly have it expedited by contacting my local MP (Ms. Marsha de Cordova who is the Labour MP for Battersea) and I did that as well. I’m now waiting for her office to respond. In the meantime, I checked the status of my application on the Home Office website on Saturday (15th July, 2017) and was surprised to see that a decision on my application had been made on the 4th of June, 2017 and so I should have received my documents back by the 14th of June. Neither of those have happened and we’re still in the dark as to the status of my application and the whereabouts of my passport and current residence permit.

I, once again, called the Home office earlier today (17th of July, 2017) to inquire about my application in light of the aforementioned new information that a decision had been made about it. After nearly an hour long wait, I got through to a representative. All the service he said that he could offer me at that point was to forward the details of my application to one of his colleagues who I would hear back from in 3-5 working days. I was also struck by his lack of any empathy whatsoever when I expressed my concern and anxiety on being kept in the dark about the state of my application and important documents way beyond the service standard that was communicated to me. This is besides the point anyway – I can’t expect some random representative of the Home Office to act as my crying shoulder. I hung up feeling a bit worthless, but whatever.

I’m very unhappy about this entire experience. And it seems to defeat the purpose of making a formal complaint about the Home Office processes to a department in the Home Office itself but I’ll do it anyway. My passport being in possession of the Home Office beyond the deadline for processing my application is inconvenient, to say the least. I have had to refrain from any travel outside the UK, and hold off making financial transactions between the UK and India through my bank as my passport is required for these purposes. I could prepare myself to put up with it for the two months that I was told it would take to process my application, however, now I have absolutely no idea when my documents would be returned to me, where they are, and when a decision on my visa application will be made. I found the response from the Home Office representatives very unsatisfactory, and I feel that I am being taken for granted by being kept in the dark with no sense of urgency in returning my documents.

I’ll wait for the 3-5 days as I’ve been told. If anyone who reads this has any other advice for me that might help me, please do post your advice in the comments below. I would appreciate it.

Edit (25th of July, 2017): Got my passport back with the approval and the new residence permit as well. As it turns out, these were mailed to an address that I moved out of in mid-May after making the application when I was still living there. To their credit, the Home Office did indeed do the job well within time (and I really appreciate the caseworker’s effort when in comes to that). I do still maintain that their helpdesk is by far the worst that I have ever come across with unsympathetic representatives, incredibly long waiting time, and their inability to give me simple answers regarding my application. Also, having had access to both my email address and telephone number, it would’ve helped if they had communicated the fact that my application had been processed through at least one of these channels instead of relying solely on Royal Mail.

Reflections on Three Months of Remote Work

Beginnings…

It started with my wife Nina and I deciding that it would be good for us to move to Hyderabad for three months starting Oct 2, 2016 until Jan 8, 2017 for various reasons. As I was keen on continuing work at Jukedeck, I proposed the idea of me working remotely during this period to Patrick, the COO of the company. After some deliberation and another meeting with Ed (the CEO), much to my delight, the company decided to give it a try under the condition that we would review this arrangement each month and be quick to act in case of any unexpected (negative) eventualities. I was very excited and at the same time anxious as this was the first time I ever worked remotely from home.

Preparation

Before leaving London, I had a quick meeting with my team lead Kevin who was very supportive of this idea and we discussed a few things while leaving others to be dealt with as and when needed. First, we decided that I would be working from 11AM until 7PM IST instead of my usual working hours of 9:30AM to 5:30 PM BST which would (considering the 4.5 hours difference in time between Hyderabad and London) give me five hours of overlap in time with my team and three hours during which I would be by myself. We did also note that daylight savings time would set clocks in the UK one hour behind making the time difference 5.5 hours from the initial 4.5 hours but agreed to consider the option of me starting an hour later when this happens. We also agreed that I would update my team with my work every morning on the standup channel we have on Slack. If there were any brainstorming meetings, I would have the opportunity propose ideas before the meeting and again after going through the Google Doc containing the minutes of the meeting after it finishes. And I would be in touch with my team through Slack and, whenever needed, Skype. We also discussed a few worst case scenarios where, if this arrangement did not work out, I would consider switching to part-time work or even a sabbatical leave until my return to London in January.

Setting Things Up

On arrival in India, without any delay my first task was to setup an office at home. My parents, who we were living with during these three months, allowed me to use the guest room/study as my office. I had a reasonably quiet space with a big enough desk to work on. Although it went through a few changes as time went by, it essentially looked like this:

Home Office

Once I got started this way, I was ready to go! In the rest of this post, I’ll write about some of the things that stand out in my memory from others that were more mundane and easy to forget.

Participating in Standups Remotely

About two weeks into my move out of London I started noticing that I was unable to keep up with what some of my teammates were working on. I realised that this was due to the fact that while I was updating everyone with my work on Slack, the reverse was not happening. I brought this up with Kevin and we decided that the simplest thing to do would be for me to attend standups via Skype. We started first with one of the team members holding a laptop during standups with a Skype session which turned out to be a bit cumbersome in addition to the poor audio/video quality. Switching to a mobile phone was less cumbersome but still didn’t help the quality. We then came to know that it was possible to send video messages over Skype and while this was not real-time, it was certainly very clear and allowed me to go over standup in my own time. So we settled with this.

I suppose the bright side of this arrangement was that standups were brief, concise and to the point. There is a tendency for standups to turn into discussions about something very specific, involving only some of the team members while others wait without necessarily knowing what the conversation is about. It certainly avoided such a situation, and I even had a couple of my team mates acknowledge this benefit to me since we started with it.

Pair Programming Remotely

I was assigned a task at one point that required pair programming with my colleague, Marco. This was the first time for both of us to take part in remote pair programming. The first alternative we tried was to use the Atom editor plugin called atom-pair. It worked, however, as this was around the time when my broadband connection quality was at its worst the editor took several minutes to update the text that Marco typed, on my screen. It was bad. We then decided to switch to a more lightweight alternative as we have our trusty Jukedeck server, Ada. The setup was the following. We both connected to Ada via SSH. Once we were in, I started a Tmux session and opened the Python source file using Vim. Marco switched users to be me (he had superuser privileges on the server so I did not have to share my password with him for this) and attached himself to the same Tmux session from his end. Despite the lag, this worked like a charm! This setup came with the added benefit that we could open any number of shells through Tmux, and also have the IPython interpreter running alongside our editor to test our changes. While doing this, we also had a Skype session open where we discussed things. We carried on for about 5 hours with this with hardly any interruptions and got quite a bit of work done.

For the first attempt, I think this went very well. And a win for the very minimal command-line approach to work that I am strongly in favour of. As an alternative to both users involved in remote pair programming using one of the users’ accounts, a dedicated pair programming account can be created on the server which has access to all the relevant source repositories and to which multiple users have access. This would help if one or both of the users engaged in pair programming do not have superuser privileges.

Making Presentations Remotely

At Jukedeck, we have what we call Lunch & Learn (L & L) sessions where a member of the team (or someone the company invites) makes a presentation about a particular topic that might benefit or be interesting to others. I volunteered to do my first L & L session on “Machine Learning at Jukedeck” on Nov 1, 2016 where I planned to go over the basics of machine learning and how we employ it to power our AI music composer. The setup was fairly basic and simple. We initiated a Skype conversation on my colleague Eliza’s laptop, and I emailed a copy of my presentation to her so that she could navigate through it while I spoke from the other end. It went on smoothly without any interruptions and the message seemed to have gone across quite well. I did answer a few questions too, but couldn’t follow a few others due to a poor signal.

I found this to be a nice way to stay in touch with everyone else in the company (apart from my team members who I was liaising with everyday regarding work) and make my presence felt. I was keen on doing another L & L remotely, however, there was not enough time for this before my return to London.

Internet Issues

The only thing I wish had worked out better was my internet connection. Although we had a working 10 Mbps connection from BSNL (India’s National ISP), it was far from reliable. There were brief and frequent outages throughout the day on many days which was frustrating when loading webpages, pulling code changes from GitHub or working remotely via SSH on our company server. My only consolation was a patient and polite customer service, and the courteous technicians they sent forth to fix the connection. Fortunately, the worst of my connection woes lasted only during the first two weeks after which things got better.

To add to my troubles, the IP address (of my home router) from which I connected to our server in London kept changing on a daily basis, and since we had IP-based access restrictions in place I had to share my new IP every morning with Marco who would allow me to connect from it. We did this for about two weeks when we decided to simply unblock a range of IPs from which I seemed to be connecting. In contrast to this, in the UK, one’s public IP (say at home) does not seem to change over time which is what motivated this IP-based access restriction and made it possible in the first place. So now that I’m back, all those IPs are once again blocked and things are more secure once again.

Change in Working Hours

In the second month of my remote work, daylight savings time kicked in and I was one extra hour ahead of my team back in London. Kevin let me decide whether or not I would like to change when I started my day. Initially I did, so that I have the same number of overlapping hours with my team. After about two or so weeks, I found that this was not working out, mainly because I was almost completely losing the most productive part of my day – the morning hours before lunch. Plus, my day typically ended between 8-9PM and this nearly ruled out any prospects of making plans for the evening.

I decided to altogether break away from the daily 11-7 routine, and started even earlier in the morning on certain days when I didn’t anticipate much interaction with my team members. And by this time, both Kevin and I were seeing things work well and had the confidence that moving things around a bit is a minor risk to take if there was a chance of me being more productive. And it certainly didn’t make things worse!

Change of Location

It was around a month and a half after I first started working from my parents’ guest room when my cozy little home-office in the study stopped feeling as cozy. It felt isolating, and I just didn’t look forward to going in there every weekday morning. Clearly, I needed a change of environment. I’d been reading some books about remote work around that time (more on these below) and they suggested either trying out cafes or coworking spaces which would be bustling with some activity that might alleviate the feeling of isolation and lead to a healthier state-of-mind.

For a start, I moved to the dining room. This helped, as it was a bigger space and I’d see people more often than I did in the study. A friend of mine also put me in touch with one of his friends (a senior of mine from the IIIT-Hyderabad) told me of one of his batchmates who had gone on to found his own Data Science startup Predera that had an office in Hyderabad, and he was more than happy to let me work from there if I wanted to. As the office was at least a 30 minute drive away from where I was, I kept postponing my visit and ultimately didn’t end up going there but it was certainly very generous of him to keep the offer open!

The Ups

What I found particularly nice about this setup was that there were very few distractions and thus it was a joy to code, review research literature and GitHub pull requests thoroughly. Furthermore, any conversation I had with my colleagues related to work was concise and to the point. I was in the quiet comfort of my home and the nature of my work which mostly involved individual work with the occasional discussion with a colleague or two was well-suited for a remote setup. Personally, I didn’t find it hard to motivate myself to stick to a work schedule and I would like to attribute this to four years of learning to do this during my PhD. I felt more often like I did justice to the work I took up because of the lack of distractions. One can almost see this as an exercise in self-discipline.

I was also able to skip the roughly 1 hour long daily commute between my home and the office, which was a noticeable change. I wouldn’t really count this a positive change as I cycle to work everyday in London and rather enjoy doing it. However, I can imagine that for someone who drives or takes the public transport to work to work this might come as a change that they would welcome. In my case, I spent the hour I saved on exercise and running in a nearby park so there was not so much difference in what I spent the time for.

And I was also reminded on several occasions during the three months, what a fantastic team at Jukedeck I was a part of! All my team members were supportive of my move, patient and creative in dealing with any glitches that arose thereof and not once showed any signs of disapproval. Kevin was very good at assigning tasks to me that were both challenging and that I could work independently on with some discussion with others in the team. This really minimised delays and feelings of anxiety in me that I wasn’t able to contribute which could have ensued otherwise.

The Downs

While the experience was mostly positive, there were of course some downsides that became evident after just he first couple of weeks. As much as I did make the effort to share my input before and after the meetings, I felt a little less in control when it came to the direction in which the meetings went as this usually involved debating and persuasion which were much easier to do by being there in person. This effect would be far less pronounced if we were a fully remote company, in which case our processes would work the same for everyone. However, this wasn’t the case and while many things did work out, good communication was the biggest challenge among those that didn’t.

Physical absence from the office did feel isolating on a few occasions. I made up for this by engaging in the occasional friendly banter with colleagues over Slack and responding to their non-work related posts which helped me feel like I was still a part of what was happening in the office. It was also important to get out of the house a couple of times during the week just for some change of environment otherwise I felt locked-in. I missed all the team outings and lunches which was a very good opportunity to bond at a personal level with my teammates.

I did see myself falling behind some new developments taking place in the office, particularly those that came about during meetings that I was unable to attend due to the time-difference or poor communication between me and the team in London during the meeting. At least in my case, Skype (or Slack video chat) did not work as well as I had hoped they would. I would say the success-rate was around 40%.

Again, these downsides were not something that couldn’t be addressed but I thought it would only be fair to mention them along with the things that did work out. I’ll not speculate about how it would have turned out otherwise, but I sure was happy to be back in person to the Jukedeck office in London after three months.

If You’re Interested in Remote Work Too…

There is an excellent Hacker News post that answers several questions related to remote work, and also contains some very handy links to websites that facilitate remote work and create opportunities for those seeking to make a career out of working remotely. Here I came across two very well-written books on working remotely. The first is called “Remote: Office not Required” by the founders of 37Signals (now Basecamp) which is a company that has seemingly mastered the art of effective remote work. And the second is “The Ultimate Guide to Remote Work” by the folks at Zapier. You can even get a free PDF/MOBI copy of this book on their website. While there is some degree of (I should note, reasonable) self-marketing that went into both these books, they are definitely well worth reading for anyone wanting to get an insight into the pros and cons of remote work. Essentially, what all the different resources gathered in this Ask HN page suggest is that thanks to technology, we’re heading towards a world where remote work (at least in the tech sector) is becoming more and more feasible for those seeking a change from the 9-5 office work. It certainly gave me something to relate to, tips to follow and a feeling of being a part of a larger (but not large in an absolute sense) movement.

In Retrospect

As much as I had my apprehensions (as I often do with many things), I think this was a fantastic experience overall – I got to spend time with my parents after nearly two years of being away in the UK busy with my PhD, meet old friends, get married to my lovely wife Nina who I must thank for insisting on moving to India for three months, and last but obviously not the least be a part of a work arrangement that was indeed something new and unique in my experience. It got me interested and researching about making a career working remotely, which is something I believe I’m likely to follow up on at some point later in my career.

Jukedeck @ The Science Museum Lates

I had the opportunity to join my colleagues at Jukedeck – Patrick, Lydia, Eliza, Matt, Katerina and Gabriele – at the Science Museum Lates last night. For those of you that are unfamiliar with the concept, Lates are adults-only, after-hours theme nights that take place in The Science Museum (in London) on the last Wednesday of every month. It is attended by various organisations that would like to showcase their work relating to a chosen theme to an audience, as well as an audience that is keen on learning more about the science and technology underlying the theme. On the last day of August 2016, it was Jukedeck’s turn to show-off its awesome technology at the museum and some of us volunteered to tag along.

Lydia and me (in the background) explaining what Jukedeck and its technology is about to curious visitors at our stall.

The museum was packed with visitors, and it was great to see so many people interested in our technology! I hardly had the time to go grab some dinner amidst the constant stream of people wanting to listen to our music and know more about the underlying algorithms. To me, as someone who does the research and writes the code that generates our music, this was an incredibly rewarding experience to see first-hand the appreciation people had for our work. It’s, in many ways, like having a poster presentation at a conference but with a non-technical audience. I enjoyed it very muchIn the future, I’ll try my best not to let such opportunities pass. And I look forward to attending the event myself in the future as a spectator! If you happen to be in London around the time this event is on, I highly recommend attending it if you’re interested in science and technology.