Friday, April 04, 2008

Product Ideas

by Asim Jalis

HARD ALGORITHMS Work on hard algorithms problems. For example: (a) Speech: Hidden Markov Models. (b) Optimization: Monte-Carlo simulations, simulated annealing, etc. (c) Clustering. (d) Conjoint Analysis. (e) Operations Research: Simplex, and other algorithms. BUG TRACKING 2.0 Create a traditional web services company with a 2.0 abstraction twist. (a) First create a REST-ful XML based web service that provides issue tracking. You can make queries like: http://foo/GetBugs/JoeUser. Basically open, close, list, update bugs (CRUD) all through URLs and XML-containing HTTP POST requests. (b) Then build a really simple UI interface on top of this that internally calls the same abstract web services. THis is a proof of concept and for people who don't want to write their automated clients. (c) Users pay a subscription fee. Free gets you 100 bugs. Premium gets you a lot more bugs and other features, such as multiple users sharing an account. For example, your whole dev team can have accounts. (d) Users have a choice: Either interact with this bug database through the web UI or do it through the web services layer. We provide them with Python/Perl/C#/Java scripts to interact with the web services. (e) Why would users want to do this? Here is a scenario: someone wants to use this to automatically open bugs for build breaks, they can do this. They can have scripts that automatically open and close bugs. GENERIC WEB 2.0 DATABASE APPLICATION Generalize #2. Now superficially #2 looks like a bug tracking database but really there is nothing bug-tracking-specific about it. It is basically a web database. So if it is factored correctly, the same model could be used to create a photo sharing website and other things. Or maybe just sell the code base to people interested in setting up services like this. Be the plumbing company. PYTHON FOR FUNCTIONAL TESTING Here is a simple way to functionally test applications like PowerShell. While it is testable using C#, Python might be easier. Here is the basic approach. Start the application, pipe stuff to it's prompt, read the input, make assertions about the input. Python's unit-testing framework could be used. Currently I have a giant bat file that runs the functional tests. This forces me to look at the output, to make sure things are okay. Not the best solution. These are not tests that are checked in but sanity check that I use to ensure that basic scenarios are still working. NAME FOR A SOFTWARE COMPANY Askterisk. Askterix. Asterix. Asterisky. AsteriskSky. AsteriskRiver. INTEGRATING WEB WITH TELEPHONE This concept seems pregnant with possibilities. Reminder service. Wake-up calls. Etc. A toolkit other companies can use to provide these services, or other services. Google has an April Fool's joke related to the wake-up call. But this could actually work as a product.