My current strategy is just to try hacking on one new technology every week
and create something simple. The primary goal is to learn new stuff and have
fun. So here are some ideas I came up with during brainstorming.
1. Eventmachine & web crawling
Ever wondered how to write a fast distributed web-crawler? If you code in
Ruby, you may use Eventmachine. It’s event-processing library for Ruby that
implements Reactor pattern which provides you with non-blocking IO. Normally,
if you send a http request it will block an entire process until the response
is received. Even if you try to use threads it won’t help and crawling speed
Here are some libraries that work on the top of event machine and help you to
make requests asynchronous.
Asynchronous HTTP client. em-http-request
Asynchronous Redis client em-redis
Non-blocking DNS-resolution em-resolv-replace
2. Brainwave sensing headsets
Currently, I’m aware of two affordable brainwave sensing headsets on the
Such headsets are measuring brainwave impulses from the forehead and generate
interesting data based on it. What’s interesting about it is that there is
number of amazing applications developed for such devices: from games that you
control with your mind where you can just move objects with the power of your
thought to researching tools for serious neurohackers. You can can develop
your own applications using such languages as C++, C#, .NET or Java.
Unfortunately I haven’t found any support for Ruby or Python yet, but we
that’s not going to stop anyone, right? ;)
3. Face recognition API
Face.com looks like a great service that allows
to detect, recognize and tag faces thought the REST API. You can combine
different sources and, for instance, find Facebook friends in Flickr photos or
a private photoalbum. As a dirty idea for a weekend hacking: spend a day and
write a script that finds your girlfriend’s profile on match.com ;)
4. Bigdata: Hadoop, HBase, Hive and Pig
Technologies related to Bigdata are very interesting to hack on. Setting up a
hadoop cluster, writing mappers and reducers to do some badass calculations
and process huge amounts of data can fill up evenings with the real geek fun.
Try to figure out how HBase and Hypertable work which are modeled after
Google’s BigTable. Then set up Hive or Pig and learn how to run complex SQL-
like queries without writing mappers in Java.
A couple of previous posts related to it:
Hadoop 1.0 + MongoDB: the Beginning
How to Set Up a Hadoop Cluster with Mongo Support on EC2
5. Amazon AWS
A lot of startups create their services based on Amazon AWS: dropbox, heroku,
engine yard, mongohq, etc. Nowadays you don’t need to have your own datacenter
to build anything like dropbox. So one of the days I was wondered how really
complicated it would be to build something like dropbox. Basically it’s a
simple client that connects to a bucket on Amazon S3 and allows you to upload
files there by putting them to a specific folder on your computer. Sounds like
a one-evening deal for a simple version.
7. Mobile development frameworks
The fastest ways to develop mobile applications
All three frameworks allow to write applications for a bunch of different
platforms: iPhone IOS, Android, Symbian, etc. Phonegap and Appcelerator
it’s now easy to develop your first mobile app for all main platforms without
knowing Java or Objective C.
8. Websockets, comet and socket.io
Ever wondered how real time notifications work on Facebook? Or any other web
application that involves real-time interactions between users in the browser:
chats, games, etc? There are number of techniques that can be used to allow a
server (or rather to simulate it) to push a message to a browser: such as xhr-
polling, jsonp-polling, web sockets or flash sockets. Some libraries to
faye – publish-subscribe messaging system. Very easy
to use. Server is node.js based.
juggernaut – uses socket.io, node.js