The maze book for programmers!
PragProg Amazon

Algorithms, circle mazes, hex grids, masking, weaving, braiding, 3D and 4D grids, spheres, and more!

The Buckblog

assorted ramblings by Jamis Buck

Oct 2015

Changing the Channel

3 October 2015 — Looking at something familiar in a different way can help remove mental and creative roadblocks — 3-minute read

Stuck? Try changing the channel.

No, seriously. It’s like if you’re watching TV and you’re feeling uninspired by what you see, you change the channel. This doesn’t change the TV at all–you’re still staring at the same screen, in the same plastic chassis–but now you’re seeing something different in it.

I’ve used this trick in some studying I’ve been doing lately (Isaiah is a tough nut to crack). Any time I’m reading something that makes no sense, or which seems to lack any deep significance, I’ll pause and read it over again a few times.

Then I start to change the channel.

I’ll begin looking up the words in a dictionary–even the easy ones, the ones that I think I know well, because it is often the simplest assumptions that bear the most fruit. I’ll turn to other tools, as well: synonyms are great for looking at something from unexpected angles. Etymologies, too.

(Etymologies are my favorite, actually. For instance, did you know that “escape” derives from the Latin word excappare? It literally means “get out of one’s cape”–as if to leave your pursuer holding nothing but your cloak! Or did you know that “lord” and “lady” derive from Old English words meaning “keeper of the bread”, and “kneader of the bread”? Language is cool.)

This works great in other contexts, too. For instance, I’ve learned different ways to “change the channel” when I get stuck while writing. I might do some brainstorming or freewriting, either of which keeps the momentum going. (Losing momentum while writing is creative suicide.) I can also try different formulas for plotting the story: the three-act structure, the Hollywood formula, Hero’s Journey, and so forth. Or the Snowflake Method for growing a story. Or writing the same event from multiple points of view.

Each of these changes the channel for me. It works, I think, because it forces me to identify an assumption (perhaps not even explicitly), and then tweak it. Mutate it a little. I can play “what if” games with it, plugging new perspectives in, new concepts, mixing and matching until I find a connection that works for me.

(The Creative Whack Pack card deck is awesome for this. There’s an app for it, too–worth every penny. Just have it grab a random card for you when you need a little creative jolt.)

This technique works in software development, as well. Have you coded yourself into a corner? Or maybe you’re paralyzed trying to decipher (or invent) some requirements? Perhaps there is a bug that you’re having trouble nailing down.

Change the channel. Find a new way to think about the problem. In software, maybe that means bringing some new eyes on to look it over with you. Or maybe you explain the problem out loud to a teddy bear or rubber duck on your desk. Maybe try listening to some different music, or contemplate how the implementation might look in a different environment or language. Try drawing it–sketch the implementation somehow, maybe a flow chart, or perhaps something more abstract and impressionistic.

Experiment. Give yourself permission to try something new. The new perspective may be just what you need to get out of the rut you’re in.

Go ahead. Change the channel!

Sep 2015

Generating Word Search Puzzles

26 September 2015 — A walk-through of the author's word search puzzle generator — 7-minute read

Default Scopes are an Anti-Pattern

19 September 2015 — ActiveRecord's default_scope feature is exposed as an anti-pattern, with examples showing two common ways it is abused. It is proposed that explicit scopes are a superior solution — 5-minute read

Little Things: Heredocs

12 September 2015 — Another minor-but-useful feature of Ruby—heredocs—is demonstrated — 4-minute read

Little Things: Hashes & Procs

5 September 2015 — The interchangability of hashes and arity-1 procs is demonstrated as one of the endearing little features of Ruby — 3-minute read
Aug 2015

Ideas are Cheap

29 August 2015 — 3-minute read

Reducing a Number to Its Sign

5 August 2015 — 3-minute read

Writing a Klondike Puzzle Solver

4 August 2015 — 13-minute read

Jul 2015

Writing a Simple Recursive Descent Parser

30 July 2015 — 6-minute read

tar.gz in Ruby

23 July 2015 — 5-minute read

Mazes for Programmers

8 July 2015 — 1-minute read

May 2015

Experimenting with L-Systems

7 May 2015 — 6-minute read

Mar 2015

Playing with Constants, Methods, and Superclasses

24 March 2015 — 3-minute read

Task Tracking for Neurochemical Brains

17 March 2015 — 4-minute read

Feb 2015

Mazes for Programmers: Beta!

4 February 2015 — 2-minute read

Jan 2015

Lessons from the Kitchen

30 January 2015 — 5-minute read

Hanging Out a Shingle

26 January 2015 — 1-minute read

Getting Back in the Pool

20 January 2015 — 2-minute read

A Better Recursive Division Algorithm

15 January 2015 — 5-minute read

Winding Back Up

13 January 2015 — 3-minute read

Sep 2011

Winding down...

1 September 2011 — 1-minute read

Jun 2011

Sharing the Inheritance Hierarchy

7 June 2011 — 3-minute read

Mar 2011

Maze Generation: More weave mazes

17 March 2011 — 8-minute read

Maze Generation: Weave mazes

4 March 2011 — 11-minute read

Feb 2011

Weave Mazes: Your Take?

28 February 2011 — 1-minute read

Programming Language Survey Results

22 February 2011 — 3-minute read


19 February 2011 — 2-minute read

Mazes in CoffeeScript

9 February 2011 — 2-minute read

Maze Generation: Algorithm Recap

7 February 2011 — 6-minute read

Maze Generation: Sidewinder algorithm

3 February 2011 — 12-minute read

Way Back

The Buckblog Archives

Dating to 2004 — Hundreds more articles