Saturday, March 24, 2012

ATVs are FUN!

Working with Bloom Filters

Challenge:
http://codekata.pragprog.com/2007/01/kata_five_bloom.html
Bloom Filters. Implement a simple hash-based lookup mechanism and explore its characteristics.


Break-Down:
Two items need to be resolved to optimally solve this:
1) Hash function which can uniquely map a good word, to a integer value within our bitfield.
2) Efficient allocation of bitfield, scalable to test how well the hash function performs with more or less memory.


Solution:

Working with SVD-based Recommendation Engines

Working with Xcode

Working with NodeJS / Express

Working with Rails

Working with Sinatra

Working with Facebook API

Challenge:
Implement a crawler-type website which will identify what your Facebook interests and likes are and then identifies your friends likes and interests.  Store this information in an efficient container, and construct a graph of the Web Advertisements which would interest you the most.


Break-Down:
Need a couple of things to solve this:
1) App which can connect to Facebook API, have the appropriate privileges to scan for the above information.
2) Efficient storage of this information, SQL may not be good enough to maintain the correlation between these disparate items.
3) Retrival -- Correlate the Ad keywords to the important interests of the user (and his friends).  Needs to be scalable to minimize lookup on the database.


Solution:

Working with Twitter API

Challenge:
Implement a Markov chain type app, which will accept live Tweets as input sentences.  Will breakdown these Tweets, construct the Markov chains and store them efficiently.  Then using these chains to create sensical Tweets made from random connections.

Break-Down:
Couple things need to be done to solve this:
1) Accessing Twitter's Realtime Tweet stream -- Correct application of Twitter APIs
2) Efficient processing/buffering of the thousands of tweets coming in per minute -- the stream will be extremely busy with tweets, and all tweets are important and cannot be dropped
3) Efficient data storage of the Markov chains -- SQL is not needed here, an Key-Value solution makes more sense (i.e. Redis)
4) (Efficiently Random) Retrieval of the chains stored -- Building new sentences/Tweets requires performing Random lookup of the stored chains, and walking the data structures.

Solution:

Working with MongoDB

Working with jQuery

Challenge:
Develop a script which will change the background color of a link, if:
1) The link is not valid (404, 500)
2) The link has timed-out
3) The link is valid 

Break-Down:
Couple of items need to be done to solve this:
1) Asynchronous lookup of the links in the document
2) Compatibility with Legacy browsers
3) Effective DOM lookup

Solution:

Working on iPhone UI (Collaboratively)

Challenge:
Working in a large remotely distributed team, how can you effective collaborate on the iPhone App design.


Break-Down:
Two criteria are needed:
1) Changes should be easily undone, forked, commented and logged
2) Should work on all platforms/browsers


Solution:

Working with PThreads

Working with OpenCL

Working with Redis