Image 01


beyond the Kuiper Belt, over the sea

Archive for the ‘computers’ Category

Stupid bash tricks

Thursday, December 13th, 2012

Oh, hey, I have a blog. Who knew!

So, let me cross-post to it.

Stupid bash tricks with Kit La Touche!

When you want to run a long-running task in a terminal, and leave it and do other things, but not lose time between when it finishes and you check it, it’s time for audio!

So end your processes with this little snippet:

(some command); if [[ $? -eq 0 ]]; then echo ^G^G^G; else echo ^G^G^G^G^G; fi

(Remember, those are literal control-g bell characters. You get them by typing ctrl-v ctrl-g. There are other ways to make them that are easier to copy-paste, but this way’s easier to type quickly.)

That’ll ring the bell three times (good and attention-grabbing) if you succeed, and five times if you fail (even more attention-grabbing!).

The semi-colon after your command makes this run whether the previous command succeeds or fails; it’s the simplest way of chaining together bash commands. I’m writing this explanatory note because I’m so in the habit of chaining them with && (which makes the next command only run if the previous succeeded, through the magic of booleans and exit statuses), that I would might do that by mistake if I didn’t write out my rationale!

If you’re running it in a screen session (why aren’t you running a long-running process on a machine you’re ssh’ed into in screen?), then you may need to activate the audio bell instead of the visual bell. In which case, a quick ^a^g should toggle it on.

Tonight’s stupid bash tricks brought to you by insomnia and itchy mouth-stitches.


Sunday, October 21st, 2012

So, John recently showed me this cool service, Foward. They are useful for two main things: showing off your development on localhost to people on the other side of the NAT, and developing on localhost with calls to external services that need to then call you back.

Basically, it’s just a reverse proxy.

So, without intending to steal their thunder (they really are very full-featured—take a look), here’s how to make a bare-bones version of this yourself.

What you’ll need:

  • A domain name. I’m using, of course.
  • A webserver, with proxying capability. I’m using Apache, with mod_proxy.
  • SSH keys (not strictly necessary, but it makes it all much more convenient).

So, there are two components to this: the reverse proxy on your webserver, and the script that makes an SSH tunnel from your computer to the webserver, which the proxy then forwards to.

Both are really super simple.

Here’s the Apache config:

<VirtualHost *:80>
ServerAdmin webmaster@localhost

ProxyPass / http://localhost:8001/
ProxyPassReverse / http://localhost:8001/

The port (8001) is arbitrary; I chose a high-numbered port that I was unlikely to use for anything else. The ServerName is also just an example.

Here’s the script to run locally to connect:


ssh -N -R 8001:localhost:$PORT

The important part of this is the -R 8001:localhost:$PORT, which handles creation of the tunnel. The -N just keeps it from making a shell on the server when you run it.

So, an example of use:

Start your Django local development server:

$ ./ runserver

This is running on port 8000.

Run the forwarding script, with the local port you’d like to make externally visible:

$ forward 8000

Wait a moment for it to connect.

Go to in a browser, or better yet, direct someone elsewhere to do so.



Sunday, July 11th, 2010

So, last night, TN ground to a halt because of a failure in the backup system. Yay, I have backups. Boo, the drive they’re on died, thus failing to mount, and the backups went, due to a quirk of my backup system, to the HD with the root of the filesystem. Filled that up quickly, it did.

So, resolved. No backups for now, not until I pick up a new TB drive.

Internet Celebrity

Monday, June 21st, 2010

The internet is a weirdly wonderful place sometimes.

I was playing TF2 last night, and first off, I ended up playing with some of my internet idols: Lore Sjöberg and Mark Rosenfelder. I knew I was playing with Lore—both recognizing his voice and having his steam username. But when I was playing as a medic and healing someone with the username Zompist, I knew it was Rosenfelder, and was excited.

And the internet makes that kind of contact easy—we were all there to play a game together. I just happened to wander into the right place. It’s not like there was much meaningful communication, as we were mostly focused on the game, but that’s almost the point. It was casual.

Later, with different people, there was another weird and awesome moment. In an arena game, it had gotten down to a Sniper and a Heavy. Without words, they faced each other and the Heavy swapped to melee. So did the Sniper. And they duked it out hand-to-hand. The Heavy even gave the Sniper his Sandvich.

