AltruistClick.net is two weeks old!

altruist-medium

AltruistClick.net is proving to be an enjoyable side project, and I’ve posted a summary of its first two weeks on the site itself.

Some of the more popular posts included

I’m learning from the unpopular posts too. I’m aiming to write one post per day (I tend to write several at a time and schedule them for gradual release)

Technology behind the site

For the first few weeks it lived on an old Linux server in my loft, hooked up a to Virgin Media cable connection. Not brilliant, but fine for a low level of traffic.

I want to the site to cope with spikes in traffic, but I need to balance that against the cost. I found a good balance in Digital Ocean, a cloud provider which can provide a reasonable virtual server for just $5/month, with plenty of options to scale it further.

The site is based around WordPress, and to keep things zippy it uses a combination of Nginx and Varnish to deliver things as fast as possible – around 20 times faster than the relatively dumb setup it started out on. It could be faster still, but it’s a good trade off of time-spent-tweaking vs time-spent-creating-content!

What’s next

I’m writing a WordPress plugin which allows quite sophisticated ‘What X are you?’ type quizzes, as I’d like to have some more interactive content on the site. Plus, it’s an interesting project in itself!

Birth of an idea….altruistclick.net

I haven’t given myself a ‘project’ recently, but two things happened in succession this morning to give me an idea. First, I watched Richard Herring’s Christ on a Bike. It’s a good atheist rant, but at the end, he suggests that the good stuff about Jesus really is good stuff, and we could all be a little nicer to each to other.

So there was that. Then my Facebook feed had one of those clickbait headlines “Words cannot describe what this man does”. Turns out that words *can* describe it perfectly adequately, once you click through to the advert laden website in question. Recently, a lot of sites are repackaging someone else’s content, giving it a sensational headline, and then sitting back watching their ad revenue roll in.

So, I wondered what it would be like to create a clickbait site which simply gave away any money it made!

So that’s my next project for a few week…I called it altruistclick.net. I know, it’s a mouthful, but it was available.

Watch this space!

My experiences taking the Machine Learning on Coursera

Machine LearningFor the past 10 weeks, all my spare time was devoted taking a course on Coursera…

Coursera is a provider of Massive Open Online Courses (or MOOCs). For the past 10 weeks I’ve taken a course in Machine Learning put together by Professor Andrew Ng at Stanford University, one of the founders of Coursera.

Course structure

The course lasts ten weeks. Each week a new set of video materials are released. Typically there will be 5-6 video lectures lasting around 10-15 minutes. Here’s how each week breaks down:

  1. Introduction (40 mins) Linear Regression (75 mins) Linear Algebra Refresher (61 mins) = ~3hrs
  2. Introduction to Octave 1hr 21mins
  3. Logistic Regression (71 mins) Regularization (30 mins) = 1hr 41 mins
  4. Neural Networks 63 mins
  5. Neural Networks 70 mins
  6. Advice for applying Machine Learning (64 mins) System Design (60 mins) = ~2hrs
  7. Support Vector Machines 1hr 39 mins
  8. Clustering (39 mins) Dimensionalty Reduction (68 mins) = 1hr 47 mins
  9. Anomaly Detection (91 mins) Recommender Systems (59 mins) = 2hrs 30 mins
  10. 116 Large Scale Machine Learning (64 mins) Photo OCR Example (52 mins) = ~2hrs

Most of the videos feature a simple multiple choice question to ensure you’ve understood the concepts introduced in the video. I kept a notebook of handwritten notes while watching the videos, which meant I had to pause occasionally, but I found myself spending 2-3 hours a week on this lecture material.

Review questions

Each week also features some review questions on the week’s material. This takes the form of a graded multiple choice quiz. If you get some questions wrong, you can make another attempt after a short “cooling off” period to prevent quick fire guessing. The questions do vary slightly with each attempt, and I found that they did help cement my understanding of the material.

Programming Exercises

The course features a number of Octave programming exercises which were very well put together. Generally, the exercises involved implementing a particular learning algorithm. Your work is automatically assessed by submitting it to an automated test environment.

Each exercise included a lot of supporting code to walk through a particular algorithm with graphed visualizations of the algorithms progress to aid understanding. Once the graded part of the exercise is complete, there is plenty of scope for exploring further on your own.

Discussion Forums

These are particularly useful. Because of the scheduled nature of the course, there are hundreds of other students all exposed to the same materia. If you have problems, chances are, others have the same struggles you have. Whenever I had a query, I found the forums were a rapid source of help.

Personal experiences

I found the course very well structured, and enjoyed the experience of having submission deadlines; I eagerly awaiting the release of new materials each week! Had the course been self-paced, I may have glossed over some of the early material without appreciating the insights it gives later on.

It may be “old school” but I found keeping a handwritten notebook a very useful aid to staying focussed on the lecture material. It also made it easy to review and reflect on older material. I used an A5-sized spiral bound notepad and now have a handwritten, 150 page Machine Learning textbook!

Jedi Mind TrickAs for the course content itself: It helps to be comfortable with linear algebra. I was a bit rusty, but there’s some course content aimed at getting you back up speed. Learning how to vectorize machine learning algorithms is one of the key skills you’ll pick up on this course. It also helps to have some calculus knowledge – the course doesn’t specifically teach this, so some of the explanations can be a bit of Jedi handwaving! It’s enough to remember basic differentiation concepts though.

What next?

I’d like to try some more Coursera courses, I’d highly recommend it! However, my spare time is limited and I’d really like to spend some time playing around with machine learning…maybe I’ll release something here soon!