On Jabber/XMPP

I’ve posted a bit a while back about Jabber and my trials with finding a good client, and how I think that jabber is the key to making microblogging really work. As I’ve been dealing with these issues/ideas in greater detail, I’ve had some more thoughts on the subject that I think I’ll collect here.

First off, a subtitle and introduction to XMPP:

The easiest way to understand XMPP (or jabber, which I’ll use semi-interchangeably) is that it’s like email: everyone can run their own server, there’s a specified message metadata (like a header) that makes it possible for lots of servers to talk to each other. Non-jabber IM systems have a central server, which everyone authenticates with and that receives and distributes all messages/statuses between users. So why is distributed good? It solves a lot of scale issues, if most individual servers only need to handle the traffic for a very limited number of users, scaling becomes a horizontal (more servers) rather than a vertical problem (bigger servers.) Also distributed in this case means more individual control over computer usage without sacrificing potentially huge (or at least dunbar’s number sized) social networks.

While this is all very interesting truth be told, this stuff has been around for a decade or more, and for a long time jabber has been the kind of thing that you used a little and then went back to AIM because the clients all sucked, no one really understood or used it, and frankly AIM worked better. In the last year or two things have really started to come together, I think, and XMPP is starting to seem really cool, and really powerful. Truth be told, I think this has a lot to do with critical mass, and the fact that google’s IM platform (Gtalk) is XMPP/Jabber based and interoperable, and so there are a lot more people who are now jabber capable.

I think it also has to do with the fact that jabber gives web based software developers a way to offer push based access without resorting to polling APIs which doesn’t scale well and gets ugly pretty fast.

The breakthrough moment for me--or moments--have to do with multi-user chats. Now the internet has been doing group chats longer, I think, that we’ve been doing one-on-one chats, but IRC--the typical mode--is also centralized, or it’s distributed, in the sense that there are lots of servers, but the servers aren’t interoperable, and it doesn’t scale well at all, and it requires IRC specific software that most people tend to just use (anymore), and that means multi-person conversations aren’t incredibly common-place.

While XMPP multi-user-chats or “MUCs” aren’t too common yet, and (probably) have a host of problems which I’m totally incapable of addressing, I think there are a number of reasons that MUCs are really cool and already beat out IRC in a number of ways. The two biggest “pros” are the fact that users only have to sign into one thing, with an account that most folks already have,1 and that since servers are interoperable, you don’t have to manage a bunch of different connections with centralized servers.2 I’m convinced that the scaling problems of both IRC and XMPP (as technologies,) are nothing in compared to the scaling problems of human-text-based conversations.

And as if that wasn’t enough friend of the blog is putting together the web-based front end/xmpp group chat service that might just make this all make sense to everyday users. While I might not be a big fan of the web-based service for day-to-day computing, there are times when it makes a lot of sense (particularly for capturing new users).

There’ll be more thoughts, as there always are, but I think that does it for now. I try and sprinkle the really-geeky posts in with the more accessible posts because I think it helps me to understand things more clearly, and because I know the geek-quotient varies a good deal. If any of you want more details or have a particular interest in pushing me in one direction or another, I’d love to hear it.

Onward and Upward!


  1. I hate the “to do this really cool thing you need to fill out a membership application,” mentality that a lot of cool things on the internet have. Particularly since google gives away jabber IDs with all their accounts, this becomes even more awesome. ↩︎

  2. The argument in favor of centralized servers is that they simplify the message/data routing problem, so that individual clients needn’t be able to find each-other as long as each client can find the server. The problem is that we use programs like adium/pidgin or colloquy that allow us to connect to a bunch of different servers all at once. Which is clearly not advantageous, or ideal. Most of the time I’m connected to at least 4 different IM services, and at least a few IRC networks (freenode/oftc/undernet are most regular in that order, but ircnet/xkcd/sff/wyldryde are all on my list), which really, when you think about is kind of outlandish. ↩︎

Drupal Camp Chicago

Dear Readers,

I’m--or my alter-ego[^two name]--is going to be at Drupal Camp Chicago on the 24th and 25th of October, baring an unforeseen catastrophe.

