Komli today launched the “algoGod contest” for machine learning, math, genetics, and algorithm experts.

http://www.komli.com/algogod/

Contest winner to receive Rs. 2,00,000

Start date: October 15th 2007.
Entries must be submitted on or before November 14th 2007.
Results will be declared on December 31st 2007.

Have you ever wondered if you are the best algorithms expert on the planet? Have you ever thought, “I know I can beat everyone, just let me prove it?” Well Komli’s algoGod contest is for you, it’s your chance to show the world how smart you really are!

The algoGod contest seeks to crown one expert as the ‘Algorithms God’. How are we going to do this? Well, the proof is in the pudding! We want every contestant to solve a common problem, and whoever is best will receive the algoGod prize!

A little more background:

Komli lives in the world of online advertising, and online advertising is rife with opportunity with complex algorithms based on cutting edge topics such as machine learning, data mining, graph theory, etc. Online advertising is growing at a very fast pace, and the number of variables affecting the performance of an online ad has been growing at an even faster pace. Komli is devising methods for maximizing the yield of online advertising using advanced statistical machine learning methods over large-scale systems. This is a very interesting and complex algorithm problem.

Komli is currently using a set of algorithms for maximizing the yield of online ads, collectively called ‘Yin-Yang’. There are a lot of interesting alternative approaches to Yin-Yang that have yet to be tried. Komli is interested in determining if any of these alternative approaches can beat Yin-Yang by making better predictions.

Komli will provide participants with anonymous ad impression data and a prediction accuracy bar that is 50% better than what Yin-Yang can do on the same training data set. Participants’ solutions will be judged by ‘Time complexity’ and ‘Space complexity’ criteria. The participant whose solution works best will receive Rs. 2,00,000, bragging rights and an opportunity to work with Komli. Of course, participants have to share their method and code with Komli. Eager participants can signup for the contest by filling the form on the left. Also, please let us know of any questions at algogod@komli.com.


http://codeeazy.com/mktooltip/

I wanted a tooltip implementation for my web page, and was looking around. I looked a number of open-source options (see 40 tooltip scripts here and 20 here) and one commercial library. I liked the functionality however each of them was 7, 8, 10 or 25 KB in size, which I thought was too much to implement just a simple tooltip. So, I thought how about I write a tooltip library myself.

Here is an implementation, check it out at http://codeeazy.com/mktooltip/. I implemented this in 818 bytes of code, and about an hour of coding. So one would think, there must be something wrong. Well, it works. And is cool!



Amazon EC2

19Sep07

The Amazon Elastic Compute Cloud (Amazon EC2) web service provides you with the ability to execute your applications in Amazon’s computing environment.

Although there is no provision for SLA which might be required by big wings, it’s a good service model for computing. Use what you want and pay for it, not more not less. No email and applications to get a server, you want one now, go and provision it and start using it, it’s that simple. Small and big companies can both use this service and reduce a lot of in-house maintenance cost, not in some cases where in you want more control ;).

For using Amazon EC2 one will need to do the following:
1. Create an Amazon Machine Image (AMI) containing all your software, including our operating system and associated configuration settings, applications, libraries, etc. Think of this as zipping up the contents of your hard drive. Amazon provides all the necessary tools to create and package the AMI.
2. Upload this AMI to the Amazon S3 (Amazon Simple Storage Service) service. This gives Amazon reliable, secure access to our AMI.
3. Register our AMI with Amazon EC2. This allows Amazon to verify that your AMI has been uploaded correctly and to allocate a unique identifier for it.
4. Use this AMI ID and the Amazon EC2 web service APIs to run, monitor, and terminate as many instances of this AMI as required. Currently, Amazon provides command line tools and Java libraries, and we can directly access our SOAP or Query based APIs.
One can also skip the first three steps and choose to launch an AMI that is provided by Amazon or shared by another user.

Once the above is done one have an AMI ID that the user can use to start server instances. For better management user will need to write various utilities for keeping information on the DNS for our server instances, so that user can connect to them. To check the status, say that the instance goes down due to some reason and comes back up the DNS for the server instance will change, user need to know the new one to access the server instance.If the DNS changes then all the utilities transferring data to the server instance have to be notified to start sending the data to the new address. Also as the data is not persistence on the server across reboots, if it restarts user will need to develop a mechanism to some how restore data on the server for processing. Amazon again provides a solution by providing Amazon S3 where one can store data persistently and accessing it from anywhere.

Here are some links for more information:

Getting started

Amazon EC2


Anand and I have been talking about this blog for a while, there was just no time to write about some of our inner feelings about - coding. We have been working on, what many people would call “the most bleeding edge” technology. To give a little bit of background, we are the founding engineers at Komli. Komli is an early stage startup. Since last November we have been learning some very cool techniques of solving problems. When it comes to building a product, a typical engineering mindset, lots of times gets stuck in technical jargons, technical-coolness and sometimes religious-warfare between different technical solutions, languages etc. While, the most important thing when you are building a product is – to solve a problem. That’s it. You have to solve a problem, apply any technology, apply any language, apply any tool, use two languages or 3 languages – you gotta solve the problem. While, I obviously, am against making code unreadable or un-maintainable, and therefore mixing technologies or languages may be a no-no in some cases, however engineers mostly overdo that, by applying that rule too strictly, therefore loosing focus on – solving the problem; you gotta solve the problem, that’s the most important thing.

We have been solving numerous problems, in a number of areas, and sometimes in very cool ways.

We would use this blog to tell you about some of the cool ways of solving complex problems in simple ways. Some of what we have learnt. Some hard-learnt-lessons. I hope that you will like it.


The installation of RHEL4 update 5 hangs during installation process while trying to probe devices. To get out of this problem while installation use the following command line:

linux pci=nommconf all-generic-ide

or

linux pci=conf1 all-generic-ide

Once the installation is complete do not forget to modify grub.conf, else it wont boot up. Modify grub.conf file to pass “pci=nommconf” as additional parameter to kernel.
Example:

title Red Hat Enterprise Linux ES (2.6.9-55.ELsmp)
        root (hd0,0)
        kernel /boot/vmlinuz-2.6.9-55.ELsmp ro root=LABEL=/1 rhgb quiet pci=nommconf
        initrd /boot/initrd-2.6.9-55.ELsmp.img

We had to write a daemon in Java and opted for using common daemon from Apache. It worked fine on Ubuntu Linux. One day we shifted to Fedora Core 6 and then the daemon stopped working.
While debugging the issue with -debug option for jsvc which is used to start and stop the daemon we figured out that even after providing commons-daemon.jar in the -cp (classpath) option for jsvc, it was unable to find the daemon loader.
“23/01/2007 15:42:33 9252 jsvc.exec error: Cannot find daemon loader org/apache/commons/daemon/support/DaemonLoader”

So after debugging, we did the following: Checked that the owner is root for all files (jars) and then ran the daemon, it ran (WOW, man this is kind of unusual, we need to make jsvc better).