Awesome Problems

This is a continuation of my earlier post on the awesome window manager read there for the background. I’m going to focus on some of the challenges that I’ve had trying to use Awesome.

Applications made for Awesome

The truth is that most (linux) applications work pretty well with awesome, so linux users won’t need to find new programs. GNOME and KDE apps all work fine. Having said that there are some applications which are more suited to the “Awesome” environment. Generally anything that runs in the terminal is fair game. That means mutt for email, vimperator for firefox, mcabber for jabber (but there are some issues here). Terminator is my favorite terminal/console program. Irssi for IRC. Vim as a texteditor.

That’s a good place to start as any, but I’m sure that there are other apps out there that I’m missing. Your thoughts and suggestions of cool command line apps is always appreciated. Non-Awesome apps that I find myself using with awesome include Cream, and Pidgin.

The Scripting is Hard.

This is mostly a whine, and something that I can get over. Ideally once I get this to work, I can save this Lua file and make awesome work wherever I need to in no time flat, but it’s a lot to get the brain around. I think it might help if there were more examples of Awesome configuration files to ease the tradition. Furthermore, I think it might also be helpful if there was a structure for multiple config files, or an allowance for “sourced” files (a la mutt/vim/bash). Basically I think it’d be cool to have a “widgets” file and a “tag file” and a key-binding file. Or at least have the option of such. This would make tweaking the config file much easier, and give some structure to a chaotic system.

Notifications

I’m a big fan of growl, the notification framework for OS X. which makes it easy to get notifications if you have a lot of windows open, have things running in the background, or need to track things running in the background. I haven’t found an equivalent solution, though I’m sure something exists.

Things I haven’t figured out yet:

  • I want to be able to assign firefox to only open in (multiple) selected tags, but not in others, and I’m not sure how to make this work.
  • Some sort of menu of currently running applications that would let users select a running application/client and jump to the appropriate tag. That would be awesome.
  • Using this configuration file, I can’t get the pidgin (or any other) system tray icons to pop up. Weird.

The truth is that Awesome pretty much does what you want it to do, and there aren’t any real serious bugs or oversights. Part of this is Awesome’s success at having a very clear and limited scope, and part of this is the fact that just about everything that Awesome doesn’t do, you can use the existing tools from GNOME or KDE (the more typical open source desktop environments.) But I think it’s useful to at least make note of the frustrations, if nothing else so that people newer to awesome than I don’t feel so lost. It’s normal, and I think (hope?) it’ll get better.

iPod Touch #2/Phone

So despite being a huge geek and pretty technically savvy, I’m not much of a gadget person. I have a cellphone--but who doesn’t these days, and mine’s 3 years old and seems to only barely have an address book--and an iPod, but it’s old reliable and not sexy. The iPod touch that I got as part of a promotion when I got my new computer sits unused most of the time.

The thing is, that my cell phone contract is (blessedly) up in March and I’m beginning the long slow slug towards deciding what kind of phone I should get. I’m slow on the decision making process, and I thought it’d be a good idea to get started now. It’s of particular interest because my phone usage has changed dramatically recently. I’ve gone from using it a few times a month to being on the phone for an hour or two most days (and sometimes more.) And since I even have a calendar now, I think something more robust is in order. Basically this boils down to iPhone or BlackBerry (or Google Andriod). Admittedly this doesn’t really cut out any option other than the OpenMoko (which is ironically more expensive and I don’t think quite production ready.) We’ll start with the iPhone, vis a vis the ipod touch:

While I was initially optimistic that the iPod touch would become more useful as applications matured, and people (myself included) developed workflows that incorporated the device. As it turns out, I’m not sure that this has really happened. Applications seem to be: well intentioned but missing the extra-zing that would make them really amazing, or they feel like some Suit said “iPhone app, we need one of those,” and thus they place more emphasis on the existing than on the being useful. And I’m not going to lie, I haven’t really adjusted to the virtual keyboard. It’s functional, but I think only barely. So while the iPhone is very sexy, and the obvious choice, its not automatic.

Another anti-iPhone factor is that I’m generally avoidant about syncing my iPods and tend to go months without syncing them, and I fear that this might really cripple the the utility Particularly in a couple of months when my iTunes library once again outgrows my hard drive. Oh, and did I mention that I already have an iPod?

Right.

At the same time I’m pretty impressed with the upcoming BlackBerry Bold Hardware keyboard, an established platform, good hardware? Blackberry’s can manage background processes, and they have good XMPP/Jabber/IM email support, which is, most of what I’d want to use an internet capable phone anyway.

I hadn’t really considered the Google Android phones a viable player, and I think largely they aren’t. I don’t suspect the hardware will be there by March or April of 09, and while I like a lot of the idea (from what I’ve seen) of Android, the truth is that I haven’t seen much. Maybe this is because I don’t follow these things, but I think if I’m worried about the ipod for not being developed enough, then that’s going to be an even bigger barrier for Android.

There’s a long time between then and now, so this could all change. Clearly I’m leaning BlackBerry, but I’d love to hear what you all are using.