So this presents several possibilities:

1. You are already going to Drupal Camp Chicago and want to hang out with me or talk me into presenting something with you. To this, I say rock on.

2. You are or will happen to be in Chicago that weekend and don’t give a rats ass about drupal, I’m going to be (hopefully) meeting friends from school on Saturday after the conference and I’d love to have blog people there too.


In addition I’m thinking of proposing a session on Open MicroBlogging and drupal, which I think might be really fun. If you’re interested in contributing to this, I’d love help/co-conspirators. And I’m just a guy who thinks this shit is cool.

I’m cross posting this but lets try and coordinate meet-ups and whatnot in the comments thread of the tychoish.com post. You can always email or jabber/xmpp me at garen@tychoish.com Rock On.

[^two name]: I so need to figure out how to have two buttons made/get some sort of official “tycho garen” name tag. Ideas?

Git Mail #3

I posted a while ago about redoing my assbackards email downloading system. I finally did it. And it works great (and runs a bunch faster). The main sacrifice is that I now have to store two copies of my email directory on my server, but disk space is cheap and git is really effective at saving disk space/transfer speed, so it’s not a really big deal.

It’s also much more straightforward, and I’m going to post the two (2!) simple shell scripts that I’m using along with a couple of recommendations/hints if you want to try this at home. I do recommend that anyone who does this should be familiar with git before attempting this. Sound good?

Great! Here goes.

You need:

  • A repository on your server where your email will “land.” This should be a git repository that’s origin is:
  • A bare repository that is also on your server. These directories should not be web accessible, and indeed, technically need not be on the same server even, though they need to be always-on servers at static locations, so that you can clone repositories on:
  • A repository on your personal computer(s).

Inside of the repository is a great place to keep your scripts (and indeed all settings for mail-related programs.) The two scripts you need are:

syncserver:

#!/usr/bin/env bash

# Get situated
cd /path/to/mail/

# Pull Changes from the centralized (canonical) repository
/path/togit pull origin >/dev/null 2>&1

# Add in the new mail and push to the central repository
/path/to/git add .
/path/to/git commit -a -q -m \
"server: mail drop commit, pre-push to central"
/path/to/git push origin >/dev/null 2>&1

syncmail:

#!/usr/bin/env bash

# Do things on the server  synced
ssh USERNAME@DOMAIN.TLD sh /path/to/mail/syncserver >/dev/null 2>&1

# Do things locally to get changes upstreem to central
## Get Situated:
cd /path/to/mail/
## Pull new mail down,
## everyting after the | is to produce a mail notifciation
##  using growl on OS X

/path/to/git pull origin | /usr/local/bin/growlnotify -n mutt -a Mail.app -t "tycho garen (or maybe sam)'s mail status:"  >/dev/null 2>&1

## Getting setup and then pushing any changes upstream
/path/to/git add .
for i in `git ls-files -d`; do
   /usr/local/git/bin/git rm --quiet $i;
done

/path/to/git commit -a -q -m "mail changes from NAME_OF_COMPUTER"
/path/to/git push >/dev/null 2>&1

Feel free, of course to change the commit messages and take out the comments. Other thoughts on usage:

  1. Have public key sign-ins enabled on any machine that you use regularly. It’s more secure, faster.
  2. By all means, run “syncmail” in a launchd daemon/crontab.
  3. I’ve used absolute paths, starting with a “/” so that the shell doesn’t have to look for relative paths in order to run, which probably only gives me a marginal speed advantage, but you’ll want to figure out where your executables are and then put the right locations in. It’s a short script.
  4. While eventually, you’ll be able to tweak the syncserver file and after two runs, the changes will propagate, you have to put the file there manually (or run the pull yourself.)
  5. If you need to download mail from more than one source, you can run fetchmail at the beginning of syncmail

This almost makes sense, finally. The only thing that I’m still trying to figure out is if I were to get, say an iPhone or a BlackBerry into this system. IMAP into my existing gmail account would be ok but not desirable for a number of reasons. I suppose I could forward email from my server/computer to a “mobile” account, but that would be like having an email cadet branch and there wouldn’t be syncing, which seems bad. On the other hand, it means I could pull out only the stuff I really need. It’s a ways off, but it’s pretty complicated.

