Wednesday, September 16, 2009

Why another “launcher” ?

If truth be told, in the last three years I've been more of  a Mac user than a Windows user. When I found about the Mac app called QuickSilver I was fascinated and I considered it one of the reasons why someone should get a Mac.
 Although  most of the time I use Quicksilver for opening apps and files, it has a lot of commands that save me a lot of time like resizing photos, sending files by mail or looking up contacts.

In the Windows world 
Launchy was no match for Quicksilver. Then I found out about Enso, which is really cool and changed the rules of the game  but it’s not very powerful, Dash Command which is OK but not very intuitive (and not free) and  DoMercury which tries to imitate the look and feel of QuickSilver but doesn’t really succeed
My 4.5 year old project PCchat had commands that none of the windows “launchers” had, like uninstall or remove from startup.  
I wonder why nobody thought to include these actions that we all use every day, especially uninstalling things. Why is “launching” more important than uninstalling? Or for that matter, installing?

Considering this, I incorporated commands like kill, 
uninstall or install application in  EasyShell.
 I added some Enso goodness (acting on selected text), a pinch of Dash Command (like holding CTRL for more info) and a QuickSilver-like auto-complete mechanism but better. 
The end result is a user friendly shell with a lot of power under the hood, a simple application that empowers non-technical people to do complicated stuff .
I guess you can hardly call EasyShell just another “application launcher” (although probably more than 50% of the time you may use it to launch apps. This remains to be seen.)

In the beginning, there was PCchat

Around late 2003, probably long before anything like it, I started working on a project called PCchat.  It was suppose to be a chat like console where you would just type any command in a natural language and the program was suppose to figure out what you meant and execute the command or commands from your input.

Back then I had no idea about formal grammars,  Noam Chomsky, natural language processing (NLP) or computational linguistics.

Due to little feedback and lack of a clear direction I’ve abandoned the original project,  which you can still find here.

Years later, in 2008, for my bachelor project I chose to continue my work on PCchat. This time I was well informed about what natural language processing implied and I wanted to use the Natural Language Toolkit and rewrite PCchat in Python.

After reading a couple books and studies I realised  the project would not be ready in time if I took that path. So, instead of a natural language chat like application, I started building a pseudo-natural language shell ( in C#) that was ready by the time of the final exam, but had nothing to do with NLP.

It had a list of commands with natural word order and a clever algorithm to quickly select commands and arguments based on what you typed. I’ve impressed the examination committee with my presentation so it looked like I was off to a good start.

I published the new PCchat online and  waited for feedback. I had a long list of things I wanted to implement like multiple arguments, extensible XML ontology files  with stand alone command scripts written in Iron Python, multiple commands in pipeline mode and context sensitivity  but I got very little feedback so I was discouraged in continuing the development. The project was once again abandoned.

In 2009, I thought I should give the new PCchat another chance by making an English version and renaming the project to something more appropriate: EasyShell.

On September 4th 2009 I finished the project's website  and published the 0.4 version, which is quite stable and works on XP, Vista and Windows 7.

I consider the project  an alpha version, because although it’s fully functional and probably more stable than many beta applications, I don’t know what the final form will be.  It all depends on your feedback.