<?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>Sixteen Small Stones &#187; software</title>
	<atom:link href="http://www.sixteensmallstones.org/keyword/software/feed" rel="self" type="application/rss+xml" />
	<link>http://www.sixteensmallstones.org</link>
	<description>The Weblog of J. Max Wilson</description>
	<lastBuildDate>Thu, 02 Feb 2012 23:50:09 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<atom:link rel="hub" href="http://pubsubhubbub.appspot.com" />
	<atom:link rel="hub" href="http://superfeedr.com/hubbub" />
			<item>
		<title>ScriptureLog for WordPress &#8211; Flooding the Internet with The Book of Mormon</title>
		<link>http://www.sixteensmallstones.org/scripturelog-for-wordpress-flooding-the-internet-with-the-book-of-mormon</link>
		<comments>http://www.sixteensmallstones.org/scripturelog-for-wordpress-flooding-the-internet-with-the-book-of-mormon#comments</comments>
		<pubDate>Mon, 26 Oct 2009 14:30:27 +0000</pubDate>
		<dc:creator>J. Max Wilson</dc:creator>
				<category><![CDATA[lds]]></category>
		<category><![CDATA[free]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[plugins]]></category>
		<category><![CDATA[scripture study]]></category>
		<category><![CDATA[scripturelog]]></category>
		<category><![CDATA[scriptures]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[The Book of Mormon]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.sixteensmallstones.org/?p=462</guid>
		<description><![CDATA[Before I get into the tedious specifics, let me get right to the main announcement. Daniel Bartholomew and I are very excited to introduce you to ScriptureLog. [We appear to be having some issues with our web host.  We hope &#8230; <a href="http://www.sixteensmallstones.org/scripturelog-for-wordpress-flooding-the-internet-with-the-book-of-mormon">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Before I get into the tedious specifics, let me get right to the main announcement.</p>
<p><a href="http://blognitivedissonance.com/2009/10/26/scripturelog-for-wordpress/">Daniel Bartholomew</a> and I are very excited to introduce you to <a href="http://scripturelog.com">ScriptureLog</a>.</p>
<p>[We appear to be having some issues with our web host.  We hope to have it resolved soon.  If it doesn't load try it again after a while.]</p>
<p><strong>ScriptureLog</strong></p>
<p>Scripturelog is a free, open source plugin for the popular <a href="http://wordpress.org">WordPress</a> blogging platform that <em>turns WordPress into a collaborative online LDS scripture study journal</em>.</p>
<p><img class="alignleft size-full wp-image-464" style="margin: 10px;" title="scriptures" src="http://www.sixteensmallstones.org/wp-content/uploads/2009/10/scriptures.PNG" alt="scriptures" width="151" height="76" /><br />
The plugin installs volumes of scripture into WordPress as hierarchical, inter-linking pages of books, chapters, and verses.  Once the pages are installed, you can use the built-in features of WordPress by yourself or in collaboration with others to read the scriptures, take notes, and discuss the gospel.</p>
<p><span id="more-462"></span></p>
<p>ScriptureLog can be used by a family or a study group to read and comment on the scriptures from a distance.  It can be used by a Sunday school, seminary, or school religion class to allow for preparatory or follow up discussion by class members on the scriptures being studied for a class. It can be set up on an local network for private use or hosted publicly.</p>
<p>Go check it out right now at <a href="http://scripturelog.com">http://scripturelog.com</a> and then come back here.</p>
<p><strong>Features</strong><br />
ScriptureLog benefits from all of the great features of WordPress. And there are scores of free plugins and themes that can be used to customize the site to your liking: plugins to make the site private, or to require registration; plugins to allow people to subscribe to be notified of comments by email; plugins to allow people to login using Facebook or Open ID; plugins to interface with twitter.<a href="http://www.sixteensmallstones.org/wp-content/uploads/2009/10/wordpress-logo-notext-rgb.png" rel="lightbox[462]"><img class="alignright size-full wp-image-465" style="margin: 10px;" title="wordpress-logo-notext-rgb" src="http://www.sixteensmallstones.org/wp-content/uploads/2009/10/wordpress-logo-notext-rgb.png" alt="wordpress-logo-notext-rgb" width="108" height="108" /></a></p>
<p>Currently only the Book of Mormon is available.  It is organized in a way to help readers understand the textual structure of the book. Though not yet available for download, the code for the Old and New Testaments, the Book of Doctrine and Covenants, and the Pearl of Great Price is substantially complete.  However we are still working on an organization that helps illuminate some of the textual structure of these other books, like we have for The Book of Mormon, so we have not made them available quite yet.</p>
<p>Every ScriptureLog page links to the corresponding section at the official LDS Scriptures website.</p>
<p>Because it is open source and built on WordPress, the plugin is open to innovation by others.  WordPress has a well documented plugin API and we hope that in addition to suggesting patches to the plugin itself, other developers will produce companion plugins to enhance features.</p>
<p><strong>How ScriptureLog Came to Pass</strong></p>
<p>I am not a very good at studying the scriptures. I have often had great aspirations for a better approach to scripture study, but my study nearly always falls far short of my intentions.  I&#8217;ve experimented with various systems of study over the years, always looking for something better.  In some ways, ScriptureLog is an extension of that search.</p>
<p>In September of 2004, ancient history in blogging, when I was still blogging under the pseudonym Ebenezer Orthodoxy, I wrote a post entitled &#8220;On the Follies of Scripture Marking.&#8221;  While scripture marking has its place, my main concern was that it encourages a reductionist compartmentalization of the text and facilitates ritualized reading.  In other words we establish visual queues that prompt us to read the verses the same way each time we encounter them and separate them from the surrounding text.  I began to explore the idea of a scripture study journal as an alternative to scripture marking. (That post is no longer publicly available, but I may repost it if there is interest.)</p>
<p>In March of 2005, I posted about my <a href="http://www.millennialstar.org/an-alternative-to-scripture-marking-the-integrated-scripture-journal/">attempts to construct a scripture study journal</a>.  I purchased a looseleaf edition of the Book of Mormon designed for use in a day planner from Deseret Book and put it in a small three-ring-binder style journal. I could write impressions, thoughts, observations, relationships to other scriptures, and note external references or personal experiences related to the text on the journal pages along with the date and then insert them in between the pages of the Book of Mormon to which they related.  I still like this idea a lot, however the pages would rip out of the binder easily and it was too tedious to reinforce them manually, and I stopped using it.</p>
<p>In March of 2006 I registered a scripture related domain name and began working on my own scripture study service that would allow people to use emerging technology trends in tagging and folksonomy to tag scriptures and take notes.  I wanted to have free signup, groups, tools for group administration and coordination, etc.  But at the time the project was simply too ambitious for me to do in my spare time.</p>
<p>In April of 2007 I tried using <a href="http://www.google.com/notebook/">Google&#8217;s Notebook product</a> as an electronic scripture study journal.  I would link to the section of scripture at scriptures.lds.org and write my notes.  The notes were available anywhere I had internet access, but they were also outside of the context of the actual text and they were difficult to organize.  I stopped using it.</p>
<p>Daniel Bartholomew and I met through LDS Blogging.  He had various scripture study projects of his own, but since he is not a programmer he was doing a lot of manual work with HTML tables.  We had discussed our mutual interest in ways to improve scripture study and my ambitions for a scripture study website back in 2006, and I had helped him a little with some of his coding projects.</p>
<p>At the end of 2007 he paid me to write a custom program for him that would parse text files containing scriptures and generate thousands of static HTML files based upon customizable templates.</p>
<p>But Dan felt the final result was still not entirely satisfying.  He also wanted to &#8216;go&#8217; open-source and create a model which would allow others to improve the results.</p>
<p>Dan and I were discussing some enhancements he wanted for the program I had written and ideas he had about where he would like to see his project go.  Dan had been a big fan of WordPress ever since I had known him and decided WordPress provided an excellent model for what he wanted.   He asked me how hard it would be to import the html scripture pages he had been working on into a WordPress MySql database and I told him it was very possible and had some immediate ideas about how to do it.  At that point we both became very excited about the prospects.  Dan wanted to pay me to work on it, but after looking into it I was so excited about his idea that I offered to do it for free.  I realized that WordPress offered all of the things I had wanted to do with my own scripture study service: user management, tagging, RSS feeds, plugins, and developer API.  Why not use WordPress as the platform? Dan&#8217;s idea was great!</p>
<p>I had seen myself as merely a technical advisor to Dan&#8217;s project, but Dan asked me to partner with him on this project and I accepted.</p>
<p>Working full time, finishing my degree at BYU, working on the scripture parser program, and  developing and launching my LDS blog portal, <a href="http://www.nothingwavering.org">NothingWavering.org</a>, kept me from pursuing the WordPress idea until nearly a year later.  On December 23, 2008 I emailed the first version of the plugin to Dan.  It still needed a lot of work and with Dan&#8217;s continual feedback,  ideas, and testing I continued to work on it into 2009.</p>
<p>In March of 2009, I posted an <a href="http://www.sixteensmallstones.org/an-outline-of-the-textual-structure-of-the-book-of-mormon">Outline of the Textual Structure of the Book of Mormon</a> to my blog.  The outline was an outgrowth of my work on the ScriptureLog Plugin.</p>
<p>So here we are in October, 2009 and it is finally launching.</p>
<p>President Ezra Taft Benson, in his famous <a href="http://www.lds.org/ldsorg/v/index.jsp?hideNav=1&amp;locale=0&amp;sourceId=4697d7630a27b010VgnVCM1000004d82620a____&amp;vgnextoid=2354fccf2b7db010VgnVCM1000004d82620aRCRD">sermon on the Book of Mormon</a> said:</p>
<blockquote><p>&#8220;The time is long overdue for a massive flooding of the earth with the Book of Mormon for the many reasons which the Lord has given. In this age of the electronic media and the mass distribution of the printed word, God will hold us accountable if we do not now move the Book of Mormon in a monumental way.&#8221;</p></blockquote>
<p>ScriptureLog represents the culmination of our personal attempts to find ways to better study the scriptures, in particular the Book of Mormon, and we hope that it can contribute to the fulfillment of President Benson&#8217;s prophetic vision.</p>
<p>Dan and I enjoy working together and look forward to not only eventually making all the scriptures available for WordPress, but also to develop ways that we can apply this blog-and-a-book technology to other forms of great literature.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sixteensmallstones.org/scripturelog-for-wordpress-flooding-the-internet-with-the-book-of-mormon/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Updated Software, Theme, and Comments Policy</title>
		<link>http://www.sixteensmallstones.org/updated-software-theme-and-comments-policy</link>
		<comments>http://www.sixteensmallstones.org/updated-software-theme-and-comments-policy#comments</comments>
		<pubDate>Sun, 09 Nov 2008 11:11:54 +0000</pubDate>
		<dc:creator>J. Max Wilson</dc:creator>
				<category><![CDATA[blog maintenance]]></category>
		<category><![CDATA[about]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[chyrp]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[textpattern]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.sixteensmallstones.org/?p=200</guid>
		<description><![CDATA[I have long resisted running my blog on WordPress because so much of the actual code is messy and because I prefer a more object oriented approach than it employs.  I chose Textpattern for many reasons that at the time &#8230; <a href="http://www.sixteensmallstones.org/updated-software-theme-and-comments-policy">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I have long resisted running my blog on <a href="http://wordpress.org">WordPress </a>because so much of the actual code is messy and because I prefer a more object oriented approach than it employs.  I chose <a href="http://textpattern.com">Textpattern</a> for many reasons that at the time made it superior and have used it since 2005.  Even before that, when we first started the <a href="http://www.millennialstar.org">Millennial Star</a> blog, we chose <a href="http://b2evolution.net">b2Evolution</a> over WordPress because of its superior coding. (I&#8217;ve also used <a href="http://www.joomla.org">Joomla </a>and <a href="http://drupal.org">Drupal</a>)</p>
<p>However, looking at the situation now and the huge community and momentum that WordPress has amassed, it pretty clear that WordPress is easier to use for general blogging than any of these others, despite a number of annoying architectural, geeky complaints that just wont go away.<span id="more-200"></span></p>
<p>I really, really, really wanted to switch to <a href="http://chyrp.net">Chyrp</a>, but I decided that no matter how well done the code is, I just couldn&#8217;t afford to get trapped into another marginal platform.</p>
<p>So now I&#8217;m on WordPress.  I am running the second Beta of the upcoming 2.7 version with the fancy new dashboard.</p>
<p>To move my data and template was a pain.  I had to write a custom PHP script to migrate all of my posts, comments, and tags directly from the old Textpattern database tables into the WordPress tables.</p>
<p>I also took the time to update my theme, since I had to migrate it from Textpattern&#8217;s custom xml template system to the ugly theme system that WordPress uses.</p>
<p>One big change that WordPress has facilitated is that I will now be switching how I do comment moderation.  Before I had it configured so that all comments had to be individually approved before showing up on the blog.  This kind of strict moderation imposes too much of an impediment to conversation and community.</p>
<p>So instead, I am asking all those who wish to comment and converse here that they register for a sixteensmallstones.org login.  Once you have activated your account, you must log in to comment.  The first time you comment will still be moderated, but once I have approved it you should be able to comment without further impediment as long as you are logged in.</p>
<p>If you have been reading Sixteen Small Stones but haven&#8217;t ever commented, and even if you have commented but haven&#8217;t really been introduced, this post would be a great place to introduce yourself and get to know some of the other people who read here (and of course help me test the new comment system and policy in the process).</p>
<p>Please let me know if you have any trouble with this new system, or run into any problems with the blog that might have been caused by the migration.</p>
<p>Oh. And if you are a long-time WordPress user, feel free to gloat a bit&#8230;and then to recommend any plugins that you consider a must-have.</p>
<p>Thanks and enjoy the updated website!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sixteensmallstones.org/updated-software-theme-and-comments-policy/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>HOW TO: Recover Accidentally Deleted Photos From Your Digital Camera</title>
		<link>http://www.sixteensmallstones.org/how-to-recover-accidentally-deleted-photos-from-your-digital-camera</link>
		<comments>http://www.sixteensmallstones.org/how-to-recover-accidentally-deleted-photos-from-your-digital-camera#comments</comments>
		<pubDate>Fri, 11 Jan 2008 18:55:00 +0000</pubDate>
		<dc:creator>J. Max Wilson</dc:creator>
				<category><![CDATA[technology]]></category>
		<category><![CDATA[autobiographical]]></category>
		<category><![CDATA[camera]]></category>
		<category><![CDATA[how to]]></category>
		<category><![CDATA[photo recovery]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Just after Christmas, my wife was looking through the more than 300 photos on our digital camera that we had taken between Halloween and Christmas. Our four year old daughter had snapped about 30 photographs the day before and the &#8230; <a href="http://www.sixteensmallstones.org/how-to-recover-accidentally-deleted-photos-from-your-digital-camera">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><img src="./wp-content/uploads/old_images/38.gif" alt="A Camera" style="height:150px;width:220px;float: left; margin: 10px;" />Just after Christmas, my wife was looking through the more than 300 photos on our digital camera that we had taken between Halloween and Christmas.  Our four year old daughter had snapped about 30 photographs the day before and the camera memory was getting full.  The battery was getting low too and the camera wasn&#8217;t responding well to the controls.  My wife mentioned that she still hadn&#8217;t downloaded many of the pictures from the camera to her computer and that she better do it just in case something were to go wrong and we were to lose them.</p>
<p>She was struggling with the uncooperative controls, when all of a sudden she cried out &#8220;Oh NO!  I think I just accidentally deleted all the photos!&#8221;</p>
<p>&#8220;What?&#8221; I responded. &#8220;How did you do that?!&#8221;</p>
<p>She didn&#8217;t know exactly how it had happened, but she was right.  There wasn&#8217;t a single picture on the camera.  All the pictures of Christmas Day, the pictures of the snowman I built with the kids before Christmas, the pictures of our family Christmas party, even the pictures from Thanksgiving&#8212;ALL GONE!  She was devastated.</p>
<p>I panicked for a only a brief moment, but then the computer geek part of my brain clicked on.</p>
<p>&#8220;I think I can recover them,&#8221; I told her.</p>
<p> <span id="more-158"></span></p>
<p>&#8220;How?&#8221; She asked dubiously.</p>
<p>&#8220;The camera memory is essentially just like a computer disk.  I can probably get them back just like I can files,&#8221; I explained as I rushed out of the room toward the computer. &#8220;Just give me a few minutes.&#8221;</p>
<p>I am such a geek that I have a 1 gigabyte USB drive that I carry around on my key-chain filled with the installers for all of the most recent versions of free and open source software that I use frequently or might need at some point to install on someone else&#8217;s computer.  (I am often asked to fix the computers of friends and relatives when I am visiting, so having all of these programs handy is usually helpful.)</p>
<p>I loaded up my USB drive and looked through the packages. Then I ran the installer for &#8220;PC Inspector Smart Recovery.&#8221;  PC Inspector Smart Recovery is a free data recovery program design to recover deleted data from digital camera cards.  It is released under a creative commons license that allows free distribution for personal use.</p>
<p>The program installed in less than 30 seconds.  Then I attached the camera to the computer using the USB cable and then ran PC Inspector Smart Recovery.  The process was simple.  I selected the drive letter assigned to my camera by Windows.  When we retrieve photos from our camera they are in JPG format, so I selected JPG from the file format selection box.  Then I created a folder on my desktop called &#8220;RecoveredPhotos&#8221; and selected it using the Open File button and set the file name to Photo. and I clicked &#8220;Start.&#8221;</p>
<p>With in a few seconds the first couple of files began to appear in the folder.  I opened them to verify that they displayed correctly and they did!  Huzzah!</p>
<p>The process looked like it was going to take a while so I left it running and went to tell my wife the good news.  It took between 30 minutes and an hour for the recovery process to run, but we recovered all of the over 300 pictures.</p>
<p>So, if you accidentally delete all of the photos on your digital camera, here is a step by step guide to recovery for those who are less comfortable with technology:</p>
<p>1. Don&#8217;t freak out&#8230;yet.</p>
<p>2. Whatever you do, don&#8217;t take any pictures with your camera until you have recovered your deleted photos.  Taking pictures will overwrite the digital photo information on the camera and make recovery impossible.</p>
<p>3. Download <a href="http://www.pcinspector.de/Sites/smart_recovery/download.htm?language=1">PC Inspector Smart Recovery</a> .  Accept the license agreement.  Then choose your language from the drop down box.  Then select &#8220;http&#8221; from the &#8220;choose download&#8221; box and click the &#8220;download&#8221; button. Save the install program, pci_us_smartrecovery.exe, on your desktop (about 6.1 megabytes).</p>
<p><img src="./wp-content/uploads/old_images/26.gif" alt="Program Installer Icon" style="height:107px;width:97px" /></p>
<p>4. Run the install program and complete the install wizard.</p>
<p><img src="./wp-content/uploads/old_images/27.gif" alt="Program Installer Wizard" style="height:303px;width:400px" /></p>
<p>5. Attach your camera to the computer via the USB cable, as you normally would to download the pictures to your computer.</p>
<p><img src="./wp-content/uploads/old_images/37.gif" alt="USB Cable" style="height:75px;width:100px" /></p>
<p>6. Instead of using the program you normally use to download your pictures, double click the &#8220;PC Inspector Smart Recovery&#8221; icon that was put on your desktop by the install program.</p>
<p><img src="./wp-content/uploads/old_images/28.gif" alt="Program Desktop Icon" style="height:98px;width:70px" /></p>
<p><img src="./wp-content/uploads/old_images/29.gif" alt="PCI Smart Recover Program Screenshot" style="height:293px;width:400px" /></p>
<p>7. In Box #1 select the Drive Letter that Windows assigned to your Camera.</p>
<p><img src="./wp-content/uploads/old_images/30.gif" alt="PCI Smart Recovery Select Device Box" style="height:197px;width:236px" /></p>
<p>8. In Box #2 select the Picture Format used by your camera.  Many modern digital cameras use JPG which is the default.</p>
<p><img src="./wp-content/uploads/old_images/31.gif" alt="PCI Smart Recovery Select Picture Format Box" style="height:197px;width:197px" /></p>
<p><img src="./wp-content/uploads/old_images/33.gif" alt="PCI Smart Recovery Picture Formats" style="height:145px;width:182px" /></p>
<p>9. This may be the most confusing part of the process for those who are somewhat uncomfortable with computers because it is not very clear that you are both selecting the folder where the recovered pictures will be placed AND the filename the pictures will be assigned.</p>
<p><img src="./wp-content/uploads/old_images/32.gif" alt="PCI Smart Recovery Select Destination Box" style="height:197px;width:205px" /></p>
<p>  Click the little button with the folder to browse to the folder you want the pictures to go into.  You may want to create a new folder for them.  Once you have navigated to the folder where you want the pictures to be saved, you will also need to type in the file name you want them assigned in the &#8220;File Name:&#8221; box. </p>
<p><img src="./wp-content/uploads/old_images/35.gif" alt="PCI Smart Recovery Destination Dialog" style="height:296px;width:400px" /></p>
<p> If you type &#8220;RecoveredPicture&#8221; then the recovered pictures will be named &#8220;RecoveredPicture001.jpg&#8221;, &#8220;RecoveredPicture002.jpg&#8221;, etc.  Once you have selected the correct folder and entered the filename, click the &#8220;save&#8221; button.</p>
<p>10. Now you can start the recovery process by Clicking the &#8220;Start&#8221; button in the lower right hand corner of the program.</p>
<p><img src="./wp-content/uploads/old_images/36.gif" alt="PCI Smart Recovery Start Button" style="height:36px;width:193px" /></p>
<p>11. The recover process can take some time.  Before it gets to far along you will probably want to open up the folder where you told it to put the recovered pictures and try viewing the first couple it recovered to make sure that it is working.  If it is not, you may have selected the wrong picture format in box #2.  If it isn&#8217;t working, click the cancel button and change the file format setting and try again.</p>
<p>12.  If this process didn&#8217;t work, now is the appropriate time to start freaking out.  Get a geek friend and see if she can figure it out.</p>
<p>Hopefully this will be helpful to some poor soul out there who has just accidentally deleted the the photos of their wedding or the birth of their first child from their digital camera.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sixteensmallstones.org/how-to-recover-accidentally-deleted-photos-from-your-digital-camera/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Paper Prototyping &amp;  The Best Geek Comment Ever</title>
		<link>http://www.sixteensmallstones.org/paper-prototyping-the-best-geek-comment-ever</link>
		<comments>http://www.sixteensmallstones.org/paper-prototyping-the-best-geek-comment-ever#comments</comments>
		<pubDate>Fri, 12 Oct 2007 16:52:59 +0000</pubDate>
		<dc:creator>J. Max Wilson</dc:creator>
				<category><![CDATA[technology]]></category>
		<category><![CDATA[funny]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[usability]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[I apologize for two tech related posts in a row, but this was just too good to not share. I was reading an interesting article on a usability design method they call &#8220;Paper Prototyping&#8221; and the first comment on the &#8230; <a href="http://www.sixteensmallstones.org/paper-prototyping-the-best-geek-comment-ever">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I apologize for two tech related posts in a row, but this was just too good to not share.</p>
<p>I was reading an interesting article on a usability design method they call &#8220;Paper Prototyping&#8221;  and the first comment on the article was pure geek gold.  In order to truly appreciate it let me give you the context first.</p>
<p>Paper Prototyping is a inexpensive, low-tech method of brainstorming, or of testing the usability of proposed designs for a software interface.  Basically, you print out the various aspects of the proposed user interface on paper or cards.  You cut out individual elements of the interface design with a pair of scissors if necessary.  Then you sit down with the end user and you take the place of the computer.  The user then interacts with the paper prototype, and you show them what would happen by laying down different sections to show how the interface changes and displays data.</p>
<p>So here is the golden comment by one Mantari Damacy:</p>
<blockquote><p>
It is like a role playing game, except, for using a computer!</p>
<p>PLAYER: “Okay, I save my file.”</p>
<p>GM: [dice clatters, looks up chart] Okay, you try to save your file, A new window pops up on the screen that indicates a general I/O error, but gives no specific details.</p>
<p>PLAYER: “Oh no! I open up the case, and pull the boot disc off of the IDE controller!”</p>
<p>GM: Okay. [dice clatters] Well, you manage to open up the case without tripping the power, but you’re not familiar with the internal workings of this machine. You can’t locate any IDE drives…
</p></blockquote>
<p>Awesome!  I can just imagine a prototyping session ending with the following exchange between the designer and user:</p>
<p>&#8220;Sinus supremus!&#8221;<br />
&#8220;Zero charisma!&#8221;<br />
&#8220;Sinus supremus!&#8221;<br />
&#8220;Zero charisma!&#8221;</p>
<p> <img src='http://www.sixteensmallstones.org/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>See <a href="http://www.openxtra.co.uk/blog/2007/10/11/paper-prototyping-its-best-kept-secret/">the original article</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sixteensmallstones.org/paper-prototyping-the-best-geek-comment-ever/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP Bug: The magic __call method and overriding methods in child classes</title>
		<link>http://www.sixteensmallstones.org/php-bug-the-magic-call-method-and-overriding-methods-in-child-classes</link>
		<comments>http://www.sixteensmallstones.org/php-bug-the-magic-call-method-and-overriding-methods-in-child-classes#comments</comments>
		<pubDate>Fri, 12 Oct 2007 02:36:00 +0000</pubDate>
		<dc:creator>J. Max Wilson</dc:creator>
				<category><![CDATA[technology]]></category>
		<category><![CDATA[bugs]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[This article is about a technical aspect of computer programming and since I know that many of my readers are not computer programmers, and of those that are, many do not program in PHP, you may safely ignore it unless &#8230; <a href="http://www.sixteensmallstones.org/php-bug-the-magic-call-method-and-overriding-methods-in-child-classes">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>This article is about a technical aspect of computer programming and since I know that many of my readers are not computer programmers, and of those that are, many do not program in <a href="http://www.php.net">PHP</a>, you may safely ignore it unless it interests you.</p>
<p>As I&#8217;ve been working on a light-weight data access layer for PHP5.1+ that I hope to release as open source in the near future, I have discovered an annoying design flaw in PHP.</p>
<p>Support for a more object-oriented approach to programming has been greatly improved since the introduction of PHP5.  PHP also offers some <a href="http://us2.php.net/manual/en/language.oop5.overloading.php">magic</a> methods that can be used to simulate properties and methods without having to actually declare them individually.  These are great for implementing on the fly methods and properties.</p>
<p>But these magic &#8220;overloading&#8221; methods don&#8217;t function exactly as expected when it comes to inherited child classes.</p>
<p> <span id="more-138"></span></p>
<p>Here an example program to demonstrate the problem I have discovered:</p>
<pre>
&lt;?php
class A
{
// Use the magic __call method to handle
// method calls that aren't actually defined
function __call($strMethod, $arrArgs)
{
switch ($strMethod)
{
case "getEvaluation":
return "PHP " . phpversion();
break;
default:
$strError = 'Call to undefined method ';
$strError .= get_class($this);
$strError .= '::'.$strMethod.'()';
throw new Exception($strError);
break;
}
}
}
class B extends A
{
// Define a real method in the child class
// that overrides the magic method in
// the parent class to modify what it normally
// would return
function getEvaluation()
{
return parent::getEvaluation() . " Rocks!";
}
}
// Instantiate the parent class and call the
// method which should be handled magically by
// the __call method
$A = new A();
echo $A-&gt;getEvaluation() . "&lt;br/&gt;";
// Instantiate the child class and call the method
$B = new B();
echo $B-&gt;getEvaluation() . "&lt;br/&gt;";
?&gt;
</pre>
<p>The output one would expect from this script would be:</p>
<blockquote><p>
PHP 5.2.4<br />
PHP 5.2.4 Rocks!
</p></blockquote>
<p>
But instead this is what you really get:</p>
<p>
<blockquote>
PHP 5.2.4</p>
<p>Fatal error: Call to undefined method A::getevaluation() in /www/test.php on line 34
</p></blockquote>
<p>The magic __call() method is never invoked when an undefined method is called on the parent class from within the child class method.  Ouch!</p>
<p>This was apparently reported as a bug to the PHP development team back  in PHP 5.1 Release Candidate 1 in October of 2005 (<a href="http://bugs.php.net/bug.php?id=34739">Bug #34739</a>) but it was marked as &#8220;Bogus&#8221; and closed with a the explanation that &#8221;__call() is not used when calling static methods.&#8221;</p>
<p>Of course, the explanation is itself &#8220;Bogus.&#8221; It doesn&#8217;t make any sense at all.  In this case, the paamayim-nekudotayim (::) or <a href="http://us2.php.net/manual/en/keyword.paamayim-nekudotayim.php">scope resolution operator</a> is being used in conjunction with the parent keyword to access the overridden method of a parent class within an instance of the child, not a static method on the class.</p>
<p>The code above should work as written.</p>
<p>There is a workaround, but I find it very unsatisfactory.  You have to replace the call to parent::getEvaluation() with parent::<em>_call(&#8216;getEvaluation&#8217;,null) .  This works, but it means that you have to know that your parent class uses the magic </em>_call() method and which methods are magical and which are not in order to override them in a child class.</p>
<p>The child class should be agnostic to whether the parent class methods that it is trying to invoke are real or magical.</p>
<p>So I have <a href="http://bugs.php.net/bug.php?id=42937">submitted the bug</a> to the PHP bug tracker.  Let&#8217;s hope that the developers agree that this is a serious design flaw that interferes with the ability to program object oriented code in PHP.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sixteensmallstones.org/php-bug-the-magic-call-method-and-overriding-methods-in-child-classes/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Time to Write That Screenplay</title>
		<link>http://www.sixteensmallstones.org/time-to-write-that-screenplay</link>
		<comments>http://www.sixteensmallstones.org/time-to-write-that-screenplay#comments</comments>
		<pubDate>Sun, 14 May 2006 04:54:00 +0000</pubDate>
		<dc:creator>J. Max Wilson</dc:creator>
				<category><![CDATA[technology]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[writing]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Some of the most exciting developments in technology are those that break down barriers to entry into areas that have been previously monopolized by a select few. If you are like me, at one time or another you have considered &#8230; <a href="http://www.sixteensmallstones.org/time-to-write-that-screenplay">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Some of the most exciting developments in technology are those that break down barriers to entry into areas that have been previously monopolized by a select few.</p>
<p>If you are like me, at one time or another you have considered trying your hand at Screenwriting.  Sometimes this desire is inspired by viewing a particularly awe inspiring film.  Other times it is provoked by seeing an unbelievably horrible one.</p>
<p>But, like many fields, the barriers to entry into the field of Screenwriting for the uninitiated have felt prohibitive.  For years now I have been looking for a free alternative to the expensive commercial Screenwriting software packages.  And since I am not confident about correct screenplay formatting and style, I wanted a program with a little bit of hand-holding for newbies.</p>
<p>No such program appeared to be available&#8230;until now.</p>
<p>I have just discovered the <a href="http://www.celtx.com">Celtx project</a> . </p>
<p>Celtx is an open source &#8220;pre-production program for film, video, theatre, and animation&#8221; based on the same mozilla framework that Firefox is developed from.  It includes story development tools for creating &#8220;detailed backgrounds for scenes and characters&#8221; and for writing &#8220;properly formatted script that can be annotated with any type of media, including notes, photos, sound files, and video clips.&#8221;  It also includes scheduling and collaboration tools for team writing. There are versions for Microsoft Windows 95, 98, NT, ME, 2000, XP, Mac OS X, and Linux.</p>
<p><txp:image id="7" /></p>
<p>When writing a script with Celtx, you simply use the tab key to rotate through the different formatting block types (heading, action, character, dialog, parenthetical, transition, shot, and text) and it automatically sets the correct formating in the script.</p>
<p>Celtx also comes with a short example script for a scene from &#8220;The Wizard of Oz.&#8221;</p>
<p>With increasingly cheap digital video production tools we are already seeing an explosion in alternative media production and with free software like Celtx, we may, in the not so distant future, be able to provide a viable alternative to Hollywood. </p>
<p>So if you have been sitting around day-dreaming about writing a good movie screenplay, download Celtx and check it out.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sixteensmallstones.org/time-to-write-that-screenplay/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Spellcheck for Firefox 1.5.0.1</title>
		<link>http://www.sixteensmallstones.org/spellcheck-for-firefox-1501</link>
		<comments>http://www.sixteensmallstones.org/spellcheck-for-firefox-1501#comments</comments>
		<pubDate>Wed, 15 Mar 2006 03:51:16 +0000</pubDate>
		<dc:creator>J. Max Wilson</dc:creator>
				<category><![CDATA[technology]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[When version 1.5 of the wonderful Firefox web browser was released last November, I linked to some of the extensions that I have found most useful. When the Firefox 1.5.0.1 upgrade was released in February, I found that the spell &#8230; <a href="http://www.sixteensmallstones.org/spellcheck-for-firefox-1501">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>When version 1.5 of the wonderful Firefox web browser was released last November, I <a href="http://www.sixteensmallstones.org/firefox-15-released">linked</a> to some of the extensions that I have found most useful.</p>
<p>When the Firefox 1.5.0.1 upgrade was released in February, I found that the spell check extension, Spellbound, was no longer compatible!  During the last couple of months, I have visited the Spellbound website hoping for an upgrade that will work in the newest versions of Firefox, but it appears that the project has been dead since before the November release of Firefox.</p>
<p>Today, I am very happy to have found the Spellbound development version available on a different site.  Even though it is not a release version, it appears to work great with Firefox 1.5.0.1, and it includes great new features.</p>
<p>This new version spell checks form inputs as you type, underlining misspelled words and offering correction suggestions if you hold down the ctrl key while clicking on the word.</p>
<p>Get the Spellbound development version at:<br />
<a href="http://forums.mozillazine.org/viewtopic.php?t=351130">http://forums.mozillazine.org/viewtopic.php?t=351130</a></p>
<p>(And if you are still aren&#8217;t using Firefox as you primary web browser, download it today! <a href="http://www.mozilla.com/firefox/">http://www.mozilla.com/firefox/</a> )</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sixteensmallstones.org/spellcheck-for-firefox-1501/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Firebug Extension for Firefox</title>
		<link>http://www.sixteensmallstones.org/the-firebug-extension-for-firefox</link>
		<comments>http://www.sixteensmallstones.org/the-firebug-extension-for-firefox#comments</comments>
		<pubDate>Wed, 18 Jan 2006 23:31:47 +0000</pubDate>
		<dc:creator>J. Max Wilson</dc:creator>
				<category><![CDATA[technology]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[If you develop for the web, there is a new extension for Firefox that you simply must get: Firebug combines the functionality of the DOM inspector with the Error console and command-line JavaScript interpretor and then packs it with some &#8230; <a href="http://www.sixteensmallstones.org/the-firebug-extension-for-firefox">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>If you develop for the web, there is a new extension for Firefox that you simply must get:</p>
<p><a href="http://www.joehewitt.com/software/firebug/">Firebug</a> combines the functionality of the DOM inspector with the Error console and command-line JavaScript interpretor and then packs it with some great additional features.</p>
<p> <span id="more-23"></span></p>
<p>Among its many features, Firebug allows you to inspect XMLHttpRequest responses, and so it will be invauable when debugging Ajax applications.</p>
<p>Another great feature is the ability to log custom debug messages from your javascript.  Until now, debugging JavaScript often involved strategically placed alert messages.  With Firebug, you simply add the following code to your script:</p>
<pre>
function printfire()
{
    if (document.createEvent)
    {
        printfire.args = arguments;
        var ev = document.createEvent("Events");
        ev.initEvent("printfire", false, true);
        dispatchEvent(ev);
    }
}
</pre>
<p>Then you call printfire(something); in your script and your debug message will be logged in the Firebug console.</p>
<p>You can read about Firebug&#8217;s other features in the <a href="http://www.joehewitt.com/software/firebug/faq.php">FAQ</a> .</p>
<p>Congratulations to programmer Joe Hewitt for this great plugin!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sixteensmallstones.org/the-firebug-extension-for-firefox/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Blogger Web Comments</title>
		<link>http://www.sixteensmallstones.org/blogger-web-comments</link>
		<comments>http://www.sixteensmallstones.org/blogger-web-comments#comments</comments>
		<pubDate>Thu, 15 Dec 2005 23:52:00 +0000</pubDate>
		<dc:creator>J. Max Wilson</dc:creator>
				<category><![CDATA[blog maintenance]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Today Google announced an exciting new tool for Firefox users called Blogger Web Comments . This fantastic little extension for the firefox browser automatically searches Google&#8217;s blog search service for posts that link to whatever page you are currently viewing. &#8230; <a href="http://www.sixteensmallstones.org/blogger-web-comments">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Today Google announced an exciting new tool for Firefox users called <a href="http://www.google.com/tools/firefox/webcomments/">Blogger Web Comments</a> .  This fantastic little extension for the firefox browser automatically searches Google&#8217;s blog search service for posts that link to whatever page you are currently viewing.  Then it displays a notification window in the bottom right hand corner of the browser window that shows the most recent blog posts that link to the page.  If you click on any of the listed posts, it opens them in a new browser tab.</p>
<p> <span id="more-13"></span></p>
<p>The notification box is customizable so you can choose to display only one link at a time or multiple links.  If you don&#8217;t want it popping up on every page you visit, you can hide it so that it only appears when you click on the small icon in the browser status bar and select &#8220;view comments.&#8221;</p>
<p>The plugin only starts searching for links once the page you are viewing has completed loading, and you can cancel the search before it finishes.</p>
<p>This sort of immediate feedback on any page you visit is really valuable, especially for bloggers.</p>
<p>Of course, Google is also using the tool to promote its own blogging platform, Blogger and blogspot.com.  If you use Blogger, the Blogger Web Comments extension has a link that allows you to quickly add a post to your blog about the page you are currently viewing.</p>
<p>The blog search, however, is not limited to blogspot blogs.</p>
<p>Download the extension and try it out:<br />
<a href="http://www.google.com/tools/firefox/webcomments/">http://www.google.com/tools/firefox/webcomments/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sixteensmallstones.org/blogger-web-comments/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