Onward and Upward!

English Songsters

In my fair city this week and last there’s been a lot of Scottish music. There’s a woman who’s been active in the local Scottish community (who knew?) for years, and she’s a retired music teacher and she does a program each year where she brings in top notch Scottish musicians to teach in local schools. It’s pretty cool, and it means that a lot of great Scottish musicians do concerts here. Anyway, this is a much more macro entry into this story than you really need, but it’s my blog and it seems fitting.

Anyway, Ed Miller, an amazing folklorist and singer did a concert and sang “A Bottle of the Best” which some googleing has revealed is written by Jack Foley. It’s a perfectly good song, and one that I’d heard dozens of times before, but it wasn’t something that had really stuck with me as you might it expect. It does, however, have the following “make fun of the English” verse:

And the English like their ale warm and flat, straight oot the pail They aye slitter wi' their bitter; it would slaughter Jack the Ripper, And they sip their cider rough, they huff and puff and sniff and snuff, And as if that’s no' enough, they start tae sing.

When Jones' Ale Was new, or John Barleycorn’s fine brew Fathom the Bowl, the Barley Mow, Bring us a Barrel, just a few But their songs are far surpassed by the tinkle in the glass When you’ve broken oot a bottle of the best.

Which is, on the face of it, not a particularly clever verse as these things go, but he was able to sing it in a way that perfectly captured a very English way of singing. It was hilarious, or at least I thought so, because while it’s a fine verse, the musical pun really made it.


It helps that I really like that kind of singing. There’s something really cool about standing around in a doorway with friends or strangers singing a song, and it’s not so much about the redeeming musical value--I happen to like it, but it’s admittedly an odd taste--as it is about the value to the community/spiritual1 sense.

And maybe I’ve answered it, but the question I’m left with is, what makes those sorts of songs so awesome? And really, is there a quintessentially English way of singing? While we’re at it am I the only one who finds this entertaining?


  1. I should post a rant about this at some point, but you hear a lot of people these reformed days saying, “I’m not religious but I’m spiritual,” and while I support a flight from religion, I think this is an incredibly dumb thing to say. Spirituality as understood by all religions isn’t about G-d nearly as much as it is about a historical lineage and set of ritualized practices. It turns out what people are saying when they say “I’m spiritual,” is “I have a moral system.” Which is a nice thing to say, but also doesn’t (I think) have nearly as much to do with G-d as it does with being a human without a pervasive developmental/organic psychological condition and having an intact brain with a frontal lobe. But that’s just me. ↩︎

Patterns as Stories

One of the things that “gave” in a great life-shakedown of 2008, was my interest/intention to design/publish knitting patterns. I design a lot of my own sweaters and things, I enjoy the technical and creative aspects of knitting, and I really enjoy the meditative aspects of knitting. At the same time, I’ve worked in a number of different yarn stores, taught knitting classes and lessons, and tried to write patterns, and each engagement with the “business” side of the craft, leaves me feeling drained and weary of wool.

And so in the shakedown, I decided that while I probably have more knitting skill/experience and knowledge than I have of just about anything else, I don’t have the interest or the energy to make a go of it. Or maybe more clearly, doing the things I’d need to do to become a full-time knitter would make knitting less fun in all the other ways that I find relaxing.

As I more fully return to knitting I’ve had to revisit this decision a fair piece. I ask myself do I want to try to teach again? Do I want to apply to give workshops at Folk schools and craft centers, let alone yarn stores?1 And I think the answer is, mostly not. I do a lot of things very seriously, and I don’t know that it’s worth my time and energy to work on knitting more seriously, given that I want to do other things and, blah blah blah.

But, and you knew there was a but coming, I’m not sure that I want to just give it up. Not knitting, but knitting seriously, and writing about knitting, and all of that. Part of this reflection are thoughts about my niche, and my role in the discourse of knitting.2 Which is maybe what I should have thought about when I was trying to figure out how to teach knitting, or write patterns a couple of years ago.