Onward and Upward!

Awesome Thoughts

I’ve been meaning to write a post about awesome for some time now, but I always seem to have a problem figuring out how to approach awesome. In part because I feel like an utter newbie, and in part because it presents such a radically different way of thinking about computer interaction that I don’t really have a good way of explaining it or my issue. Not only does this make it difficult for me to figure out what I need to do, but it' makes it difficult to contribute to the project by working on the wiki (which I think needs to be done.) So I’m going to just start at the beginning. Expect that this will be an ongoing series.

What is Awesome

Awesome is a piece of software for operating systems running the X11 window server (Unix/BSD/Linux)1 that controls and determines how different clients (windows in the parlance of most systems) are displayed and allowed to interact. Unlike most other window mangers, Awesome tiles windows, so that the entire screen is used. No space is wasted.

Why is Tiling Good?

Using all available space with tiling seems like a good idea--or at least not objectionable--until you realize that if all windows are “tiled” until all space is taken up, you’ll probably realize that, depending on your monitor size, as soon you hit 4 or five open windows, everything gets too squished for words. And you can’t “minimize windows” in the conventional sense using awesome, so what gives? Tags.

Tags equate, roughly, with virtual desktops, as provided with OS X’s “Spaces” or the virtual desktops that KDE or GNOME have. Virtual desktops/tags “multiplex” the desktop enviroment so that rather than having to cram all your windows into one “screen” you can cycle between different virtual “slates” of windows. Go to an Apple store and get someone to show you a demonstration of “Spaces” if you’re still confused (or find a video of it on you tube.) It might be the kind of thing that you have to see to understand.

In any case, awesome allows for a really large number of tags. And each screen has it’s own set of tags. Typically you have 9 tags per screen, but it’d be possible to have more. And there are all sorts of things you can do to tags, like assign certain applications to only open on certain tags, assign certain window tiling patterns to certain tags.

So that’s all?

I hinted to this in the last section but the environment and interaction in awesome is entirely scripted in Lua. While Lua presents yet another scripting language that I don’t know, it’s clear even to me that there’s a lot of flexibility in this approach. While you sacrifice something by not being able to dynamically adjust the settings, the extra control over shaping your interactions between the window manager is really cool.

What makes this even more cool, however, is the fact that any action, can be bound to a key command or group of key commands. Any window management task. Which means that the only need for a mouse are for very clearly “mouse related” application specific tasks. Which means that you don’t need to use the mouse for very much. Less mouse use means better ergonomics and better user efficiency. Also, awesome is very “lightweight,” and runs very fast because from a computing perspective it’s very minimal. This is a good thing.

Ok, that’s all I have for now. There’s more, so stay tuned.


  1. There is a package in MacPorts, but I can’t get it to install, and since OS X doesn’t really use X, I’m not sure how it would work, but I’m sure it would work with GUN-Darwin. ↩︎

Linux Update

So I, um, bought a computer last Friday.

People who followed the lead up to the purchase of my current computer--which took six months, or a year depending on who you ask--will be surprised that this happened so quickly.

For a while now I’ve wanted to have a computer that would be able to always be on so that I could download big files when I needed to without needing to fuss with making sure that my laptop could be on all night, or similar such concerns. I wanted to have a computer that I could add cheap drives to as needed. I want to be able to have a computer connected to a couple of IRC channels without needing to worry about my computer dropping on and off-line constantly (which is a politeness that I worry about.)

The thing is that it never seemed feasible. Macs are expensive computers, and this wasn’t a premium sort of use case. For many years of my life I was really mobile and having a desktop computer never made much sense. Now that this new job has started to settle down, and as I’ve gotten more into linux, it’s becoming more and more clear that having a desktop computer with lots of screen space is going to be really valuable to me in this next stage anyway, and the truth is that I spend a good deal of my computing time (with my laptop) at my desk, so a desktop made a lot of sense.

And with this growing interest in open source technology/community/history it makes a lot of sense to gather some greater familiarity with the environment. So between the new usage profile, the fact that the hardware isn’t nearly as expensive in practice, and the fact that having a linux box would be a good ethnographic experience, I just hunkered down and bought it, after only a few weeks of dithering on the subject. I even splurged and got a second monitor so that I could run dual monitors, even so it cost less than the souped up MiniMac (which is sans monitor). I’m psyched.

While I’ll spare you the unboxing photos, I think its highly likely that I’ll be writing about my experiences with this new computer as I settle in. Stay tuned…

Calendar-ing

I remember once in high school (lets call this 2003/04) I bought an 8.5x11 paper calendar. This was after the age of PDAs (indeed I think I had a PDA at that point), and damned if it wasn’t the best calendaring experience I’d ever had. I kept track of things, I knew what was going on beyond the obvious, it was pretty good.

Other than that, I’ve not really (until now) used a calendar in my day to day work. I have a good memory, and pretty simple commitments, so it’s never been a big deal, and most calendaring tools kind of suck. Actually, really suck.

