Dead Ink Vinyl

Musings of David L Kinney

Archive for the ‘Community’ Category

Resolutions 2010

I had eleven resolutions for 2009 and I completed three of them. Let’s try this again, scoping each a little more broadly:

  • Learn one new language or development platform (Erlang, Lua, OpenCL, R are looking attractive)
  • Learn how to profile applications in a new environment (I’m thinking: dtrace)
  • Build and maintain a presence in the developer community (NSCoder, C4[4], and so on)
  • Contribute to an open source project

Written by dlkinney

December 30, 2009 at 10:12 pm

Posted in Community, Personal

Tagged with ,

Screen and my .screenrc file [UPDATED]

I was introduced to Screen — a terminal multiplexer — a couple of weeks ago. When I first tried it, I was mostly annoyed and set it aside. However, it came so highly recommended that I picked it up again and forced myself to learn enough that I could use it on a daily basis:

  • screen -ls (list screens)
  • screen -r (reattach)
  • Ctl-A c (new screen)
  • Ctl-A A (rename screen)
  • Ctl-A <num> (switch to screen)
  • Ctl-A d (detach)
  • Ctl-A M (monitor for activity)
  • Ctl-A _ (monitor for silence)

After getting those commands under my belt, I was very impressed and I use screen all the time now. However, a lot of Screen’s power comes from the customization of Screen through its startup files. Good information about startup files is scattered across the web, so I’ll share what I’ve put together.

Below is my ~/.screenrc file, compiled from the information at softpanorama, from Matt Cutts, from the Screen FAQ, and from the Screen manual’s command list. I’m using this on Ubuntu 8.10 servers over at Slicehost and on my MacOSX 10.5 laptop.

UPDATE: Added more comments around the termcapinfo setting that enables scrollbars to work as expected.

# For a complete list of available commands, see http://bit.ly/jLtj

# Message to display in the status line when activity is detected in a
# monitored window.
activity              "activity in %n (%t) [%w:%s]~"

# Detach session on hangup instead of terminating screen completely.
autodetach            on              # default: on

# When a bell character is sent to a background window, screen displays a
# notification in the message line. The notification message can be re-defined
# by this command.
bell_msg              "bell     in %n (%t) [%w:%s]~"

# This command controls the display of the window captions. Normally a caption
# is only used if more than one window is shown on the display.
caption               always          "%{= kw}%?%-Lw%?%{+b kw}%n*%t%f %?(%u)%?%{= kw}%?%+Lw%?"

# Select line break behavior for copying.
crlf                  off             # default: off

# Select default utmp logging behavior.
#deflogin              off             # default: on

# Set default lines of scrollback.
defscrollback         3000            # default: 100

# If set to 'on', screen will append to the 'hardcopy.n' files created by the
# command hardcopy; otherwise, these files are overwritten each time.
hardcopy_append       on              # default: off

# This command configures the use and emulation of the terminal's hardstatus
# line. The type 'lastline' will reserve the last line of the display for the
# hardstatus. Prepending the word 'always' will force screen to use the type
# even if the terminal supports a hardstatus line.
hardstatus            alwayslastline  "%{+b kr}[ %H ] %{ky} Load: %l %-=%{kb} %c  %Y.%m.%d"
msgwait               15

# Set message displayed on pow_detach (when HUP is sent to screen's parent
# process).
pow_detach_msg        "BYE"

# Set the default program for new windows.
shell                 bash

# Default timeout to trigger an inactivity notify.
silencewait           30              # default: 30

# Change text highlighting. See http://bit.ly/11RDGZ
sorendition           gK

# Do NOT display copyright notice on startup.
startup_message       off             # default: on

# Set $TERM for new windows. I have more luck with 'linux' than Terminal's
# default 'xterm-color' (^H problems). Comment out to use the default.
term                  linux

# Tweak termcap, terminfo, and termcapinfo  entries for best performance.
termcap               linux           'AF=\E[3%dm:AB=\E[4%dm'
termcap               xterm-color     'AF=\E[3%dm:AB=\E[4%dm'
terminfo              linux           'AF=\E[3%p1%dm:AB=\E[4%p1%dm'
terminfo              xterm-color     'AF=\E[3%p1%dm:AB=\E[4%p1%dm'

