Dual Head Setup

Before I made the switch to linux, my only computer was a single macbook. Great machine, and in addition to not being able to (really) use Awesome, I was pretty frustrated by the lack of screen space. I was (and do) need to filter through lots of different kinds of documents and I felt like I was spending half my time sorting through any of the several dozen (!) windows that I kept open. As a result one of my chief requirements for the new system was having the ability to run a 2 monitor (dual head) setup.[^DH] I was even willing to sacrifice [1] some raw power for this.

So here I was with a dual head setup, and a sort of lackluster idea of how to use all this new space, aside from the visceral knowledge that needed more room. I've tried a few things to try and use the space, but I continue to feel as if I haven't found the right way to use this space.

I should preface this by saying a word about my window management software: it revolves around the notion of "tags," which are similar to virtual desktops, so while I only look at 1-5 windows on each monitor there are many more than 5 windows open and running at anyone time.

My first attempt was to create task-centric virtual desktops, so that there were tags for windows that had to do with work, tags that had to do with fiction writing, tags for browsing the web, tags for chatting, tags for interacting with the system and so forth. This was an epic failure, as the joys of a multi-tasking operating system are that they allow you to have a number of different processes running in parallel, and if you have you window manager setup to constrain your to one task per screen then you've basically shackled your computer into only being able to do two things at once. Which is both distracting (as you end up hiding needed windows, or disregarding the established tagging systems. I also found that in an attempt to use both windows, I ended up using the middle half of each monitor more than I used the outer half.

My second attempt was to have a primary/secondary monitor setup, with my keyboard in front of the left screen which had most "action" related tasks (writing, email, etc.) and the right screen was for reference materials (web, chat, pdfs, etc,) and I've tried both organizing tags based on task/sphere, and also based on window type (so that "work" happened in more ad-hoc spaces). Neither works particularly well.

My current attempt is still largely based on the main/reference mode of operation, except I've made things a bunch less rigid, and mixed things up a bit to see if this makes things a bit easier to work with. I have background processes on the left monitors: email, web, file management on the left; org-mode files, and chat on the right. And then, I have writing spaces and adhoc workspaces on the left, with work and some project-specific workspaces on the right.

I'm not sure that this is the best thing. There's a dynamic workspace/window tagging library, but I haven't really tried it out, and I want to test things out on the laptop (one screen) first.

There's got to be a better way of doing this. On one level this is a problem of riches, (how do I use all this space I have), but on another it's a much more simple problem that addresses focus and the way that we present/organize information on our screens Thoughts?

Onward and Upward?

[1]It turns out that monitors these days cost a quarter of what they cost 5 years ago. In point of fact I was able to get both monitors and a new computer for what a single LCD cost the last time I had a desktop computer. Imagine that.

org system

The last time I talked about org-mode, I covered a number of my "beginner mistakes,", this time I think it'd be a bit more productive to explain how I'm actually using org-mode. For those of you playing at home this is one of those systems I talked about.

I'm going to try and avoid including bits of code/lisp in this post, as I don't want to confuse "what I'm doing," with "how I'm doing it." We'll get to that point in time, and there's plenty to talk about.

At the moment the features of org-mode that I use the most are:

  • org-agenda-mode
  • checkboxes
  • org-remember-mode
  • and org-mode outlines

I also store org-mode files in a git repository that lives in my home folder of all machines that I use with any regularity. I'm running emacs-23 (ubuntu package: emacs-snapshot), generally in server-mode, with two frames open, one has "the thing I'm writing" and the other has the org-mode-agenda and some org-mode file in the other window. [1]

System Layout

At the moment I have 9 org-mode files:

1. A file the novel project, that contains background notes, and outline of the story, as well as project management stuff.

2. A file that contains notes for blog posts. This is mostly organizational, and I just add ideas as I have them and check them off and archive them when I'm done.

3. A general "codex" file, that I dump links. I've had a file like this for a number of years, and I generally find that having a catchall like this is productive.

4. A general fiction file, for project management issues related to the fiction projects that aren't the novel. I'll probably split this up as needed in the future.

5. I have two files to manage web development/design projects that I'm working on for myself.

6. One file to manage my academic/research project. Includes notes/content as well as todo items.

