Computer Mediated Communication and Me
For almost as long as I have had an interest in programming, I have found myself working on tools for computer mediated communication. Which is usually to say, "chat clients." This is an attempt to chronicle some of that work.
This was a news scraper. I configured it with templates for lots of sites I found myself checking routinely and ran it periodically to produce a concise static web page with headlines and links to articles.
The last version I seem to have posted happened on 6/23/2000, but I'm sure I worked on it for a significant time before then. There were at least two completely different implementations, first in Visual Basic and later in C++. I made a small amount of money by selling keys to unlock some features as shareware.
I am entertained to find that the RSS specification was only released in March of 1999, and I've only seen RSS readers in common use by people in recent years, so I'm pretty pleased at how ahead of the curve this was. There was other similar software at the time which certainly inspired me, but my implementation was fairly novel.
Today I use Google Reader to fill the exact same need.
This was an IRC client. There's not much more to it than that. I probably started on it to avoid paying for a mIRC license while learning about both IRC and Visual Basic (4?).
I remember nightmares of hand-writing terrible string manipulation code to parse the protocol. I like to believe I know better, now.
I'm not exactly sure why I stopped work on this. I think there were just a number of cooler IRC clients out there that I knew I didn't have the time to overtake.
Today I use irssi for my IRC needs.
I wrote a weird little tray icon IM client for Windows at one point. I think I might have run it on a few computers at home purely as a stopgap to having to run up and down stairs to talk to people in the house.
I remember nothing about the implementation except that it was very basic.
Today I use Pidgin for all of my IM needs.
Sometime in college I wrote an IRC bot with a number of features. Most notably, it believes things for me, storing simple words and definitions in a dictionary for later lookup.
He's still running, and I still use him from time to time.
- naim (very small change)
naim is a console client for a number of chat protocols. While riding in a car with a number of geeks on a WiFi network connected to a bunch of geeks in another car, someone suggested that I add support for autocomplete for aliases. I did just that before we arrived in New York City, coming from Troy.
I haven't used naim in years, but it's still around.
- EB-Lite (XMPP support)
After getting the itch at another point in college, I found the multi-protocol client everybuddy and consequentlly EB-Lite. I found the codebase to be fairly clean and understandable, so I spent some time with it. I recall making some IRC modifications as well as adding support for XMPP.
I remember my implementation involved using expat to build a custom data structure of the XMPP stanzas and then using a super dumbed-down XPath-like syntax that I made to examine them in order to do the appropriate handling. I also remember XMPP being very complicated to work with despite being a fairly simple idea in concept.
EB-Lite seems to have died. Pidgin, though I cringe every time I look at the codebase, has won in this arena.
I made my own frontent for EB-Lite and used it for a fair amount of time. I believe the main feature was everything being in one window, making it easy to manage many chat rooms and private conversations in a fairly compact UI.
I forget why I stopped using this. It may have been missing features like file transfers or certain protocol support that drove me away.
I started to work on a MOO/MUD at one point. It didn't get far.
- Mixed Messages
I made a DS game version of the paper game paper telephone. It was released years later as a DSiWare game. It is also available in the 3DS eStore.
I made a paste bin. This pissed Tom off, because he also wanted to make one. There's really not much notable about it. I think I used genshi and pygments, which both did their job well and made this pretty easy.
I still run this at work, but no one uses it.
This was a webapp that scraped histories of web comics for me, for some time. A full write-up of it is here.
This did its job well, but in the end it scaled poorly (the database grew huge and slow), and I tired of maintaing it.
Mark expressed a disinterest in all things ajax, and as a result I tried making a static web page of interesting thing to me. This amounted to recent twitter messages, a summary of Google Reader unread times, and upcoming things on my calendar all on one page.
This is not unlike something I would have gotten from using iGoogle, but mine, being a static page that was regenerated periodically, loaded much faster. It also (deliberately) prevented me from polling frequently for updates, because it would only provide updates on the predetermined schedule.
I think I stopped maintaining it when twitter and Google Reader both independently had issues or made changes that required work from me to fix things.
pester was really my first use of ajax. I drew some diagrams of an architecture involving a web app, a daemon running in the background, and protocol plugins, and tried to implement it. I think I only ever had IRC support. The interface was a webapp interpretation of the interface for the Lily CMC, which nobody reading this will know about.
I got fed up with this when I tried to incorporate SSL on my connections between protocol plugins and the daemon, and I realized that there was a handful of valid-looking implementations in Python that all had serious shortcomings. At least, they were all incompatible with my preference of using blocking sockets with select/epoll. I had also reached a point where things were getting difficult to maintain and test.
- Live Graffiti
This is an Android application where people can draw things and those things later show up as the phone wallpaper of other people using the application.
I'm still using it. I mean to put this in the Android Market at some point, but not before doing some things to protect the server from abuse.
This is a very recent attempt to resurrect pester while adopting a slightly Facebook/Google+-like user interface. It's a work in progress. I've skipped the SSL aspect, since everything can run on one machine. One of my goals is to make this easily demo-able, so that other people might be encouraged to help me.
I put in a lot of effort in order to not have to speak to people directly. I will try to update this with more screenshots and links as I find them.