Integrated Writing Environment

My post about information buckets got me thinking, thanks to some other things that have filtered through my awareness in the last few weeks, about integrated development environments.

See, a couple years ago, I used everything buckets like mad, they were the application of the future, the software that seemed to just scratch every itch. I don’t know that I used them as general databases for everything but I did all of my writing and research-related tasks in them, and it was great.

The articles I read where there, along with the notes that I made, along with citation information, along with the final paper. Along with all of my previous papers and articles. I never had to go look for things again, it was all there.

This is similar to an IDE, or integrated development environment, which is a class of applications that have some measure of popularity amongst computer programmers. IDE’s generally (and I’m not clear on this, as I’ve never used one) provide tools for managing large projects and integrate with code-compilers, debugging tools, version control tools, multi-file project managers, and code browsers which allow you to find related parts of code across an entire project without scrolling through a lot of files. I think there’s probably some debate on weather these are good things for programmers (objections would include that they make for lazy/poor practices, and that IDE components do lots of things poorly) but generally I suspect they are good things. And as it turns out most of our beloved text-editors have a lot of IDE-like functionality anyway.

In a way, the information bucket provides an IDE-like environment for the information worker or writer. And that’s sort of a cool way of looking at this. Indeed, I think writers need better integrated environments, there are a lot of tools that I think we could benefit from. While I’ve been working on these posts, I’ve also been working on posts about the emacs org-mode, and while they’re ultimately not directly connected, I think something like org-mode is a great boon to writers and information workers. Integrated systems that manage citations, references, and notes are essential, as well as other helpful features that might include managing output, structure, and version control.

I hack most of these features together in emacs with some help from LaTeX, git, and BibTeX, but I recognize that this isn’t ideal or for everyone. There are other applications that aren’t “information buckets,” but provide writing environments that aren’t hacked from programing tools (emacs) or desktop publishing tools (MS Word). For example: Scrivener that provides a clever way to write longer form documents with structure, and Celtex that provides all sorts of screenplay writing tools (outlines, storyboards, character databases) and script management tools. Celtex even calls itself an “Integrated Media Pre-production” tool.

I’m not sure that these are the ideal tools for this task. Any of them. I’m partial to my solution, but I end up having to do a lot of informal organization to make it all stick together. So I wonder, what kind of software do other writers to keep all their ducks in a row?

More later. Of course.

mcabber and IM

I’ve always rather enjoyed this post that I wrote about instant messaging programs. My issue is that I use IM a lot. A lot. I communicate with colleagues, friends, and frankly, if you want to get a hold of me, IM is often the best way to do this, and frankly for a lot of communications I prefer it to the phone.

Nevertheless, IM clients, on the whole, are mostly pretty bad. Right? They distract, they filter information poorly, they take up a lot of room on the screen, and are as a class pretty inconsistent. This is probably because no one really expected people to use instant messaging technologies in a serious way.

But here we are.

The leading IM client, really, for people who rely on this kind of thing is Pidgin (and the other libpurple based clients), which make it possible to connect to lots of different services at the same time but only have one roster/buddy list. It’s a good solution to the “multiple networks/accounts” problem, but the truth is the quality of the implementation varies, and the user interface is… awkward and rigid1.

There is, however, this program called mcabber that provides the ability to connect to one xmpp account, in a terminal-based (ncurses?) environment. It’s not perfect, nothing is, but its a lot better than the other options.

While I’ve not been able to switch to using only it for my IMing needs for a couple of reasons, mostly related to my xmpp server/provider, but I have used it exclusively for a number of days and the experience is pretty good. Reasons I like it:

  • Everything lives in one window, and chat windows have equal footing, like buffers in emacs, say. That’s really nifty.

  • The key shortcuts are really simple, and quite intuitive. Thats key in a terminal application

  • I can run it in screen, and pull the screen over ssh to my laptop when I’m not in front of my computer. Though xmpp is generally really great about multiple connections, sometimes it’s best to not have to deal with that fussing.

  • I like that it supports PGP encryption, though I don’t have anyone with whom I can encrypt conversations with, but that always seems to be a minor detail.

    Though, this isn’t to say that it’s all good. There are some problems that I’ve had. Though to be fair, my complaints here are much fewer than with most other XMPP clients, so that’s a good thing, right? Complaints:

  • No support for service discovery. Which means you have to install psi--basically--if you’re serious about getting the most out of XMPP. This is… unfortunate.

  • It takes a lot of work to get configured and get key bindings set up. I’m mostly of the opinion that it’s always best to give users a set of key bindings to start with and then let them customize as needed, and the default screen layout isn’t particularly useful or economical (put the status window at the top, and make it smaller, for starters).

  • It doesn’t support multiple connections/user-ids. This is a biggie, and while I don’t (really) object to the fact that it doesn’t support other protocols, I think the reality is that most users probably have and need to use more than one identity at once, so that’s a noticeable hole.

  • I’d also like an easy interface for producing system notifications give me a setting option to pile messages (username, excerpt of x characters, time) to a pipe (|) and I’d be very happy indeed.

  • I couldn’t decide if the fact that there was only one “text entry field” (mini-buffer) for all outgoing message buffers. Which meant that, particularly with scroll back, that it was easy to cross contexts unintentionally.

My last complaint isn’t so much a complaint about the software itself as it is a complaint about the instant messaging space in general. Basically, I think there has to be a way to filter this kind of communication. Ways to setup client-independent rules regarding statuses, auto-responders, and notification level. I’ve said that this should be “along lines of procmail,” but I don’t quite know what, even that, would look like. But someday, it’s coming, and I for one can’t wait.