7. A "technology" file that contains lists of tweaks and other technological projects that I need to undertake (like switching to OpenDNS).

  1. A file for work projects and notes
  2. A journal file, for tracking activities and accomplishments.

Org-Mode Features

The features that I use:

Outlines and Checkboxes

This is a no brainier, but it makes sense. Org-mode is at it's core an outlining program, but I think it is important to underscore this. It's an outlining program. use it to create outlines. All of the talk and videos that I've seen explaining and demonstrating org-mode talk about the cool agenda functionality, or the table feature (which are great tools) but this washes over the fact that it's an outlining program.

Why am I stressing this? Because the agenda commands and all the other functionality actually works better when you have a bunch of files with outlines in them. When you have outlines to deal with, you can tag the items that are truly "actionable" with "TODO" (or other action words) and include them with your agenda items. Or if an item/heading on your outline is time sensitive you can use the org calendar system to toggle deadlines/schedule points. And lists below headings can have checkboxes, which is a great boon, as well. But, if you work backwards and attempt to anticipate what agenda is going to do, then you're loosing some of it's functionality.

Brainstorm. Write notes. Add TODO flags to items that require attention. Add deadlines or schedule points if they're time sensitive. But don't organize the outlines for anything other than their utility as a reference document. Org-mode does the rest with....

Agenda

The org-agenda mode is the glue that makes the whole system work, as it aggregates items together from all your org-mode files. I've set mine up so that it displays a weekly agenda with all open TODO items. This way I can see everything that needs action, without needing to add deadlines to tasks which didn't have deadlines so much as "don't forget me" status."

There's all sorts of stuff that one can do with Agenda to generate views that filter based on tags or some such, but I've not gotten there. It's really flexible.

Remember

Remember is a feature that originated independently, but has been enhanced to work with org-mode. Basically you trigger it with a key-binding and it pops up a temporary window which allows you to select a template and then add notes and other items, trigger save, and it disappears and writes to the relevant org-mode file.

One of the great pains of digital systems for note taking and organization is that if you have an idea, it is often hard for us to find a way to record these notes quickly before the moment leaves us. Remember changes that, and it's great.


Next time? Code. Cheers!

[1]This terminology is going to drive me crazy. Basically, in the emacs world, "frame" refers to what most computer users would call a window. Ironically, in the awesome window manager world, windows are called "clients." As if this weren't enough, a "window" in the emacs world refers to any given division of a frame.

of the system

Systems. This is an extension of exploratory writings about information management, and related ideas. When I talk about "systems," I mean whatever technological or intellectual methods we use to store information and get work done. If you use Microsoft Outlook and Word with an Access database for citation management, that's a system, what I've hacked together for myself with git, BibTeX, emacs, LaTeX, org-mode, and Markdown is a system. There are others.

Many are pretty bad, as computer tools are designed with a task in mind, and the truth of the matter is that what most of us need isn't exactly what they do. With a few exceptions. Like a lot of people use Excel but most of us use to make lists of tabular data, but few of us use it to store numbers, let alone do any sort of calculations with that data. [1] And lets not get started talking about Microsoft Word [2] or any of the myriad of task management organizational software packages.

So when I say "the system" I'm really talking about that magic step between the world your trying to represent in some sort of software application. And we all do some crazy stuff here, like scheduling appointments to manage tasks, or using a system of filters and secret email addresses to take notes. Not that I've done either of those things. Ahem

This set of practices and informal logical rules are interesting, not intrinsically but insofar as they are at the heart of the human-computer (cyborg?) interaction. While this isn't specifically a problem of open source/free software/hacking, thinking about cyborg-issues dovetail with the software-freedom ethic of knowing your technology: so it makes sense.

Playing around with different systems, is one of those things I do, and have done for a while, but it's something that I try to avoid. Because it takes a lot of time, it gets in the way of getting things done, and while I derive some perverse pleasure in it, I like to keep from being quite so meta. But the sad truth is that as we learn about new tools, as technology develops, as our projects develop, as we learn more about ourselves and our work-flows systems need to change.

Sometimes this is as simple as moving some files around (changing the informal logic) or getting a new system and importing data. Sometimes it's more intense.

