Ideas

I like to “hack” around in the real sense of the term - applying simple tweaks or writing short pieces of code to make life that teeny bit nicer. More importantly it feels great after having accomplished it. Though I have never applied for it till now, GSoC is something I would love to take part in. Over the years, I managed to finish off a few hacks there and then but for some, I didn't find the time to work on. I kept them documented though, just in case. Here are a few of them. By chance, if you happen to choose to work and/or complete any of them, I would be glad if you let me know.

Adaptive Audio filter that learns a given audio and cancels it

I am not sure if this is possible and even if implemented, how effective it would be. Consider a scenario where you are attending a phone call and there is noise around disturbing your conversation, say a song being played on a TV. Can I run an application that listens to the “noise”, learns its characteristics, processes the speech+song signal and transmits only the “good” part i.e the speech? I would of course not want to worry about the phone part of the project initially. I would first implement it in C/C++ on a computer and check how feasible it is and how effective the cancellation is. Again ALSA library should be the place to start.

Measure frequency of sound

When I was taking training for Indian classical singing, one thing I craved was a harmonium to see if I was singing the write notes and whether they matched. SingAndSee serves exactly the same purpose. However it is proprietary and for Windows. So I would like to have an application that lets me see what the frequency is of the note that I sing. Additional utilities akin to SingAndSee such as visual representation in terms of Frequency graph could be added later. Frequency measurement seems the first basic step. ALSA library is the place to start for audio related coding.

Control bandwidth of adhoc connection

I basically wished to learn using the Linux Kernel Netfilter library. This scenario is sort of a hindsight idea to explain my wish in better terms: Suppose you have a USB Modem Internet which you are sharing with a friend through an ADHOC connection. I would not want him overusing the network in the sense that he should get only limited bandwidth and data usage for his purposes. I would like to achieve this so that the friend's speed never exceeds X kbps and his maximum allotted data usage is Y MB. Refer Netfilter Library Intro to get started.

Autocomplete for user made commands / aliases

The title is self explanatory. How do I achieve auto-completion for a custom script with some pre-defined auto-completion keywords? On a similar note, if I have made an alias for a unix command, how do I inherit the auto-completion for the alias? For example if I alias “sudo apt-get install” with “sai”, how do I get package name suggestions for the command “sai”?

Customizable websites

I want to write an addon/extension/script that allows me to hide specific parts of a website and remember these preferences. The next time I visit the website, this content should be hidden from me.

Browser Tab hierarchy

Would it be nice to have a few say 2 or 3 tab bars in a browser with the tabs being separated in a hierachy in some sense? For example the tabs in the first bar could be Social Networking, Academics and Shopping. Clicking on each of these would show you the corresponding group of tabs in the second bar. For e.g Social networking woul consist of Gmail, FB, G+ etc, Academics would be study / research related tabs while shopping could consist of Amazon and Flipkart pages. Again, there are many tab-grouping apps available for various browsers. This is just to learn new stuff.

Decode Youtube URLs for audio / video download

This is purely for academic purposes. There are numerous utilities to do the following - I just want to learn how the function. See Youtube-Video-to-MP3 or the application Minitube which allows you to download the video.

GRE prep helper

While preparing for GRE and memorizing wordlists, I craved for a good tool to do some simple things - mark words that I am confident about, show me a random word and ask me for its meaning and so on. I finally hit upon GREGuru (for mobile phones) but I have a few ideas of my own that I would like to like to incorporate in the PC version of GREGuru.