<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Mike Eng</title>
	<atom:link href="http://mike-eng.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://mike-eng.com</link>
	<description>Interaction Designer</description>
	<lastBuildDate>Thu, 13 Jun 2013 22:22:17 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.4.2</generator>
		<item>
		<title>Usability Observation #21 &#8211; Commenting Out Code in Real Life</title>
		<link>http://mike-eng.com/usability-observation-21-commenting-out-code/</link>
		<comments>http://mike-eng.com/usability-observation-21-commenting-out-code/#comments</comments>
		<pubDate>Sun, 05 May 2013 23:18:29 +0000</pubDate>
		<dc:creator>mrengy</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[usability]]></category>

		<guid isPermaLink="false">http://mike-eng.com/?p=2526</guid>
		<description><![CDATA[On an approach shared by road construction and programming.]]></description>
			<content:encoded><![CDATA[<div class="clear blog">
<a href="http://mike-eng.com/usability-observation-21-commenting-out-code/usability-observation-21-commenting-out-code/" rel="attachment wp-att-2527"><img src="http://mike-eng.com/wp-content/uploads/usability-observation-21-commenting-out-code-224x300.jpg" alt="One Way sign covered with a bag" title="One Way sign covered with a bag" width="224" height="300" class="alignnone size-medium wp-image-2527" /></a></p>
<p>Thought this was a clever construction trick. A street nearby my house had some construction work scheduled. During the construction, the normally two-way street would be made one-way for several weeks.</p>
<p>In order to communicate this quickly, the city put up &#8220;One way&#8221; signs but then covered them up with plastic bags at first. When they were ready to restrict traffic along the length of the street, they simply removed the plastic bags.</p>
<p>It made me think of commenting out lines of code &#8211; then uncommenting them when ready.
</p></div>
]]></content:encoded>
			<wfw:commentRss>http://mike-eng.com/usability-observation-21-commenting-out-code/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Digit Decoder Update #2</title>
		<link>http://mike-eng.com/digit-decoder-update-2/</link>
		<comments>http://mike-eng.com/digit-decoder-update-2/#comments</comments>
		<pubDate>Wed, 17 Apr 2013 12:57:48 +0000</pubDate>
		<dc:creator>mrengy</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[digit-decoder]]></category>

		<guid isPermaLink="false">http://mike-eng.com/?p=2489</guid>
		<description><![CDATA[Update on this personal project. This time, I learned to leverage human abilities rather than relying on the machine to do everything.]]></description>
			<content:encoded><![CDATA[<div class="clear blog">
<p>
Part of an ongoing personal project. Here are <a href="http://mike-eng.com/tag/digit-decoder/" title="All Digit Decoder posts">all posts on the subject</a>. Also, here&#8217;s the <a href="https://github.com/mrengy/digit-decoder" title="Digit Decoder - project on Github">Github repository</a> and the <a href="http://mike-eng.com/sandbox/digit-decoder">working demo</a>.
</p>
<p>
<a href="http://mike-eng.com/digit-decoder/" title="Digit Decoder">Last time</a>, I tried using an algorithm to guess the entire message in one fell swoop, which ended up generating a bunch of nonsense. So this time, I relied on the human to make smart decisions about which word to choose.
</p>
<h2 name="jquery-approach">
jQuery Approach<br />
</h2>
<p>
I am now leveraging the <a href="https://raw.github.com/mrengy/Digit-Decoder/aac1ec6b1f639e224fa1e59226c4fc8de16309c2/dictionary.txt">dictionary file</a> to filter all possible letter combinations to only those that match words found in the dictionary and then add the words as options to a select element.
</p>
<p>
<a href="http://mike-eng.com/digit-decoder-update-2/digit-decoder-select-initial/" rel="attachment wp-att-2520"><img src="http://mike-eng.com/wp-content/uploads/digit-decoder-select-initial-300x250.png" alt="Initial Word Select" title="Initial Word Select" width="300" height="250" class="alignnone size-medium wp-image-2520" style="display: inline !important; visibility: visible !important; opacity: 100 !important;" /></a>
</p>
<p>
Upon making a selection, a few things happen. First, one function called <a href="https://github.com/mrengy/Digit-Decoder/blob/aac1ec6b1f639e224fa1e59226c4fc8de16309c2/javascripts/pickletters.js#L179">removeDefault</a> removes the placeholder text option from the select element. Then, another function called <a href="https://github.com/mrengy/Digit-Decoder/blob/aac1ec6b1f639e224fa1e59226c4fc8de16309c2/javascripts/pickletters.js#L186">printWord</a> inserts the selected word into place, character by character and <a href="https://github.com/mrengy/Digit-Decoder/blob/aac1ec6b1f639e224fa1e59226c4fc8de16309c2/javascripts/pickletters.js#L214">wraps that word in a div</a> to distinguish it as a word.
</p>
<p>
<a href="http://mike-eng.com/digit-decoder-update-2/digit-decoder-select-default-removed/" rel="attachment wp-att-2492"><img src="http://mike-eng.com/wp-content/uploads/digit-decoder-select-default-removed-300x235.png" alt="First word selected" title="First word selected" width="300" height="235" class="size-medium wp-image-2492 alignnone" /></a>
</p>
<p>
If that doesn&#8217;t look right, the user can change the option in the select element. This <a href="https://github.com/mrengy/Digit-Decoder/blob/aac1ec6b1f639e224fa1e59226c4fc8de16309c2/javascripts/pickletters.js#L199">clears the blue text that was there initially</a> as well as <a href="https://github.com/mrengy/Digit-Decoder/blob/aac1ec6b1f639e224fa1e59226c4fc8de16309c2/javascripts/pickletters.js#L204">the word wrapper around it</a> and <a href="https://github.com/mrengy/Digit-Decoder/blob/aac1ec6b1f639e224fa1e59226c4fc8de16309c2/javascripts/pickletters.js#L208">inserts the new word</a>.
</p>
<p>
<a href="http://mike-eng.com/digit-decoder-update-2/digit-decoder-hell/" rel="attachment wp-att-2493"><img src="http://mike-eng.com/wp-content/uploads/digit-decoder-hell-300x150.png" alt="Changed option selected" title="Changed option selected" width="300" height="150" class="size-medium wp-image-2493 alignnone" /></a>
</p>
<p>
Clicking the &#8220;next&#8221; button <a href="https://github.com/mrengy/Digit-Decoder/blob/aac1ec6b1f639e224fa1e59226c4fc8de16309c2/javascripts/pickletters.js#L227">removes the current select element</a>, <a href="https://github.com/mrengy/Digit-Decoder/blob/aac1ec6b1f639e224fa1e59226c4fc8de16309c2/javascripts/pickletters.js#L155">creates a new select element after the current word</a>, and <a href="https://github.com/mrengy/Digit-Decoder/blob/aac1ec6b1f639e224fa1e59226c4fc8de16309c2/javascripts/pickletters.js#L165">loads the appropriate options into it</a>. There is also <a href="https://github.com/mrengy/Digit-Decoder/blob/aac1ec6b1f639e224fa1e59226c4fc8de16309c2/javascripts/pickletters.js#L222">a catch to throw an error if the user clicks &#8220;next&#8221; before making a selection</a>.
</p>
<p>
<a href="http://mike-eng.com/digit-decoder-update-2/digit-decoder-hello-is/" rel="attachment wp-att-2494"><img src="http://mike-eng.com/wp-content/uploads/digit-decoder-hello-is-300x108.png" alt="Second Word" title="Second Word" width="300" height="108" class="size-medium wp-image-2494 alignnone" /></a>
</p>
<h2 name="php-adjustments">
PHP Adjustments<br />
</h2>
<p>
I entered more of the initial message into the file <a href="https://github.com/mrengy/Digit-Decoder/blob/aac1ec6b1f639e224fa1e59226c4fc8de16309c2/message.txt">message.txt</a>. This is a lousy chore for humans. I realized I had to change some things in my PHP.
</p>
<p>
First off, I had to handle some characters that I wasn&#8217;t initially expecting. There are some punctuation marks in the message. At this point, there only seem to be exclamation points and question marks. Initially, the PHP script was built to parse a very rigidly organized file of digits separated by one comma and one space. I did a quick <a href="https://github.com/mrengy/Digit-Decoder/blob/aac1ec6b1f639e224fa1e59226c4fc8de16309c2/index.php#L53">character replacement</a> to replace the character &#8220;!&#8221; with &#8220;, !,&#8221; (and did the same thing for a question mark and a period, just for good measure). This then allowed the rest of the array creation and <a href="https://github.com/mrengy/Digit-Decoder/blob/aac1ec6b1f639e224fa1e59226c4fc8de16309c2/index.php#L61">HTML output</a> to run. The end result is a literal &#8220;!&#8221; on the page as a separate character with no letter options.
</p>
<p>
Also I wanted to make the data entry a bit less error-prone. As it was before, the script required each number to be separated by only by a comma and a single space. Linebreaks or additional spaces would break the script. Entering the message as a single line made it extremely difficult to check for accuracy when comparing with the text in the book. So by allowing linebreaks in the message, I could use one linebreak to indicate the end of a line in the book and two linebreaks to indicate the end of a page. To accommodate this, I basically just had to <a href="https://github.com/mrengy/Digit-Decoder/blob/aac1ec6b1f639e224fa1e59226c4fc8de16309c2/index.php#L50">remove any linebreak characters</a> from the text that the script then processes. Not too bad &#8211; this linear script is much easier than dealing with all the interaction on the front end.
</p>
<p>
<a href="http://mike-eng.com/digit-decoder-update-2/digit-decoder-pg-269/" rel="attachment wp-att-2505"><img src="http://mike-eng.com/wp-content/uploads/digit-decoder-pg-269-300x225.jpeg" alt="Message - page 269" title="Message - page 269" width="300" height="225" class="size-medium wp-image-2505 alignnone" /></a>&nbsp;<a href="http://mike-eng.com/digit-decoder-update-2/digit-decoder-message/" rel="attachment wp-att-2506"><img src="http://mike-eng.com/wp-content/uploads/digit-decoder-message-300x102.png" alt="Message manually entered into the message.txt file" title="Message manually entered into the message.txt file" width="300" height="102" class="size-medium wp-image-2506 alignnone" /></a>
</p>
<h2 name="takeaways-next-steps">
Takeaways and Next Steps<br />
</h2>
<p>
<a href="http://mike-eng.com/digit-decoder-update-2/digit-decoder-el/" rel="attachment wp-att-2495"><img src="http://mike-eng.com/wp-content/uploads/digit-decoder-el-300x139.png" alt="End point trying to decode the message" title="End point trying to decode the message" width="300" height="139" class="size-medium wp-image-2495 alignnone" /></a>
</p>
<p>
The exciting thing about getting the application to this stage was that in theory, I would be able to use it to decode more of the message. However, I was only able to decode to the point where the message read &#8220;My name is&#8221; &#8211; and then the only option that was a word in the dictionary was &#8220;el&#8221;. This got me no further than I had decoded manually before starting this project. Also, the character&#8217;s name (Thomas) doesn&#8217;t work here either. So I&#8217;m not sure what to try here. I&#8217;d have to move to another part of the message.
</p>
<p>
In entering the data, I found many repetitions of the sequence &#8220;7, 2, 2, 7, 7, 4, 2, 5, 5, 2&#8243; and somewhat fewer repetitions of &#8220;7, 2, 2, 7, 7, 4, 2, 5, 5, 2, 2, 2, 4, 5, 2&#8243;. Also, I found some instances of &#8220;5, 6, 8, 3?&#8221;, which looks like &#8220;love?&#8221;. This was encouraging. At least there are some words further down in the message, and it&#8217;s not all random.
</p>
<p>
A few immediate next steps:</p>
<ol>
<li>Allow the user to navigate to a previous word</li>
<li>Allow the user to move around in a non-linear fashion &#8211; this is going to be challenging, but after using this, I am resigned to the fact that it&#8217;s necessary to enter some bits at various places that I know are words. Decoding this is going to be a bit like solving a crossword puzzle.</li>
<li>Allow the user to manually enter some words that aren&#8217;t in the dictionary, like proper nouns and maybe slang and even some German</li>
</ol>
</div>
]]></content:encoded>
			<wfw:commentRss>http://mike-eng.com/digit-decoder-update-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Auto Draft</title>
		<link>http://mike-eng.com/</link>
		<comments>http://mike-eng.com/#comments</comments>
		<pubDate>Wed, 30 Nov -0001 00:00:00 +0000</pubDate>
		<dc:creator>mrengy</dc:creator>
		
		<guid isPermaLink="false">http://mike-eng.com/?p=2525</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[]]></content:encoded>
			<wfw:commentRss>http://mike-eng.com/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Digit Decoder</title>
		<link>http://mike-eng.com/digit-decoder/</link>
		<comments>http://mike-eng.com/digit-decoder/#comments</comments>
		<pubDate>Mon, 12 Nov 2012 17:21:52 +0000</pubDate>
		<dc:creator>mrengy</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[digit-decoder]]></category>

		<guid isPermaLink="false">http://mike-eng.com/?p=2430</guid>
		<description><![CDATA[A coding project to satisfy my own curiosity about decoding a message typed in digits.]]></description>
			<content:encoded><![CDATA[<div class="clear blog">
<div id="attachment_2442" class="wp-caption alignnone" style="width: 310px"><img src="http://mike-eng.com/wp-content/uploads/digit-decoder-thomas-300x210.jpg" alt="Thomas Schell Sr. communicating with a notepad" title="Thomas Schell Sr. communicating with a notepad" width="300" height="210" class="size-medium wp-image-2442" /><p class="wp-caption-text">Thomas Schell Sr. in the Warner Bros. movie, Extremely Loud and Incredibly Close (2012)</p></div></p>
<p>
Part of an ongoing personal project. Here are <a href="http://mike-eng.com/tag/digit-decoder/" title="All posts tagged 'digit-decoder'">all the posts on the topic</a>. The first phase of writing this decoder application has given me some insights into the complexity of how the mind works when solving puzzles. Also, I&#8217;ve improved my jQuery skills, which was partly the point.
</p>
<p>
Here&#8217;s the <a href="https://github.com/mrengy/digit-decoder" title="Digit Decoder project on Github">Github repository</a> and the <a href="http://mike-eng.com/sandbox/digit-decoder/" title="Digit Decoder - working prototype">working prototype</a>.
</p>
<h2>Background</h2>
<p>
Extremely Loud and Incredibly Close was the first fiction book I had read in about four years. It left quite an impression on me, and it contained some hidden gems, one of which is a message coded in digits. The main character&#8217;s grandfather, Thomas Schell I is a survivor of the bombing of Dresden during World War II. He lost his first wife in the bombing, and one of his only remaining connections is his wife&#8217;s sister. The two of them have one child and their relationship is strained. She emigrates to New York, and he remains in Germany for a few decades. Thomas is mute after the bombing, and he communicates mainly by writing in a notebook. After he learns of the September 11 attacks, in which his son died, he returns to New York to try to reconnect with his estranged family. He has the following phone conversation with the mother of his deceased child and the grandmother of his grandchild.
</p>
<h2>Initial Steps</h2>
<p>
Out of my own curiosity, I set out to decode the message that Thomas typed. The beginning was easy enough to discover by making a table of the corresponding letters to digits on a phone keypad. &#8220;4, 3, 5, 5, 6&#8243; : &#8220;Hello&#8221; . &#8220;4, 7, 4, 8, 7, 3, 2, 5, 5, 9, 9, 6, 8&#8243; : &#8220;Is it really you?&#8221;. The responses from the grandmother help quite a bit. She says, &#8220;Is this a joke?&#8221; He responds, &#8220;This is not a joke!&#8221;
</p>
<p>
The rest is a bit more difficult. <a href="http://answers.yahoo.com/question/index?qid=20080805185548AAaaifQ">Others had the same curiosity</a> to decipher the message, but this is where I thought it would be a good job for a computer to take on.
</p>
<p>
With PHP, I <a href="https://github.com/mrengy/Digit-Decoder/blob/master/digits-to-letters.php">defined an array</a> to associate each phone digit with its corresponding possible letters.
</p>
<p>
I put the raw digit message in <a href="https://github.com/mrengy/Digit-Decoder/blob/master/message.txt">a text file</a>.
</p>
<p>
And I output the digit message with its possible letter options below in <a href="https://github.com/mrengy/Digit-Decoder/blob/master/index.php">the index file</a>.
</p>
<p><h2>Decoding: Part 1</h2>
</p>
<p>
My next step was to create an algorithm to decode the message.
</p>
<p>
My first attempt was basically:
</p>
<ol>
<li>Combine ten digits at a time and create an array with all their possible combinations of letters.</li>
<li>Compare each item in that array with a local dictionary file to see if that combination of words is in the dictionary</li>
<li>If none of the attempted 10-letter words are in the dictionary, pop off the last digit, and see if there&#8217;s a matched 9-letter word.</li>
<li>Rinse and repeat</li>
<p>(Based on an approach by John Resig &#8211; <a href="http://ejohn.org/blog/dictionary-lookups-in-javascript/">Dictionary Lookups in JavaScript</a>)
</ol>
</p>
<p>
Here&#8217;s the <a href="https://github.com/mrengy/Digit-Decoder/tree/d0b80aaa5dfcec9b017b8495654d54527c17a9b5">code at this stage</a>. Most of the business is handled in <a href="https://github.com/mrengy/Digit-Decoder/blob/d0b80aaa5dfcec9b017b8495654d54527c17a9b5/javascripts/pickletters.js">javascripts/pickletters.js</a>.
</p>
<p>
I knew there would need to be some manual correction and the ability to run the functions again from a given point after the user did a manual correction. That&#8217;s why I did the bulk of the heavy lifting in JavaScript. I made these functions accept a &#8220;start index&#8221; parameter so that they could be easily re-used from any given starting position.
</p>
<p>
This initial attempt resulted in a lot of bad guesses, much worse than I thought it would. When I ran the algorithm to determine only the first two words, I got the following:
</p>
<p><img src="http://mike-eng.com/wp-content/uploads/digit-decoder-hello-grits.png" alt="First two words: &#039;Hello grits&#039;" title="First two words: &#039;Hello grits&#039;" width="360" height="53" class="alignnone size-full wp-image-2463" /></p>
<p>
which I thought was delightful since grits are often the first food that I put into my belly in the morning, but I knew it wasn&#8217;t the right interpretation of the message. Extending the same algorithm to run on the first 2.5 lines (I hadn&#8217;t typed in the entire digit message at this point) got some more gibberish:
</p></div>
<div class="clear blog">
<img src="http://mike-eng.com/wp-content/uploads/digit-decoder-repeated-by-longest-word.png" alt="First handful of words: mostly gibberish" title="First handful of words: mostly gibberish" width="672" height="163" class="alignnone size-full wp-image-2464" />
</div>
<div class="clear blog">
<p>
All of these were technically words, but from my initial manual decoding, I knew that the first few words were &#8220;Hello. Is it really you?&#8221;, so clearly this initial guess was pretty far off. I think it picked up the actual message midstream though with &#8220;My name&#8221; at the end of the first line.
</p>
<h2>Lessons learned</h2>
<p>
At this point, I learned a few things:</p>
<ol>
<li>This algorithm needs to be smarter. Guessing the longest possible word is not a very reliable way to go. I think the way that humans decode things like this is to use a combination of prioritizing common words and <a href="http://en.wikipedia.org/wiki/Collocation">word collocation</a></li>
<li>I need to insert spaces between words to make the output easier to read</li>
<li>Manual correction is going to be more important than I initially thought, so it&#8217;s time to do some design work.</li>
</ol>
<p>
Next up, I&#8217;ll do some design work to accommodate the manual correction and allow the user to run the guessing algorithm again from a specified point.
</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://mike-eng.com/digit-decoder/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sometimes Turning off the Lights</title>
		<link>http://mike-eng.com/sometimes-turning-off-the-lights/</link>
		<comments>http://mike-eng.com/sometimes-turning-off-the-lights/#comments</comments>
		<pubDate>Tue, 07 Feb 2012 23:55:08 +0000</pubDate>
		<dc:creator>mrengy</dc:creator>
				<category><![CDATA[blog]]></category>

		<guid isPermaLink="false">http://mike-eng.com/?p=2364</guid>
		<description><![CDATA[On inadvertently muddying the user's mental model.]]></description>
			<content:encoded><![CDATA[<div class="clear blog">
<a href="http://mike-eng.com/sometimes-turning-off-the-lights/sometimes-turning-off-the-lights-1/" rel="attachment wp-att-2365"><img src="http://mike-eng.com/wp-content/uploads/sometimes-turning-off-the-lights-1-300x225.jpg" alt="sign on a store refrigerator indicating that it sometimes turns off the lights" title="Sometimes Turning Off the Lights" width="300" height="225" class="alignnone size-medium wp-image-2365" /></a>
<p>Here&#8217;s an example of how <em>not</em> to write copy &#8211; a sticker that indicates that the machine to which it is applied saves power by &#8220;sometimes turning off the lights&#8221;. I have several problems with this.
</p>
<h2>It Reeks of Greenwashing</h2>
<p>Okay, so Coca Cola wanted to advertise the fact that their refrigerator sometimes turns off the lights to save energy. I am left to wonder if this marketing campaign actually changed anything about the efficiency of their refrigerators (like using <a href="http://en.wikipedia.org/wiki/Insulated_glazing">double-pane glass</a> or otherwise improving insulation) or just slapped on stickers in order to generate more sales. If I had to guess, I would assume the latter. </p>
<h2>It&#8217;s Redundant</h2>
<p>Copywriting fail. The way I interpret this, it is indicating that the light timer both &#8220;consumes less energy&#8221; and &#8220;saves additional power&#8221;. That&#8217;s like a job description with the primary responsibility to <a href="http://www.livedash.com/transcript/robot_chicken__star_wars_episode_ii/4590/TOONP/Monday_December_20_2010/535479/#943920222">&#8220;find&#8221; and &#8220;locate&#8221; a sought-after spacecraft</a>.</p>
<h2>It Obfuscates the User&#8217;s Mental Model</h2>
<p>Interested in using a computer that &#8220;sometimes turns off&#8221; or sending a letter that will &#8220;sometimes get delivered&#8221;? Granted, the interaction a user has with this refrigerator is simple and brief, but this sticker inadvertently creates a muddy <a href="http://en.wikipedia.org/wiki/Mental_model">mental model</a>.</p>
<p>Examples of design that produces an incorrect mental model abound. Donald Norman&#8217;s classic <a href="http://books.google.com/books?id=TI5wnq1PimMC&amp;pg=PA38&amp;lpg=PA38">assessment of a home thermostat in The Design of Everyday Things</a> is a familiar one. Another case is <a href="http://youarenotsosmart.com/2010/02/10/placebo-buttons/">placebo buttons</a>: &#8220;close&#8221; buttons on elevators that were never wired up, pedestrian crossing buttons at intersections that had once been functional but were superseded by computer systems, etc. </p>
<p>Sometimes keeping the user&#8217;s mental model incomplete is important to thwart people with the intent of gaming the system. The Swiss Franc has several <a href="http://www.snb.ch/en/iabout/cash/current/id/cash_security">security features</a>, but some apparently <a href="http://en.wikipedia.org/wiki/Swiss_franc#Banknotes">are kept secret</a>. Google search results are generated <a href="http://www.google.com/about/company/tech.html#section-search">based on more than 200 signals</a>, most of which are not made public. By contrast, the pin-tumbler lock, the <a href="http://books.google.com/books?id=1WeVeMMGQKEC&#038;lpg=PP1&#038;dq=isbn%3A0750684372&#038;pg=PA33#v=onepage&#038;q&#038;f=false">most widespread lock in the Western world</a>, is based on a simple mechanism that has been exposed, and at the time of writing, a Google search for &#8220;how to pick a pin tumbler lock&#8221; yields <a href="http://www.google.com/search?q=how+to+pick+a+pin+tumbler+lock">393,000 results</a>.</p>
<p>In this case, it&#8217;s just sloppiness confusing the user.
</p></div>
]]></content:encoded>
			<wfw:commentRss>http://mike-eng.com/sometimes-turning-off-the-lights/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Re-using Old Calendars</title>
		<link>http://mike-eng.com/re-using-old-calendars/</link>
		<comments>http://mike-eng.com/re-using-old-calendars/#comments</comments>
		<pubDate>Mon, 02 Jan 2012 14:17:01 +0000</pubDate>
		<dc:creator>mrengy</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[usability]]></category>

		<guid isPermaLink="false">http://mike-eng.com/?p=2294</guid>
		<description><![CDATA[On resourcefulness and unseen rhythms.]]></description>
			<content:encoded><![CDATA[<div class="clear blog"><div id="attachment_2295" class="wp-caption alignnone" style="width: 310px"><a href="http://mike-eng.com/wp-content/uploads/re-using-old-calendars.jpg"><img src="http://mike-eng.com/wp-content/uploads/re-using-old-calendars-300x223.jpg" alt="1984 Calendar" title="1984 Calendar" width="300" height="223" class="size-medium wp-image-2295" /></a><p class="wp-caption-text">1984 Calendar. Photo Credit: <a href='http://www.flickr.com/photos/smays/3593165142/'>Steve Mays</a></p></div></p>
<p>Ready to throw out your wall calendar from 2011 and buy a new one for 2012? Here&#8217;s another option if you&#8217;re resourceful and eccentric enough to try it: get an old calendar from 1984 to use for this year and save the 2011 calendar for 2022. In both cases, the dates will line up appropriately. You can consult <a href="http://www.timeanddate.com/calendar/repeating.html">timeanddate.com</a> to find old calendars that will match up with a given year.</p>
<p>It&#8217;s a trick I learned from my grandfather who <a href="http://bruggerfuneralhomes.com/obituaries/8505">passed away last year</a>. For those of us who don&#8217;t have a multi-decade stockpile of old calendars lying around, Wisebread.com suggests <a href="http://www.wisebread.com/old-calendars-never-really-go-out-of-date">shopping for old calendars on eBay or Craigslist</a>. My grandfather did it the old-fashioned way. He was a radiologist by trade who worked his way through school by working on farms. Farming had been a part of his life ever since, and he kept a gentleman&#8217;s farm in Ripley, NY. When he moved to an assisted living facility, my uncle took over much of the farm maintenance, but my grandfather would still go on excursions to do work on the farm until his last days. The calendar trick was a good example of his understanding that in a system like a farm, there is no waste &#8211; only resources. Also, it shows a kind of poetry that everything happens in cycles. In our day-to-day, most of us only conceptualize cycles of a week or a month or a year. But sometimes we recognize an underlying rhythm of a larger scale.
</div>
]]></content:encoded>
			<wfw:commentRss>http://mike-eng.com/re-using-old-calendars/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New Work: Logic of a Dynamic Schedule</title>
		<link>http://mike-eng.com/new-work-developing-a-dynamic-schedule-in-wordpress/</link>
		<comments>http://mike-eng.com/new-work-developing-a-dynamic-schedule-in-wordpress/#comments</comments>
		<pubDate>Wed, 21 Dec 2011 18:32:17 +0000</pubDate>
		<dc:creator>mrengy</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[new work]]></category>

		<guid isPermaLink="false">http://mike-eng.com/?p=2289</guid>
		<description><![CDATA[My latest adventure in logic and array manipulation.]]></description>
			<content:encoded><![CDATA[<div class="clear blog">
<div id="attachment_2280" class="wp-caption alignnone" style="width: 310px"><a href="http://mike-eng.com/new-work-developing-a-dynamic-schedule-in-wordpress/developing-a-dynamic-schedule-in-wordpress"><img src="http://mike-eng.com/wp-content/uploads/better-world-by-design-website-2011-schedule-full-300x240.png" alt="Better World by Design - Dynamic Schedule" title="Better World by Design - Dynamic Schedule" width="300" height="240" class="size-large wp-image-2280" /></a><p class="wp-caption-text">Dynamic Schedule page</p></div></p>
<p>Here&#8217;s an example of how we pushed <a href="http://wordpress.org">WordPress</a> to the limit &#8211; achieving some of the power of <a href="http://drupal.org">Drupal</a> while maintaining the top-notch usability of WordPress. One of the more involved pieces of the theme was a dynamic schedule of conference activities.</p>
<p>View the full project description to see how we did it: <a href="developing-a-dynamic-schedule-in-wordpress">Developing a Dynamic Schedule in WordPress</a>.
</div>
]]></content:encoded>
			<wfw:commentRss>http://mike-eng.com/new-work-developing-a-dynamic-schedule-in-wordpress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Open Source Web Development Software</title>
		<link>http://mike-eng.com/using-open-source-software-for-the-better-world-by-design-website/</link>
		<comments>http://mike-eng.com/using-open-source-software-for-the-better-world-by-design-website/#comments</comments>
		<pubDate>Sat, 27 Aug 2011 13:46:36 +0000</pubDate>
		<dc:creator>mrengy</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[process]]></category>
		<category><![CDATA[webdevelopment]]></category>

		<guid isPermaLink="false">http://mike-eng.com/?p=2172</guid>
		<description><![CDATA[A tribute to open source software for web development.]]></description>
			<content:encoded><![CDATA[<div style="width:650px;">
<div class="clear"><a href="http://www.abetterworldbydesign.com"><img src="http://mike-eng.com/wp-content/uploads/bwxd-header.png" alt="A Better World by Design conference" title="A Better World by Design conference" width="380" height="70" class="alignnone size-full wp-image-2175" /></a></div>
<div class="clear">
<blockquote>I recently led development of the <a href="http://www.abetterworldbydesign.com">Better World by Design conference website</a>. Here is a post just published on the Better World by Design blog on how we completed the project using open source software.</p></blockquote>
</div>
<div class="clear">In the true collaborative Better World by Design spirit, we&#8217;ve used a handful of open source applications and frameworks in the development of this site. While most open source software is free to use, the defining feature of open source software is the community-based approach it uses for development. As the Free Software Foundation puts it in their <a href="http://www.gnu.org/philosophy/free-sw.html">Free Software Definition</a>, &#8220;&#8216;Free software&#8217; is a matter of liberty, not price. To understand the concept, you should think of &#8216;free&#8217; as in &#8216;free speech,&#8217; not as in &#8216;free beer&#8217;.&#8221;</div>
<div class="clear">
<h2>WordPress</h2>
<p><a href="http://wordpress.org">WordPress</a> is what we use as a content management system for the site. It is, at the time of writing, <a href="http://w3techs.com/technologies/overview/content_management/all">the most popular content management system used on the internet</a>. And, of course, it&#8217;s open source.</div>
<div class="clear">
<h3>A Brief History</h3>
<p>Matt Mullenweg and Mike Little began WordPress by <a href="http://en.wikipedia.org/wiki/WordPress#History">creating a fork of another open source project called b2/cafelog</a>. Mullenweg got a job with <a href="http://www.cnet.com/">CNET</a> and worked on WordPress &#8220;every free moment&#8221; he had. Mullenweg grew WordPress on what he dubbed a &#8220;freemium&#8221; business model. He &#8220;wanted to make money by being a commercial Robin Hood&#8221; with services such as <a href="http://akismet.com/">Akismet</a> (which prevents spam) and <a href="http://en.wordpress.com/features/">WordPress.com</a> (which provides hosting and support for a WordPress installation hosted on their servers), both of which are free for individuals but charge a small fee for businesses. The brilliance of this business model is that it encourages adoption by new users while bringing in money to sustain the project from businesses and users who desire advanced features. See more detail in his <a href="http://mixergy.com/the-biography-of-wordpress-with-matt-mullenweg/">interview on Mixergy.com</a>.</div>
<div class="clear">
<h3>Development</h3>
<p>The <a href="http://wordpress.org/about/">About WordPress</a> page describes WordPress as &#8220;an Open Source project, which means there are hundreds of people all over the world working on it.&#8221; The core development team chats weekly in <a href="http://wpdevel.wordpress.com/weekly-developer-chats/">open meetings on IRC</a>. The team manages the aspects of day-to-day development including source code, timelines, roadmaps, and tickets on <a href="http://core.trac.wordpress.org/">WordPress Trac</a>. Minutes, agendas, and out-of-meeting discussion take place on the <a href="http://wpdevel.wordpress.com/">WordPress Development Updates blog</a>.</p>
<p>It is quite active, with the most recent post: <a href="http://wpdevel.wordpress.com/2011/07/27/wordpress-3-3-proposed-scope/">WordPress 3.3 Proposed scope</a> showing 46 comments. How to contribute as a newcomer (by providing anything from documentation to tech support to development) is clearly laid out in an article in the WordPress Codex: <a href="http://codex.wordpress.org/Contributing_to_WordPress">Contributing to WordPress</a>.</div>
<div class="clear">
<h2>Subversion</h2>
<p>While working on the 2010 site, fellow advisor, Tim and I had a couple of instances in which we inadvertently overwrote each other&#8217;s code changes. It&#8217;s a common problem when using <a href="http://en.wikipedia.org/wiki/File_Transfer_Protocol">FTP</a> to upload code to a server. There are a few different <a href="http://en.wikipedia.org/wiki/Revision_control#Source-management_models">approaches in revision control</a> to alleviate this. Dreamweaver has a <a href="http://help.adobe.com/en_US/Dreamweaver/10.0_Using/WSc78c5058ca073340dcda9110b1f693f21-7eb9a.html">&#8220;file locking&#8221; a.k.a. &#8220;check in / check out&#8221; feature</a> built in. The issue with &#8220;file locking&#8221; though, is that only one person can work on a file at a time. A more seamless approach of &#8220;version merging&#8221; requires version control software such as <a href="http://subversion.apache.org/">Subversion</a>.</div>
<div class="clear">
<h3>What Does Subversion do?</h3>
<p>The Athletics blog gives a thorough and accessible overview called <a href="http://blog.athleticsnyc.com/on-using-subversion-for-web-projects">&#8220;On Using Subversion for Web Projects&#8221;</a>.  It lists the &#8220;big idea&#8221; of Subversion as:</p>
<ul>
<li>Store (and safe-keep) your project in a repository on a remote server.</li>
<li>Allow multiple users to collaborate on the same code base at the same time.</li>
<li>Keep track of all changes made to a project over time. (Sidenote: This aspect of version control seems very similar to Leopard’s <a href="http://www.apple.com/findouthow/mac/#timemachinebasics">Time Machine</a> feature&#8230;)</li>
</ul>
</div>
<div class="clear">
<h3>Development</h3>
<p>A software firm called <a href="http://www.open.collab.net/">CollabNet</a> created Subversion as an open source project. It currently resides as an Apache Top-Level Project hosted by the non-profit <a href="http://www.apache.org/">Apache Software Foundation</a>.
</div>
<div class="clear">
<h2>Stack Overflow</h2>
<p><a href="http://stackoverflow.com/">Stack Overflow</a> is an indispensable forum (or as they would call it, <em>Q&amp;A site</em>) for programming. The key is that collaborative editing and a ranking system ensure that questions and answers allow questions and answers to be edited / moderated easily and allow good answers to rise to the top. Also, a point system called <a href="http://stackoverflow.com/privileges">&#8220;reputation&#8221;</a> lets users earn privileges to do more on the site. This simple reward turns forum participation into a rewarding and addictive activity.</div>
<div class="clear">
<h3>Community-Driven</h3>
<p>Although privately held, Stack Overflow is about as community-driven as a company can get. <a href="http://www.codinghorror.com/blog/2008/04/help-name-our-website.html">Even the name was chosen by an open vote</a>. The content on the site is released under <a href="http://creativecommons.org/">Creative Commons</a> licenses. Heck, Creative Commons even wrote a <a href="http://wiki.creativecommons.org/Case_Studies/StackOverflow.com">case study about Stack Overflow</a>. And of course, there&#8217;s not much to it without questions and answers submitted by the community. In the <a href="http://www.codinghorror.com/blog/2008/09/stack-overflow-none-of-us-is-as-dumb-as-all-of-us.html">blog post announcing the site&#8217;s launch</a>, co-founder Jeff Atwood closes with &#8220;who cares what I think; my opinion holds no particular weight. I&#8217;m just a member. This is our site.&#8221;</div>
<div class="clear">
<h3>Always Growing</h3>
<p>Out of Stack Overflow grew <a href="http://stackexchange.com/about">Stack Exchange</a>, a network of Q&amp;A sites on a variety of topics. There&#8217;s a &#8220;new site staging zone&#8221; called <a href="http://area51.stackexchange.com/">Area 51</a>, where users can propose ideas for new Stack Exchange sites. In their FAQ, there&#8217;s a <a href="http://area51.stackexchange.com/faq#phases">clearly outlined process</a> from proposal to beta period to full membership.</div>
<div class="clear">
<h2>Tying it all Together with a Simple Example</h2>
<p>After we launched the site, I was trying to resolve a bug with searches for multiple words. I checked the WordPress Codex (documentation) for the <a href="http://codex.wordpress.org/Creating_a_Search_Page#Preserving_Search_Page_Results_and_Pagination">code to properly display search page results</a>. It matched what I had. I put in some debugging code but couldn&#8217;t find anything to get me closer to a solution. Then I <a href="http://stackoverflow.com/questions/6819226/search-results-not-displaying-for-multiple-word-search-in-wordpress">asked a question on Stack Overflow</a>. I had traded several comments with one user who was attempting to find the problem. In the meantime another user offered the solution. It revealed an error in the code that was listed in the WordPress Codex. Then, the user with the answer pointed out that the WordPress Codex is a wiki, so I took the first step that <a href="http://codex.wordpress.org/Contributing_to_WordPress">WordPress suggested I take to contribute</a> &#8211; I <a href="http://codex.wordpress.org/index.php?title=Creating_a_Search_Page&amp;action=history">updated the Codex</a> with this fix.</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://mike-eng.com/using-open-source-software-for-the-better-world-by-design-website/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Best Thing I&#8217;ve Seen in a Long Time</title>
		<link>http://mike-eng.com/the-best-thing-ive-seen-in-a-long-time/</link>
		<comments>http://mike-eng.com/the-best-thing-ive-seen-in-a-long-time/#comments</comments>
		<pubDate>Fri, 05 Aug 2011 14:03:45 +0000</pubDate>
		<dc:creator>mrengy</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://mike-eng.com/?p=2164</guid>
		<description><![CDATA[A beautiful and inspiring piece of video work that has left me speechless.]]></description>
			<content:encoded><![CDATA[<p><iframe src="http://player.vimeo.com/video/27246366?color=ffffff" width="949" height="534" frameborder="0"></iframe>
<p><a href="http://vimeo.com/27246366">MOVE</a> from <a href="http://vimeo.com/rickmereki">Rick Mereki</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
<div class="clear blog">I showed this to the video team at work, and the video director said simply, &#8220;That is the best thing I&#8217;ve seen in a long time.&#8221; I&#8217;m envious &#8211; not only of the work these folks made but of the thrilling time they clearly had making it.</div>
]]></content:encoded>
			<wfw:commentRss>http://mike-eng.com/the-best-thing-ive-seen-in-a-long-time/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Menu Information Architecture</title>
		<link>http://mike-eng.com/menu-information-architecture/</link>
		<comments>http://mike-eng.com/menu-information-architecture/#comments</comments>
		<pubDate>Mon, 23 May 2011 03:48:35 +0000</pubDate>
		<dc:creator>mrengy</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[diy]]></category>
		<category><![CDATA[information architecture]]></category>

		<guid isPermaLink="false">http://mike-eng.com/?p=2130</guid>
		<description><![CDATA[On D.I.Y. information architecture in everyday places.]]></description>
			<content:encoded><![CDATA[<div class="clear blog">
<div id="attachment_2134" class="wp-caption alignnone" style="width: 310px"><a href="http://mike-eng.com/wp-content/uploads/menu_information_architecture-3.jpg"><img src="http://mike-eng.com/wp-content/uploads/menu_information_architecture-3-300x240.jpg" alt="Modern Diner" title="Modern Diner" width="300" height="240" class="size-medium wp-image-2134" /></a><p class="wp-caption-text">The Modern Diner in all its Glory. Photo credit: <a href='http://www.flickr.com/photos/ethomsen/3307175209/'>Elizabeth Thomsen</a></p></div></p>
<p>There&#8217;s an ongoing debate about whether design should be upheld as a specialized profession requiring serious training or whether the basics, at least, can be taught to anyone easily (without $140,000 and 4 years in design school). Some maintain that everyone is a designer to some extent whether or not he/she realizes it. In 2006, students and faculty from <a href="http://www.mica.edu/">Maryland Institute College of Art</a> created a book called <a href="http://www.amazon.com/D-I-Y-Design-Yourself-Handbooks/dp/1568985525">D.I.Y: Design It Yourself</a> that sparked quite a <a href="http://www.aiga.org/content.cfm/the-diy-debate">controversy</a> on the subject.</p>
<p>Here is an example of the &#8220;everyone is a designer&#8221; side of the argument.</p>
<p>A menu can be thought of as a down-to-earth example of information architecture. Just about every menu does it &#8211; breaking up dishes into categories (appetizers, entrees, sides, drinks, desserts) and sometimes sub-categories (beef, poultry, seafood, vegetarian) and then individual dishes.
</p></div>
<div class="clear blog">
Whether you are designing a website, an application, a poster, or a menu, humans, unlike computers, have a fairly low limit on the amount of information they can hold in their minds at once. Common practice for the maximum number of items to include in a <a href="http://www.welie.com/patterns/showPattern.php?patternID=main-navigation">horizontal website navigation</a> centers around 7. This is close to the human digit span of <a href="http://en.wikipedia.org/wiki/Seven_plus_or_minus_two">7 +/- 2</a>. So we do this architecture to allow users to make a series of progressive easy decisions rather than one overwhelming one.
</div>
<div class="clear blog">
The challenge in information architecture is how to establish those choices in a way that end users understand. Whoever designed the decidedly bare-bones menu for the Modern Diner in Pawtucket stumbled upon a key distinction to make up front which every diner-goer can easily make and which splits every breakfast food into one of two simple categories &#8211; that of &#8220;sweet&#8221; or &#8220;savory&#8221;.
</div>
<div class="clear blog">
<div id="attachment_2132" class="wp-caption alignnone" style="width: 310px"><a href="http://mike-eng.com/wp-content/uploads/menu_information_architecture-1.jpg"><img class="size-medium wp-image-2132" title="Sweet" src="http://mike-eng.com/wp-content/uploads/menu_information_architecture-1-300x293.jpg" alt="Sweet" width="300" height="293" /></a><p class="wp-caption-text">Menu Side 1: Sweet</p></div><br />
<div id="attachment_2133" class="wp-caption alignnone" style="width: 310px"><a href="http://mike-eng.com/wp-content/uploads/menu_information_architecture-2.jpg"><img class="size-medium wp-image-2133" title="Savory" src="http://mike-eng.com/wp-content/uploads/menu_information_architecture-2-300x283.jpg" alt="Savory" width="300" height="283" /></a><p class="wp-caption-text">Menu Side 2: Savory</p></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://mike-eng.com/menu-information-architecture/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
