Shell Gamification.
Today I gamified my shell.
Ok, stop laughing, I only spent 2 hours working on it.
I wanted to actually learn the aliases I’ve carefully setup. I always think up new aliases, but immediately forget them, and continue on exactly as before.
Feature spec.
I want feedback every time I should use an alias. The feedback needs to be immediate. More important than that, I don’t want to be distracted by anything flashy. The notification must be small and persistent.
I boiled down the feature set to this:
- look at the aliases defined
- look at the last command executed
- provide information about what should have written
I chose to use the right hand side of my terminal prompt to display the information. The nice thing about it is that it runs every time I finish executing a command. It is persistent and updated. And the code is fast enough that it gets out of my way.
Alternatives I choose not to do.
- Growl: too splashy and flashy for how often I execute commands.
- Sounds: would have driven me nuts when playing music.
Gamification
The notifications worked, but why do something reasonable when you have the opportunity to do something ridiculous.
I assigned points to successful habits and mistakes. As a first stab, I incremented my score every time I wrote a correctly formatted command and lost 50 points when I made a mistake.
It also keeps my high score, the last command I typed, and the last command I got wrong.
Code
You can get the code here
Update: After a weekend.
I’ve only had it for the weekend and my high score never goes above about 50-70 points.
I have an alias for git status which is the death of me.
alias gs='git status'
I keep loosing all my points because of it.
Update: After a week
I’ve learned 5 new aliases which I now use daily. Mostly around Git. I haven’t estimated my benefits yet but my score is about to break 1000.
I’m going to add a bunch more aliases.
Update: After 1 week + 1 day.
After creating 10 new aliases, my score dropped almost 700 points in 1 hour. But I’m noticing and remembering.
Adding too many aliases at once was a mistake.