Winter break is coming up fast, meaning I have a few weeks of rare free time. I want to use the time to learn as much as possible about topics I don't consider myself strong in. I've put together a list of things I've been wanting to learn, but it's incomplete. I welcome suggestions and additions, and I'll add them to the list - I'd love to foster a discussion on some interesting topics!


This is the big one for me - Scala is a statically typed language that brings functional programming concepts to the JVM. It's very fast (sorry Ruby), and gaining popularity, notably at Twitter. I have a feeling it will become one of the next big things.


Client-side MVC (MV*) applications and frameworks are becoming more and more popular. I've never spent too much time working with Backbone, so I want to learn more about how apps with it are structured and built.


Graphs play a central role in most large companies today (think Facebook's social graph), and I have a feeling it's something I'll absolutely need to know very soon. Goal: understand the basics of graph theory and their various uses.


I spend most of my time working with SQL databases through an ORM. I've been putting off learning the basics of raw SQL.


NoSQL is everybody's favorite buzzword nowadays. The term is rather poorly defined, but I want to understand the implications and advantages of using a 'NoSQL' database such as MongoDB or Redis over a relational one.


Google has built some amazing technologies to power a business of their size - MapReduce is an extremely popular paradigm that inspired the Hadoop project, and Spanner is a revolutionary globally distributed database. Their papers are essential reading.


I consider myself fairly strong at Ruby, so this is the 'fun' stuff. It's always interesting to look at the internals.

Data Warehousing

This is a topic I know very little about and will likely run into later. Key questions: why do companies do it? How is it accomplished - what is a dimension? What is a fact?


D3 is a library for manipulating and displaying documents based on data. The possibilities here are endless - I want to see if I can make something out of it. Idea: mash up open source datasets.


This is an aggregation of stuff that doesn't really fit into any of the previous categories.