An Ode to screen

Just a listing of the many ways that screen is indispensable to my way of using my computer.

The biggest thing is, of course, the fact that screen is detachable.  Start screen, start a program, detach screen while in the middle of doing something, log out, login later, reattach, program is just as I left it.  This works at a distance, too.  I can leave my home and go elsewhere (work, friend’s house, etc.) and be able to ssh to my home computer, reattach screen, and pick up exactly where I left off.

Second only to detachability is screen’s multiplexing capability.  A screen session can contain many different windows, each running a different program.  This allows me to have an entire workspace within screen.  I can have an editor in one window, working on some source code; a shell in another window, where I might be doing trial runs of the program; a web browser in a third window, which could be looking at some documentation; and so on.  My normal screen setup has 15 windows, which I use for various purposes.

I can specify what programs to run from screen’s config file.  So when I start screen, my default workspace is already seeded with all the programs I use regularly (text editor, IRC client, web browser, mail client, etc.).  I use this capability just to start some programs that I never even interact with, for example SETI@Home.  Running it within screen ensures that it’s running at all times (I always have a screen session running) and only one instance is ever running (I do everything within one screen session).

I can attach to the same session multiple times.  So my customary graphical workspace is three xterms, all attached to the same screen session.  This gives me more visual real estate, while allowing me to be very flexible.  The windows displayed by each of the xterms change depending on what I’m doing at the moment.

Screen understands several different character encodings.  I run all of my programs in UTF-8 mode.  When I’m attached to my local xterms, screen passes the UTF-8 characters straight through, because the xterms can handle it.  On friends’ computers, screen translates the UTF-8 into ISO-8859-1, showing all the characters it can and filling in question marks for those it can’t.  Likewise for my serial terminal, which uses a CP437 charset.  (I’ll admit that that last took some work on my part.)

I can also input most Unicode characters via screen’s digraph support.  Press the right escape characters, enter an RFC1345 digraph, and whatever program I’m currently using gets a UTF-8 character.  (This also took a little work—I had to patch screen to get digraph support for non-ISO-8859-1 characters.)

Screen keeps a separate scrollback buffer for each window.  I have it set to keep a very large number of lines, which has come in useful on several occasions, especially since you can search through the scrollback buffer.  (“What was the exact output of that command?” ::search::  “Ah, that was it.”)

I’ve used screen’s monitoring capabilities a lot.  It can watch a particular window and notify you when there’s new activity (“Oh, something happened in that log file.”) or when it’s been silent for a time (“Oh, that long-running compile is done.”)

Screen supports having a caption line across the bottom of the screen.  I use it to give me an omnipresent clock, as well as showing me info on the current window.  The capability also exists to run arbitrary programs and put their output in the caption.  On my laptop, I do this with information on the current state of its battery.

Instances of screen can be password protected, to prevent others from getting at your programs.  I find this feature useful when using screen in a semi-public area where I might need to leave the computer for a time.

There are some features that, while not mind-blowing, are just nice to have around.  Normally, when the last program in a window exits the window closes.  With zombie control, the window remains, and you can restart the program with a single keypress.  Very useful for windows dedicated to particular programs.

While I don’t use it regularly, screen’s multiuser support has been useful on a couple of occasions.  When doing some collaborative programming, I created a single, multiuser screen session, and all of us connected to it.  It proved very useful for sharing information among the group of people.  (“Just go over to window 7, where I’ll show you how feature X works…”)

There are, of course, plenty of other useful aspects to screen.  These are just the ones that I rely on or have found myself relying on.  I encourage anyone who uses a command line regularly to give screen a try.

For further information:


Trainsched Schedules

In order to use trainsched with the MTA’s schedules, I had to write my own programs to parse the MTA’s HTML schedule pages.  The results of that work are now on this website.  Share and Enjoy.


Odds and Ends

I was googling around the other day and came across this bus rider’s guide.  It’s got a lot of useful information in it, especially for people who aren’t familiar with transit systems.

The same session also netted me a set of good practices for transit web site design.  Guess who falls flat on almost all of them?

The MTA’s been rumbling about implementing a fare system called SmarTrip, which, I gather, is to be similar to the system DC has, where you pay varying amounts of money for the distance you travel and the services you use.  The MTA’s website now links to http://www.marylandsmartrip.com/, which is a completely useless website where almost every page is blank, save for the sitewide dressing and an “under construction” graphic.  Completely aside from the fact that it’s not 1995 any more, perhaps they should have held off on putting the site up until they could be useful with it?


Other Subways

From IRC:

<vees> http://www.fakeisthenewreal.org/subway/index.html
<knarphie> ya know vees, I really should send the guy a one cm diagonal line to be included as the baltimore subway

Sad, but true.


The Legend of Zelda: Oracle of Ages

Oracle of Ages is one of a pair of Game Boy Color games.  The other is Oracle of Seasons; each can be the sequel to the other, depending on which you play first.  I started with Oracle of Ages, finished it, and got a password to enter into Oracle of Seasons.  When I did so, I got a continuation of the story as the introduction to Oracle of Seasons.  Apparently, there will be several points where people will give me passwords to transfer back and forth between the games, to synchronize my actions between the two.  It’s an interesting system.

Gameplay-wise, Oracle of Ages is much like the other Zelda games I’ve played (Zeldas I, II, and III).  From what I’ve read, it has more in common with the N64 Zelda games, in terms of puzzle solving and so on, while Oracle of Seasons is more old-school.  I suppose I’ll see.

There were a lot of puzzles to solve, and a number of the bosses were more puzzle-based than skill-based.  Many were of the “hit it with a sword and don’t get hit yourself” variety, though.

One big complaint I had was that the format of the game didn’t really lend itself well to the Game Boy format, mostly with respect to saving.  Saving worked like the console Zelda games I’ve played—if you save within a dungeon, when you restore, you start back at the beginning of the dungeon.  Actually, it was worse than other games, because if you saved in the overworld, when you restored you’d be back at whatever point you entered the overworld, which could suck if you’d spent some time working to a particular area.  The specific reason that this is bad is that the Game Boy is a portable system—there are many cases where you might need to save and exit it quickly.  I play primarily on the bus and train, and I have to stop when it gets to my stop.  That sometimes meant losing some of the progress I’d made.

Oracle of Ages also contained my first real exposure to Zelda’s trading games.  My roommate informs me that they’ve been doing this a lot in more recent games, but I don’t remember much along those lines from the earlier games.  In order to get the Master Sword, you have to run all over the world trading key items for other key items in sometimes bizarre ways.  Get old mail from someone or other.  Give the mail to someone in the toilet and receive a stinky bag.  Give stinky bag to someone with a stuffy nose and get something else.  And so on.  I did have to resort to a FAQ for a couple of the trades, sadly.

So it was a reasonably fun game, but with parts that marred the experience, especially on a Game Boy.