<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>Blog&apos;s from the Bush</title>
    <link rel="alternate" type="text/html" href="http://www.lensenergy.com/" />
    <link rel="self" type="application/atom+xml" href="http://www.lensenergy.com/atom.xml" />
    <id>tag:www.lensenergy.com,2008-12-08://1</id>
    <updated>2011-12-20T02:38:50Z</updated>
    <subtitle>The ramblings of a lost technocrat...</subtitle>
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type Pro 4.33-en</generator>

<entry>
    <title>Changing the user Apache runs as…</title>
    <link rel="alternate" type="text/html" href="http://www.lensenergy.com/archives/2011/12/changing-the-user-apache-runs.html" />
    <id>tag:www.lensenergy.com,2011://1.201</id>

    <published>2011-12-20T02:33:55Z</published>
    <updated>2011-12-20T02:38:50Z</updated>

    <summary>I&#8217;m normally quite happy with the standard Apache setup on my Mac&#8217;s and the simplicity with which MySQL installs makes it still the easiest platform to setup a development machine on. In fact we can do nearly all of our web app development on stock standard Mac&#8217;s as it gives...</summary>
    <author>
        <name>craig</name>
        <uri>http://www.lensenergy.com</uri>
    </author>
    
        <category term="Hints &amp; Tips" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Software Development" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Web" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="lion" label="Lion" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="macosx" label="Mac OS X" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.lensenergy.com/">
        <![CDATA[<p>I&#8217;m normally quite happy with the standard Apache setup on my Mac&#8217;s and the simplicity with which MySQL installs makes it still the easiest platform to setup a development machine on. In fact we can do nearly all of our web app development on stock standard Mac&#8217;s as it gives a good base platform that compares favourably with most of our clients servers at various hosting providers. </p>

<p>For most of the software we develop is happy running under the default User and Group ( <code>_www:_www</code> ) for Apache, recently though we had to upgrade a third party extension that runs a few shell exec routines. In our Mac based world this presented a few problems as the <code>_www</code> user doesn&#8217;t normally come with a home directory and therefore no way to setup things like, ssh keys.</p>

<p><em>(Please don&#8217;t undertake these changes if you aren&#8217;t aware of how this changes the security of your computer.)</em></p>
]]>
        <![CDATA[<h2>A Small Change</h2>

<p>Apache on Mac OS X has a series of configuration files, first, it&#8217;s main configuration is found in <code>/private/etc/apache2</code> and is called <code>httpd.conf</code>. This main file includes a variety of sub-configuration files based on the configuration of you Mac, things like <code>/private/etc/apache2/extra/httpd-userdir.conf</code> for user directories. You can find all of them at the end of the main <code>httpd.conf</code> file. As always when working with these files <em>make a backup first</em>, making one after you&#8217;ve made a mess is not the way to do things.</p>

<p>Editing the main httpd.conf file (using <strong><a href="http://barebones.com/products/bbedit/" title="BBEdit - possibly  the best text editor on OS X.">BBEdit</a></strong> or <code>vi</code>) allows you to change the user that Apache runs as. At around line 150 in the main configuration file, you will find:</p>

<pre><code># If you wish httpd to run as a different user or group, you must run
# httpd as root initially and it will switch.  
#
# User/Group: The name (or #number) of the user/group to run httpd as.
# It is usually good practice to create a dedicated user and group for
# running httpd, as with most system services.
#
User _www
Group _www
</code></pre>

<p>For our purposes all we had to do was stop Apache (either via unchecking &#8220;Web Sharing&#8221; in the Sharing Preferences or through the terminal command <code>apachectl stop</code>) and replace the User with the short name of our user account and the group with <code>staff</code></p>

<pre><code>User craig          &lt;- this is my short user name don't use it :-&gt;
Group staff
</code></pre>

<p>Once the change was made and the <code>httpd.conf</code> file saved, all that&#8217;s left is to restart Apache. (Again, either via checking &#8220;Web Sharing&#8221; in the Sharing Preferences or through the terminal command <code>apachectl start</code>)</p>

<p>A nice advantage of this small change is, that apart from picking up values from the user account, things like ownership of files isn&#8217;t an issue in the ~/Sites folder anymore.</p>

<h2>Troubleshooting</h2>

<p>If Apache fails to restart check your user&#8217;s short name is correct and the group name is correct, these are case sensitive values.</p>

<h3>How can you tell if Apache failed to restart?</h3>

<p>In Sharing Preferences if there is a typo in the Apache configuration file (eg. you mis-spelled the username, or used an uppercase letter for the first letter of the Group) the &#8220;Web Sharing&#8221; will un-tick itself immediately. The most obvious indicator is the little status light which is normally green when web sharing (ie. Apache) is running correctly.
It should look like this:</p>

<p><img src="http://www.lensenergy.com/weblog/images/Web Sharing On.png" alt="Web Sharing On" border="0" width="150" height="30" style="margin:5px 0 5px 200px" /></p>

<p>If you try and turn it on and the status changes to the orange light with &#8220;Web Sharing starting…&#8221;</p>

<p><img src="http://www.lensenergy.com/weblog/images/Web Sharing Starting.png" alt="Web Sharing Starting" border="0" width="165" height="30" style="margin:5px 0px 5px 200px" /></p>

<p>Followed by closely by the grey light and &#8220;Web Sharing: Off&#8221;</p>

<p><img src="http://www.lensenergy.com/weblog/images/Web Sharing Off.png" alt="Web Sharing Off" border="0" width="150" height="30" style="margin:5px 0 5px 200px" /></p>

<p>then, you&#8217;ve got a typo or other mistake in your <code>httpd.conf</code> file.</p>

<p>From the terminal you can easily check for a problem in the file by running a quick check on it:</p>

<pre><code>craig: httpd -t
httpd: bad group name Staff
</code></pre>
]]>
    </content>
</entry>

<entry>
    <title>How do I find the total number of files in a directory?</title>
    <link rel="alternate" type="text/html" href="http://www.lensenergy.com/archives/2011/09/how-do-i-find-the-total-number.html" />
    <id>tag:www.lensenergy.com,2011://1.200</id>

    <published>2011-09-01T05:49:43Z</published>
    <updated>2011-09-01T05:49:45Z</updated>

    <summary> Open Terminal. Navigate to the directory in question. type &#8220;find . -type f | wc -l&#8221; Press &#8220;Return/Enter&#8221; That&#8217;s it. ps. this will also count all the files in any sub-directories of the one you&#8217;re currently in....</summary>
    <author>
        <name>craig</name>
        <uri>http://www.lensenergy.com</uri>
    </author>
    
        <category term="Hints &amp; Tips" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://www.lensenergy.com/">
        <![CDATA[<ol>
<li>Open Terminal.</li>
<li>Navigate to the directory in question.</li>
<li>type &#8220;find . -type f | wc -l&#8221;</li>
<li>Press &#8220;Return/Enter&#8221;</li>
</ol>

<p>That&#8217;s it.</p>

<p><em>ps. this will also count all the files in any sub-directories of the one you&#8217;re currently in.</em></p>
]]>
        

    </content>
</entry>

<entry>
    <title>Apple Tech Spec&apos;s</title>
    <link rel="alternate" type="text/html" href="http://www.lensenergy.com/archives/2011/07/apple-tech-specs.html" />
    <id>tag:www.lensenergy.com,2011://1.199</id>

    <published>2011-07-23T04:46:56Z</published>
    <updated>2011-07-23T05:14:06Z</updated>

    <summary> Have you ever wanted to find the technical specifications of that Mac you&#8217;ve been using for the last couple of years? All you need is the Serial number (eg. YM0000XXEUH ) or even the model number (eg. MC561LL/A ). As you would expect Apple have a support page that...</summary>
    <author>
        <name>craig</name>
        <uri>http://www.lensenergy.com</uri>
    </author>
    
        <category term="Appletosh" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Hints &amp; Tips" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://www.lensenergy.com/">
        <![CDATA[<p><img src="http://www.lensenergy.com/weblog/images/Apple-Support---Tech-Specs-page.png" alt="Apple Support Tech Specs page" border="0" width="145" height="110" align="right" style="margin:0px 0px 0px 5px" />
Have you ever wanted to find the technical specifications of that Mac you&#8217;ve been using for the last couple of years? All you need is the Serial number (eg. YM0000XXEUH ) or even the model number (eg. <a href="http://support.apple.com/specs/#MC561LL/A" title="Mac Pro Tech Spec page.">MC561LL/A</a> ).</p>

<p>As you would expect Apple have <a href="http://support.apple.com/specs/" title="Apple Tech Specs">a support page</a> that provides just what you need, what you may not have noticed is that it will use your products serial number to find the exact product specifications you&#8217;re after.</p>

<p>Keep reading if you need to find your serial number…</p>
]]>
        <![CDATA[<h2>Finding your serial number…</h2>

<h3>About This Mac</h3>

<p>On a modern version of Mac OS X you can usually get your Mac&#8217;s serial number from the &#8220;About This Mac&#8221; window. To get there select &#8220;About This Mac&#8221; from the Apple menu.</p>

<p><a href="http://www.lensenergy.com/weblog/images/About-This-Mac---Menu.png" title="About This Mac - Is in the  Menu" rel="lightbox[atm]"><img src="http://www.lensenergy.com/weblog/images/About-This-Mac---Menu.png" alt="About This Mac Menu" border="0" width="139" height="170" /></a><a href="http://www.lensenergy.com/weblog/images/About-This-Mac.png" title="Notice anything about this Mac?" rel="lightbox[atm]"><img src="http://www.lensenergy.com/weblog/images/About-This-Mac.png" alt="Notice anything about this Mac?" border="0" width="139" height="170"/></a><a href="http://www.lensenergy.com/weblog/images/About-This-Mac-Build-Number.png" title="About-This-Mac-Build-Number.png" rel="lightbox[atm]"><img src="http://www.lensenergy.com/weblog/images/About-This-Mac-Build-Number.png" alt="About This Mac - Build Number" border="0" width="139" height="170" /></a><a href="http://www.lensenergy.com/weblog/images/About-This-Mac-Serial-Number.png" title="About-This-Mac-Serial-Number.png" rel="lightbox[atm]"><img src="http://www.lensenergy.com/weblog/images/About-This-Mac-Serial-Number.png" alt="About This Mac - Serial Number" border="0" width="139" height="170" /></a></p>

<p>Directly under the Apple logo and the words &#8220;Mac OS X&#8221; you will see in a light grey colour the version of the operating system running on your Mac — in this case it&#8217;s versions 10.6.8.</p>

<p>Click on the version number and it will change to the build number, this is handy but not what you&#8217;re looking for click again to see your Mac&#8217;s serial number.</p>

<h3>System Profiler</h3>

<p>The other way is to open the &#8220;System Profiler&#8221; — you can do that by clicking on the &#8220;More Info…&#8221; button in the &#8220;About This Mac&#8221; window or opening it in &#8220;<em>Applications:Utilities:System Profiler</em>&#8221;</p>

<p>System Profiler gives you lots of useful information including details about ram, processors and hard disks installed. The serial number we want is in the first section, called &#8220;Hardware&#8221; as shown below:<a href="http://www.lensenergy.com/weblog/images/System-Profiler---Serial-Number.png" title="System-Profiler---Serial-Number.png" rel="lightbox"><img src="http://www.lensenergy.com/weblog/images/System-Profiler---Serial-Number.png" alt="System Profiler Serial Number" border="0" width="400" height="207" style="margin-left:80px" /></a></p>

<p>The other nice thing about the System Profiler is that you can copy the serial number and paste it directly in <a href="http://support.apple.com/specs/" title="Apple Tech Specs">Apple&#8217;s Tech Specs page</a> and it will find the page you want.</p>
]]>
    </content>
</entry>

<entry>
    <title>Fixing &quot;stuck&quot; Secondary Zones</title>
    <link rel="alternate" type="text/html" href="http://www.lensenergy.com/archives/2011/05/fixing-stuck-secondary-zones.html" />
    <id>tag:www.lensenergy.com,2011://1.198</id>

    <published>2011-05-30T08:54:38Z</published>
    <updated>2011-07-11T12:30:38Z</updated>

    <summary>Like a lot of businesses we use an internal OS X Server for a variety of functions — one of them is to provide a local caching DNS service. Also like other business we use BIND&#8217;s ability to serve up &#8216;views&#8217; to let us have custom internal web addresses reflecting...</summary>
    <author>
        <name>craig</name>
        <uri>http://www.lensenergy.com</uri>
    </author>
    
        <category term="Appletosh" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Hints &amp; Tips" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="dns" label="DNS" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="macosx" label="Mac OS X" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="server" label="Server" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.lensenergy.com/">
        <![CDATA[<p>Like a lot of businesses we use an internal <a href="http://www.apple.com/server/macosx/" title="Mac OS X Server">OS X Server</a> for a variety of functions — one of them is to provide a local caching DNS service.</p>

<p>Also like other business we use BIND&#8217;s ability to serve up <a href="http://www.zytrax.com/books/dns/ch7/view.html" title="BIND views">&#8216;views&#8217;</a> to let us have custom internal web addresses reflecting internal servers.</p>

<p>Occasionally, we need to add a new address to our private view and I never remember to drop the TTL ( <em>time to live</em> ) down to a shorter period. (Actually <em>remember</em> is the wrong word — usually I don&#8217;t get any warning that a new internal address is needed :D ).</p>

<p>As I don&#8217;t do this on a daily basis I can never remember how I cleared out the DNS cache previously — hence this post.</p>
]]>
        <![CDATA[<h2>TTL - Hurry up already!</h2>

<p>So, I get stuck with the changes taking forever to propagate — which is frustrating. I&#8217;m usually impatient so rather than wait for the TTL to time out I like to help the DNS service along a bit. Sadly, for the impatient, the OS X server&#8217;s DNS service is a stubborn beast when it comes to caching a secondary domain (restarting the DNS it or even deleting and re-instating the secondary domain don&#8217;t help). </p>

<h3>Cache anyone?</h3>

<p>The first time I hit this problem I thought it was a cache issue, but which one? There are DNS caches everywhere in your modern computer experience, in your network interface ( eg. DSL router ), your network server and in your desktop OS ( eg. Mac OS X ) and in your browser ( eg. Safari, Firefox and Chrome ).</p>

<h3>Clearing cache&#8217;s<a href="http://www.lensenergy.com/weblog/images/Teminal-Icon.png" title="Teminal-Icon.png" rel="lightbox"><img src="http://www.lensenergy.com/weblog/images/Teminal-Icon.png" alt="Teminal Icon" border="0" width="140" height="151" style="float:right;margin-left:10px" /></a></h3>

<p>Restarting a browser (ie. closing all windows and &#8220;Quit&#8221;ing the application) will usually clear it&#8217;s cache.</p>

<p>Rebooting your Mac in this day and age is a bit of an overkill (but it does work) — a simpler and quicker process is to open &#8220;Terminal&#8221; and type in:</p>

<p><code>> dscacheutil -flushcache</code></p>

<p>Simple huh? At this time I remember it&#8217;s none of those that are causing the problem…</p>

<h2>Mac OS X Server DNS cache</h2>

<p>You might be thinking that you could fire up the terminal on your OS X Server and use <em>dscacheutil</em> but that just clears the user cache not the cache of the DNS server.</p>

<h3>Diagnosis</h3>

<p>The big give away that the DNS server is &#8220;stuck&#8221;, for want of a better description, can be found in the DNS service log — which shows the serial number of domain it loads. When I may the change earlier today the domains serial number was automatically updated to the current date ( <strong>2011053001</strong> ) but the log shows this:</p>

<p><code>30-May-2011 14:09:02.456 zone problemdomain.com/IN/…: loaded serial 2011041101</code></p>

<h3>Simple surgery</h3>

<p>On the Snow Leopard Server you have to follow these steps:</p>

<ol>
<li><p>Using <a href="http://www.apple.com/server/macosx/features/simple-administration.html" title="Simple Server Administration">&#8220;Server Admin&#8221;</a> stop the DNS service</p></li>
<li><p>Open Terminal on your server and navigate to &#8216;/var/named/&#8217;:</p></li>
<li><p>List your directory &#8216;ls -al&#8217;</p></li>
<li><p>In there you will find a &#8216;bak&#8217; file of the &#8220;stuck&#8221; domain ( <em>see listing below</em> ).</p></li>
<li><p>Delete the back file for the problem domain ( try a <code>sudo rm bak.problemdomain.com</code> )</p></li>
<li><p>Restart the DNS service</p></li>
</ol>

<p><br /><div style="float:left;margin-left:20px" ><a href="http://www.lensenergy.com/weblog/images/Server Admin - DNS Running.png" title="Server Admin - DNS Running" rel="lightbox"><img src="http://www.lensenergy.com/weblog/images/Server Admin - DNS Running.png" alt="Server Admin  DNS Running" border="0" width="200" height="125" /><br />Select the DNS Service</a></div></p>

<p><div style="float:left;margin-left:40px" ><a href="http://www.lensenergy.com/weblog/images/Server Admin - DNS Stopped.png" title="Server Admin - DNS Stopped" rel="lightbox"><img src="http://www.lensenergy.com/weblog/images/Server Admin - DNS Stopped.png" alt="Server Admin  DNS Stopped" border="0" width="200" height="125" /><br />Click the &#8220;Stop DNS&#8221; button</a></div><div style="clear:both"></div><br /></p>

<blockquote>
  <p><code>me:named: ls -al</p>
  
  <p>total 0</p>
  
  <p>drwxr-xr-x@  5 root  wheel   170 31 Jul  2009 .</p>
  
  <p>drwxr-xr-x  29 root  wheel   986 16 Feb  2010 ..</p>
  
  <p>-rw-r--r--   1 root  wheel  1148 May 30 17:04 bak.problemdomain.com.</p>
  
  <p>-rw-r--r--   1 root  wheel   195 31 Jul  2009 localhost.zone</p>
  
  <p>-rw-r--r--   1 root  wheel  2878 31 Jul  2009 named.ca</p>
  
  <p>-rw-r--r--   1 root  wheel   433 31 Jul  2009 named.local</code></p>
</blockquote>

<h3>It&#8217;s alive!</h3>

<p>After following those 6 steps, now, when I check the DNS service log in Server Admin I see that the domain has transferred and loaded with the correct serial number:</p>

<blockquote>
  <p><code>30-May-2011 14:18:39.932 zone craigphillips.biz/IN/…: Transfer started.</code></p>
  
  <p><code>30-May-2011 14:18:42.456 zone problemdomain.com/IN/…: loaded serial 2011053001</code></p>
</blockquote>

<p>Now the next time it happens I just have to remember that I&#8217;ve written this all down (of course by then <a href="http://www.apple.com/macosx/lion/" title="Mac OS X - Lion">Lion</a> will be out and I&#8217;ll probably have to figure it all out again).</p>

<h3>{ Update</h3>

<blockquote>
  <p>Depending on your external DNS configuration you may need to restart BIND to ensure it refreshes <em>it&#8217;s</em> cache with the changes you&#8217;ve just made.</p>
</blockquote>

<h3>}</h3>
]]>
    </content>
</entry>

<entry>
    <title>Productivity</title>
    <link rel="alternate" type="text/html" href="http://www.lensenergy.com/archives/2011/05/productivity.html" />
    <id>tag:www.lensenergy.com,2011://1.197</id>

    <published>2011-05-18T06:57:26Z</published>
    <updated>2011-05-18T06:57:32Z</updated>

    <summary> I like being productive and I like productivity software (well some of it). That being said there is a lot of stuff out there that you wouldn&#8217;t use if they paid you but there are some gems. Today I needed to add a few of them to a new...</summary>
    <author>
        <name>craig</name>
        <uri>http://www.lensenergy.com</uri>
    </author>
    
        <category term="Appletosh" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="affiliate" label="Affiliate" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="bundles" label="Bundles" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="macosx" label="Mac OS X" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="software" label="Software" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.lensenergy.com/">
        <![CDATA[<p><a href="http://www.productivemacs.com/a/635110" title="Productive Macs Bundle — yes dear, this is our Affiliate link, you can get one too!"><img src="http://www.lensenergy.com/weblog/images/Productive-Macs-Banner-125x125.png" alt="Productive Macs Bundle" border="0" width="125" height="125" align="left" style="margin:0px 15px 15px 0px" /></a>
I like being productive and I like productivity software (<em>well some of it</em>).</p>

<p>That being said there is a lot of stuff out there that you wouldn&#8217;t use if they paid you but there are some gems.</p>

<p>Today I needed to add a few of them to a new computer and so I needed some extra licenses.</p>

<p>Productivity and GTD apps on Mac OS X are flourishing along with the whole Mac eco-system but there are a few standouts. I&#8217;ve got a few keys ones that I get everyone I work with to use.</p>

<p>The main ones I needed were:</p>

<ul>
<li><a href="http://indev.ca/MailActOn.html" title="Mail ActOn — rule extensions for Mail.">Mail Act-On</a></li>
<li><a href="http://www.smilesoftware.com/TextExpander/index.html" title="TextExpander - seriously who doesn't want global text expansion?">TextExpander</a></li>
<li><a href="http://www.keyboardmaestro.com/main/" title="Keyboard Maestro — because there are lots of repetitive keyboard activities you don't need to do yourself!">Keyboard Maestro</a></li>
<li><a href="http://www.omnigroup.com/products/omnifocus/" title="Omnifocus — the GTD app for Mac OS, iPhone &amp; iPad — yes we use all three versions.">Omnifocus for Mac</a></li>
</ul>

<p>So imagine my surprise…</p>
]]>
        <![CDATA[<p>…when reading the front page of <a href="http://mactalk.com.au/" title="Australia's best online Mac community.">MacTalk</a> today there was a <a href="http://www.productivemacs.com/a/635110" title="Productive Mac's Bundle - yes dear, this is our Affiliate link.">&#8220;Productive Mac&#8217;s Bundle&#8221;</a>.</p>

<p>While Omnifocus isn&#8217;t included the other 3 products that I was after today were and the savings on them alone are great — the normal cost would be ~ US$100 and even more if I got TextExpander and Keyboard Maestro through the App Store.</p>

<p>So, for me it was a no brainer to get the bundle at US$29.99 — of course you may not need them but I think it&#8217;s worth looking at - don&#8217;t you?</p>
]]>
    </content>
</entry>

<entry>
    <title>How to report Spammers in Australia</title>
    <link rel="alternate" type="text/html" href="http://www.lensenergy.com/archives/2011/04/how-to-report-spammers-in-aust.html" />
    <id>tag:www.lensenergy.com,2011://1.196</id>

    <published>2011-04-19T01:21:45Z</published>
    <updated>2011-04-19T01:21:48Z</updated>

    <summary>For the most part between my mail servers and the Mac OS X Mail application 99% of SPAM sent to me goes straight to the Junk mail folder never to be seen by me. Sadly every now and again, an otherwise reputable organisation that I&#8217;ve never heard of seems to...</summary>
    <author>
        <name>craig</name>
        <uri>http://www.lensenergy.com</uri>
    </author>
    
        <category term="Hints &amp; Tips" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="spam" label="SPAM" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.lensenergy.com/">
        <![CDATA[<p>For the most part between my mail servers and the Mac OS X Mail application 99% of SPAM sent to me goes straight to the Junk mail folder never to be seen by me.</p>

<p>Sadly every now and again, an otherwise reputable organisation that I&#8217;ve never heard of seems to go out an buy a block of email addresses and add it to their newsletter mailing list. This of course will usually get past any spam filters.</p>

<p>So, being the zero tolerance grumpy old bastard I am, here&#8217;s a quick tip for immediately reporting them to the ACMA.</p>
]]>
        <![CDATA[<h3>Simple step by step instructions:</h3>

<p><a href="http://www.lensenergy.com/weblog/images/ACMA Spam Address.png" title="ACMA Spam Address.png" rel="lightbox"><img src="http://www.lensenergy.com/weblog/images/ACMA Spam Address.png" alt="ACMA Spam Address" border="0" width="546" height="400" style="margin-left:20px" /></a>
1. In your Address Book add this email address: report@submit.spam.acma.gov.au
2. Give it a name/nickname of &#8220;Spam&#8221; (if you want you can add the ACMA website URL in as well)
3. Next time you receive some Spam that gets by your filters simply forward it to &#8220;Spam&#8221;, Mail will pull the reporting email address out of the Address Book for you.
<a href="http://www.lensenergy.com/weblog/images/Fwd to Spam.png" title="Fwd to Spam.png" rel="lightbox"><img src="http://www.lensenergy.com/weblog/images/Fwd to Spam.png" alt="Fwd to Spam" border="0" width="358" height="81" style="margin-left:80px" /></a>
4. That&#8217;s it there is no step 4.</p>

<p><strong>#Bonus Tip</strong> - if you want to add a website logo/picture to an Address Book entry like the ACMA logo in the screenshot simply drag the image from the webpage to the avatar location in the Address entry and drop it, then you can adjust the crop as shown below:</p>

<p><a href="http://www.lensenergy.com/weblog/images/Add-Avatar-to-Address-Book.gif" title="Add-Avatar-to-Address-Book.gif" rel="lightbox"><img src="http://www.lensenergy.com/weblog/images/Add-Avatar-to-Address-Book.gif" alt="Add Avatar to Address Book" border="0" width="280" height="390" style="margin-left:150px" /></a></p>
]]>
    </content>
</entry>

<entry>
    <title>Queensland School Holidays in iCal</title>
    <link rel="alternate" type="text/html" href="http://www.lensenergy.com/archives/2011/03/queensland-school-holidays-in.html" />
    <id>tag:www.lensenergy.com,2011://1.195</id>

    <published>2011-03-17T00:19:52Z</published>
    <updated>2011-03-17T00:19:53Z</updated>

    <summary>Just a quick one - I couldn&#8217;t find an up-to-date iCal calendar for the Queensland State School terms so I&#8217;ve created one that everyone can subscribe to. Click here to subsribe to the Queensland School Terms iCal Calendar The calendar will be updated for probably the next 5 years, given...</summary>
    <author>
        <name>craig</name>
        <uri>http://www.lensenergy.com</uri>
    </author>
    
        <category term="Appletosh" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://www.lensenergy.com/">
        <![CDATA[<p>Just a quick one - I couldn&#8217;t find an up-to-date iCal calendar for the Queensland State School terms so I&#8217;ve created one that everyone can subscribe to.</p>

<p><a href="webcal://www.me.com/ca/sharesubscribe/1.91454785/64FE908E-F59A-4BE2-90AE-95BA56F90CC5.ics">Click here to subsribe to the Queensland School Terms iCal Calendar</a></p>

<p>The calendar will be updated for probably the next 5 years, given how many years of school life our children have left. Currently it has the 2011 and 2012 School Terms as stated on the <a href="http://education.qld.gov.au/public_media/calendar/holidays.html">Queensland Department of Education &amp; Training</a> website.</p>

<p>Hope you find it useful.</p>
]]>
        

    </content>
</entry>

<entry>
    <title>Remote.app v2.1</title>
    <link rel="alternate" type="text/html" href="http://www.lensenergy.com/archives/2010/12/remoteapp-v21.html" />
    <id>tag:www.lensenergy.com,2010://1.194</id>

    <published>2010-12-23T07:10:34Z</published>
    <updated>2010-12-23T07:10:36Z</updated>

    <summary><![CDATA[Apple has released a timely update to their Remote app for iPad &amp; iPhone - timely in the sense that AirPlay control of your Mac based iTunes library is now available from the couch over the holidays. Add to that control over your iTunes on Mac Internet Radio Stations and...]]></summary>
    <author>
        <name>craig</name>
        <uri>http://www.lensenergy.com</uri>
    </author>
    
        <category term="Appletosh" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="ios" label="IOS" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="software" label="Software" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="update" label="Update" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.lensenergy.com/">
        <![CDATA[<p><img src="http://www.lensenergy.com/weblog/images/remoteappicon.jpg" alt="Remote.app v2.1 Released" border="0" width="175" height="175" style="float:left;margin-right:10px;" />Apple has released a timely update to their Remote app for iPad &amp; iPhone - timely in the sense that AirPlay control of your Mac based iTunes library is now available from the couch over the holidays.</p>

<p>Add to that control over your iTunes on Mac Internet Radio Stations and Movie &amp; TV Show rentals and there really is no reason to get off the couch over the break.</p>

<p>Thankfully this version also appears to fix the iPad bug that occurred when a password protected movie was started by the physical remote and you tried to enter the password using the Remote.app on your iPad.</p>
]]>
        

    </content>
</entry>

<entry>
    <title>Camera+ is back.</title>
    <link rel="alternate" type="text/html" href="http://www.lensenergy.com/archives/2010/12/camera-is-back.html" />
    <id>tag:www.lensenergy.com,2010://1.193</id>

    <published>2010-12-23T00:36:49Z</published>
    <updated>2010-12-23T07:38:51Z</updated>

    <summary>The somewhat infamous Camera+ is back in the App Store. There&#8217;s a list as long as your arm of changes and it&#8217;s looking like a solid update, not to mention fixing a few bugs that were annoying to say the least. (Note the infamous VolumeSnap feature is gone.) UPDATE: tap...</summary>
    <author>
        <name>craig</name>
        <uri>http://www.lensenergy.com</uri>
    </author>
    
        <category term="Appletosh" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Photography" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="ios" label="IOS" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="software" label="Software" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.lensenergy.com/">
        <![CDATA[<p>The somewhat <a title="Camera+ rejected" href="http://taptaptap.com/blog/cameraplus-volumesnap-rejected/">infamous</a> <a title="Camera+ website" href="http://campl.us/">Camera+</a> is back in the App Store.</p>

<p>There&#8217;s a list as long as your arm of changes and it&#8217;s looking like a solid update, not to mention fixing a few bugs that were annoying to say the least. (<em>Note the infamous VolumeSnap feature is gone.</em>)</p>

<p><strong>UPDATE:</strong> <a href="http://www.taptaptap.com/" title="Tap tap tap website">tap tap tap</a> have also just launched <a href="http://campl.us/#GropeFree" title="Camera+ Competition">a competition to promote version 2 and the return to the app store</a>.</p>
]]>
        <![CDATA[<h3>Changes</h3>

<p>The most notably change is the cleaned up and simplified UI - including removal of the (to me) annoying SLR interface. Overall I&#8217;ve put these changes in the plus column.</p>

<p>The other change I appreciate is the increased size of the menu - but that could be because I&#8217;m getting old and crotchety.</p>

<h3>Improvements</h3>

<p>Overall Camera+ feels smoother and more responsive on my 3GS and I imagine the same will apply when I try it out on the  iPhone 4 later today. Part of this comes from a quicker startup but the UI improvements seem to help with the work flow as well.</p>

<p>The operation of the stabilizer function appears to be improved too, apart from firing faster, the low light results seem better, if <a title="Fern by Camera+ v2" href="http://www.flickr.com/photos/craigp/5282228700/">this fern</a> is anything to go by.</p>

<p><a title="Backyard fern with Camera+ v2:" href="http://www.flickr.com/photos/craigp/5282228700/">Open on Flickr</a><br /><a title="Backyard fern with Camera+ v2" rel="lightbox" href="http://farm6.static.flickr.com/5082/5282228700_7cfa924cfb.jpg"><img style="border: solid 2px #000000; margin-left: 180px;" src="http://farm6.static.flickr.com/5082/5282228700_7cfa924cfb.jpg" alt="" width="188" height="250" /></a></p>

<p>Another improvement is the the Grit border is now available in &#8220;Light&#8221; and &#8220;Dark&#8221; versions, the light version is used on the image below. That image also uses the newly added &#8220;Depth of Field&#8221; effect.</p>

<p><a title="A touch of red!:Camera+ v2 'depth of field' filter  and 'Grit Light' border." href="http://www.flickr.com/photos/craigp/5282458866/">Open on Flickr</a><br /><a title="A touch of red!:Camera+ v2 " rel="lightbox" href="http://farm6.static.flickr.com/5043/5282458866_28325e0d1f.jpg"><img style="border: solid 2px #000000; margin-left: 150px;" src="http://farm6.static.flickr.com/5043/5282458866_28325e0d1f.jpg" alt="" width="250" height="188" /></a></p>

<h3>Additions</h3>

<p>There are a range of new effects in addition to the previously mentioned &#8220;Depth of Field&#8221;, including a new in-app purchase option for a set of filters called the &#8220;I ♥ Analog&#8221; pack. At $0.99 it&#8217;s not a big expense and so far the few tests I&#8217;ve done seem to work well.</p>

<p>The new effects include Cyanotype, Tailfins and Depth of Field, the in-app purchased &#8220;I ♥ Analog&#8221; effects pack brings 9 more effects of varying types. These are:</p>

<ul>
<li>Diana</li>
<li>Silver Gelatin</li>
<li>Helios</li>
<li>Contessa</li>
<li>Nostalgia</li>
<li>Expired</li>
<li>XPRO C-41</li>
<li>Pinhole</li>
<li>Chromogenic</li>
</ul>

<p><a title="camer+v2-iap-filters1.jpg" rel="lightbox" href="http://www.lensenergy.com//weblog/images/camer+v2-iap-filters1.jpg"><img style="margin-left: 80px;" src="http://www.lensenergy.com//weblog/images/camer+v2-iap-filters1.jpg" border="0" alt="In-app purchase I ♥ Analog effects pack." width="160" height="240" /></a><a title="IAP-Buy-Now-Screen.jpg" rel="lightbox" href="http://www.lensenergy.com//weblog/images/IAP-Buy-Now-Screen.jpg"><img style="margin-left: 80px;" src="http://www.lensenergy.com//weblog/images/IAP-Buy-Now-Screen.jpg" border="0" alt="I ♥ Analog - buy now screen." width="160" height="240" /></a></p>

<p>Other interesting additions are a timer shooting mode as well as a burst shooting mode. The timer mode can have it&#8217;s delay adjusted by tapping on the screen. <em>As the screenshot shows their is a slight orientation issue.</em></p>

<p><a title="Camera+ Timer mode duration can be adjusted by tapping the screen." rel="lightbox" href="http://www.lensenergy.com//weblog/images/IMG_0528.jpg"><img style="border: solid 1px #000000; margin-left: 35px;" src="http://www.lensenergy.com//weblog/images/IMG_0528.jpg" border="0" alt="Camera+ Timer mode duration can be adjusted by tapping the screen." width="480" height="320" /></a></p>

<p>As a part of the UI overhaul the menu is now accessible through a pop-over panel in both the camera and lightbox modes.</p>

<p><a title="New larger menu presentation." rel="lightbox" href="http://www.lensenergy.com//weblog/images/camera+v2-menu.jpg"><img style="margin-left: 115px;" src="http://www.lensenergy.com//weblog/images/camera+v2-menu.jpg" border="0" alt="New larger menu presentation." width="320" height="480" /></a></p>

<p>When taking a photo you can tap to focus and use a second finger to select an exposure as before, once this is done you can lock the white balance using the little padlock icon that appears when setting the exposure. While I like the ability to lock your white balance it would be nice if it survived a trip to the lightbox or restarting the app.</p>

<p><a title="camera+v2-Touch-Exp.jpg" rel="lightbox" href="http://www.lensenergy.com//weblog/images/camera+v2-Touch-Exp.jpg"><img style="margin-left: 115px;" src="http://www.lensenergy.com//weblog/images/camera+v2-Touch-Exp.jpg" border="0" alt="Touch Exposure with new White Balance lock." width="320" height="480" /></a></p>

<h3>Overall</h3>

<p>This is a very solid update to what used to be the best camera application on the iPhone, support for iPhone 4 not withstanding, there is a lot of usable power in Camera+ v2 which could make it once again the best camera app on the iPhone. For users that haven&#8217;t been able to get it for the last few months it&#8217;s well worth adding to your photography app kit, for the rest of us - if you like your VolumeSnap then you may not want to upgrade. For me though, all the new features and iPhone 4 specific support make VolumeSnap a small sacrifice.</p>

<p>For now Camera+ and I will spend the next few days understanding the new features and UI. There&#8217;s lots of little things in there to find.</p>
]]>
    </content>
</entry>

<entry>
    <title>A touch of red!</title>
    <link rel="alternate" type="text/html" href="http://www.lensenergy.com/archives/2010/12/a-touch-of-red.html" />
    <id>tag:www.lensenergy.com,2010://1.192</id>

    <published>2010-12-22T07:52:52Z</published>
    <updated>2010-12-22T07:52:52Z</updated>

    <summary> A touch of red!, originally uploaded by craig.p. Camera+ v2 &#8220;Depth of field&#8221; filter and &#8220;Light Grit&#8221; border....</summary>
    <author>
        <name>craig</name>
        <uri>http://www.lensenergy.com</uri>
    </author>
    
    
    <content type="html" xml:lang="en" xml:base="http://www.lensenergy.com/">
        <![CDATA[<div style="text-align: left; padding: 3px;">
<a href="http://www.flickr.com/photos/craigp/5282458866/" title="A touch of red!:Camera+ v2 "Depth of field" filter and "Light Grit" border."><img src="http://farm6.static.flickr.com/5043/5282458866_28325e0d1f.jpg" style="border: solid 2px #000000;" alt="" /></a>
<br />
<span style="font-size: 0.8em; margin-top: 0px;"><a href="http://www.flickr.com/photos/craigp/5282458866/">A touch of red!</a>, originally uploaded by <a href="http://www.flickr.com/people/craigp/">craig.p</a>.</span>
</div>

<p>
Camera+ v2 &#8220;Depth of field&#8221; filter and &#8220;Light Grit&#8221; border.
</p>
]]>
        

    </content>
</entry>

<entry>
    <title>Backyard fern with Camera+ v2</title>
    <link rel="alternate" type="text/html" href="http://www.lensenergy.com/archives/2010/12/backyard-fern-with-camera-v2.html" />
    <id>tag:www.lensenergy.com,2010://1.191</id>

    <published>2010-12-22T06:00:08Z</published>
    <updated>2010-12-22T06:12:07Z</updated>

    <summary> Backyard fern with Camera+ v2, originally uploaded by craig.p....</summary>
    <author>
        <name>craig</name>
        <uri>http://www.lensenergy.com</uri>
    </author>
    
    
    <content type="html" xml:lang="en" xml:base="http://www.lensenergy.com/">
        <![CDATA[<div style="text-align: left; padding: 3px;">
<a href="http://www.flickr.com/photos/craigp/5282228700/" title="Backyard fern with Camera+ v2:"><img src="http://farm6.static.flickr.com/5082/5282228700_7cfa924cfb.jpg" style="border: solid 2px #000000;margin-left:80px;" alt="" /></a>
<br />
<span style="font-size: 0.8em; margin-top: 0px;"><a href="http://www.flickr.com/photos/craigp/5282228700/">Backyard fern with Camera+ v2</a>, originally uploaded by <a href="http://www.flickr.com/people/craigp/">craig.p</a>.</span>
</div>

<p>

</p>
]]>
        

    </content>
</entry>

<entry>
    <title>Aperture 3.1.1</title>
    <link rel="alternate" type="text/html" href="http://www.lensenergy.com/archives/2010/12/aperture-311.html" />
    <id>tag:www.lensenergy.com,2010://1.190</id>

    <published>2010-12-10T07:27:08Z</published>
    <updated>2010-12-10T07:47:02Z</updated>

    <summary>This is a nice and timely update to Aperture, weighing in at nearly 260MB, that fixes those pesky problems with publishing photo&#8217;s to Flickr (and MobileMe/Facebook). According to Software Update : As usual there&#8217;s a support document from Apple and this time it&#8217;s a bit more detailed: http://support.apple.com/kb/TS2518...</summary>
    <author>
        <name>craig</name>
        <uri>http://www.lensenergy.com</uri>
    </author>
    
        <category term="Appletosh" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="photography" label="Photography" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="software" label="Software" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.lensenergy.com/">
        <![CDATA[<p>This is a nice and timely update to Aperture, weighing in at nearly 260MB, that fixes those pesky problems with publishing photo&#8217;s to Flickr (and MobileMe/Facebook).</p>

<p>According to Software Update :</p>

<p><a title="Aperture 3.1.1 via Software Update" rel="lightbox" href="http://www.lensenergy.com//weblog/images/Aperture311SoftwareUpdate.png"><img style="margin-left: 80px;" src="http://www.lensenergy.com//weblog/images/Aperture311SoftwareUpdate.png" border="0" alt="Aperture 3.1.1 via Software Update" width="283" height="300" /></a></p>

<p>As usual there&#8217;s a support document from Apple and this time it&#8217;s a bit more detailed: <a href="http://support.apple.com/kb/TS2518">http://support.apple.com/kb/TS2518</a></p>
]]>
        

    </content>
</entry>

<entry>
    <title>That&apos;s horrifying...</title>
    <link rel="alternate" type="text/html" href="http://www.lensenergy.com/archives/2010/07/thats-horrifying.html" />
    <id>tag:www.lensenergy.com,2010://1.189</id>

    <published>2010-07-13T01:22:09Z</published>
    <updated>2010-07-13T01:25:20Z</updated>

    <summary>  Everyone needs a laugh now and then. The good folks at Coding Robots have a website that could add some humour to your day. Called iwl.me (I Write Like) it purports to tell you who your &#8220;write like&#8221;, for exmaple, apparently: I write likeStephen King I Write Like by...</summary>
    <author>
        <name>craig</name>
        <uri>http://www.lensenergy.com</uri>
    </author>
    
    
    <content type="html" xml:lang="en" xml:base="http://www.lensenergy.com/">
        <![CDATA[<p> </p>

<p>Everyone needs a laugh now and then.</p>

<p>The good folks at Coding Robots have a website that could add some humour to your day.</p>

<p>Called <a href="http://iwl.me">iwl.me</a> (<strong>I</strong> <strong>W</strong>rite <strong>L</strong>ike) it purports to tell you who your &#8220;write like&#8221;, for exmaple, apparently:</p>

<p><!-- Begin I Write Like Badge --></p>

<div style="overflow: auto; border: 2px solid #ddd; font: 20px/1.2 Arial,sans-serif; width: 380px; padding: 5px; background: #F7F7F7; color: #555;"><img style="float: right;" src="http://s.iwl.me/w.png" alt="" width="120" />
<div style="padding: 20px; border-bottom: 1px solid #eee; text-shadow: #fff 0 1px;">I write like<br /><span style="font-size: 30px; color: #698b22;">Stephen King</span></div>
<p style="font-size: 11px; text-align: center; color: #888;"><em>I Write Like</em> by Mémoires, <a style="color: #888;" href="http://www.codingrobots.com/memoires/">Mac journal software</a>. <a style="color: #333; background: #FFFFE0;" href="http://iwl.me"><strong>Analyze your writing!</strong></a></p>
</div>

<p><!-- End I Write Like Badge --></p>

<p>It could be worse - I could write like Dan Brown.</p>

<p>Give it a go - it&#8217;s free, it&#8217;s a bit of fun, it&#8217;ll distract you from your Twitter feed.</p>
]]>
        

    </content>
</entry>

<entry>
    <title>Oh really O&apos;Reilly? &amp; Hockenberry&apos;s new book</title>
    <link rel="alternate" type="text/html" href="http://www.lensenergy.com/archives/2010/05/oh-really-oreilly-hockenberrys.html" />
    <id>tag:www.lensenergy.com,2010://1.188</id>

    <published>2010-05-07T02:12:42Z</published>
    <updated>2010-05-07T02:12:45Z</updated>

    <summary> First up, Craig Hockenberry (he of Iconfactory fame) has released a book about iPhone OS development. At this point you&apos;re probably saying &quot;Another book about developing for the iPhone? Really we don&apos;t have enough?&quot;  The thing is that apart from the constant updating of the OS Apple does which...</summary>
    <author>
        <name>craig</name>
        <uri>http://www.lensenergy.com</uri>
    </author>
    
        <category term="Books" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="caveatemptor" label="caveat emptor" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.lensenergy.com/">
        <![CDATA[<p><img style="margin: 0 5px 5px 0;" src="http://www.lensenergy.com//weblog/images/iPhone App Dev - tmm cover.gif" border="0" alt="iPhone App Dev - tmm cover.gif" width="180" height="236" align="left" /></p>
<p>First up, Craig Hockenberry (he of <a href="http://iconfactory.com">Iconfactory</a> fame) has released <a href="http://appdevmanual.com">a book</a> about iPhone OS development. At this point you're probably saying "Another book about developing for the iPhone? Really we don't have enough?"  The thing is that apart from the constant updating of the OS Apple does which always makes new books and new editions interesting, Hockenberry takes you through the whole development/submission/approval process to getting your app into Apples App Store. Of course there's lots of Xcode/Cocoa goodness as well but so far it's reading more like the business of app development - which is a win for me and I'm sure many other.</p>
<p>The best way to get it, IMHO, is via the O'Reilly's bundle which gets you the hard copy and the e-book. Just watch out for O'Reilly's discount mechanisms otherwise you could end up pay more than you need or want to.</p>]]>
        <![CDATA[<p>O'Reilly has become one of those publishers that have embraced the ebook experience and even made early attempts with the <a href="http://www.safaribooksonline.com">Safari Books Online</a> offering, in which you subscribe to get access. Unfortunately they have a confusing array of options for buying books and if you're not careful you can end up paying more than you have to.</p>
<p>For example if you want to get Hockenberry's "<a href="http://oreilly.com/catalog/9780596809782">iPhone App Development: The Missing Manual</a>" you have a range of choices. You can get the print version, the ebook version or a bundle with both the print and ebook versions (you can also get it through Safari Books Online but that's another issue).</p>
<p><a title="O'Reilly Typical Book Pricing - Hockenberry.png" rel="lightbox" href="http://www.lensenergy.com//weblog/images/O'Reilly Typical Book Pricing - Hockenberry.png"><img style="margin: 5px; margin-left: 180px;" src="http://www.lensenergy.com//weblog/images/O'Reilly Typical Book Pricing - Hockenberry.png" border="0" alt="O'Reilly Typical Book Pricing - Hockenberry.png" width="167" height="150" /></a></p>
<p>Naturally if you get either the print or the ebook version by them selves you're paying US$39.99 and US$31.99 respectively, with a paltry $8.00 discount on the ebook ( <em>vs. cutting down a tree and processing it into paper, shipping the paper, printing it, shipping the books to O'Reilly then shipping them to you</em> ). If you get the bundle though, it's only $4 more than buying just the print version... hardly makes sense but that's their model.</p>
<p><img style="margin: 5px 0 5px 0;" src="http://www.lensenergy.com//weblog/images/O'Reilly Buy 2 Get 1 Free Button.png" border="0" alt="O'Reilly Buy 2 Get 1 Free Button.png" width="125" height="70" align="right" /></p>
<p>So the bundle is only $43.99 and for the cost of a cup of coffee I get to read it on my iPad while the print version sits in my office library for others to refer to if they need to. Great I'll get that option. At this point like me you may have not paid much attention to the "Buy 2 Get 1 Free" promotional button.</p>
<p>Anyway if you head off to the checkout they give you a much bigger hint that you should take advantage of this offer. Directly under the shopping cart you get the big reminder that you could be <em>saving more money</em>!</p>
<p><a title="O'Reilly Checkout 2 Books.png" rel="lightbox" href="http://www.lensenergy.com//weblog/images/O'Reilly Checkout 2 Books.png"><img style="margin: 5px; margin-left: 120px;" src="http://www.lensenergy.com//weblog/images/O'Reilly Checkout 2 Books.png" border="0" alt="O'Reilly Checkout 2 Books.png" width="280" height="272" /></a></p>
<p>So, being human, I give in to the impulse, and justify it by reminding myself of another iPhone OS centric book that I've been tracking called "<a href="http://oreilly.com/catalog/9780596804831/">iPhone 3D Programming - Developing Graphical Applications with OpenGL ES</a>" by a fellow called Philip Rideout. Not surprisingly this book includes a bundle that gives you the ebook for only $4 as well (there's the doughnut to go with that coffee).</p>
<p><a title="O'Reilly Typical Book Pricing - Rideout.png" rel="lightbox" href="http://www.lensenergy.com//weblog/images/O'Reilly Typical Book Pricing - Rideout.png"><img style="margin: 5px; margin-left: 180px;" src="http://www.lensenergy.com//weblog/images/O'Reilly Typical Book Pricing - Rideout.png" border="0" alt="O'Reilly Typical Book Pricing - Rideout.png" width="167" height="127" /></a></p>
<p> </p>
<p>Having already made a bundle decision, you like me, would probably do it again. Here's where the problem starts - if you checkout now and use the recommended coupon code you will actually pay more than if you just brought the two bundles. That's right - don't use the promotion code <strong>OPC10</strong> in this situation, instead just leave the code as <strong>BUNDLE</strong> which is automatically filled in for you.</p>
<p>Using the "OPC10" code actually ended up increasing the bundle prices, here's the comparison between BUNDLE and OPC10 for you to compare:</p>
<h2>Four book discount?</h2>
<table>
<tbody>
<tr>
<td><p><strong>"BUNDLE"</strong></p>
<p style="margin: 0.0px 0.0px 12.0px 0.0px; line-height: 14.0px; font: 12.0px Verdana; color: #232323; background-color: #efefef;"><strong>Order Summary:</strong></p>
<p style="margin: 0.0px 0.0px 12.0px 0.0px; line-height: 15.0px; font: 12.0px Verdana; color: #990409; background-color: #efefef;"><strong>You saved $55.98 on this order</strong></p>
<p>&nbsp;</p>
<p> </p>
<table style="width: 240.0px;" cellspacing="0" cellpadding="0" width="240.0">
<tbody>
<tr>
<td style="width: 165.0px; padding: 4.0px 0.0px 4.0px 0.0px;" valign="middle">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; line-height: 15.0px; font: 11.0px Verdana; color: #232323;">iPhone App Development: The Missing Manual, 1Ed</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; line-height: 15.0px; font: 11.0px Verdana; color: #232323;"><strong>Usually Ships: 24-48 hrs</strong></p>
</td>
<td style="width: 75.0px; padding: 4.0px 0.0px 4.0px 0.0px;" valign="middle">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; text-align: right; line-height: 15.0px; font: 11.0px Verdana; color: #232323;"><span style="text-decoration: line-through;">39.99</span> $12.00</p>
</td>
</tr>
<tr>
<td style="width: 165.0px; padding: 4.0px 0.0px 4.0px 0.0px;" valign="middle">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; line-height: 15.0px; font: 11.0px Verdana; color: #232323;">iPhone App Development: The Missing Manual, 1Ed</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; line-height: 15.0px; font: 11.0px Verdana; color: #232323;"><strong>Immediate Download</strong></p>
</td>
<td style="width: 75.0px; padding: 4.0px 0.0px 4.0px 0.0px;" valign="middle">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; text-align: right; line-height: 15.0px; font: 11.0px Verdana; color: #232323;">$31.99</p>
</td>
</tr>
<tr>
<td style="width: 165.0px; padding: 4.0px 0.0px 4.0px 0.0px;" valign="middle">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; line-height: 15.0px; font: 11.0px Verdana; color: #232323;">iPhone 3D Programming, 1Ed</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; line-height: 15.0px; font: 11.0px Verdana; color: #232323;"><strong>On Back Order</strong></p>
</td>
<td style="width: 75.0px; padding: 4.0px 0.0px 4.0px 0.0px;" valign="middle">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; text-align: right; line-height: 15.0px; font: 11.0px Verdana; color: #232323;"><span style="text-decoration: line-through;">39.99</span> $12.00</p>
</td>
</tr>
<tr>
<td style="width: 165.0px; padding: 4.0px 0.0px 4.0px 0.0px;" valign="middle">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; line-height: 15.0px; font: 11.0px Verdana; color: #232323;">iPhone 3D Programming, 1Ed</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; line-height: 15.0px; font: 11.0px Verdana; color: #232323;"><strong>Immediate Download</strong></p>
</td>
<td style="width: 75.0px; padding: 4.0px 0.0px 4.0px 0.0px;" valign="middle">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; text-align: right; line-height: 15.0px; font: 11.0px Verdana; color: #232323;">$31.99</p>
</td>
</tr>
<tr>
<td style="width: 165.0px; padding: 4.0px 0.0px 4.0px 0.0px;" valign="middle">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; line-height: 15.0px; font: 11.0px Verdana; color: #232323;">Shipping Charges</p>
</td>
<td style="width: 75.0px; padding: 4.0px 0.0px 4.0px 0.0px;" valign="middle">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; text-align: right; line-height: 15.0px; font: 11.0px Verdana; color: #232323;">$39.48</p>
</td>
</tr>
<tr>
<td style="width: 165.0px; padding: 4.0px 0.0px 4.0px 0.0px;" valign="middle">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; line-height: 15.0px; font: 11.0px Verdana; color: #232323;">Tax</p>
</td>
<td style="width: 75.0px; padding: 4.0px 0.0px 4.0px 0.0px;" valign="middle">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; text-align: right; line-height: 15.0px; font: 11.0px Verdana; color: #232323;">$0.00</p>
</td>
</tr>
<tr>
<td style="width: 240.0px; padding: 4.0px 0.0px 4.0px 0.0px;" colspan="2" valign="middle">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; line-height: 15.0px; font: 11.0px Verdana; color: #cccccc; background-color: #cccccc; min-height: 13.0px;"> </p>
</td>
</tr>
<tr>
<td style="width: 165.0px; padding: 4.0px 0.0px 4.0px 0.0px;" valign="middle">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; line-height: 15.0px; font: 11.0px Verdana; color: #232323;"><strong>Total</strong></p>
</td>
<td style="width: 75.0px; padding: 4.0px 0.0px 4.0px 0.0px;" valign="middle">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; text-align: right; line-height: 15.0px; font: 11.0px Verdana; color: #232323;"><strong>$127.46</strong></p>
</td>
</tr>
</tbody>
</table>
</td>
<td style="width: 20.0px;"></td>
<td style="width: 240.0px;"><p><strong>"OPC10"</strong></p>
<p style="margin: 0.0px 0.0px 12.0px 0.0px; line-height: 14.0px; font: 12.0px Verdana; color: #232323; background-color: #efefef;"><strong>Order Summary:</strong></p>
<p style="margin: 0.0px 0.0px 12.0px 0.0px; line-height: 15.0px; font: 12.0px Verdana; color: #990409; background-color: #efefef;"><strong>You saved $36.00 on this order, the equivalent of 1 free item!</strong></p>
<p> </p>
<table style="width: 240.0px;" cellspacing="0" cellpadding="0" width="240.0">
<tbody>
<tr>
<td style="width: 165.0px; padding: 4.0px 0.0px 4.0px 0.0px;" valign="middle">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; line-height: 15.0px; font: 11.0px Verdana; color: #232323;">iPhone App Development: The Missing Manual, 1Ed</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; line-height: 15.0px; font: 11.0px Verdana; color: #232323;"><strong>Usually Ships: 24-48 hrs</strong></p>
</td>
<td style="width: 75.0px; padding: 4.0px 0.0px 4.0px 0.0px;" valign="middle">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; text-align: right; line-height: 15.0px; font: 11.0px Verdana; color: #232323;"><span style="text-decoration: line-through;">39.99</span> $29.99</p>
</td>
</tr>
<tr>
<td style="width: 165.0px; padding: 4.0px 0.0px 4.0px 0.0px;" valign="middle">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; line-height: 15.0px; font: 11.0px Verdana; color: #232323;">iPhone App Development: The Missing Manual, 1Ed</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; line-height: 15.0px; font: 11.0px Verdana; color: #232323;"><strong>Immediate Download</strong></p>
</td>
<td style="width: 85.0px; padding: 4.0px 0.0px 4.0px 0.0px;" valign="middle">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; text-align: right; line-height: 15.0px; font: 11.0px Verdana; color: #232323;"><span style="text-decoration: line-through;">31.99</span> $23.99</p>
</td>
</tr>
<tr>
<td style="width: 165.0px; padding: 4.0px 0.0px 4.0px 0.0px;" valign="middle">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; line-height: 15.0px; font: 11.0px Verdana; color: #232323;">iPhone 3D Programming, 1Ed</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; line-height: 15.0px; font: 11.0px Verdana; color: #232323;"><strong>On Back Order</strong></p>
</td>
<td style="width: 80.0px; padding: 4.0px 0.0px 4.0px 0.0px;" valign="middle">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; text-align: right; line-height: 15.0px; font: 11.0px Verdana; color: #232323;"><span style="text-decoration: line-through;">39.99</span> $29.99</p>
</td>
</tr>
<tr>
<td style="width: 165.0px; padding: 4.0px 0.0px 4.0px 0.0px;" valign="middle">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; line-height: 15.0px; font: 11.0px Verdana; color: #232323;">iPhone 3D Programming, 1Ed</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; line-height: 15.0px; font: 11.0px Verdana; color: #232323;"><strong>Immediate Download</strong></p>
</td>
<td style="width: 75.0px; padding: 4.0px 0.0px 4.0px 0.0px;" valign="middle">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; text-align: right; line-height: 15.0px; font: 11.0px Verdana; color: #232323;"><span style="text-decoration: line-through;">31.99</span> $23.99</p>
</td>
</tr>
<tr>
<td style="width: 165.0px; padding: 4.0px 0.0px 4.0px 0.0px;" valign="middle">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; line-height: 15.0px; font: 11.0px Verdana; color: #232323;">Shipping Charges</p>
</td>
<td style="width: 75.0px; padding: 4.0px 0.0px 4.0px 0.0px;" valign="middle">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; text-align: right; line-height: 15.0px; font: 11.0px Verdana; color: #232323;">$39.48</p>
</td>
</tr>
<tr>
<td style="width: 165.0px; padding: 4.0px 0.0px 4.0px 0.0px;" valign="middle">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; line-height: 15.0px; font: 11.0px Verdana; color: #232323;">Tax</p>
</td>
<td style="width: 75.0px; padding: 4.0px 0.0px 4.0px 0.0px;" valign="middle">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; text-align: right; line-height: 15.0px; font: 11.0px Verdana; color: #232323;">$0.00</p>
</td>
</tr>
<tr>
<td style="width: 240.0px; padding: 4.0px 0.0px 4.0px 0.0px;" colspan="2" valign="middle">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; line-height: 15.0px; font: 11.0px Verdana; color: #cccccc; background-color: #cccccc; min-height: 13.0px;"> </p>
</td>
</tr>
<tr>
<td style="width: 165.0px; padding: 4.0px 0.0px 4.0px 0.0px;" valign="middle">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; line-height: 15.0px; font: 11.0px Verdana; color: #232323;"><strong>Total</strong></p>
</td>
<td style="width: 75.0px; padding: 4.0px 0.0px 4.0px 0.0px;" valign="middle">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; text-align: right; line-height: 15.0px; font: 11.0px Verdana; color: #232323;"><strong>$147.44</strong></p>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<p>So, if you decide to get 4 books (2 print + 2 ebook versions) use the "<strong>BUNDLE</strong>" code.</p>
<p>If you do manage to show some restraint and just get one extra book, don't use "<strong>BUNDLE</strong>" code. Wait what?</p>
<p>Yes sadly, for the situation where you have 3 books (a print + ebook bundle and 1 other), use the "OPC10" code to get the best pricing </p>
<h2>Three book discount?</h2>
<table>
<tbody>
<tr>
<td style="width: 240.0px;"><p><strong>"BUNDLE"</strong></p>
<p style="margin: 0.0px 0.0px 12.0px 0.0px; line-height: 14.0px; font: 12.0px Verdana; color: #232323; background-color: #efefef;"><strong>Order Summary:</strong></p>
<p style="margin: 0.0px 0.0px 12.0px 0.0px; line-height: 15.0px; font: 12.0px Verdana; color: #990409; background-color: #efefef;"><strong>You saved $27.99 on this order, the equivalent of 1 free item!</strong></p>
<p> </p>
<table style="width: 240.0px;" cellspacing="0" cellpadding="0" width="240.0">
<tbody>
<tr>
<td style="width: 165.0px; padding: 4.0px 0.0px 4.0px 0.0px;" valign="middle">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; line-height: 15.0px; font: 11.0px Verdana; color: #232323;">iPhone App Development: The Missing Manual, 1Ed</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; line-height: 15.0px; font: 11.0px Verdana; color: #232323;"><strong>Usually Ships: 24-48 hrs</strong></p>
</td>
<td style="width: 75.0px; padding: 4.0px 0.0px 4.0px 0.0px;" valign="middle">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; text-align: right; line-height: 15.0px; font: 11.0px Verdana; color: #232323;"><span style="text-decoration: line-through;">39.99</span> $12.00</p>
</td>
</tr>
<tr>
<td style="width: 165.0px; padding: 4.0px 0.0px 4.0px 0.0px;" valign="middle">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; line-height: 15.0px; font: 11.0px Verdana; color: #232323;">iPhone App Development: The Missing Manual, 1Ed</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; line-height: 15.0px; font: 11.0px Verdana; color: #232323;"><strong>Immediate Download</strong></p>
</td>
<td style="width: 75.0px; padding: 4.0px 0.0px 4.0px 0.0px;" valign="middle">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; text-align: right; line-height: 15.0px; font: 11.0px Verdana; color: #232323;">$31.99</p>
</td>
</tr>
<tr>
<td style="width: 165.0px; padding: 4.0px 0.0px 4.0px 0.0px;" valign="middle">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; line-height: 15.0px; font: 11.0px Verdana; color: #232323;">iPhone 3D Programming, 1Ed</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; line-height: 15.0px; font: 11.0px Verdana; color: #232323;"><strong>Immediate Download</strong></p>
</td>
<td style="width: 75.0px; padding: 4.0px 0.0px 4.0px 0.0px;" valign="middle">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; text-align: right; line-height: 15.0px; font: 11.0px Verdana; color: #232323;">$31.99</p>
</td>
</tr>
<tr>
<td style="width: 165.0px; padding: 4.0px 0.0px 4.0px 0.0px;" valign="middle">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; line-height: 15.0px; font: 11.0px Verdana; color: #232323;">Shipping Charges</p>
</td>
<td style="width: 75.0px; padding: 4.0px 0.0px 4.0px 0.0px;" valign="middle">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; text-align: right; line-height: 15.0px; font: 11.0px Verdana; color: #232323;">$19.74</p>
</td>
</tr>
<tr>
<td style="width: 165.0px; padding: 4.0px 0.0px 4.0px 0.0px;" valign="middle">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; line-height: 15.0px; font: 11.0px Verdana; color: #232323;">Tax</p>
</td>
<td style="width: 75.0px; padding: 4.0px 0.0px 4.0px 0.0px;" valign="middle">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; text-align: right; line-height: 15.0px; font: 11.0px Verdana; color: #232323;">$0.00</p>
</td>
</tr>
<tr>
<td style="width: 240.0px; padding: 4.0px 0.0px 4.0px 0.0px;" colspan="2" valign="middle">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; line-height: 15.0px; font: 11.0px Verdana; color: #cccccc; background-color: #cccccc; min-height: 13.0px;"> </p>
</td>
</tr>
<tr>
<td style="width: 165.0px; padding: 4.0px 0.0px 4.0px 0.0px;" valign="middle">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; line-height: 15.0px; font: 11.0px Verdana; color: #232323;"><strong>Total</strong></p>
</td>
<td style="width: 75.0px; padding: 4.0px 0.0px 4.0px 0.0px;" valign="middle">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; text-align: right; line-height: 15.0px; font: 11.0px Verdana; color: #232323;"><strong>$95.72</strong></p>
</td>
</tr>
</tbody>
</table>
</td>
<td style="width: 20.0px;"></td>
<td style="width: 240.0px;"><p><strong>"OPC10"</strong></p>
<p style="margin: 0.0px 0.0px 12.0px 0.0px; line-height: 14.0px; font: 12.0px Verdana; color: #232323; background-color: #efefef;"><strong>Order Summary:</strong></p>
<p style="margin: 0.0px 0.0px 12.0px 0.0px; line-height: 15.0px; font: 12.0px Verdana; color: #990409; background-color: #efefef;"><strong>You saved $34.65 on this order, the equivalent of 1 free item!</strong></p>
<p> </p>
<table style="width: 240.0px;" cellspacing="0" cellpadding="0" width="240.0">
<tbody>
<tr>
<td style="width: 165.0px; padding: 4.0px 0.0px 4.0px 0.0px;" valign="middle">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; line-height: 15.0px; font: 11.0px Verdana; color: #232323;">iPhone App Development: The Missing Manual, 1Ed</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; line-height: 15.0px; font: 11.0px Verdana; color: #232323;"><strong>Usually Ships: 24-48 hrs</strong></p>
</td>
<td style="width: 75.0px; padding: 4.0px 0.0px 4.0px 0.0px;" valign="middle">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; text-align: right; line-height: 15.0px; font: 11.0px Verdana; color: #232323;"><span style="text-decoration: line-through;">39.99</span> $29.99</p>
</td>
</tr>
<tr>
<td style="width: 165.0px; padding: 4.0px 0.0px 4.0px 0.0px;" valign="middle">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; line-height: 15.0px; font: 11.0px Verdana; color: #232323;">iPhone App Development: The Missing Manual, 1Ed</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; line-height: 15.0px; font: 11.0px Verdana; color: #232323;"><strong>Immediate Download</strong></p>
</td>
<td style="width: 85.0px; padding: 4.0px 0.0px 4.0px 0.0px;" valign="middle">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; text-align: right; line-height: 15.0px; font: 11.0px Verdana; color: #232323;"><span style="text-decoration: line-through;">31.99</span> $23.99</p>
</td>
</tr>
<tr>
<td style="width: 165.0px; padding: 4.0px 0.0px 4.0px 0.0px;" valign="middle">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; line-height: 15.0px; font: 11.0px Verdana; color: #232323;">iPhone 3D Programming, 1Ed</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; line-height: 15.0px; font: 11.0px Verdana; color: #232323;"><strong>Immediate Download</strong></p>
</td>
<td style="width: 75.0px; padding: 4.0px 0.0px 4.0px 0.0px;" valign="middle">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; text-align: right; line-height: 15.0px; font: 11.0px Verdana; color: #232323;"><span style="text-decoration: line-through;">31.99</span> $23.99</p>
</td>
</tr>
<tr>
<td style="width: 165.0px; padding: 4.0px 0.0px 4.0px 0.0px;" valign="middle">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; line-height: 15.0px; font: 11.0px Verdana; color: #232323;">Shipping Charges</p>
</td>
<td style="width: 75.0px; padding: 4.0px 0.0px 4.0px 0.0px;" valign="middle">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; text-align: right; line-height: 15.0px; font: 11.0px Verdana; color: #232323;">$19.74</p>
</td>
</tr>
<tr>
<td style="width: 165.0px; padding: 4.0px 0.0px 4.0px 0.0px;" valign="middle">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; line-height: 15.0px; font: 11.0px Verdana; color: #232323;">Tax</p>
</td>
<td style="width: 75.0px; padding: 4.0px 0.0px 4.0px 0.0px;" valign="middle">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; text-align: right; line-height: 15.0px; font: 11.0px Verdana; color: #232323;">$0.00</p>
</td>
</tr>
<tr>
<td style="width: 240.0px; padding: 4.0px 0.0px 4.0px 0.0px;" colspan="2" valign="middle">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; line-height: 15.0px; font: 11.0px Verdana; color: #cccccc; background-color: #cccccc; min-height: 13.0px;"> </p>
</td>
</tr>
<tr>
<td style="width: 165.0px; padding: 4.0px 0.0px 4.0px 0.0px;" valign="middle">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; line-height: 15.0px; font: 11.0px Verdana; color: #232323;"><strong>Total</strong></p>
</td>
<td style="width: 75.0px; padding: 4.0px 0.0px 4.0px 0.0px;" valign="middle">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; text-align: right; line-height: 15.0px; font: 11.0px Verdana; color: #232323;"><strong>$89.06</strong></p>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<p>While the $6.66 saving is not as dramatic as the $19.98 (nor is it a sign of Lucifer) it's gets me my coffee and doughnut back! For people that live a little closer to O'Reilly's wharehouse it could be the cost of shipping! Yay - free shipping, well kind of.</p>]]>
    </content>
</entry>

<entry>
    <title>Keyboard control for iTunes Ratings</title>
    <link rel="alternate" type="text/html" href="http://www.lensenergy.com/archives/2010/02/keyboard-control-for-itunes-ra.html" />
    <id>tag:www.lensenergy.com,2010://1.187</id>

    <published>2010-02-15T02:04:12Z</published>
    <updated>2010-02-15T02:21:57Z</updated>

    <summary>I&#8217;m a keyboard person, that is I prefer to use the keyboard as much as possible. It&#8217;s doesn&#8217;t matter that there are good metrics to show how much slower using a keyboard is, it&#8217;s just the way I&#8217;m wired. So iTunes is a particular pain for me - as it...</summary>
    <author>
        <name>craig</name>
        <uri>http://www.lensenergy.com</uri>
    </author>
    
        <category term="Appletosh" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="itunes" label="iTunes" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="keyboard" label="Keyboard" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="macosx" label="Mac OS X" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.lensenergy.com/">
        <![CDATA[<p><img src="http://www.lensenergy.com//weblog/images/iTunes.png" alt="iTunes.png" border="0" width="150" height="150" align="left" style="margin:0 5px 5px 0" />I&#8217;m a keyboard person, that is I prefer to use the keyboard as much as possible. It&#8217;s doesn&#8217;t matter that there are <a href="http://www.asktog.com/TOI/toi06KeyboardVMouse1.html" title="AskTog: Keyboard vs Mouse">good metrics to show how much slower using a keyboard is</a>, it&#8217;s just the way I&#8217;m wired.</p>

<p>So iTunes is a particular pain for me - as it doesn&#8217;t let me change the rating of a song from the keyboard - at least not fresh out of the box.</p>

<p>We&#8217;re going to change that.</p>
]]>
        <![CDATA[<h2>Step 1</h2>

<p><img src="http://www.lensenergy.com//weblog/images/iTunesRatingMenu.png" alt="iTunesRatingMenu.png" border="0" width="144" height="156" align="right" style="margin-left:5px" />First up we need to think about what keyboard shortcuts you want to assign to each of the commands in the ratings menu (shown to the right). You don&#8217;t wan&#8217;t to conflict with any shortcuts that already exist in the application and you want them to be easy to remember and finally you don&#8217;t want some difficult to execute combination.</p>

<p>From looking at iTunes, I can see that video size uses <strong>⌘0 - ⌘3</strong> but for me that&#8217;s not an issue as I tend to watch iTunes video on a TV or iPhone not my Mac. (If it really worries you, you can use <strong>⇧⌘0 - ⇧⌘5</strong> to change the rating - where ⇧ is the <strong>Shift</strong> key.)</p>

<p>For this exercise I&#8217;m going to use the following keyboard shortcuts - </p>

<ul>
<li>⌘0 - for &#8220;<strong>None</strong>&#8221;</li>
<li>⌘1 - for &#8220;★&#8221;</li>
<li>⌘2 - for &#8220;★★&#8221;</li>
<li>⌘3 - for &#8220;★★★&#8221;</li>
<li>⌘4 - for &#8220;★★★★&#8221;</li>
<li>⌘5 - for &#8220;★★★★★&#8221;</li>
</ul>

<p>I&#8217;ll also setup a keyboard shortcut for increasing and decreasing the current rating of a song, for that I&#8217;ll use:</p>

<ul>
<li>⌘↑ - for &#8220;<strong>Increase by 1</strong>&#8221;</li>
<li>⌘↓ - for &#8220;<strong>Decrease by 1</strong>&#8221;</li>
</ul>

<p>At this point the observant will have noted that there is no menu item to increase/decrease rating - we&#8217;ll fix this with a few very simple AppleScripts.</p>

<p>Most people tend to forget (or just don&#8217;t realise) that Mac OS X allows you to set &#8220;Keyboard Shortcuts&#8221; for any menu item through the Keyboard System Preferences panel. All you need are the application name (iTunes), the menu item names (shown above) and what shortcut you want to assign to each menu item.</p>

<h2>Step 2</h2>

<p>Find and open the Keyboard preferences and lets get straight into it.</p>

<p><a href="http://www.lensenergy.com//weblog/images/FindKeyboardSystemPref.png" rel="lightbox" title="Find the Keyboard System Preference Pane"><img src="http://www.lensenergy.com//weblog/images/FindKeyboardSystemPref.png" alt="Find the Keyboard System Preference Pane" border="0" width="374" height="320" style="margin-left:80px;margin-right:auto;"/></a></p>

<h2>Step 2</h2>

<p>Under the Keyboard tab, make sure the &#8220;Show Keyboard &amp; Character Viewer in menu bar&#8221; preference is ticked, like the screenshot below.</p>

<p><a href="http://www.lensenergy.com//weblog/images/KeyboardPref.png" title="Show Keyboard &amp; Character Viewer" rel="lightbox"><img src="http://www.lensenergy.com//weblog/images/KeyboardPref.png" alt="Show Keyboard &amp; Character Viewer" border="0" width="374" height="338" style="margin-left:80px" /></a></p>

<h2>Step 3</h2>

<p>Once you&#8217;ve done that you&#8217;ll want to click on the &#8220;Keyboard Shortcuts&#8221; tab and then in the source list you will need to click on the last entry &#8220;Application Shortcuts&#8221;</p>

<p><a href="http://www.lensenergy.com//weblog/images/KeyboardShortcutsSystemPreference.png" rel="lightbox" title="Keyboard Shortcuts System Preference"><img src="http://www.lensenergy.com//weblog/images/KeyboardShortcutsSystemPreference.png" alt=""Keyboard Shortcuts System Preference" border="0" width="374" height="338" style="margin-left:80px" /></a></p>

<h2>Step 4</h2>

<p>Click the &#8220;+&#8221; button to add a new keyboard shortcut. This will bring up a panel that allows you to select the application, enter a menu title and specify the keyboard shortcut you want to assign. First step select iTunes from the application list - if you don&#8217;t the Shortcut will be applied to <em>all</em> applications.</p>

<p>The first iTunes shortcut we&#8217;ll set up is for &#8220;None&#8221; and we&#8217;ll use the easy to remember shortcut <strong>⌘0</strong></p>

<p><img src="http://www.lensenergy.com//weblog/images/System Preferences Keyboard Shortcut-0.png" alt="System Preferences Keyboard Shortcut ⌘-0" border="0" width="422" height="221" style="margin-left:80px" /></p>

<p>Type &#8220;None&#8221; into the menu title field, making sure it&#8217;s exactly the same as the entry in your iTunes menu, then advance to the keyboard shortcut field and set the shortcut by typing <strong>⌘0</strong> on your keyboard.</p>

<p>Finally click the <strong>Add</strong> button, and you&#8217;ve done the first shortcut.</p>

<h2>Step 5</h2>

<p>This process seems easy doesn&#8217;t it, and it is, as long as you can type the correct menu name into the interface. Setting shortcuts for rating 1 to 5 stars is not so easy, for starters most of us don&#8217;t have a ★ key on our keyboards.
This is where the Character Viewer comes in very handy, in your menu bar, on the right-hand side you will find the Character menu (it looks like a little box with an * inside it. Click on that to reveal the menu, like this one:</p>

<p><img src="http://www.lensenergy.com//weblog/images/KeyboardCharacterViewerMenu.png" alt="KeyboardCharacterViewerMenu.png" border="0" width="230" height="106" style="margin-left:160px" /></p>

<p>Select the <strong>Character Viewer</strong> to get a window that floats above everything and looks like this:</p>

<p><a href="http://www.lensenergy.com//weblog/images/Character Viewer.png" title="Character Viewer.png" rel="lightbox"><img src="http://www.lensenergy.com//weblog/images/Character Viewer.png" alt="Character Viewer.png" border="0" width="243" height="232" style="margin-left:155px" /></a></p>

<p>If your Character Viewer doesn&#8217;t look like this you may have to select &#8220;<strong>Roman</strong>&#8221; from the <strong>View</strong> menu in the top left corner of the <strong>Characters</strong> window. Once you&#8217;ve got the &#8220;Roman&#8221; view select the <strong>★ Stars/Asterisks</strong> entry in the source list on the left (as shown in the screenshot). The very first star you see should be the &#8220;BLACK STAR&#8221; and it should be already selected.</p>

<h2>Step 6</h2>

<p>Now to create the shortcuts for ratings 1 to 5. It&#8217;s really quite simple, as with Step 4 we click the &#8220;+&#8221; button to add a new keyboard shortcut. If you&#8217;ve done each step correctly so far iTunes will still be the selected application, so all we have to do is enter the name and set the key combination.</p>

<p>With your Character Viewer window still open click in the text box for the menu title and then double click on the ★ glyph. This will insert the glyph into the menu title. Next set the keyboard shortcut field to <strong>⌘1</strong> as shown in the screenshot. Then click the <strong>Add</strong> button.</p>

<p><img src="http://www.lensenergy.com//weblog/images/System Preferences Keyboard Shortcut-1.png" alt="System Preferences Keyboard Shortcut-1.png" border="0" width="422" height="221" style="margin-left:80px" /></p>

<h2>Steps 7 - 10</h2>

<p>Repeat <strong>Step 6</strong> increasing the number of ★ glyphs and setting the appropriate shortcut keys, until you&#8217;ve created the shortcut for a 5 ★ rating, as shown below.</p>

<p><img src="http://www.lensenergy.com//weblog/images/System Preferences Keyboard Shortcut-5.png" alt="System Preferences Keyboard Shortcut-5.png" border="0" width="422" height="221" style="margin-left:80px" /></p>

<h2>Step 11</h2>

<p>The final two keyboard shortcuts require a bit of <a href="http://devworld.apple.com/applescript/" title="AppleScript on devworld.apple.com">AppleScript</a>, - don&#8217;t panic it&#8217;s easy. As mentioned previously iTunes doesn&#8217;t have menu items to increase or decrease a rating, rather you directly set the value you want.</p>

<p>We&#8217;re going to create two simple scripts and make them appear in the iTunes script menu (it&#8217;s the one to the left of the <strong>Help</strong> menu that looks like a scroll.)</p>

<div style="text-align:center;"><img src="http://www.lensenergy.com//weblog/images/ScriptMenu.png" alt="ScriptMenu.png" border="0" width="24" height="22" /></div>

<p>The scripts that I&#8217;m using below are pretty simple, first up they get the current selection from iTunes. In iTunes the current selection is not necessarily the currently playing/paused track.</p>

<p>If the selection isn&#8217;t empty, we store the selected tracks in <strong>sel</strong> and then work through <em>each item</em> in the selection. Depending on the script we either add or subtract 20 from the rating value. Why 20? Well iTunes actually uses a 0 to 100 range for ratings and each star is 20 points on the scale. (For bonus fun see what happens with increments of 10). <strong>NB.</strong> <em>this script works on the selection, so if you have multiple items selected it will adjust all of them.</em></p>

<p>Open Script Editor and paste in this:</p>

<h3>Script #1<code></h3>

<pre>tell application "iTunes"
    if selection is not {} then
        set sel to selection
        repeat with tTrack in sel
            set orig_Rating to the rating of tTrack
            set tName to the name of tTrack
            set new_Rating to orig_Rating - 20
            if new_Rating < 0 then
                set new_Rating to 0
            end if
            set rating of tTrack to new_Rating
        end repeat
    end if
end tell</pre>

<p></code></p>

<p>Save the script into <pre>/Users/yourname/Library/iTunes/Scripts/</pre> with a suitable name - I used "<strong>Rating Decrease by 1</strong>" and for the next I used "<strong>Rating Increase by 1</strong>". See what I did there? Using the same word "Rating" at the beginning of each script means that it will sort them adjacent to each other in the Script menu.</p>

<h3>Script #2<code></h3>

<pre>
tell application "iTunes"
    if selection is not {} then
        set sel to selection
        repeat with tTrack in sel
            set orig_Rating to the rating of tTrack
            set tName to the name of tTrack
            set new_Rating to orig_Rating + 20
            if new_Rating > 100 then
                set new_Rating to 100
            end if
            set rating of tTrack to new_Rating
        end repeat
    end if
end tell</pre>

<p></code></p>

<p>Repeat those steps for Script #2 saving it as &#8220;<strong>Rating Increase by 1</strong>&#8221; into the same folder. Once you&#8217;ve done that if you check your Script menu in iTunes it will look something like this:</p>

<div style="text-align:center;"><img src="http://www.lensenergy.com//weblog/images/iTunesAppleScriptMenu.png" alt="iTunesAppleScriptMenu.png" border="0" width="284" height="91" /></div>

<p>Of course, you will be missing the keyboard shortcuts.</p>

<h2>Step 12</h2>

<p>Go back to the Keyboard Shortcut preferences tab and add two more entries that should look like this:</p>

<div style="text-align:center;"><img src="http://www.lensenergy.com//weblog/images/System Preferences Keyboard Shortcut-Decrease.png" alt="System Preferences Keyboard Shortcut-Decrease ⌘↓" border="0" width="422" height="221" /></div>

<div style="text-align:center;"><img src="http://www.lensenergy.com//weblog/images/System Preferences Keyboard Shortcut-Increase.png" alt="System Preferences Keyboard Shortcut-Increase ⌘↑" border="0" width="422" height="221" /></div>

<p>If you need to refer back to <strong>Step 4</strong>.</p>

<p>That&#8217;s it you&#8217;re done.</p>

<p>Open iTunes and enjoy the keyboard goodness.</p>
]]>
    </content>
</entry>

</feed>