# Allow xterm / Terminal scrollbars to access the scrollback buffer. This
# enables the behavior you'd expect, instead of losing the content that scrolls
# out of the window.
termcapinfo           linux           ti@:te@
termcapinfo           xterm-color     ti@:te@

# Use visual bell instead of audio bell.
vbell                 on              # default: ???

# Message to be displayed when the visual bell is triggered.
vbell_msg             " *beep* "

Written by dlkinney

April 10, 2009 at 1:17 pm

Rubbernecking and storytelling

Several days ago, Seth Godin’s lead-in to a post conflating rubbernecking drivers with Internet trolls asserted:

People who wouldn’t dream of paying money to watch a snuff film are indulging their curiosity to see carnage on the side of the road and paying with their time and attention.

That’s a pretty dark interpretation of people’s behavior. Maybe he’s right that most people gawk at car accidents to fulfill a deep seeded curiosity about the macabre or forbidden. But since he doesn’t cite any research, there’s no support for his hypothesis. Therefore, I will put forward my equally unsupported hypothesis that paints humanity in a better light1:

Rubbernecking occurs anywhere there is a promise of a novel experience

I believe that humans are, at heart, storytellers. We crave experiences so that we can relate them as stories to our friends, family, and coworkers — or just to include in our self-narrative. Additionally, the experiences we have in common with others define our tribes and communities. Rubbernecking is an attempt to expand our experiences.

I can think of three separate cases that promise a novel experience:

  1. Unique events
  2. Educational opportunities
  3. Crowds

Unique events

While driving in Toronto several years ago, I got stuck in a four hour traffic jam. I’d missed my exit and was planning to get off at the next exit when everything came to a complete stop. We remained stopped an unbearably long time. People were turning off their cars. Young ladies were sun bathing on car hoods. Every once in a while, the cars would inch forward. Finally, after four hours of intermittently inching forward, I got to the front of the line where barricades had been erected across all of the lanes and the police were directing cars to the off-ramp one at a time.

Do you want me to continue this story? Do you want to know why the police blocked an entire highway and deliberately caused a 4+ hour traffic jam? What if I told you that the story doesn’t end with death or maiming — do you still want to know? Me too. I never did find out, though. Kind of a let-down, isn’t it? The story would be better if I could relate what caused the incident. I did try to see what was down the road — I rubbernecked. Wouldn’t you?

Educational opportunities

I read NTSB reports about plane crashes. Death! Carnage! Heaps of twisted, burning metal! Am I indulging a curiosity? Absolutely — but not the way Seth Godin implies. I’m a private pilot. By reading about the mistakes of others, I can learn from their unique experiences without endangering myself, thereby improving my decision-making and the safety of of my flights.

In fact, I have some of the same motivations when rubbernecking to see a car accident. What happened? How did it happen? What can I learn from that? I admit that I may be a rarity in this aspect, but it is a valid motivation and not at all driven by a darker side of human nature.

Crowds

On a childhood family trip to Yellowstone National Park, drivers were rubbernecking every mile or two. There were no accidents. People were slowing down and gawking out the window at the flora and fauna: bison, elk, deer, bears, plant re-growth after the fire from previous years, and (of course) geysers. And people would gawk at people.

We were alone on a road when we spotted a bear on the side of a nearby hill — or maybe it was just a big rock (it was a good distance away). We stopped the car, got out, and stood around to stretch our legs and gather more information for the bear/rock debate. After a few of minutes, another car came down the road and stopped. Then another. As cars came down the road, they would slow down — assumedly to figure out what everyone was gathered to see. Eventually, our family decided that it was a rock, not a bear, and we drove on. But as we pulled away, more cars were stopping at the site.

Nothing attracts a crowd like a crowd. The existence of a crowd implies that numerous other people have determined that something is of interest — don’t you want to know what it is holding their attention? What are they looking at? What are they pointing at? What are they talking about? I don’t want to be excluded from an experience.

So rubbernecking is natural, it’s occasionally valuable, it gives us material for storytelling and connecting with our fellow man, and it does not mean that you have a curiosity for carnage. Now move along, there’s nothing to see here.

1 If you want to spoil this fun of making un-researched and unsupported assertions and actually dig into the issue, try a Google Scholar search for something like “rubbernecking”.

Written by dlkinney

January 24, 2009 at 8:00 am

Posted in Community

Follow

Get every new post delivered to your Inbox.