emacs / DrScheme keystroke of the day: kill!

C-M-k: kills the s-expression to the right of the cursor point. This is really useful in parenthetical languages like Scheme, since it further reduces the need to count parentheses.

But speaking of keystrokes, I should lay off typing for a little time; my wrists have been itching as of late, and I think I’ve been overdoing my keyboarding. I’m back in LA to attend Ken’s wedding, so I should use this time to get away from the keyboard. But I’m typing at this very moment! But I can’t write what I’m thinking without typing… Argh… C-c C-c C-c C-c…

reading papers: Exploring the Design of an Intentional Naming Scheme with an Automatic Constraint Analyzer

Notes to self on http://sdg.csail.mit.edu/pubs/2000/INS_ASE00.pdf. I’m revising this as I read more.

Shallow summary: the authors use Alloy, a model checker, to validate the design of the Intentional Naming System (INS); along the way, they show that INS has flaws in it. They use Alloy as a counterexample generator and as a tool to explore INS’s design.

What questions does the paper ask?

* When does INS break?
* When does it work?
* Can we use the model to describe general properties for any intentional naming system?

Why is this novel?

* It’s another data point showing that model checking can be used effectively in real world applications.
* It shows, in particular, that Alloy can handle the modeling of complex data structures. This is a new application of Alloy to a recursive algorithm (Lookup-Name) that has not been done before.

learning to play wisely

I just played another Go game with Guillaume. One of the problems I have is that when I see a ko that I can fight, I’ll rush into it like a lemming.

It must be exhausting to play me sometimes.

I have to stop fighting just for the sake of fighting. Playing games is not all I’m doing for the summer. I am getting a Nintendo DS tomorrow, though. Hmmm…

In retrospect, I suppose I am playing too many games. The days here at Brown have been a lot of fun, but there is serious work I am trying to do. (Or am I trying to be serious about my work?) I’ve been fighting with PLT Scheme’s module system; who knew that loading a module could be so frustrating sometimes?

The issue I’ve been seeing involves trying to erase lexical scope and inject modules through the blood-brain barrier that is PLT Scheme’s evaluation REPL. DrScheme likes to fight back, and I find myself very exhausted and writing error prone code.

In fact, my lexical-scope-erasing macro code was flawed; here’s the corrected code. So Schemers do write buggy code too.

If only it were easy to transfer my determination in playing into programming well.

learning to resign

I’ve been playing Go with Guillaume; it’s a lot of fun, but occassionally I get boneheaded and just don’t know when to resign. It’s bad courtesy, and I should be better about it. There’s a difference between optimism and denial, and I resolve to tell the difference better next time.

There’s also a point when one is programming something difficult; sometimes I feel like I should resign and step back and see that my approach is altogether wrong. But there’s the mythology of the heroic programmer — that one last bug fix, and maybe-if-I-fiddle-with-this-it-will-work syndrome — that I’m still enamored with.

This fault runs deep in me, and I will need to retrain myself to be less silly.