OK, that paragraph won’t mean much to you unless you know TF2. But it was cool.

On another note, I’m increasingly thinking about grad school and what I’ll do there. I’m quite excited. I have an apartment, I have friends, I have research questions. The latest notion to pop into my head is that twin languages are really interesting. We’ll see if I keep at that, but it serves as a good reminder for me of all the strange little corners of human language that don’t get enough attention.

San Francisco

Tuesday, March 30th, 2010

Lightning trip to SF for a job interview. This is a truly wonderful city; it has what I like about NYC, offset with a certain undefinable Pacificness.

The company makes browser-based games, particularly Facebook games. (remember when it was The Facebook? Yeah.) I’m particularly curious about their game design process; I can code, sure, but with the years I’ve put into thoughts about gameplay and setting design, I’d like to get to try my hand at that, too. It has been implied that I might. We’ll see. Updates as I have them.

Oh, also: Facebook as medium for ARGs? How do you, should you, monetize that? Molly, we should talk about this.

Google Wave

Thursday, November 26th, 2009

Is still cool. I’ve got a pile of invites; anyone want one?

(Since people keep asking: Google Wave is not, in and of itself, anything new.  It is, rather, a beautifully conceived [though not yet quite fully implemented!] melding of existing technologies.  The tag-line version is that it is a integration of wiki, IM, email, and collaborative document editing, with line-item threaded responses and real-time typing from other users visible.  Many people balk at this last point, but it’s (a) really surprisingly useful and makes communication a lot more like, well, real conversation, and (b) eventually going to be configurable.)

Droid Review Addendum

Wednesday, November 25th, 2009

The inimitable @andrewa121 pointed out that the iPhone has greater extended-latin input abilities than I had ascribed to it; he suggested touch-and-hold to get options for accented characters (which is exactly what one does in Android 2.0). I would like to state for the record that I had tried this unsuccessfully on an iPhone 3GS prior to writing the last post.

Motorola Droid Review (finally!)

Sunday, November 22nd, 2009

Well, I’ve had this phone for a bit now, and thought it time to give my thoughts on it. They are basically positive—if you’re a nerdy guy, this is a good smartphone for you.

The pros are good pros for me, and the cons are cons that don’t bother me, but might be bad for other people. I like the speed, UI, option for on-screen (for general use) or slide-out (for intensive, or SSH, use) keyboard. I like the selection of apps (by which I mean that there’s a good, free, SSH app, and then other, very Google-oriented apps, and a Pandora app).

I like the battery life, I like the resolution, I like the camera. I like running six different apps at a time, and I still like the battery life.

I think that the shape of it is very male, it’s a little thicker than I’d like (for fitting in my erstwhile cell-phone pockets), and many of the apps seem buggier than I’ve seen on the iPhone—but they’ve yet to be destructive bugs. Mostly, the Twitter app I use complains that it needs to force-quit a lot, and then doesn’t, because, actually, it doesn’t need to.

This point is a slight win for the Droid over the iPhone: it can input extended latin characters quite easily, and — and … particularly, but it doesn’t have the fonts to display weirder Unicode, like ♆.

It can’t (yet) play arbitrary Flash embeds, so I can’t watch ZP on it. But it can catch YouTube links and redirect them to the YouTube app.

In the end: nerdy guy, yes. Anyone else, probably not. Price is completely equivalent to the iPhone, in terms of data plan as well.

New phone

Sunday, November 8th, 2009

Well, I feel like I’m officially in the future, now that I have a smartphone.  I got the Droid, a bit of nice Motorola hardware running Google’s nice open-source OS Android, and carried by the icktastic Verizon.  So it goes.


Wednesday, November 4th, 2009

I spent much of today rewiring the house (with my dad’s assistance, or, more accurately, I was assisting him).  Lots of drilling, crawling in the basement, getting dusty, trying not to inhale fiberglass insulation.  I found it quite fun, but it’s not a usual thing for me, which I suppose makes a difference.  But there was something exciting and satisfying to that kind of work—a nice combination of manual work, and basic network set up of a sort familiar to me.  Satisfying work is satisfying.