Pluggable Compiler

While reading this post about C# 3.0 on MSDN Blogs I thought about an idea to make pluggable compilers. Let me explain:

In every programming language the language designers have to decide which features go into the language and which features stay out. These decisions are crucial to the development of a language and the rate of adoption of it. Once a decision to include a language feature is made, it cannot be undone.

So the idea is to make the compiler pluggable, in the sense that you could include lingual features you’re interested in and exclude others. This could be used to streamline the development style in a team of programmers, for example. In the companies that I have worked for so far, using advanced programming techniques, which were great to use but you had to go through a learning curve to understand, was frowned upon. In production code there’s not always room for creativity at the price of code readability.

A pluggable compiler won’t be easy to make. It will have include a parser, which will know to which compiler plugin it should address when it finds a certain syntax, and different feature syntaxes may interfere with one another. Now I’m wondering if it is even possible to make a plugin-based compiler. Maybe just having the possibility of turning off some language features could be nice. But it’s just an idea.

MLRS – My Little Relay Station

Previously, I wrote about experimenting with TAPI3. TAPI3 is Microsoft’s implementation of a Telephony API for Windows. One of the new things in TAPI3 (except for being implemented using COM) is that in TAPI3 the abstraction of the API goes beyond phone devices, and also includes H323 (which is a Voice over IP protocol) telephony.

Seeing that I thought to myself that a nice project would be to create a way to use your home computer to make local phone calls over the Internet. For example, let’s say you travel outside your country to a place where there is an Internet connection. The idea was that you would connect to your computer at home, instruct it to dial (using a modem) and talk to a person in your local area.

For a while I thought this idea could even be extended to a peer-to-peer network of people allowing calls to be made using their computers while they are out of their homes. Think about it – a person goes to work and leaves her phone line unused for all that time of the day when she is at work. This line can be used, by people who live far away, to make free calls (assuming local calls are free).

However, today phone rates are dropping as more and more VoIP infrastructures are being established. The relay station idea is no longer such a big motivator for people to use. Maybe the peer-to-peer thing can be implemented with a different technology, which is available today, in an easier way.

I wrote some code to get the MLRS to work. Unfortunately, I had a problem with my computer’s crappy hardware (or at least I think that was the problem), so I stopped developing this one.

Oh, and one more thing… I know that MLRS also stands for Multiple Launch Rocket System. The pun is definitely intended.

UQAN – Universal Questions and Answers Network

UQAN (pronounced you-kuan), Universal Questions and Answers Network, is an old idea of mine, which never came to be.

It is best explained by an example. Let’s say you install a UQAN client on your computer. There are two use cases:

1. You have a question – you write your question, categorize it (tag it, if you want to use current geek slang) and submit it. After a while (hopefully a very short time) you get answers back from people who are currently online and thought they have the correct answer.

2. A question by someone else arrives to you – in the UQAN client you can specify areas (categories) in which you think you’re capable of assisting other people. Once a person asks a question, it can pop up on your desktop and you may answer it. You can, of course, dismiss it or look at other responders’ answers to see if there’s spam there or if someone got the right answer already (in those cases you can rate these answers as correct/wrong/spam/whatever).

Since so many people are connected at any given moment, and there is so much knowledge available, I thought this would be like support forums on steroids – you don’t have to wait so long to get your answers. I also thought communities or companies could setup local QANs for members/employees. But, I just didn’t get to implementing it. Like all my ideas – maybe it will happen in the future.

Anarchist Grid

(In the “Ideas” category I’ll post… well… ideas)

Anarchist Grid follows the rising popularity of grid computing. Imagine, though, that a grid exists where you can, for example, crack password-protected files. I wonder if, to crack a zip file, you need to have the entire file. If not, then this is actually doable.

Anyway, if such a grid existed, you could “submit” your file to the grid and, assuming that enough people are connected, get the password in a matter of minutes (or seconds?).

I think this idea can be extended to more than mere password cracking, but I leave this as an exercise to the reader. I don’t want anyone thinking I’m up to no good.