Now mostly, I could care less, except I have this job now, and the scheduling is really complex. I have meetings with clients, I have intra-office meetings, there are things I have to schedule with other people. It’s intense. So I’ve been trying to figure out what to use, how to connect with other calendars, and generally how to make it all work. I’ll tell you what my uneasy solution has been, but I’d love to hear what you use.

Chandler

The Chandler Project is a really pretty darn interesting open source program. It’s written all in python, it’s designed for collaboration and uses all the open standards. It has a really interesting and useful tagging system. It has a feature-loaded (and not annoying!) web interface that compliments the desktop experience.

And despite this it’s kludgey. It’s not peppy, it uses it’s own paradigm, and like all multi-platform software, it ends up looking just a bit foreign on all OSes (though I’ve not worked very much with it on linux, so to be fair, it might seem less out of place.)

Still, Chandler has become my “home” Calendar Application. There’s something nice about the way that it syncs to Chandler Hub, and all the cool things I mentioned above. And I like it’s dashboard a lot. When I started doing this job, I went from being able to handle a month’s appointments on an index card (or equivalent) to having to having to keep track of tasks and meetings in at least 3 time zones, and Chandler gives me enough flexibility and power to be able to do this without getting in the way.

ICS format

I think the last time I tried to use calendars on the computer, it was before people were seriously using a standard format. So you’d spend a lot of time putting your data into one program, only to have it die a horrible death, or discover something even better and then be stuck in your old program. Not so any more the .ics format is used by (nearly) all programs and by google calender so you can subscribe and sync calendars to your hearts content and it will all work. In all of your programs. Which means, you don’t need to chose the ideal calendar program, as long as it supports .ics files.

iCal

I’ve had a pretty tortured relationship with iCal, Apple’s stock Calendar program. In previous versions of the OS it used to be really crappy. And while it’s much better now, there’s nothing special about it, and it’s just a bit too hard to use it to enter events, and it’s task management is farcical.

Having said that it looks really good. Before you laugh at me and call me an apple fanboy allow me to be clear: data visualization is 60%-75% of a good calendar program (with the rest being performance and data entry/manipulation). The whole point is to be able to see what’s going on throughout your day/week at a glance. Good visuals are key.

The great thing, is that with Chandler Hub / Google Calendars and the .ics format, you can use both programs and still keep all your data together pretty seamlessly

Ideals

Like I mentioned earlier, I’m open to hear what other people use. At least for the moment I’m reasonably happy with what I have. It might be nice to have better command line access to be able to quickly review upcoming appointments and enter new tasks, but that’s mostly a pipe dream. Is there something I should be looking for that I don’t know? Other cool OSS projects that I’ve missed?

Onward and Upward!

Why Are we Still Using Passwords?

So, I was tooling around the internet (it’s my job!) and I came across yet another website that wanted me to “create an account” in order to do something that I wanted to do. And so I did. I mean, this is what we all do on the internet, right?

And then it struck me--a bit late--that this was patently absurd. It’s already a little odd/annoying that seemingly every website on the internet forces us to create and manage a new account/identity, let alone multiple identities on the same service. I mean no one has more than one twitter account, right? And nearly every account that we make with every service has it’s own “identity” and password.

Which means, practically, that we all have (at best) two or three passwords which are mildly to moderately secure, and we use those over and over again, and rarely change. Which is not secure at all. But it’s also a problem if we use passwords that are really secure and then can’t remember them. Solutions like 1password are great, and help those who want to be really secure with this problem, but this really just treats the symptom, and not the problem that a user-generated password is the way to find security. And while passwords are better than no passwords, there are better ways.

There are, as I see it, two solutions to provide better user security on the internet:

  1. Open ID. This is a protocol by which users can create an access an account on site A by signing into and verifying their identity with site B. It works, and it means that we end up signing into fewer sites and have fewer versions of our passwords in circulation.
    • This works best I’m convinced, if we use big openID providers like Flickr, Blogger, and LiveJournal, and then delegate that openID to a third party website (a domain that you own, say), so that if your account ever gets compromised/abandoned, all the sites which depend on that openID aren’t compromised/abandoned as well.
    • You wonder how this identity can be trusted? This is really an existential concern more than a pragmatic one because OpenID is no less legit than providing your (fake) name and (freely available) gmail email address.
  2. Public Key encryption. Using PGP/GPG the internet should develop some sort of handshake for the web where by, we sign up for sites, upload a public key, and then when we want to sign in the server generates a dynamic string and encrypts it with our public keys and sends it to us. Our computers then ask for our key pass-phrase (or not), decrypt the string, and send it back. The server compares what we send to what they sent, sees that it works, and then lets it in.
    • This is really secure, particularly if the handshake happens over SSL.
    • This is relatively simple from a computer science perspective. All that really needs to be done is) write something sexy that makes the UI work, and then get Google or someone to start using it. Everyone else will follow.
    • It’s subject to man in the middle attacks, but then, everything is, and unlike a password that you only have to “hear” once in order to steal, guessing someone’s private key, based on only a few encrypt/decrypted strings is computationally (I understand) damn hard.

Who’s with me?

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.

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. ↩︎