Joel on Software is Joel Spolsky‘s weblog. He usually talks about software development and about his company, Fog Creek Software. It is hard for me to explain exactly why I like his blog, but I think any software developer will understand by reading his excellent piece, Fire And Motion, which was the one which made me put his blog in my RSS feed list. Enjoy.
Miranda IM
Miranda Instant Messenger is the IM software I use. I like it for quite a few reasons:
- It connects to almost any protocol there is.
- It has a small footprint, both on your computer’s hard drive and in its memory.
- It is extensible, in the sense that its architecture is plugin-based, which lets you extend the program in many ways, and even replace “built-in” functionality with your own.
People have done wonderful and unexpected things with this program, as you can see by browsing Miranda IM’s plugin database.
I started using Miranda IM when I started working for Motorola. At the time, the firewall only allowed the official Yahoo! Messenger client to go through (as it falls back to HTTP when direct connection cannot be established with Yahoo!’s servers). So I decided to write the Relay Plugin for Miranda, which uses Miranda’s multi-protocol capabilities to act as a relay between protocols. Something like this:
Me at work, connected to Yahoo! | < ———–> | Miranda IM at home with the Relay plugin, connected to Yahoo! and MSN | < ———–> | My friends on MSN |
The Relay plugin also motivated other people to create relay-like plugins, like mBot Relay agent plugin, forward plugin and yaRelay plugin. This actually makes me kind of proud.
I think this plugin is great, but it is now outdated since the intoduction of the Miranda scripting plugin, which spawned the creation of Web Miranda (also a plugin) and now you basically can have Miranda working from anywhere in the world using nothing but a web browser.
I continued to develop for Miranda, though. After experimenting with TAPI3, I put Caller ID into a plugin and created the Caller ID plugin. The cool thing about this plugin is that it uses my own Relay plugin to tell me when someone calls in. So when I’m at work and someone calls my apartment, my computer at home IMs me about it with the number. A neat trick to show your geek friends, that’s for sure.
Raymond Chen’s blog
Raymond Chen is a evil empire Microsoft employee. His blog is very popular among developers, or at least that’s the impression I get. However, it is not only a development blog. Raymond, being a Microsoft veteran, has many interesting and amusing stories about Microsoft’s early days, Interesting observations and, of course, a lot (and I mean a lot!) of useful developer lessons which he passes on in a concise way. He occasionally whines about stuff, but that’s ok too (about that last link – I think that Google introduced a great UI for their map service. So if I’m looking for a place that Google already has data for in “Google Maps” then that’s where I’ll go).
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.
KeyboardAccess For IE
KeyboardAccess For IE was my first open source project. I wanted to implement it even before I knew how.
The idea of this project was to create an alternative way to browse the web. After installing this Internet Explorer plugin (called a BHO in Microsoft jargon), by clicking the keypad’s ‘+’ key in a web page, all the links on the page get numbers, and you can choose the link you want to open by entering its number in the dialog that pops up.
Generally speaking, it works. It even lets you focus on form elements like text boxes and puts numbers on image maps (this feature I was especially proud of). However, it doesn’t catch all the links, since sometimes the numbering is hidden by other page elements, and of course Flash links are simply not accessible through the HTML DOM.
So after a while I stopped developing it, because it wasn’t as popular as I had hoped, and I currently use Firefox as my browser. I still think it’s a good idea, so maybe I’ll develop it as an extension to Firefox.
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.