<?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>MacLochlainns Weblog &#187; WordPress</title>
	<atom:link href="http://blog.mclaughlinsoftware.com/category/wordpress/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.mclaughlinsoftware.com</link>
	<description>Michael McLaughlin's Technical Blog</description>
	<lastBuildDate>Wed, 28 Jul 2010 00:02:37 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>reCAPTCHA on WordPress</title>
		<link>http://blog.mclaughlinsoftware.com/2009/07/18/recaptcha-on-wordpress/</link>
		<comments>http://blog.mclaughlinsoftware.com/2009/07/18/recaptcha-on-wordpress/#comments</comments>
		<pubDate>Sun, 19 Jul 2009 04:08:20 +0000</pubDate>
		<dc:creator>maclochlainn</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://blog.mclaughlinsoftware.com/?p=2944</guid>
		<description><![CDATA[I put up a contact page (@Contact Me) for two reasons. Too many folks wanted to ask something and could only do so through a comment. I would review the comment, email them, et cetera. Reason two is simpler, I should have done it from the outset. There were a few gotchas beyond installing and [...]]]></description>
			<content:encoded><![CDATA[<p>I put up a contact page (<a href="http://blog.mclaughlinsoftware.com/contact-me/">@Contact Me</a>) for two reasons. Too many folks wanted to ask something and could only do so through a comment. I would review the comment, email them, et cetera. Reason two is simpler, I should have done it from the outset.</p>
<p>There were a few gotchas beyond installing and securing your public and private keys. I figured that it might be helpful to note them here, especially if I have to troubleshoot it later. <img src='http://blog.mclaughlinsoftware.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<ol start="1">
<li>You need create a template, like <code>contact.php</code> script, which should include your contact form. You&#8217;ll also embed some <a href="http://recaptcha.net/plugins/php/">reCAPTCHA</a> PHP inside this file.</li>
</ol>
<div style="padding-left:30px">
<p>Make sure that your <em>action</em> attribute points to the following location, which is discussed later in step 5.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #339933;">&lt;</span>form action<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;/wp-content/themes/&lt;theme name&gt;/contact_code.php&quot;</span> <span style="color: #000000; font-weight: bold;">class</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;contact&quot;</span> method<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;post&quot;</span><span style="color: #339933;">&gt;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>The reCAPTCHA PHP should be the last element in your <em>form</em> tag set.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
  <span style="color: #666666; font-style: italic;">// Include the reCAPTCHA library, this assumes a relative directory.</span>
  <span style="color: #b1b100;">require_once</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'recaptchalib.php'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">// Get a key from http://recaptcha.net/api/getkey</span>
  <span style="color: #000088;">$publickey</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;&lt;your public key value goes here&gt;&quot;</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">// The response from reCAPTCHA</span>
  <span style="color: #000088;">$resp</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">null</span><span style="color: #339933;">;</span>
  <span style="color: #666666; font-style: italic;">// The error code from reCAPTCHA, if any</span>
  <span style="color: #000088;">$error</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">null</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #b1b100;">echo</span> recaptcha_get_html<span style="color: #009900;">&#40;</span><span style="color: #000088;">$publickey</span><span style="color: #339933;">,</span> <span style="color: #000088;">$error</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

</div>
<ol start="2">
<li>You need to put the following <a href="http://codex.wordpress.org/Stepping_Into_Templates">WordPress template</a> stub at the beginning of your <code>contact.php</code> page.</li>
</ol>
<div style="padding-left:30px">

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
  <span style="color: #666666; font-style: italic;">/*
    Template Name: contact
  */</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

</div>
<ol start="3">
<li>After you create and position the <code>contact.php</code> file in the <code>/wp-content/themes/&lt;theme_name&gt;/</code> within the document root, you should create a new blog page. You don&#8217;t put any text in the page, rather you simply choose the <code>contact.php</code> from your list of templates. You also need a title for the page, I used <em>@contact-me</em> (the @ won&#8217;t be used in any reference in the URL), which is an alias to the page</li>
</ol>
<ol start="4">
<li>You need to put the balance of your PHP code in a separate file, like <code>contact_code.php</code> and put the URL re-write and reCAPTCHA calls here.</li>
</ol>
<div style="padding-left:30px">

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
  <span style="color: #666666; font-style: italic;">// Include the library for reCAPTCHA at the theme level in the file hierarchy.</span>
  <span style="color: #b1b100;">require_once</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'recaptchalib.php'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">// Put any form PHP here.</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">// Declare your private key.</span>
  <span style="color: #000088;">$privatekey</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;&lt;put your private key here&gt;&quot;</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">// Check whether there a reCAPTCHA response?</span>
  <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;recaptcha_response_field&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000088;">$resp</span> <span style="color: #339933;">=</span> recaptcha_check_answer<span style="color: #009900;">&#40;</span><span style="color: #000088;">$privatekey</span>
                                  <span style="color: #339933;">,</span><span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;REMOTE_ADDR&quot;</span><span style="color: #009900;">&#93;</span>
                                  <span style="color: #339933;">,</span><span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;recaptcha_challenge_field&quot;</span><span style="color: #009900;">&#93;</span>
                                  <span style="color: #339933;">,</span><span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;recaptcha_response_field&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #666666; font-style: italic;">// Check for valid response.</span>
    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$resp</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">is_valid</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #000088;">$errors</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000088;">$to</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'&lt;email here&gt;@&lt;domain here&gt;'</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$subject</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$subject</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$message</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;From: &quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$name</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>Message: &quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$message</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$from</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'From:'</span><span style="color: #339933;">.</span><span style="color: #000088;">$email</span><span style="color: #339933;">;</span>
        <span style="color: #990000;">mail</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$to</span><span style="color: #339933;">,</span><span style="color: #000088;">$subject</span><span style="color: #339933;">,</span><span style="color: #000088;">$message</span><span style="color: #339933;">,</span><span style="color: #000088;">$from</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #666666; font-style: italic;">// Set the header to the document root when successful.</span>
        <span style="color: #990000;">header</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Location: /&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
      <span style="color: #666666; font-style: italic;">// Set the header to the virtual path for the contact page.</span>
      <span style="color: #990000;">header</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Location: /contact-me/&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #000088;">$error</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$resp</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">error</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
  <span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

</div>
<p>That&#8217;s about it. If I forgot something, you&#8217;ll let me know.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mclaughlinsoftware.com/2009/07/18/recaptcha-on-wordpress/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Localhost WordPress on MAMP</title>
		<link>http://blog.mclaughlinsoftware.com/2009/02/22/localhost-wordpress-on-mamp/</link>
		<comments>http://blog.mclaughlinsoftware.com/2009/02/22/localhost-wordpress-on-mamp/#comments</comments>
		<pubDate>Sun, 22 Feb 2009 07:30:56 +0000</pubDate>
		<dc:creator>maclochlainn</dc:creator>
				<category><![CDATA[MAMP]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://blog.mclaughlinsoftware.com/?p=1689</guid>
		<description><![CDATA[There&#8217;s so much energy that goes into blogging with big blog pages, I figured it was time to setup WordPress on my MacBook Pro MAMP (Mac, Apache, MySQL, and PHP) installation. That way, the world doesn&#8217;t need to know when I mess up a &#60;div&#62; tag. The biggest benefit of creating a local blog becomes [...]]]></description>
			<content:encoded><![CDATA[<p>There&#8217;s so much energy that goes into blogging with big blog pages, I figured it was time to setup WordPress on my MacBook Pro <a href="http://blog.mclaughlinsoftware.com/2009/02/02/lamps-for-the-mac/">MAMP (Mac, Apache, MySQL, and PHP) installation</a>. That way, the world doesn&#8217;t need to know when I mess up a &lt;div&gt; tag.</p>
<p>The biggest benefit of creating a local blog becomes obvious when you start building your own plugins, templates, and themes. You also have the benefit of a built in backup if you post your work locally before moving it to your blog. Likewise, you can work on your blog when not connected to the network. By the way, thanks to Joel for pointing out that I forgot to say why this was important.</p>
<p>Here are the setup instructions for those interested in doing it too.</p>
<p>1. Download the software from <a href="http://wordpress.org/download/">WordPress.org</a> by clicking their button or this one. If you need the <code>tar.gz</code>, click on the web site link.</p>
<p><a href="http://wordpress.org/latest.zip"><img class="aligncenter size-full wp-image-1695" title="wpdownload" src="http://blog.mclaughlinsoftware.com/wp-content/uploads/2009/02/wpdownload.png" alt="wpdownload" style="border:none" width="223" height="60" /></a></p>
<p>2. When you download it, you&#8217;ll be prompted to open it. Choose to save it.</p>
<p><img class="aligncenter size-full wp-image-1697" title="wpsavedmg" src="http://blog.mclaughlinsoftware.com/wp-content/uploads/2009/02/wpsavedmg.png" alt="wpsavedmg" style="border:none" width="523" height="417" /></p>
<p>3. You&#8217;ll find it in your downloads folder, where you can double click it to launch the unzip process into a file folder. Mine happens on the desktop because it&#8217;s convenient.</p>
<p><img class="aligncenter size-full wp-image-1698" title="wpunzip" src="http://blog.mclaughlinsoftware.com/wp-content/uploads/2009/02/wpunzip.png" alt="wpunzip" style="border:none" width="565" height="380" /></p>
<p>4. After you&#8217;ve unzipped it into a folder. You drag it into your MAMP <code>htdocs</code> folder. You can check where the <code>htdocs</code> folder is by launching the MAMP application, and choosing <em>Preferences</em>.</p>
<p><img class="aligncenter size-full wp-image-1700" title="mampprefs" src="http://blog.mclaughlinsoftware.com/wp-content/uploads/2009/02/mampprefs.png" alt="mampprefs" style="border:none" width="503" height="424" /></p>
<p>In the preferences dialog, click the <em>Apache</em> tab, you&#8217;ll see where the <code>htdocs</code> folder location is. Mine is set to the default location.</p>
<p><img class="aligncenter size-full wp-image-1701" title="mampapache" src="http://blog.mclaughlinsoftware.com/wp-content/uploads/2009/02/mampapache.png" alt="mampapache" style="border:none" width="373" height="252" /></p>
<p>5. After you drag the <em>wordpress</em> folder into the <code>htdocs</code> folder, you return to the MAMP application and click the <em>Open start page</em> button.</p>
<p><img class="aligncenter size-full wp-image-1703" title="mamphomemenu" src="http://blog.mclaughlinsoftware.com/wp-content/uploads/2009/02/mamphomemenu.png" alt="mamphomemenu" style="border:none" width="550" height="120" /></p>
<p>6. Click the <em>phpMyAdmin</em> link and create a database, like the screen shot.</p>
<p><img class="aligncenter size-full wp-image-1705" title="mysqlcreatedbms" src="http://blog.mclaughlinsoftware.com/wp-content/uploads/2009/02/mysqlcreatedbms.png" alt="mysqlcreatedbms" style="border:none" width="425" height="241" /></p>
<p>After a moment, you should see that you&#8217;ve created a new database named WordPress.</p>
<p><img class="aligncenter size-full wp-image-1707" title="mysqlcreateddb" src="http://blog.mclaughlinsoftware.com/wp-content/uploads/2009/02/mysqlcreateddb.png" alt="mysqlcreateddb" style="border:none" width="654" height="107" /></p>
<p>7. Go to your <code>/Applications/MAMP/htdocs/wordpress</code> folder, and open up <code>wp-config-sample.php</code> file in a text editor. You should see the same lines 19, 22, and 25. The editor screen capture is from the <a href="http://macromates.com/">TextMate</a> editor.</p>
<p><img class="aligncenter size-full wp-image-1708" title="wordpress-config" src="http://blog.mclaughlinsoftware.com/wp-content/uploads/2009/02/wordpress-config.png" alt="wordpress-config" style="border:none" width="554" height="160" /></p>
<p>Edit those lines to reflect your database name, and the root password. Naturally, if you&#8217;re concerned that your local host isn&#8217;t secure, you&#8217;ll need to purchase MAMP Pro to change your root password. You can&#8217;t change it in the free version.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">// ** MySQL settings - You can get this info from your web host ** //</span>
<span style="color: #009933; font-style: italic;">/** The name of the database for WordPress */</span>
<span style="color: #990000;">define</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'DB_NAME'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'WordPress'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009933; font-style: italic;">/** MySQL database username */</span>
<span style="color: #990000;">define</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'DB_USER'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'root'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009933; font-style: italic;">/** MySQL database password */</span>
<span style="color: #990000;">define</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'DB_PASSWORD'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'root'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>After these changes, save the <code>wp-config-sample.php</code> file as <code>wp-config.php</code> in the same folder.</p>
<p>8. Enter the following in URL in your browser, and press the enter key.</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">http://localhost:8888/wordpress/wp-admin/install.php</pre></div></div>

<p>9. On the <em>Welcome</em> web page, enter your blog name and email (mine is omitted for obvious reasons). Click the <em>Install WordPress</em> button to proceed.</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-1711" title="wpinstall" src="http://blog.mclaughlinsoftware.com/wp-content/uploads/2009/02/wpinstall.png" alt="wpinstall" style="border:none" width="614" height="470" /></p>
<p>10. You&#8217;ll then be prompted with the <code>admin</code> user and a password. You should print it or copy it to your buffer because you&#8217;ll need it when you first login. Then, click the <em>Log In</em> button to proceed. You should probably change your password to something that you&#8217;ll remember before you do anything else.</p>
<p>11. You now have a complete <code>localhost</code> WordPress installation. Now, you can go to your real web accessible WordPress install and export your blog from the Tools menu. Then, on your localhost blog, you can import from the export file of your blog. If you&#8217;re using plugins (like anybody doesn&#8217;t), then copy the contents from the <code>wp-content/plugins</code> folder from your online blog to your local one; and then, activate them. You can snag your Akismet key from your online site too, but it is unlikely anybody will see your localhost blog.</p>
<p>Violà, c&#8217;est fine.</p>
<p>You can now access WordPress on your local machine by typing in the following URL:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">http://localhost:8888/wordpress/</pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://blog.mclaughlinsoftware.com/2009/02/22/localhost-wordpress-on-mamp/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>Data normalization notes</title>
		<link>http://blog.mclaughlinsoftware.com/2009/02/15/data-normalization-notes/</link>
		<comments>http://blog.mclaughlinsoftware.com/2009/02/15/data-normalization-notes/#comments</comments>
		<pubDate>Sun, 15 Feb 2009 08:21:27 +0000</pubDate>
		<dc:creator>maclochlainn</dc:creator>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[sql]]></category>

		<guid isPermaLink="false">http://blog.mclaughlinsoftware.com/?p=1540</guid>
		<description><![CDATA[I&#8217;m trying to eliminate the textbook from my database class, and wrote a data normalization blog page for my students; however, it is only done through 3NF so far. The post tries to remove the discrete math and provide clear examples. The students are checking it out for opportunities to make it clearer, if you&#8217;ve [...]]]></description>
			<content:encoded><![CDATA[<p style="clear: both">I&#8217;m trying to eliminate the textbook from my database class, and wrote a <em><a href="http://blog.mclaughlinsoftware.com/oracle-sql-programming/data-normalization/">data normalization</a></em> blog page for my students; however, it is only done through 3NF so far. The post tries to remove the discrete math and provide clear examples. The students are checking it out for opportunities to make it clearer, if you&#8217;ve thoughts let me know.</p>
<p style="clear: both">Also, I&#8217;ve substantially update my initial blog page on <a href="http://blog.mclaughlinsoftware.com/oracle-sql-programming/basic-sql-join-semantics/">SQL joins</a>, and will put one out on set operators probably this Monday. If you&#8217;ve time to review it, I would appreciate suggestions for improvement.</p>
<p style="clear: both">The length of these blog pages has compelled me to move to a more friendly editor. I&#8217;ve opted for <a href="http://www.drinkbrainjuice.com/products/trial/blogo">Blogo</a> as my Mac blog editor. It comes from <a href="http://www.drinkbrainjuice.com/blogo">Brainjuice</a>. My son&#8217;s experience with their customer service and product convinced me. You can find <a href="http://blog.josephmclaughlin.info/2009/02/thanks-brainjuice/" rel="pingback">his blog post discussing customer service here</a>.</p>
<p style="clear: both">Blogo prompts you, but beat the rush. Go to your Site Admin, select <em>Writing</em> under <em>Settings</em> in WordPress, and enable the remote XML-RPC publishing protocol. More or less like this prompt.</p>
<p style="clear: both"><a href="http://blog.mclaughlinsoftware.com/wp-content/uploads/2009/02/blogoprompt.png" class="image-link"><img class="linked-to-original" src="http://blog.mclaughlinsoftware.com/wp-content/uploads/2009/02/blogoprompt1.png" height="215" width="380" style=" text-align: center; display: block; margin: 0 auto 10px;" /></a></p>
<p><br class="final-break" style="clear: both" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mclaughlinsoftware.com/2009/02/15/data-normalization-notes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>No code scrolling on iPhone</title>
		<link>http://blog.mclaughlinsoftware.com/2009/02/15/no-code-scrolling-on-iphone/</link>
		<comments>http://blog.mclaughlinsoftware.com/2009/02/15/no-code-scrolling-on-iphone/#comments</comments>
		<pubDate>Sun, 15 Feb 2009 06:59:04 +0000</pubDate>
		<dc:creator>maclochlainn</dc:creator>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://blog.mclaughlinsoftware.com/?p=1537</guid>
		<description><![CDATA[I wanted to have scrolling on my iPhone for code segments. It appeared simple. Change the style.css file by adding .code { overflow-x:scroll; }. I first tested it in Safari by setting User Agent to Mobile Safari 1.1.3 &#8211; iPhone, where it worked. Alas, it doesn&#8217;t work on my iPhone. A quick look at the [...]]]></description>
			<content:encoded><![CDATA[<p>I wanted to have scrolling on my iPhone for code segments. It appeared simple. Change the <code>style.css</code> file by adding <code>.code { overflow-x:scroll; }</code>. I first tested it in Safari by setting <em>User Agent</em> to <em>Mobile Safari 1.1.3 &#8211; iPhone</em>, where it worked. Alas, it doesn&#8217;t work on my iPhone. A quick look at the iPhone simulator taught me it doesn&#8217;t work there either. It appears that horizontal scrolling is disabled on the iPhone. </p>
<p>That style sheet is found in the <code>/public_html/blog/wp-content/plugins/wptouch/themes/default</code> directory. I&#8217;d love to have missed something. If there&#8217;s a trick to do it, let me know.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mclaughlinsoftware.com/2009/02/15/no-code-scrolling-on-iphone/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Thoughts on blog organization</title>
		<link>http://blog.mclaughlinsoftware.com/2008/11/16/thoughts-on-blog-organization/</link>
		<comments>http://blog.mclaughlinsoftware.com/2008/11/16/thoughts-on-blog-organization/#comments</comments>
		<pubDate>Sun, 16 Nov 2008 06:32:05 +0000</pubDate>
		<dc:creator>maclochlainn</dc:creator>
				<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://blog.mclaughlinsoftware.com/?p=903</guid>
		<description><![CDATA[After migrating the blog from WordPress.com, I reflected on how you can organize and access blogs. Internet searches land you on a list of sites. Site selection places you on a page. Once on a page, the page can include a blog search feature, but it is limiting. Blog searches simply return all potentially related [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.mclaughlinsoftware.com/wp-content/uploads/2008/11/blogpages.png"><img class="alignleft size-full wp-image-904" title="blogpages" src="http://blog.mclaughlinsoftware.com/wp-content/uploads/2008/11/blogpages.png" alt="" style="border:none" width="194" height="458" /></a>After migrating the blog from WordPress.com, I reflected on how you can organize and access blogs. Internet searches land you on a list of sites. Site selection places you on a page. Once on a page, the page can include a blog search feature, but it is limiting. Blog searches simply return all potentially related blog posts and pages in a ranked order. They don&#8217;t organize data into information, and they don&#8217;t cross reference data to create information.</p>
<p>Blog searches by themself didn&#8217;t seem to address good design patterns. Popular web site design patterns (1) limit the depth of navigational steps and (2) consolidate information into singular locations. At first blush, it seems blogs are ill suited to anything like that. They seem more like rambling brain dumps of what we&#8217;re working on at the moment. Things that you perceive have high value get placed in blog pages, while low value information is tossed out as blog posts.</p>
<p>Blog pages are not natively organized and can proliferate too quickly, making your site overwhelming to visitors. Overwhelming because they don&#8217;t know where to start. You can organize blog pages into topical trees, like the illustration from my updated blog (shown on the left). Unfortunately, this only addresses blog pages, and excludes blog posts.</p>
<p>Any cross reference between the information is limited to current other blog entries. After all, future blog entries are unknown. This can lead to disconnected pieces of data in a blog. I decided to stop this insanity in my blog because it was taking me too long to find something already written. It was becoming like some of the forums, rich with data but time consuming to navigate. My solution is to create subject summary pages, like <a href="http://blog.mclaughlinsoftware.com/oracle-architecture-configuration/">Oracle Configuration</a> and <a href="http://blog.mclaughlinsoftware.com/plsql-programming/">Oracle PL/SQL Programming</a>. My summary pages include organized references to blog pages and posts. The second change is to consolidate information by updating older blogs, which makes them more complete. I was doing that to blog pages but now I&#8217;m including blog posts.</p>
<p>As <a title="Confucius" href="http://en.wikipedia.org/wiki/Confucious" target="_blank">Confucius</a> did or didn&#8217;t say, a picture is worth many words &#8230; </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mclaughlinsoftware.com/2008/11/16/thoughts-on-blog-organization/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Migration was straightforward but &#8230;</title>
		<link>http://blog.mclaughlinsoftware.com/2008/11/02/migration-was-straightforward-but/</link>
		<comments>http://blog.mclaughlinsoftware.com/2008/11/02/migration-was-straightforward-but/#comments</comments>
		<pubDate>Mon, 03 Nov 2008 03:50:51 +0000</pubDate>
		<dc:creator>maclochlainn</dc:creator>
				<category><![CDATA[Oracle]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[pl/sql]]></category>
		<category><![CDATA[sql]]></category>

		<guid isPermaLink="false">http://blog.mclaughlinsoftware.com/?p=332</guid>
		<description><![CDATA[I attempted to have a forward from the old WordPress.com site. That was a painful mistake! It took down both blogs with a circular referencing that was humorous I suppose. The DNS entries appear to all be corrected and forwarding straightened out. I apologize for any inconvenience. As I update or expand entries, I&#8217;m entering [...]]]></description>
			<content:encoded><![CDATA[<p>I attempted to have a forward from the old WordPress.com site. That was a painful mistake! It took down both blogs with a circular referencing that was humorous I suppose. The DNS entries appear to all be corrected and forwarding straightened out. I apologize for any inconvenience.</p>
<p>As I update or expand entries, I&#8217;m entering a note in the old blog posts. I think the code segments are much improved, you can find SQL, PL/SQL, PHP, and Java examples in the following blog entries that are now perfect for cutting and pasting. Also, as noted the iPhone view is GREAT!</p>
<p>1. <a title="Create a view to describe schema tables and views" href="http://blog.mclaughlinsoftware.com/?page_id=42" target="_blank">SQL example</a><br />
2. <a title="Entering a colon in an NDS statement" href="http://blog.mclaughlinsoftware.com/?p=16" target="_blank">PL/SQL example</a><br />
3. <a title="PHP code to read a PL/SQL system reference cursor" href="http://blog.mclaughlinsoftware.com/?p=19" target="_blank">PHP example</a><br />
4.<a title="How to read a CLOB through JDBC" href="http://blog.mclaughlinsoftware.com/?page_id=148" target="_blank"> Java example</a><br />
5. <a title="How to configure Mac OS X for an Oracle Client" href="http://blog.mclaughlinsoftware.com/?page_id=145" target="_blank">Shell example, DOS and Bash</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mclaughlinsoftware.com/2008/11/02/migration-was-straightforward-but/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Plugins that make moving advantageous</title>
		<link>http://blog.mclaughlinsoftware.com/2008/11/01/plugins-that-make-moving-advantageous/</link>
		<comments>http://blog.mclaughlinsoftware.com/2008/11/01/plugins-that-make-moving-advantageous/#comments</comments>
		<pubDate>Sun, 02 Nov 2008 01:35:14 +0000</pubDate>
		<dc:creator>maclochlainn</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[GeSHi]]></category>
		<category><![CDATA[Google Stats]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://blog.mclaughlinsoftware.com/?p=275</guid>
		<description><![CDATA[Here are some of the plugin reasons for migrating my blog from being hosted on WordPress.com. You may find them useful in your own blogs.

1. The <a title="iPhone plugin for WordPress" href="http://www.bravenewcode.com/wptouch/" target="_blank"><em><strong>iPhone</strong></em> plugin</a> isn't available (may be later) on WordPress.com. As you can see in the last post it makes it easy for those on an iPhone to read your blog. A <strong>BIG THANK YOU</strong> to Brave New Code, Incorporated.

2. The <a title="GeSHi Programming Code Formatter for WordPress" href="http://wordpress.org/extend/plugins/wp-syntax/" target="_blank">GeSHi programming code formatter plugin</a> likewise wasn't there, and it's provided by Ryan McGeary. A <strong>BIG THANK YOU</strong> to Ryan. <a title="GeSHi Programming Code Formatter for WordPress" href="http://qbnz.com/highlighter/" target="_blank">GeSHi (Generic Syntax Highlighter)</a> started for a PHP bulletin board.

3. A Google stats plugin looks interesting, and I'll let you know more when I play with it. A <strong>BIG THANK YOU</strong> to <a title="OraTransplant" href="http://www.oratransplant.nl/" target="_blank">Wilfred van der Deijl</a> for the Google stats plug in.]]></description>
			<content:encoded><![CDATA[<p>Here are some of the plugin reasons for migrating my blog from being hosted on WordPress.com. You may find them useful in your own blogs.</p>
<p>1. The <a title="iPhone plugin for WordPress" href="http://www.bravenewcode.com/wptouch/" target="_blank"><em><strong>iPhone</strong></em> plugin</a> isn&#8217;t available (may be later) on WordPress.com. As you can see in the last post it makes it easy for those on an iPhone to read your blog. A <strong>BIG THANK YOU</strong> to Brave New Code, Incorporated.</p>
<p>2. The <a title="GeSHi Programming Code Formatter for WordPress" href="http://wordpress.org/extend/plugins/wp-syntax/" target="_blank">GeSHi programming code formatter plugin</a> likewise wasn&#8217;t there, and it&#8217;s provided by Ryan McGeary. A <strong>BIG THANK YOU</strong> to Ryan. <a title="GeSHi Programming Code Formatter for WordPress" href="http://qbnz.com/highlighter/" target="_blank">GeSHi (Generic Syntax Highlighter)</a> started for a PHP bulletin board.</p>
<p>3. A Google stats plugin looks interesting, and I&#8217;ll let you know more when I play with it. A <strong>BIG THANK YOU</strong> to <a title="OraTransplant" href="http://www.oratransplant.nl/" target="_blank">Wilfred van der Deijl</a> for the Google stats plug in.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mclaughlinsoftware.com/2008/11/01/plugins-that-make-moving-advantageous/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