My blogging about org-mode recently, is as part of one of these system changes. I'd been using a private wiki for most of the last year, and while I really liked the system, it got to be non-trivial to adapt he system (my internal representation the organization of the files) to add content to the wiki in a way that made sense. Maybe other people are a bit better at this than I am, but after many weeks of just not touching the files, I realized that I needed a better system. So I'm trying something else. It's a good thing. Not to happen casually, though. The good thing that happens when you do a "system review," is you get a chance to clear out cruft bad or antiquated logic from your system, and that's almost always a good thing.

I'll be in touch.

[1]I'm speaking generally rather than specifically. I know lots of people use excel for what it was intended for, and maybe you've worked with different people than I have, but I'd say the vast majority of the spreadsheets that I deal with mostly have text in them.
[2]It's a document preparation tool. For laying out shorter documents. It doesn't have a lot of (good) support for structured writing, and it provides functionality for displaying and formatting your text, but it's sort of limited along the lines of things that help writing (search capabilities, notes management, block folding, and so forth)

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.

Open Source Userland

Free software and open source users/developers are a sort of evangelical bunch. I think a lot of this is because hackers what other people to use the software that they spend their time working on, and of course some of this is because of the ethical systems that pervade the free software movement. And of course we want to both expand the user base of certain pieces of software within the open source world (eg. getting vim users to use emacs) as well as getting people using proprietary systems (like Windows/OS X/Microsoft Office) to use free/open systems (like Linux/BSD/emacs).

The biggest challenge in the second project is usability, and I think both prospective users and developers (and people like me) often wonder "Is open source usable for non-technical users?" This is a question that I don't have an answer for. On the one hand, yes, GNOME--for instance--is really usable. I don't think it's particularly innovative software, nor is it clever in the way that OS X sometimes is, but it is on the whole very functional.

Very often open source, in its entirety, is judged on the basis of its usability, which strikes me as pretty ironic, as I'd wager most open source projects--and without a doubt the most influential ones--are not "user applications." In terms of importance, the kernels, the programing languages, the libraries, the servers, and the frameworks are way more successful, powerful, and robust than programs like "Open Office," or "GNOME," or even--frankly--"Firefox."

I suspect this is the case because lower level stuff is either to get right, and because hackers end up working with computers on a very low level, so it makes sense that the itches they're scratching with open source would work on a lower level. And the "cause of free software," is more directly served by these lower level projects: open source depends on users recognizing the value of hacking on code, which is more likely to be realized in low level projects.

Which makes the project of evangelizing non-technical users more difficult, because the argument isn't exactly "switch programs to (potentially) better ones," but rather "become more involved the technology you use," which is a much different argument. And I think the "usability" question often serves as point of mystification in this much different argument.


My original intent with this post to explore how some of the biggest open source user-applications were in fact sponsored by really big companies (in whole or in part). Novell puts some considerable resources into GNOME and KDE; Sun obviously backs Open Office; Firefox and Mozilla grew out of Netscape/AOL and get a lot of money from Google.

More than anything, I wonder what to make of this. Certainly there is also backing for lower level projects: Sun and Java/mySQL; countless companies and kernel development; 37 Signals and Ruby-on-Rails; and so forth, but it feels more substantial for user applications, somehow.

I wouldn't go so far as to suggest that corporations are attempting to re-mystify technology in open source. I think it's much more likely that business know that having viable desktop environments will be advantageous to them in the long run, and that since hackers are less likely (on the whole) to work in the user-application space key contributions of corporate-backed developers are more noticeable.

But maybe there's something else there too. I'm not sure, isn't the world grand?

Onward and Upward!

Linux Emergence

Here's a little bit about emergence/systems theory and open source, as promised in my `change process <http://tychoish.com/posts/theories-of-change>`_ post a while back.

I was reading this article about linux and complexity theory last week, which I think is a pretty good frame for any discussion of open source and linux from a systems approach. There are a few things that I had issue with. First, the article is 3+ years old, and so it doesn't have the benefit of seeing what's happened with ubuntu linux, netbooks, the AGPL, rails and web 2.0, let alone things like Drupal and the last two major iterations of Firefox, which for all their assorted faults have really changed the face of open source.

