Wednesday, June 20, 2007

A Project Management Epiphany

We hired a friend of mine in October of last year to help with sales and programming. He's moved to programming full time, and I've taken on the role of Project Manager since. I still do code, but my focus is on code architecture now. Since then, I've been learning the ropes of project management, and I've been looking for tools to help me with the job.

We were already using Subversion for revision management, and upon hiring Garvin, we've added Flspray for road mapping and task management. Its really a task management system in and of itself. I've recently come across Crucible for code review. This is quite a gem! It integrates with Subversion in such a way that you can mark revisions and and effected files for code review. Invited participants may start threads within your code, with each thread relating to specific lines of code that are simply highlight. It's very slick for organizing code review, especially with out-of-office employees.

The thing it was missing to me was integration with a project management system like Flyspray. Well, how would it integrate with something like that without them having to write a project management system specifically for Crucible? It wouldn't be simple. Then it struck me; why not have a feed daemon for Flyspray the same way Subversion has svn:/? A standard could even be made that multiple task management systems could use and thus be integrated easily with other applications like Crucible. I just don't think RSS feeds are enough, because it only goes one way. Is there something out there that already does this? If not, I'm tempted to write up a specification and daemon.

Sunday, May 27, 2007

XMPP Catchup

Quite a few things have happened in my XMPP world since my last post. My server losing it's drive caused me to accomplish next to nothing for about 2 weeks+. I still have not reached my goals with 0.1 for SleekXMPP, but I'm mostly missing just a few bug fixes and some testing. However, work on SleekBot has begun! Its a framework for people to build any type of bot, and will include a hopefully quite complete set of bot plugins. For example, remember Edgar? Edgar will be brought back to life as a Sleekbot plugin as will many other bots out there.

Sleekbot, along with SleekXMPP, now has Ad Hoc Command support.

Ad Hoc is a major feature for Sleekbot, because it will allow complete administration of the bot from an XMPP client. For example:
  • controlling admin lists
  • dynamically loading plugins
  • bot roster management
  • plugin specific configuration

  • I would love to include community contributed plugins and plugin ideas. Eventually I will want to make a Sleekbot community page. Feel free to check out and play with the code at svn://

    In another news, I was accepted as an XMPP member this quarter, which I am very excited about!

    Friday, April 6, 2007

    Lost a Drive

    My little 1U, Sherman, has lost it's main drive this evening. I won't be able to access the machine until midnight tonight. I'm starting to think about all of the directories /not/ on automated backups. My jabberd 1.4.4 spool directory is one of them. This could really, really suck. You won't be able to check out any of my SVN repos tonight anyway. I hope the drive will mount as a secondary long enough for me to pull most stuff off of it. I'm in for a long night.

    Thursday, April 5, 2007

    SleekXMPP 0.1 Plans

    See my previous post if you don't know what SleekXMPP is.

    Well, before my first release, there are a handful of things to do:

    1. I'm really not happy with how stream:features works in my lib; it's messy.
    2. Possibly add post-send handlers.
    3. Write a data-forms (XEP-0004) plugin.
    4. Stabilize the API so that it doesn't keep changing on developers.

    I should be able to take care of that this weekend so that I can start on the bot framework. The bot framework will be all about configuration. You'll be able to register chat commands, command help, command context. And then, of course, comes the events, and MUC support. After all of that, I will begin developing a bot plugin system (separate from the protocol plugins) for drop in and configurable Edgar, Thinkbot, RSS feed readers, voting bots, etc. People will be able to drop in as many plugins as they want and configure them how they want. Ideally this will be doable by non-programmers.

    Several people have asked me about licensing of SleekXMPP. To answer the question, 0.1 will likely be GPL. I'm sorry, but that's the way it is as I don't have enough time to research licenses between now and then. 0.2 will likely be a much less restrictive license, and hopefully everyone is happy with it. Current candidates are MIT, BSD, and Apache.

    In other news, I applied for XSF membership today. I'll know on the 15th (Tax Day) whether I'm in or not.

    Tuesday, April 3, 2007


    As a self-taught, professional programmer, I have a few habits that many more formally educated peers of mine do not. One of those habits is to apply knowledge I've learned to "pet projects." Every time I learn a new technique or come up with a new idea, I tend to apply them to one of my pet projects, often requiring a full rewrite. Naturally, I see no end in sight as far as being able to improve upon my skills, however, this time I think that I've arrived somewhere.

    SleekXMPP is an XMPP library for Python. Why have I written my own when there are at least 2 others out there? Well, the first write was for a company that I worked for, and subsequent rewrites have simply been out of obsession with Jabber/XMPP. Who knows, maybe I can even use my knowledge and libraries to make money. I have purposely avoided even looking at the code of other Python XMPP implementations in order to maintain solid copyright.

    The idea is that the Jabber/XMPP community could use this to test new XEPs (XMPP Extension Protocol) very, very quickly and easily. In fact, my goal is to implement every draft XEP in existence as plugins. This ensures that I write my code in a very extensible fashion, making it easy to extend the class in any way. I am writing the core RFC's as part of the main classes, and XEPs as plugins.

    Beyond protocol testing, what am I trying to accomplish? Once I hit version 0.1 (not quite there yet), I will begin working on a bot framework. The bot framework will use the SleekXMPP lib, and in it's own right, be extensible. Bot behaviors will be configurable and extended with plugins like Thinkbot, Edgar, Mapbot, etc. Kevin Smith, of Psi fame, has promised to write a plugin for eggdrop scripts. Ideally, this framework will enable people who are not programmers to customize and run a bot. Maybe there'll be some optional GUI plugins to boot. In a related train of thought, why have I not seen more bots take advantage of data forms?

    Here is some output from what I've been working on so far:

    fritzy@peabody:~/dev/sleekxmpp$ ./ -d -c myconfig.xml
    INFO Loading config file: myconfig.xml
    INFO Logging in as [address-removed]
    DEBUG Loaded Plugin (XEP-0030) Service Discovery
    DEBUG Loaded Plugin (XEP-0076) Malicious Stanzas
    DEBUG Loaded Plugin (XEP-0078) Non-SASL Authentication
    DEBUG Loaded Plugin (XEP-0092) Software Version
    DEBUG Connecting via client method to
    DEBUG Starting TLS
    DEBUG Starting SASL Auth
    DEBUG Requesting resource: sleekxmpp_
    INFO Node set to: [address-removed]
    DEBUG Established Session

    Some of the astute amongst you may notice that I've implemented XEP-0076 as a plugin, following right behind Psi.

    Before an 0.1 release, I would like to add a well thought through plugin for XEP-0004 (Data Forms) as well as solidify some of my naming scheme for class variables and methods a little better. I should be there by this weekend. After that I will start reviewing patches and hopefully receiving contributions in the form of additional plugins. Keep in mind that a plugin does not have to be a XEP.

    Feel free to check out the code using subversion at svn:// . Any feedback would be welcome.

    Monday, March 26, 2007

    Moving to Blogger

    When I first started a blog, I wrote my own from scratch. That was fun for me at the time, but it became a pain as I was constantly having to add features to the software to keep up with the blogging features that others had available. Next I tried using Wordpress, which was great for awhile. But soon I started to get a lot of comment spam. I was also having to update regularly to deal with new and exciting security vulnerabilities. I was spending more time dealing with this crap than blogging, so I've moved to Blogger. They can administrate, add features, and deal with comment spam, and I don't have to mess with that at all. I can simply concentrate on blogging. It's about time that I started doing that. This blog will not be about family events, you can find that elsewhere. This is all about my hobby shenanigans, which largely involves programming, running a business, and regular geek crap. Enjoy.