Jon Aquino's Mental Garden

Tuesday, January 23, 2007

Software I'm trying out: DarkRoom and RSIGuard

DarkRoom - Old-school text editor that blacks out your monitor(s) and presents you with a retro green-on-black editor. It's just you and the text. Clone of a Mac program called WriteRoom.

RSIGuard - Break timer + mouse auto-clicker. You can get freeware that does the same thing, but this is the smartest implementation I've seen. The break timer attempts to wait for a pause in your activity - it has some complex algorithm to determine a break frequency that minimizes interruptions of flow. And the mouse auto-clicker (which clicks every time you stop the mouse) seems to have fewer inadvertent clicks compared to other programs I've tried. $50 - I'll probably buy this one.

Monday, January 22, 2007

The Art of Mingling

Jeanne Martinet's book The Art of Mingling has practical and humorous advice for what to do at those office parties, wine-and-cheeses, and other social events that call upon mingling skills. I haven't read the book yet, but four of her radio interviews are online and give the general idea. An NPR article has a good summary.

Saturday, January 20, 2007

MS Ergo 4000 Keyboard - love it

Wednesday, January 17, 2007

3-pedal footswitch for programming and browsing

The quest for better ergonomics continues. I am trying out these Kinesis Savant Elite footpedals. I've assigned them to Shift, Right Click, and Left Click. After a couple of days, I quite like them - my wrists and forearms seem to fatigue less quickly. (Unfortunately, Shift-Click (pedal 1 + pedal 3) opens a link in a new window rather than a new tab in Firefox, but you can fix this by editing a js file in browser.jar.)

Sunday, January 14, 2007

StickyKeys, for eliminating chording

Ergonomics tip: Turn on StickyKeys so you don't have to hold down Ctrl, Shift, or Alt. For example, with StickyKeys on, you can press Ctrl then C – you don't need to hold down Ctrl while pressing C. Thus, you can eliminate chording (holding down several keys), repeated use of which can lead to various ailments (such as the dreaded Emacs Pinky).

On a different note, I'm giving the inexpensive Logitech TrackMan Wheel a spin:I've tried a few different ergonomic input devices: a Kinesis keyboard (a keeper, though no silver bullet), an Evoluent Vertical Mouse 2 (gives me forearm pain), a pricey Kensington Expert Mouse (gives me other sorts of aches). The humble Logitech TrackMan Wheel feels very natural and comfortable. But it's only been one day.

Saturday, January 13, 2007

Better Names for Martin Fowler's "Refactoring Smells"

Martin Fowler's Refactoring (1999) is a landmark book for software engineering. It is a catalog of techniques for cleaning up code. Unfortunately, this remarkable book is tarnished by some frivolous names chosen for its list of "refactoring smells" (anti-patterns). Unlike the memorable pattern names from that other luminous book Design Patterns (1995) – Singleton, Observer, Visitor, etc. – the anti-pattern names in Refactoring sometimes degenerate into the ludicrous: Feature Envy, Inappropriate Intimacy, Primitive Obsession, Speculative Generality, ...

The worst part is that these names give little clue as to what they mean.

I would like to propose alternative names for some of Fowler's "refactoring smells". Many of the names are fine as is, but a number of them benefit from sober clarity of expression:

Old Name

New Name

Alternative Classes with Different Interfaces

Heterogeneous Interfaces

Comments

Data Class

Data Clumps

Divergent Change

Schizophrenic Class

Duplicated Code

Feature Envy

Satellite Method

Inappropriate Intimacy

Internal Access

Incomplete Library Class

Large Class

Lazy Class

Small Class

Long Method

Long Parameter List

Message Chains

Temporary Variables

Middle Man

Overdelegation

Parallel Inheritance Hierarchies

Primitive Obsession

Procedural Code

Refused Bequest

Weak Inheritance

Shotgun Surgery

?

Speculative Generality

Overdesign

Switch Statements

Temporary Field

I would also like to improve on "Shotgun Surgery" (in which a modification involves touching code in several places), but I cannot think of an apt name. Any suggestions?

Saturday, January 06, 2007

Time-Shifted Feeds

For the past week, I have been using FeedChopper to create "time-shifted RSS feeds" for some popular Top 10 lists that have been making headlines (for example, Inserit's Top 100 Links for Web Designers and UrbanFont's images of their Top 100 Free Fonts). These feeds are "time-shifted" because they begin on the day you add them to your feedreader, and give you a new item each day. It's a great way to absorb information.