Unlike a lot of popular knit bloggers, I’m not big on taking pictures of my knitting, in progress, and my knitting tastes don’t tend to suit “knitblogging” very well. I knit big projects in fine yarn and so I finish something very infrequently. And as a designer, I tend to knit for myself and I tend towards non-typical construction techniques.3 Also I’m not nearly as [funny][harlot] and/or [polished][franklin] (let alone accomplished). So figuring out where I fit into this, or what my niche is is something of a personal challenge.

The last--and pretty key--piece of this personal puzzle is what I get out of the “knitting discourse,” I don’t subscribe to the magazines, I don’t really follow patterns except tangentially and as inspiration, I haven’t made a Clapotis, I’ve never taken a knitting class (aside from Knitting Camp), and I tend to buy really boring yarn.

So I’ve thought about writing knitting patterns more as essays, and less as instructional documents. I enjoy writing essays, and I really like writing about knitting, and I like reading about other people’s knitting, and I’m not terribly interested in writing touchy-feely essay about how knitting soothes my soul or makes me feel closer to other people. But patterns as a story? Patterns that attempt to communicate not just the object, but also the design process, and the state of mind of the knitter during knitting? Am I the only person who would find this interesting?4

Onward and Upward!


  1. Maybe this is the result of the clash between my growing stash and my normal frugality, or the result of my spinning hobby/habit, but in the last couple of years, I’ve become less and less interested in the act of buying yarn. I like yarn, and I like all sorts of yarn makers and yarn shops, but I don’t find commerce to be a relaxing part of the knitting experience. Which isn’t a bad thing, it’s just a cause of my trepidation. ↩︎

  2. I’m sorry that I’ve lapsed into academic-ese, but in this instance I mean the contemporary knitting world. The big knitting magazines, Raverly, real-world knitting groups, my knitting list, knit shops, podcasts, and so forth. Basically the knitworld. ↩︎

  3. The only real problem with this is that the designs that make a career (Kate Gilbert’s Clapotis or Cookie A.’s Monkey Socks, for instance) tend to not be sweaters/men’s designs, and while there need to be more men’s designs, I think the reason that there aren’t is pretty market driven. [franklin]:http://the-panopticon.blogspot.com/ [harlot]:http://www.yarnharlot.ca/blog/ ↩︎

  4. I’m serious about this question folks. Would you be interested in reading a knitting pattern like this? ↩︎

A Needed Break

Hey folks,

Just a quick note. I’m going to take a two day break from posting stories to Critical Futures at the end of this week.

The reasons for this are twofold. First and probably most importantly, I need a break. In the last three months, I’ve posted about 28,000 words of fiction (nearly all of it my own) and even though much of it has been old content that I’ve been editing and revising as we go, it still takes a lot of time. And because, I’m my own boss, and can do these things, I’m giving myself a break. These are the perks of “going it alone,” and besides, we’re only talking about two days.

The second reason is that I’ve just finished posting the third chapter of Knowing Mars, the novella that I finished a year ago, and that forms the core of the first six months--or so-- of Critical Futures posting. Given the milestone, I think I want to release the first three chapters as PDF files so that people new to the game can catch up. This will form the core of next weeks posts, and it’ll take a bit of extra time to prep. This means my break is effectively a little bit longer, you get special content, and we’re all happy.


I’m starting to talk to other people about writing/sending stories to Critical Futures, which is something that in my more overwhelmed moments seems really good. If you have nifty SFnal work that you’re tired of sitting on and want to see what it looks like in “print,” consider submitting. I enjoy doing editorial work (and I’m at least half decent at it, my alter-ego makes a living doing something similar,) and I think Critical Futures is the ideal space for some pretty nifty writing. Get in touch and we can talk in greater detail about this. I see great things happening.

Technical Hardware Update

So it turns out that the old laptop that I spent lots of time in the late spring fretting about updating finally gave up the ghost last week. Now the astute among you will remember that I bought a new laptop mid-summer, and you maybe wondering why I’m mentioning this.

Even though the keyboard was worn out (hence my reason for upgrading), with an external keyboard that we had lying around it worked fine, so I passed it down to my mother who was in need of a newer computer for routine home tasks, where it continued to function abely.