Secondly, the empirical study focuses on the kernel development, and takes the kernel to represent the entire Linux eco-system, which I think it doesn't do very well. Kernel development is really high level, really niche, and despite its size, represents so little of what people think about when they talk about "Linux." GNOME, KDE, the GNU Toolchain, X11, pyton/ruby/perl, let alone the superstrucutral elements that projects like Debian, Gentoo and Arch represent are really more important than the Kernel. Debian and Gentoo more or less work with various BSD kernels and given enough money--to inspire interest and caring--full BSD based releases wouldn't be technologically difficult. The dominance of the Linux Kernel in the free-operating system space is--I think largely the result of momentum and the fact that the kernel is damn good and that there's not a lot of a need for another kernel option.

In any case, the paper is in a lot of ways a 21st century review of Eric S. Raymond's "The Cathedral and the Bazaar" paper. Raymond's argument is taken as a statement in favor of bottom up organization (Linux, and the bazaar) in open source projects, and the author uses this insight to explore kernel development with some good-old systems theory.

While it's very true that there isn't a monolithic organization in the Kernel development, it's not exactly a free for all. Linus (or whoever is at the top of the project) provides a measure of top-down structure. This makes it easier for contributions to bubble from the bottom up. I think it's no mistake that many open source projects have "dictator"-type leaders that are pretty consistent.

This says nothing of the barriers to entry for most kinds of development in the open source world, aren't trivial (commit access projects that use non-distributed version control; eg. Drupal), let alone the burden of engineering knowledge for Kernel-level development, and other lower level projects. These--largely--informal standards none the less, constrain what happens on the kernel development.

Even if a lot of the day to day work on the kernel isn't done by Linus himself, his presence, and the importance of his branch/tree gives structure. Particularly before the advent of git, but even now. And I'm not saying that this is a bad thing--quite the contrary, top down forces are often a good thing--but I do think that overly romantic depictions of open source development as being bottom-up/anarchical aren't productive.

Doest his mean that Linux is a Cathedral? Or that it's headed that way? Not at all. But I don't think that the Bazaar is necessarily as bottom-up as Raymond (and those that have followed) thought it was. Open source is also much more commercial now than it was ten or twenty years ago, that can't not have an impact.

Just thoughts...

Onward and Upward!

Micro Blogging Review

Most of the time when something new happens on the internet, I'm hopelessly behind the curve. I only really figured out wikis a few months ago, and I was a bit too young to get blogging out of the gate. And I was late to live journal and even then it took me years to figure out why that was so cool.

But microblogging? I was totally there, I mean I wasn't there at the very beginning, but from the moment that there was any amount of steam behind twitter, I got it. Which is really cool, at least I think it is. Basically micro-blogging is a short, 140 character, "blog/messaging service" which combines the best parts of group chat and

And as you might know from your own experience or from my previous posts, I've tried a lot of services and have a few opinions about what makes a service better or worse. I can hear you saying, "What tycho opinionated?" but suspend your shock, and hang with me.

Twitter

Twitter's "killer feature" is the fact that there are so many users, and that it focuses on ease of usability, so people "get it" pretty quickly. There's a lot of power in the size of the community, and the fact that the crowd is no longer "just geeks." The cons are that they don't have IM access (which isn't good) and that it's all "too simple" so that it can be hard to track conversations and ideas and/or to have enough granular control over conversations.

Jiaku

Jaiku started in Finland, and bought by google, innovated in two big ways. First, it combined the lifestreeming (a la whoisi and friendfeed) with microblogging. Secondly, it has threaded comments, which make a lot of sense, and provide a helpful way to get around the 140 character limit. There are also "channels" which users can join and form to create (almost) ad-hoc groups based on topics and events to keep discussion of events out of "general feed."

Plurk

I have less experience with plurk than the other services. The features of this one seem to be: an innovative display (which I hate) and a greater focus on conversational threads, but I think the Jaiku solution is better, frankly. Also there's this "karma" system which I think is clearly a cheap ploy to get people invested in their Plurk activity, but it's too transparent and makes me feel like I'm in a game theory experiment which isn't cool at all.

Facebook

Largely irrelevant, to my mind, but facebook has had "status" for a long time, and this is basically a microblogging feature. It now has comments, and isn't prefixed by "is" (though for a while, there was some humor in how people used or didn't use the leading to be conjugation.) I think as a serious microblogging competitor, it doesn't really pan out.

Pownce

