Jon Aquino's Mental Garden

Engineering beautiful software jon aquino labs | personal blog

Tuesday, January 23, 2007

Software I'm trying out: DarkRoom and RSIGuard

dark_room

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

I'm really enjoying this Microsoft Natural Ergonomic 4000 keyboard. Here's what I've mapped the keys to:

Image-0716

Wednesday, January 17, 2007

3-pedal footswitch for programming and browsing

fs-elite-triple229x170

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).

To turn on Sticky Keys in Windows

  • Press Shift 5 times. The StickyKeys window will appear.
  • Press Settings.
  • Select Use StickyKeys.
  • Press Settings.
  • Clear Turn StickyKeys off if two keys are pressed at once.
  • Press OK. Press OK.

On the Mac:

  • Go to System Preferences > Universal Access > Keyboard

For Linux and other operating systems, see Sticky Modifiers Implementations.

Firefox extensions I'm trying out; and a new trackball

Firefox extensions I'm trying out:

  • Cooliris Previews - Hover over a link and it shows you a preview of the page. Also you can right-click a word and it can show you results from TheFreeDictionary, Google Images, and Wikipedia.
  • Firefox Showcase - Sidebar that shows you thumbnails of all open tabs (รก la Powerpoint). If you've got a lot of tabs open, it's often easier to scan the thumbnails than the tab names.
  • FlashGot + FlashGet - Evidently, download managers speed up downloads by breaking them up into smaller chunks and downloading them simultaneously. Or something like that.
  • GooglePreview - Puts thumbnails beside Google search results.

(Other extensions I have installed: del.icio.us, Firebug, StumbleUpon, Tab Mix Plus, and Web Developer).

On a different note, I'm giving the inexpensive Logitech TrackMan Wheel a spin:
images
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"

Cover of Refactoring

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 NameNew Name
Alternative Classes with Different InterfacesHeterogeneous Interfaces
Comments
Data Class
Data Clumps
Divergent ChangeSchizophrenic Class
Duplicated Code
Feature EnvySatellite Method
Inappropriate IntimacyInternal Access
Incomplete Library Class
Large Class
Lazy ClassSmall Class
Long Method
Long Parameter List
Message ChainsTemporary Variables
Middle ManOverdelegation
Parallel Inheritance Hierarchies
Primitive ObsessionProcedural Code
Refused BequestWeak Inheritance
Shotgun Surgery?
Speculative GeneralityOverdesign
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.

Here are ten time-shifted feeds. You can easily create your own.