And then it broke.

Which caused all manner of strife around here, as we’re all pretty set in our computer usage habits and it’s really hard to share computers with people, no matter how much you like them. And while the loss of this computer brought the net number of computers to equal the number of people in the house, one of the computers is a 12" iBook from mid-2004 which is slow and small, and uncomfortable for anything other than casusal use.

So we tussled with a number of different possible solutions which were all uniquely unsuitable. Eventually we came to the following solution:

My father, who has heretofore been running on both a 2005 era mini-mac (primarily) and with the recent addition of the ibook, will switch to the ibook exclusively. The ibook does a suitable job at powering his external monitor, and if we put his itunes library on an external drive (which we should have done a long time ago anyway) the hard disk size isn’t an issue. Mom gets the Mini, with a as of yet unpurchased monitor, and I blessedly can keep out of the whole mess.

The truth is that this has me thinking about my computer useage. I’ve realized that while I’m probably the most “power-user” in the house, I’m not doing anything particularly resource intensive: text editor, terminal emulator, mutt, IM program, news reader, web browser, pdf viewer, calander/pim tool, and that’s about it. I used the 12" iBook myself for a week or two, and while it’s still a bit underpowered for my purposes, it wasn’t that underpowered--it’s major offense is that the screen is pretty low-res.

While I’m probably going to get a linux desktop in the next few weeks (sooner, I guess, now that we’re going to be making an order for one monitor, I might as well buy the monitors for my set up), I’ve been thinking about my own computer usage habits and needs. If I have a desktop computer, do I need as much umph in my laptop? Could I get buy with something like this fit my mobile needs more clearly (smaller, capiable, linux-y)? I think that if you asked me tomorrow, I’d probably say “not yet,” but in a couple of years? I’m not sure.

Once upon a time, the major concern when buying computers was finding a machine that had enough resources to serve your needs for the next 2-4 years. These days, just about any computer you buy is fast enough and has enough storage space. There are lots of ways in which this is a good thing, but I think it’s most interesting/important in the sense that it forces computer buyers to get computers on the basis of the needs of the workflow rather than on some negotiation between budget and feature list. And that, I think, is a really good thing for technology.

Onward and Upward!

Cloud Computing

rms, Mr. GNU Project himself, recently interviewed with the Guardian and came out against “cloud computing.” While there wasn’t a great “splash” on the blogs I read--no one was surprised, a lot of people disagreed respectfully, and we all went along our ways--but I think he raises an important point that we/I should discuss.

rms' argument is that “cloud computing” services, like gmail, twitter, livejournal lock people into their services and force computer users to give up control of their computing and data, and that this is as bad or worse than using proprietary software.

I too have been a pretty big opponent of some “cloud computing” developments, not simply because they restrict freedom in the sense that rms is speaking of, but also because in a lot of cases, it’s not a very good or user friendly environment for a lot of tasks. And I’m pretty stubborn about not trusting my data to a format that I’m not positive I’ll be able to export into an open and useable format.

As it turns out there are a number of cloud services which are “more open,” than others. That allow users lots of very standard/open access to their data. It’s not the same as open source, of course, but I think it’s important to suggest that all “cloud” services aren’t created equal. Here’s a brief review:

1. GMail provides full pop and IMAP access to their accounts. They also make it easy for you to use your gmail account to send “from” other accounts. While you get more freedom from hosting your email on a server you control, gmail isn’t less free (in my estimation) than using the email address supplied by your ISP or employer. 2. Gcal similarly exports to ical format, which is the default calendar standard format, among others. 3. Most “cloud” news readers export OMPL files of all the feeds, similarly the “make RSS feeds of everything,” mentality of web 2.0 means that a lot of data is pretty open to access.

There are of course some web-apps where data is opaque and not easily/openly exportable. Twitter is a great example of this, and I’m blanking on a more extensive list, but I’m sure that you, dear readers, can come up with many more examples.

I think what this means in the end is that the problem of freedom in software in the age of service-based computing rests more on user education than on a legalistic mechanisms (like copyleft) or open source code. Not that the later isn’t important, but I think it’s worth considering.