Pownce, is nifty, and as of today, has file sharing abilities that other services don't have. That's cool. Pownce is also the only one that I know of that has abandoned the 140 character limit, which I'd throw my hat behind. It also has threaded conversations, but I think jaiku's implementation is a bit better. There's IM but it's not incredibly intuitive. It's been a while, which brings me to the major down side is that despite having a semi-compelling feature set, the community has never been that large or active, or grown beyond the usual core of early adopters (etc.) that I've grown used to seeing everywhere. If we're just talking about features though, I think pownce has a lot going for it, unfortunately this isn't a features game.

Identi.ca

Clearly this is where I am right now. Fundamentally, I'm not sure if the laconica software solves (m)any of the problems with twitter. For the moment it uses a CMS rather than a messaging model, it doesn't have threaded conversations (really), the graphic design/theme needs a good once over, and there isn't that huge community that twitter has going for it. The people who use identi.ca tend to be really into it, and that makes up for the relatively small size. It helps that there's a real-time push-based IM/xmpp connection, and the scaling problem is solved by making growth a horizontal (federation) rather than a vertical (architecture/infrastructure) problem.

So that's the major players, at least of the open networks (not counting yammer, say) and of the sites that I've had any real interaction with. The most interesting thing about this is that it's all going to be different in six months or a year, and it's cool to be here now to watch as things unwind.

Open Source Work

So I may have my beef with with the software as freedom, [1] none the less I think we can learn some pretty interesting things about freedom and politics from thinking about what open source means. In this vein recently, I've been thinking more about the economics of open source, and as I'm prone to an interest in creative business models that find interesting ways to generate income in unique and special ways. Here's some thoughts on the "politics/economy of work in open source."

On some deep level open source software resists the traditional scarcity economic model. There is no property, intellectual or otherwise, that you can exchange for money in a way resembling the normal way. With that option off of the table the open source community has to come up with other ways of doing business, and because scarcity (in another sense) is the mother of creativity, what folks in the open source world do to make a living is pretty interesting.

There are a few of major ways that people in the open source community make money:

1. Software-as-Service: Rather than sell people software, companies sell service agreements. This is nifty, because it lets groups of people get support for open source, it's cheaper for users than buying software and service contracts, and also it means that service based businesses are smaller, because it's more efficient to run a smaller company, and because anyone with the right skills can provide the services and not just the copyright holder for the OS. So customers get a more tailored experiences. The con, is that the better software is, the less people need support for it.

2. Custom programing. Basically individual programers consult with users to develop custom solutions around people's needs, using open source tools. Ideally some of what people write gets contributed back into the repositories (as libraries/tools), and this is particularly suited to very modular/adpatable projects like drupal or debian

3. Certification. A company/programer reviews the components and develops an independent release of an open source product that they've certified. The best example of this is the RedHat certified linux versus Fedora Core. Which is mostly useful in the "enterprise world."

4. Service Software. This is a mashup of other models, and I think it better to lead with examples: Wikimedia/Wikipedia/Wikia and DabbleDB andsmalltalk/seaside. Basically, a company uses an open source product to develop a service which generates income via subscriptions, advertising, and donations, which supports developers who contribute to the core project.

The most interesting effect that all of these models (but most clearly in the first two) have is that money isn't being exchanged for "a thing," but rather for work.

Which when you think about it, after we remove a few layers of mystification around "intellectual property," the only thing that's truly scarce is labor. Folks in the open source movement have had to realize this, and I think the ripple effect of this could be really profound. More important than even the "open access" to source code.

Twenty years ago (or more) having open source code was really rather important, but even then and more so now, open source code wasn't a great benefit to most users. The number of linux users who've ever looked at the kernel source is probably pretty small. Thus I think it's not a stretch to say that the ideology of open source (as opposed to free software) is as much about pushing further a different way of thinking about work and "ownership," as it is about "freedom" or some more specific technological goal.

Thoughts? Reactions?

[1]My father neatly summarized my critique as one against "lifestyle politics," which is apt. I think the problem in this case--like many--is one where personal beliefs and actions are in themselves thought to have a concrete impact on a larger political/economic situation, when I think politics happens at the next stage where you take your personal experiences and situations and work to influence/empower others. That is, if you just use free software (and refuse to use non-free software), you will do nothing to undermine the commercialized software industry, but if you use free software and you contribute back to the projects, and you help other people use free software, and you use free software to contribute to other efforts/projects things that is (potentially) a powerful political act. Potentially.