Version 2 Software, LLC

Sections
 

Ignite History

My first foray into the world of Jabber/XMPP occurred back in 1999 after seeing the original Jabber announcement on Slashdot. After finding a workable client, I created an account, signed-in and then – nothing happened. Sadly, I failed to convince any of my friends to try out this new, open instant-messaging system primarily due to the lack of polish the clients had at the time (there's an important lesson to be learned there.) So, after creating another account, I sent a few messages back and forth to myself, got bored and moved on to the next new shiny thing that caught my eye.

Fast-forward several years and the organization I was working for had decided to start blocking all AOL, MSN and Yahoo! IM traffic at the firewall. My boss, a big user and proponent of IM, tasked me with finding a solution to setup and use internally and suggested I have a look at Jabber. I must admit that I hadn't kept a real close eye on the Jabber community, so I was pleasantly surprised to see how much things had changed since my original foray. Specifically, there were now numerous open-source and commercial server offerings, as well as a large number of clients with much more polish to them. After experimenting with a number of servers and clients, I had decided to go with jabberd when wind of our plans to setup our own IM server reached some of the higher up's in the IT department. They expressed great "concern" about our plans to provide IM to the employees, especially one that was to use an open-source solution. (These people lived and breath all things Microsoft and were suspicious of anything that did not come from Redmond). Eventually, we were able to make the case for having an IM server but only if we went with a commercial solution. The software we ended up selecting worked and generally needed very little attention, which was fortunate because it was a real pain to administer.

So, during those first couple of years, we had our own server up and running, Matt announced the release of Smack, which I immediately took an interest in and began writing my own Jabber client, Jabber Hound, with it. Sadly, Jabber Hound never reached the point where it was polished enough to be released to the public; however, developing it and working with the Smack API did help me gain a better understanding of Jabber protocol. At this time, I also started contributing to the Smack forums. Later, Jive Messenger (now Jive Wildfire) was released as a commercial product. It was so much easier to use and administer that I started using it for my development server (at this time Messenger was licensed so it could be used for free with five or fewer users) and began planning on migrating towards it when our support contract expired with our existing server provider. After the announcement was made that Messenger was going to open-sourced, I decided to accelerate our migration plans to switch servers even before our existing service contract ran out.

Almost immediately after the migration to Messenger, users started contacting me asking why they could no longer search for other users on our server. Not surprisingly, my response that our "new and improved" server did not support that feature did not go over too well, so I set about seeing what I could done to add that feature to Messenger. I downloaded the source to Messenger, looked at the XEP-0055: Jabber Search specification and began coding up a solution. It took a bit of trial and error but after I finally got everything working, I bundled up the changes and sent them off to Jive. Matt was gracious enough to look at my submission and suggested that a few changes be made, the biggest of which was to make the search service into a plugin to help spur the development of plugins in general. Matt also made some changes to Messenger itself that allowed the search plugin to query the user database directly rather than having it do more of a brute force search through a list of users. After a bit more tweaking, the search plugin was made available along with the release of Jive Messenger 2.1.2. The search plugin has since gone through a number of tweaks and feature enhancements and is now distributed along with Wildfire.

Since the release of the original search plugin, I've written several other plugins which have been donated to the Ignite Community, as well co-founded, Version 2 Software, which has developed a number of Wildfire (and Spark) plugins for clients.

Why did I just tell you all this? Well, I always enjoy hearing how developers became involved with various projects so I'd thought I'd share how I became involved with the Ignite Realtime community.

-Ryan

 

Two Blizzards and Practical Common Lisp

I first used LISP twenty years ago, but I didn’t have enough language theory to appreciate it or understand it. The next time I encountered LISP was in a Theory of Programming Languages class at NSU. There’s something very pure about LISP’s foundation on lambda calculus as a means of studying the nature of mathematical functions.

A few weeks ago I decided to start learning Emacs so that I could standardize on one editor (for non-IDE occasions) that I could use on Windows, Mac, and Linux since I seem to wander between them on a regular basis. The interest in Emacs and being snowed in by two back-to-back blizzards rekindled my interest in LISP. To make a long story short, I stumbled upon a book that explains LISP in a way that mere mortals can understand. The book is Practical Common Lisp by Peter Seibel. It is available in print at Apress and Amazon as well as available online for free at http://www.gigamonkeys.com/book/.

The example from the book where it all clicked for me was the development of a unit test framework in twenty-six lines of code. If an author can make me understand the power of LISP macros then he deserves to sell me a book.

If you are into language theory, LISP will help give you a healthier perspective on the language you are currently using. Why is dynamic typing important? What is the benefit of treating functions as first-class data types? How does the LISP macro facility enable you to extend the actual syntax of the language without waiting for a committee vote and a major version release? Not bad for a language that started in 1956.

Hope you enjoy the book,
Larry

Archives

December 2006   January 2007   February 2007   March 2007   April 2007   June 2007   August 2007  

This page is powered by Blogger. Isn't yours?

Subscribe to Posts [Atom]