But all in all. It’s a great program and you should check mcabber out, if you’re intense about jabber/xmpp and instant messaging (and living in the console).


  1. So there was a pretty notorious fork-threat in the Pidgin project a while back over a sort of deterministic user interface decision, which I return to every now and then as an example of both intra FOSS project politics gone awry, and user interface design gone awry. I’m not dredging up the flame war, because the truth is I really hate GUI applications writ-large, so on some level its nothing specific. ↩︎

Awesome Window Manager

Aside from doing semi-perverse things with my email retrieval system, one of my most recent technical/digital obsessions has been with a X11-based window manager called awesome. It’s a tiling window manager, and it’s designed to decrease reliance on the mouse for most computer interaction/system navigation purposes.

Unless you’re in the choir, your first question is probably “What’s a tiling window manager?” Basically the idea is that awesome takes your entire screen and divides all of it into windows that are a lot like the windows that OS X, Windows, GNOME, and KDE users are the same. Awesome also has the possibility for what it calls “tags,” but which are akin to virtual desktops (and I think of as slates) which make it possible to have a great number of windows open and accessible which maximizes screen efficiency and multi-tasking while minimizing distractions and squinting.

The second question you might have, given the prevalence of the mouse-pointer paradigm in computing lo these 30 years, why would you want a system that’s not dependent on the mouse? Long time readers of the ‘blag might remember some blogging I did earlier this year about the second coming of the command line interface. The basic idea is that the more you can avoid switching between the mouse and the keyboard, the more efficient you can be. Keystrokes take fractions of seconds, mouse clicks take many seconds, and this adds up. The more complex idea is that text-based environments tend to be more scriptable than GUIs and coded more efficiently with less mess in between you and your data/task. After all, coding visual effects into your text/word processing application is probably a sign that someone is doing their job horribly wrong.

One of my largest complaints about using GNOME is that it’s terribly inefficient with regards to how it uses screen space. Maybe this is the symptom of using a laptop and not having a lot of space to go around, but most applications don’t need a menu bar at they top of every window, and a status bar at the bottom of every window, and a nice 5 pixel border. I want to use my computer to read and write words, not look at window padding (I suppose I should gripe about GNOME at some point, this is an entry onto itself.) Awesome fixes this problem.

I’m not jumping in to Awesome full time, but I am starting to use it more and learn about it’s subtleties, and hopefully I’ll be able to contribute to the documentation of the project (it needs something at any rate). For a long time I’ve flirted with Linux, but haven’t ever really felt that it offered something that I couldn’t get with OS X, and this changes that pretty significantly.

One of the things that I need to do first is explore Linux equivalents to my remaining OS X-only apps. The most crucial is the news reader, I’m a big fan of NetNewsWire, and I’ve never used a news reader which can top it. As it turns out, between vim and Cream, I’m pretty set in the text editor department (though I need to port over the most important of my scripts and snippets to vim), and although Adium is a port of Pidgin, using Pidgin is painful by comparison, particularly in awesome.

But I have time. I’m doing this becasue it’s interesting interested and weirdly enough, it’s kind of fun.

That’s my story and I’m sticking to it, I’ll be posting more on the subject as I learn more.

beasties

This is the post I promised a few days ago about my linux/BSD/etc. quandary.

I have an old computer that is a handmedown from some friends who moved out of town and had (good for them!) bought an iMac. It’s 2001 vintage PC, branded HP. Say, 512 megs of ram, and a 1.8 ghz Pentium 4. In fact, it’s a pretty spiffy machine, for it’s day. I often think of PCs as being uniformly lackluster, but the truth is that I never had an overcharged machine. For instance, this PC has firewire. Firewire! I’m not sure that they’re putting firewire in PCs these days.

In any case, while the computer isn’t ultra spiffy by today’s standards, it’s not bad. Well, it’s not bad aside from the fact that Windows has… done what Windows does best: break, and crumble under the pressure of every day use. I mean the people I know (ok person) I know that uses windows with any consistency reinstalls the operating system with a degree of regularity that I find almost maddening (Hi C.!).

Anyway, I think if I install a more… lightweight operating system, something unix-y. And this post is half, me thinking out loud, and half me asking you all for help and opinions on the subject.

I might be able to put this computer to serious work doing something around here. One distinct possibility is that I’ll get it ready for my mother to use as her home computer, running mostly web things--email, surfing, IM--and what not. Also being able to run a few things in Wine might help her workflow out. That strikes me as being the perfect use for a straight up ubuntu install. I’ve also thought about Xubuntu, because it seems like it’s pretty suited to this kind of thing (reviving an older computer that doesn’t need to do any serious heavy lifting.)

The second thing I’m thinking of doing with this computer is to find some way of getting it to work (including boot up and all) without needing a keyboard/video/etc. So basically a server set up. I figure it would be the most efficient to be able to access it over the network from the computer that I actually use on a day to day basis. Mostly I’d use it for things like file serving, and backup, but maybe bit torrent and the like as well. Ubuntu would probably work ok for this (and I did grab a copy of the server version as well, if I want to try this. I also thought that trying to run FreeBSD might be sort of fun. I mean: a shell is a shell (I hear freeBSD doesn’t come stock with bash, sigh.) and you know that might be fun. And if I don’t get into graduate school, having unix experience, might be productive.

So I guess, your thoughts on Ubuntu flavors, or I suppose other linux distributions, and also, on FreeBSD if anyone out there in Internet land has experience, it would be great to hear from you on that.

Talk to you soon!

Onward and Upward!