<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-34474383</id><updated>2024-09-06T06:14:58.376+01:00</updated><category term="BBEdit"/><category term="Zend Framework"/><category term="nTimeline"/><category term="Objective-C"/><category term="PHP"/><category term="The Joel Test"/><category term="git"/><category term="jQuery"/><category term="Cocoa"/><category term="Representation"/><category term="Web"/><category term="WebApps"/><title type='text'>A Fading Tan</title><subtitle type='html'>Programmers should get out more.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://blog.noumenal.co.uk/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34474383/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://blog.noumenal.co.uk/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Carlton Gibson</name><uri>http://www.blogger.com/profile/13617389803402457692</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKobo9aLIDCTjI52JmaqiCp1a7R6chin6XSjSEfjKj8PzwQAamYGY3v50rm7kEk3qi71u4MUkxilaea-CzUf3V8jNxCNsmAovvWD9vm0ZahzFIVgu31kadiqfgJiWBQ1M/s220/me_in_antigua.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>22</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-34474383.post-6958792452586874432</id><published>2011-12-06T19:38:00.001+00:00</published><updated>2011-12-06T19:51:06.653+00:00</updated><title type='text'>Right, blow this, I&#39;m off...</title><content type='html'>This will be A Fading Tan&#39;s last post on Blogger. Basically I&#39;ve had it. Blogger is shit.&lt;br /&gt;
&lt;br /&gt;
I&#39;ve been keeping the blog here — and letting enthusiasm whither — for the worst of all possible reasons: a single post had decent SEO standing.&lt;br /&gt;
&lt;br /&gt;
&lt;internal dialogue=&quot;&quot;&gt;&lt;/internal&gt;&lt;br /&gt;
— I think that means a single post was any good.&lt;br /&gt;
— Too harsh. A couple of other posts did help people.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Anyhow, I can&#39;t be wasting energy on a platform I&#39;m not interested in. I&#39;m moving to a simple weblog generator called &lt;a href=&quot;http://pelican.readthedocs.org/en/2.7.2/index.html&quot;&gt;Pelican&lt;/a&gt;. I will be &lt;a href=&quot;https://github.com/carltongibson/pelican&quot;&gt;contributing on GitHub&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
A Fading Tan&#39;s animus will continue on &lt;a href=&quot;http://noumenal.co.uk/&quot;&gt;noumenal.co.uk&lt;/a&gt;. In the meantime there&#39;s &lt;a href=&quot;http://twitter.com/carltongibson&quot;&gt;Twitter&lt;/a&gt;.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34474383/posts/default/6958792452586874432'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34474383/posts/default/6958792452586874432'/><link rel='alternate' type='text/html' href='http://blog.noumenal.co.uk/2011/12/right-blow-this-im-off.html' title='Right, blow this, I&#39;m off...'/><author><name>Carlton Gibson</name><uri>http://www.blogger.com/profile/13617389803402457692</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKobo9aLIDCTjI52JmaqiCp1a7R6chin6XSjSEfjKj8PzwQAamYGY3v50rm7kEk3qi71u4MUkxilaea-CzUf3V8jNxCNsmAovvWD9vm0ZahzFIVgu31kadiqfgJiWBQ1M/s220/me_in_antigua.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-34474383.post-132442914672718374</id><published>2011-12-01T15:51:00.001+00:00</published><updated>2011-12-01T16:01:26.775+00:00</updated><title type='text'></title><content type='html'>Metaphorically, this is me:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;youtube5container&quot; style=&quot;height: 315px; width: 420px;&quot;&gt;
&lt;div class=&quot;youtube5player youtube5waiting&quot; style=&quot;background-attachment: initial; background-clip: initial; background-color: black; background-image: url(https://i4.ytimg.com/vi/7nS_aR8XX_U/hqdefault.jpg); background-origin: initial; background-position: 50% 50%; background-repeat: no-repeat no-repeat; background-size: 100%; height: 315px; width: 420px;&quot;&gt;
&lt;video height=&quot;315&quot; preload=&quot;none&quot; src=&quot;http://o-o.preferred.mad01s04.v22.lscache4.c.youtube.com/videoplayback?sparams=id%2Cexpire%2Cip%2Cipbits%2Citag%2Csource%2Cratebypass%2Ccp&amp;amp;fexp=904540%2C913100%2C913601&amp;amp;itag=18&amp;amp;ip=87.0.0.0&amp;amp;signature=8F1AC4DE7C1345CBDE470FB3B3113A95B8A186DE.CBFDFD66BE3D82DC951803C6450F78A9438ED7BA&amp;amp;sver=3&amp;amp;ratebypass=yes&amp;amp;source=youtube&amp;amp;expire=1322775498&amp;amp;key=yt1&amp;amp;ipbits=8&amp;amp;cp=U0hRR1dSU19OUkNOMV9PTFdFOmpFam1xbkVSX0lh&amp;amp;id=ee74bf691f175ff5&quot; width=&quot;420&quot;&gt;&lt;/video&gt;&lt;br /&gt;
&lt;div class=&quot;youtube5top-overlay&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;youtube5bottom-overlay&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;youtube5info&quot;&gt;
&lt;div class=&quot;youtube5use-original youtube5show-on-waiting&quot;&gt;
↵ Use original player&lt;/div&gt;
&lt;div class=&quot;youtube5title youtube5show-on-waiting&quot;&gt;
&lt;a href=&quot;https://www.youtube.com/watch?v=7nS_aR8XX_U&quot;&gt;Worlds biggest wave ever surfed&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;youtube5author youtube5show-on-waiting&quot;&gt;
By &lt;a href=&quot;https://www.youtube.com/user/queensarah123&quot;&gt;queensarah123&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;youtube5formats&quot;&gt;
&lt;div class=&quot;youtube5from&quot;&gt;
YouTube&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;youtube5current-format&quot;&gt;&lt;a href=&quot;http://o-o.preferred.mad01s04.v22.lscache4.c.youtube.com/videoplayback?sparams=id%2Cexpire%2Cip%2Cipbits%2Citag%2Csource%2Cratebypass%2Ccp&amp;amp;fexp=904540%2C913100%2C913601&amp;amp;itag=18&amp;amp;ip=87.0.0.0&amp;amp;signature=8F1AC4DE7C1345CBDE470FB3B3113A95B8A186DE.CBFDFD66BE3D82DC951803C6450F78A9438ED7BA&amp;amp;sver=3&amp;amp;ratebypass=yes&amp;amp;source=youtube&amp;amp;expire=1322775498&amp;amp;key=yt1&amp;amp;ipbits=8&amp;amp;cp=U0hRR1dSU19OUkNOMV9PTFdFOmpFam1xbkVSX0lh&amp;amp;id=ee74bf691f175ff5&quot;&gt;360p&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://o-o.preferred.mad01s04.v2.lscache2.c.youtube.com/videoplayback?sparams=id%2Cexpire%2Cip%2Cipbits%2Citag%2Csource%2Calgorithm%2Cburst%2Cfactor%2Ccp&amp;amp;fexp=904540%2C913100%2C913601&amp;amp;algorithm=throttle-factor&amp;amp;itag=5&amp;amp;ip=87.0.0.0&amp;amp;burst=40&amp;amp;sver=3&amp;amp;signature=BA4EA475F513AE6DBAF4262C6B8613DCC93FE91B.1EDDB85BCCC84FBEB2D35568B2C9E209B956F793&amp;amp;source=youtube&amp;amp;expire=1322775498&amp;amp;key=yt1&amp;amp;ipbits=8&amp;amp;factor=1.25&amp;amp;cp=U0hRR1dSU19OUkNOMV9PTFdFOmpFam1xbkVSX0lh&amp;amp;id=ee74bf691f175ff5&quot;&gt;240p FLV&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;youtube5replay&quot;&gt;
← Replay&lt;/div&gt;
&lt;div class=&quot;youtube5close-overlay&quot;&gt;
X&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;youtube5info-button&quot;&gt;
i&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;
If you&#39;re a software developer, then it&#39;s you too.&lt;br /&gt;
&lt;br /&gt;
Technology moves forward like a giant wave. There is so much to learn that we must paddle like crazy (or get a tow!) just to get on the wave. Then we must work like crazy to &lt;b&gt;stay&lt;/b&gt;&amp;nbsp;on it.&lt;br /&gt;
&lt;br /&gt;
With luck we won&#39;t fall off.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[UPDATE: Hmmm. The YouTube Embed doesn&#39;t seem to be working. Not sure why they put it there if it&#39;s not going to do anything. Anyhow, the video is only short if you&#39;ve got 2 minutes whilst your build runs.]</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34474383/posts/default/132442914672718374'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34474383/posts/default/132442914672718374'/><link rel='alternate' type='text/html' href='http://blog.noumenal.co.uk/2011/12/metaphorically-this-is-me-use-original.html' title=''/><author><name>Carlton Gibson</name><uri>http://www.blogger.com/profile/13617389803402457692</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKobo9aLIDCTjI52JmaqiCp1a7R6chin6XSjSEfjKj8PzwQAamYGY3v50rm7kEk3qi71u4MUkxilaea-CzUf3V8jNxCNsmAovvWD9vm0ZahzFIVgu31kadiqfgJiWBQ1M/s220/me_in_antigua.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-34474383.post-1483373257218776262</id><published>2011-08-15T19:46:00.004+01:00</published><updated>2011-08-15T20:28:47.189+01:00</updated><title type='text'>Okay, finally done it</title><content type='html'>&lt;p&gt;Despite the sparsity of posts, I&#39;ve had this blog since the Dark Ages. It had a really old template that I&#39;d hacked around so much that I couldn&#39;t upgrade it, to use all of Blogger&#39;s great new features.&lt;/p&gt;

&lt;p&gt;It also looked shit. Pro tip: don&#39;t edit a Douglas Bowman template, just use it.&lt;/p&gt;

&lt;p&gt;Anyway, I finally chucked away the old edits and started afresh.&lt;/p&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34474383/posts/default/1483373257218776262'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34474383/posts/default/1483373257218776262'/><link rel='alternate' type='text/html' href='http://blog.noumenal.co.uk/2011/08/okay-finally-done-it.html' title='Okay, finally done it'/><author><name>Carlton Gibson</name><uri>http://www.blogger.com/profile/13617389803402457692</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKobo9aLIDCTjI52JmaqiCp1a7R6chin6XSjSEfjKj8PzwQAamYGY3v50rm7kEk3qi71u4MUkxilaea-CzUf3V8jNxCNsmAovvWD9vm0ZahzFIVgu31kadiqfgJiWBQ1M/s220/me_in_antigua.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-34474383.post-3479726895015635732</id><published>2011-04-07T08:14:00.001+01:00</published><updated>2011-04-07T08:14:04.351+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="git"/><title type='text'>Cloning Beanstalk Repositories</title><content type='html'>&lt;p&gt;I use Beanstalk for private git (and svn) hosting. I must say it&#39;s great, but I always forget to use the SSH Config name rather than the full hostname when trying to clone repositories for the first time. &lt;/p&gt;

&lt;p&gt;Note to self: it&#39;s...&lt;/p&gt;

&lt;pre&gt;    $ git clone git@beanstalk:/repo.git
&lt;/pre&gt;
!</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34474383/posts/default/3479726895015635732'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34474383/posts/default/3479726895015635732'/><link rel='alternate' type='text/html' href='http://blog.noumenal.co.uk/2011/04/cloning-beanstalk-repositories.html' title='Cloning Beanstalk Repositories'/><author><name>Carlton Gibson</name><uri>http://www.blogger.com/profile/13617389803402457692</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKobo9aLIDCTjI52JmaqiCp1a7R6chin6XSjSEfjKj8PzwQAamYGY3v50rm7kEk3qi71u4MUkxilaea-CzUf3V8jNxCNsmAovvWD9vm0ZahzFIVgu31kadiqfgJiWBQ1M/s220/me_in_antigua.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-34474383.post-3359209988300639039</id><published>2011-01-04T14:54:00.001+00:00</published><updated>2011-08-16T08:42:34.879+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="git"/><title type='text'>A Totally Barebones Guide to Getting Started with Git on a Mac</title><content type='html'>&lt;p&gt;&lt;strong&gt;Disclaimer&lt;/strong&gt;: This is a type first and work it out later guide created specifically to allow me to get collaborators started quickly. If you actually need to know about Git, &lt;a href=&quot;http://git-scm.com/documentation&quot;&gt;check out the documentation&lt;/a&gt;! (You could do worse than Travis Swicegood&#39;s book, &lt;a href=&quot;http://www.amazon.co.uk/gp/product/1934356158?ie=UTF8&amp;tag=noumenal-21&amp;linkCode=as2&amp;camp=1634&amp;creative=19450&amp;creativeASIN=1934356158&quot;&gt;Pragmatic Version Control Using Git&lt;/a&gt;.)&lt;/p&gt;&lt;h4&gt;Preamble&lt;/h4&gt;&lt;p&gt;Git is a version control system. (It&#39;s software.) It allows you to track the history of the project you&#39;re working on. In essence you store each and every change made to any of the project components. With this you are able to recreate the state that the project was in at any point in its development. It&#39;s easier to use than it sounds.&lt;/p&gt;&lt;p&gt;Using SOME kind of version control is vital. Absolutely guaranteed, you will repeatedly need to undo some balls-up or other, and without version control you are pretty much stymied. Using version control also aides in collaboration, our current endeavour.&lt;/p&gt;&lt;p&gt;Bottom line: always use version control.&lt;/p&gt;&lt;p&gt;At Noumenal we primarily use Git. The (main) other versions control systems you&#39;ll hear about are Mercurial and Subversion. (There are others.) It doesn&#39;t really matter which you use. Git and Mercurial are newfangled &quot;distributed&quot; version control systems. This doesn&#39;t matter either.&lt;/p&gt;&lt;h4&gt;Installing &amp; Configuring Git&lt;/h4&gt;&lt;p&gt;First visit the &lt;a href=&quot;http://code.google.com/p/git-osx-installer/&quot; target=&quot;_blank&quot;&gt;OS X installer downloads page on Google Code&lt;/a&gt;. Click the &quot;Download the packages here&quot; link right below the Git logo.&lt;/p&gt;&lt;p&gt;Assuming you&#39;re running Snow Leopard, OS X 10.6 or greater, you&#39;ll need the .dmg file with the &lt;code&gt;x86_64&lt;/code&gt; in the name. (This is the 64 bit version for the Intel processor based Macs, which yours is.) Versions change but the latest as I write is &lt;code&gt;git-1.7.3.3-x86_64-leopard.dmg&lt;/code&gt;. Download this. Run the installer.&lt;/p&gt;&lt;p&gt;Now you&#39;ll need to open the Terminal application. (Welcome to my world.) Click on Spotlight (or hit command-space) and type &#39;terminal&#39; to bring up the application. (It lives in &lt;code&gt;/Applications/Utilities&lt;/code&gt; if you&#39;re concerned.) Once it comes up you can check that everything went to plan:&lt;/p&gt;&lt;pre&gt;
$ &lt;strong&gt;git --version&lt;/strong&gt;
git version 1.7.3.3
&lt;/pre&gt;&lt;p&gt;The &#39;$&#39; is your prompt. This is configurable so it might be different. [What is the default bash prompt on OS X?] You type the suff in bold, exactly as is. You get the output below.&lt;/p&gt;&lt;p&gt;As a final step you just need to tell Git who you are and what your email address is. We&#39;re also going to set one other flag as you may not come this way again for a while:&lt;/p&gt;&lt;pre&gt;
$ &lt;strong&gt;git config --global user.name &quot;Carlton Gibson&quot;&lt;/strong&gt;
$ &lt;strong&gt;git config --global user.email &quot;support@noumenal.co.uk&quot;&lt;/strong&gt;
$ &lt;strong&gt;git config --global color.ui &quot;auto&quot;&lt;/strong&gt;&lt;/pre&gt;&lt;p&gt;Obviously put your own details in here.&lt;/p&gt;&lt;p&gt;One initially disturbing thing with the UNIX command line is that successful commands very often have no output. This is a virtue but it can take some getting used to. So how do we know our configuration commands worked?&lt;?p&gt;&lt;pre&gt;
$ &lt;strong&gt;git config --global --list&lt;/strong&gt;
user.name=Carlton Gibson
user.email=support@noumenal.co.uk
color.ui=auto
&lt;/pre&gt;&lt;p&gt;You&#39;re done.&lt;/p&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34474383/posts/default/3359209988300639039'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34474383/posts/default/3359209988300639039'/><link rel='alternate' type='text/html' href='http://blog.noumenal.co.uk/2011/01/totally-barebones-guide-to-getting.html' title='A Totally Barebones Guide to Getting Started with Git on a Mac'/><author><name>Carlton Gibson</name><uri>http://www.blogger.com/profile/13617389803402457692</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKobo9aLIDCTjI52JmaqiCp1a7R6chin6XSjSEfjKj8PzwQAamYGY3v50rm7kEk3qi71u4MUkxilaea-CzUf3V8jNxCNsmAovvWD9vm0ZahzFIVgu31kadiqfgJiWBQ1M/s220/me_in_antigua.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-34474383.post-3578553749280537340</id><published>2010-12-21T09:13:00.001+00:00</published><updated>2010-12-21T09:13:42.433+00:00</updated><title type='text'>Installing PIL on the Mac</title><content type='html'>&lt;p&gt;Just a quick note, to remind myself mainly.&lt;/p&gt;&lt;p&gt;Installing the Python Image Library (PIL) on a Mac requires libjpeg if it&amp;#8217;s going to be of any use.&lt;/p&gt;&lt;p&gt;So, assuming you&amp;#8217;re using Homebrew and Pip&amp;#8230;&lt;/p&gt;&lt;pre&gt;&lt;code&gt;$ brew install libjpeg
$ pip install PIL
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Simples.&lt;/p&gt;
</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34474383/posts/default/3578553749280537340'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34474383/posts/default/3578553749280537340'/><link rel='alternate' type='text/html' href='http://blog.noumenal.co.uk/2010/12/installing-pil-on-mac.html' title='Installing PIL on the Mac'/><author><name>Carlton Gibson</name><uri>http://www.blogger.com/profile/13617389803402457692</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKobo9aLIDCTjI52JmaqiCp1a7R6chin6XSjSEfjKj8PzwQAamYGY3v50rm7kEk3qi71u4MUkxilaea-CzUf3V8jNxCNsmAovvWD9vm0ZahzFIVgu31kadiqfgJiWBQ1M/s220/me_in_antigua.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-34474383.post-248266129455328233</id><published>2010-10-14T16:14:00.001+01:00</published><updated>2010-10-14T16:14:12.341+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="BBEdit"/><category scheme="http://www.blogger.com/atom/ns#" term="jQuery"/><title type='text'>jQuery Clippings for BBEdit updated to version 1.4.3</title><content type='html'>&lt;p&gt;A little ahead of the gun, I&amp;#8217;ve updated the &lt;a href=&quot;http://noumenal.co.uk/bbedit/jquery-clippings&quot;&gt;jQuery Clippings for BBEdit&lt;/a&gt; to version 1.4.3, which &lt;em&gt;should&lt;/em&gt; be out this weekend.&lt;/p&gt;&lt;p&gt;These cover the full API for the latest jQuery version (1.4.3) matching all function signature variations and dollar shortcuts.&lt;/p&gt;&lt;p&gt;Grab them from: &lt;a href=&quot;http://noumenal.co.uk/bbedit/jquery-clippings&quot;&gt;http://noumenal.co.uk/bbedit/jquery-clippings&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Enjoy.&lt;/p&gt;
</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34474383/posts/default/248266129455328233'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34474383/posts/default/248266129455328233'/><link rel='alternate' type='text/html' href='http://blog.noumenal.co.uk/2010/10/jquery-clippings-for-bbedit-updated-to.html' title='jQuery Clippings for BBEdit updated to version 1.4.3'/><author><name>Carlton Gibson</name><uri>http://www.blogger.com/profile/13617389803402457692</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKobo9aLIDCTjI52JmaqiCp1a7R6chin6XSjSEfjKj8PzwQAamYGY3v50rm7kEk3qi71u4MUkxilaea-CzUf3V8jNxCNsmAovvWD9vm0ZahzFIVgu31kadiqfgJiWBQ1M/s220/me_in_antigua.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-34474383.post-5753039773768984855</id><published>2010-10-01T14:41:00.001+01:00</published><updated>2010-10-01T14:43:19.067+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Web"/><title type='text'>Web Design in the Autumn of 2010</title><content type='html'>&lt;p&gt;I&amp;#8217;m excited about the latest crop of web browser&amp;#8212;the diverse mobile ones in particular&amp;#8212;and HTML5 and CSS3, and the other &lt;em&gt;new&lt;/em&gt; techs that go with them. &lt;/p&gt;&lt;p&gt;I&amp;#8217;ve been avoiding the work of a &lt;em&gt;designer&lt;/em&gt; for a while now&amp;#8230;&lt;/p&gt;&lt;p&gt;When I first discovered HTML&amp;#8212;which must have been about 2003/2004&amp;#8212;the standards movement was young and fresh. To give you an idea, the &lt;a href=&quot;http://www.csszengarden.com/&quot;&gt;CSS Zen Garden&lt;/a&gt; was the hot pin-up of the moment. Before I heard the message I&amp;#8217;d gone through a book on using Dreamweaver MX which was all tables and spacer-gifs. You can imagine, CSS was, for the beginner, clear and simple; both powerful and obvious. Progress was fast.&lt;/p&gt;&lt;p&gt;But of course, after that first flush, CSS didn&amp;#8217;t quite live up to its promise. The path beyond those early successes soon led into a landscape of image heavy&amp;#8212;and Flash heavy&amp;#8212;delicate&amp;#8212;and brittle&amp;#8212;designs. (That was just the reality of professional web design.) &lt;/p&gt;&lt;p&gt;The need to engage with these techniques has always put me off. There have always been more rewarding, to my mind purer, pursuits in the realm of the &lt;em&gt;developer&lt;/em&gt;. (This is of course a long-winded excuse for never pushing my skills here beyond the basic.) But I think this may be the case no longer. &lt;/p&gt;&lt;p&gt;As I see it, beyond the subjective feeling that I&amp;#8217;ve finally got some sort of grasp on all the other stuff, the reasons for this change in circumstance are two: &lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;p&gt;The technology has moved on such that the (aforementioned) new bunch eliminate the need for most of the distasteful &lt;em&gt;extras&lt;/em&gt;.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;The rapid rise of the mobile web has (finally, thank God) made it socially acceptable to adopt&amp;#8212;&lt;strong&gt;in practice&lt;/strong&gt;&amp;#8212;the policy of reserving nothing more for users of outdated versions of Internet Explorer than The Finger.&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;I&amp;#8217;ve been far too busy for it to be true to say that, this is what I&amp;#8217;ve been waiting for. These are interesting times indeed.&lt;/p&gt;
</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34474383/posts/default/5753039773768984855'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34474383/posts/default/5753039773768984855'/><link rel='alternate' type='text/html' href='http://blog.noumenal.co.uk/2010/10/web-design-in-autumn-of-2010.html' title='Web Design in the Autumn of 2010'/><author><name>Carlton Gibson</name><uri>http://www.blogger.com/profile/13617389803402457692</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKobo9aLIDCTjI52JmaqiCp1a7R6chin6XSjSEfjKj8PzwQAamYGY3v50rm7kEk3qi71u4MUkxilaea-CzUf3V8jNxCNsmAovvWD9vm0ZahzFIVgu31kadiqfgJiWBQ1M/s220/me_in_antigua.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-34474383.post-8700769780790689546</id><published>2010-06-25T13:31:00.001+01:00</published><updated>2010-06-25T13:32:47.144+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Objective-C"/><title type='text'>Format string is not a string literal (potentially insecure)</title><content type='html'>&lt;p&gt;I love compilers.&lt;/p&gt;

&lt;p&gt;Here I am busily working away; I throw in a cheeky &lt;code&gt;NSLog()&lt;/code&gt; to see where I&#39;ve got to:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;NSLog([myObject stringRepresentation]);
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Hang on! A compiler warning:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Format string is not a string literal (potentially insecure)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;What&#39;s this about?&lt;/p&gt;

&lt;p&gt;A bit of Google (via this &lt;a href=&quot;http://www.idevgames.com/forum/showthread.php?t=18183&quot;&gt;forum post&lt;/a&gt;)
led me to a &lt;a href=&quot;http://en.wikipedia.org/wiki/Format%5Fstring%5Fvulnerabilities&quot;&gt;Wikipedia article on the &lt;em&gt;Format string attack&lt;/em&gt;&lt;/a&gt;. It turns out that an attacker might use &lt;code&gt;printf&lt;/code&gt; style format specifiers to do all sorts of nasty to my heap/stack.&lt;/p&gt;

&lt;p&gt;The correct usage is this:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;NSLog(@&quot;%@&quot;, [myObject stringRepresentation]);
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;No more warning. We can sleep at night.&lt;/p&gt;
</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34474383/posts/default/8700769780790689546'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34474383/posts/default/8700769780790689546'/><link rel='alternate' type='text/html' href='http://blog.noumenal.co.uk/2010/06/format-string-is-not-string-literal.html' title='Format string is not a string literal (potentially insecure)'/><author><name>Carlton Gibson</name><uri>http://www.blogger.com/profile/13617389803402457692</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKobo9aLIDCTjI52JmaqiCp1a7R6chin6XSjSEfjKj8PzwQAamYGY3v50rm7kEk3qi71u4MUkxilaea-CzUf3V8jNxCNsmAovvWD9vm0ZahzFIVgu31kadiqfgJiWBQ1M/s220/me_in_antigua.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-34474383.post-7010362088993318733</id><published>2010-03-30T09:09:00.001+01:00</published><updated>2010-03-30T09:09:07.541+01:00</updated><title type='text'>Someone Needs to Take Econ 101</title><content type='html'>&lt;p&gt;&quot;Douglas A. McIntyre says that because iPad demand is higher than expected, Apple may have to cut prices. &lt;a href=&quot;http://en.wikipedia.org/wiki/Supply_and_demand&quot;&gt;Uh…&lt;/a&gt;&quot; (John Gruber)&lt;/p&gt;

&lt;p&gt;(Via &lt;a href=&quot;http://daringfireball.net/linked/2010/03/29/econ101&quot;&gt;Daring Fireball&lt;/a&gt;.)&lt;/p&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34474383/posts/default/7010362088993318733'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34474383/posts/default/7010362088993318733'/><link rel='alternate' type='text/html' href='http://blog.noumenal.co.uk/2010/03/someone-needs-to-take-econ-101.html' title='Someone Needs to Take Econ 101'/><author><name>Carlton Gibson</name><uri>http://www.blogger.com/profile/13617389803402457692</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKobo9aLIDCTjI52JmaqiCp1a7R6chin6XSjSEfjKj8PzwQAamYGY3v50rm7kEk3qi71u4MUkxilaea-CzUf3V8jNxCNsmAovvWD9vm0ZahzFIVgu31kadiqfgJiWBQ1M/s220/me_in_antigua.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-34474383.post-2678094491425014881</id><published>2010-03-16T10:02:00.001+00:00</published><updated>2010-03-16T10:23:38.450+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="BBEdit"/><category scheme="http://www.blogger.com/atom/ns#" term="jQuery"/><title type='text'>jQuery Clippings for BBEdit</title><content type='html'>On Friday I uploaded a set of &lt;a href=&quot;http://noumenal.co.uk/bbedit/jquery-clippings&quot;&gt;jQuery Clippings for BBEdit&lt;/a&gt;.

These cover the full API for the latest jQuery version (1.4.2) matching all function signature variations and dollar shortcuts.

Grab them from: &lt;a href=&quot;http://noumenal.co.uk/bbedit/jquery-clippings&quot;&gt;http://noumenal.co.uk/bbedit/jquery-clippings&lt;/a&gt;.

Enjoy.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34474383/posts/default/2678094491425014881'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34474383/posts/default/2678094491425014881'/><link rel='alternate' type='text/html' href='http://blog.noumenal.co.uk/2010/03/jquery-clippings-for-bbedit.html' title='jQuery Clippings for BBEdit'/><author><name>Carlton Gibson</name><uri>http://www.blogger.com/profile/13617389803402457692</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKobo9aLIDCTjI52JmaqiCp1a7R6chin6XSjSEfjKj8PzwQAamYGY3v50rm7kEk3qi71u4MUkxilaea-CzUf3V8jNxCNsmAovvWD9vm0ZahzFIVgu31kadiqfgJiWBQ1M/s220/me_in_antigua.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-34474383.post-2229507254627262949</id><published>2010-03-12T09:36:00.001+00:00</published><updated>2010-03-12T09:38:58.938+00:00</updated><title type='text'>Rob Foster on the Elimination of File Systems as a User-Accessible Part</title><content type='html'>&lt;p&gt;I saw this:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://nimbledesign.com/post/441423115/the-path-of-most-resistance&quot;&gt;Rob Foster on the Elimination of File Systems as a User-Accessible Part&lt;/a&gt;: &amp;#8220;&lt;p&gt;Rob Foster, observing how family and friends use their Macs:&lt;/p&gt;

    &lt;blockquote&gt;

      &lt;p&gt;Because they can now actually &lt;em&gt;use&lt;/em&gt; their computers instead of

      simply restarting them, I’m able to better see &lt;em&gt;how&lt;/em&gt; they use

      them. And the one commonality I’ve seen is that no one knows how

      to use the file system.&lt;/p&gt;



      &lt;p&gt;Unfortunately for the average person, the file system is so

      complex that everything outside of the desktop and the documents

      folder appears to be a vast labyrinth which most likely hides

      booby traps and minotaurs.&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;/p&gt;

&lt;p&gt;(Via &lt;a href=&quot;http://daringfireball.net/linked/2010/03/11/foster&quot;&gt;Daring Fireball&lt;/a&gt;.)&lt;/p&gt;

&lt;p&gt;The same experience seems to apply in ever wider circles too:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Beyond the Desktop, there&amp;#8217;s everything outside the Home folder.&lt;/li&gt;
&lt;li&gt;Beyond that there&amp;#8217;s all the UNIXy bits that OS X nicely hides from us (dot-files, &lt;code&gt;/etc&lt;/code&gt;, &lt;code&gt;/usr&lt;/code&gt;, &lt;code&gt;/bin&lt;/code&gt; etc.)&lt;/li&gt;
&lt;li&gt;Leaving the Mac there&amp;#8217;s Linux&amp;#8217;s whole &lt;code&gt;/proc&lt;/code&gt; file system.&lt;/li&gt;
&lt;li&gt;And so on.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each time there&amp;#8217;s the same, &amp;#8220;What&amp;#8217;s going on here?&amp;#8221; &amp;#8212; which, if you are ever to get past the Desktop, is quickly followed by a deep breath and a rummage.&lt;/p&gt;

&lt;p&gt;Of course there&amp;#8217;s the whole Windows thing, which is a different kettle of fish but, does the ultimate answer lie in building your own &lt;a href=&quot;http://www.linuxfromscratch.org/&quot;&gt;Linux From Scratch&lt;/a&gt;, or is it &amp;#8220;&lt;a href=&quot;http://en.wikipedia.org/wiki/Turtles_all_the_way_down&quot;&gt;Turtles all the way down&lt;/a&gt;&amp;#8221;?&lt;/p&gt;
</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34474383/posts/default/2229507254627262949'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34474383/posts/default/2229507254627262949'/><link rel='alternate' type='text/html' href='http://blog.noumenal.co.uk/2010/03/rob-foster-on-elimination-of-file.html' title='Rob Foster on the Elimination of File Systems as a User-Accessible Part'/><author><name>Carlton Gibson</name><uri>http://www.blogger.com/profile/13617389803402457692</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKobo9aLIDCTjI52JmaqiCp1a7R6chin6XSjSEfjKj8PzwQAamYGY3v50rm7kEk3qi71u4MUkxilaea-CzUf3V8jNxCNsmAovvWD9vm0ZahzFIVgu31kadiqfgJiWBQ1M/s220/me_in_antigua.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-34474383.post-344903716110735031</id><published>2009-11-05T15:35:00.001+00:00</published><updated>2009-11-05T15:36:17.353+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="BBEdit"/><category scheme="http://www.blogger.com/atom/ns#" term="Zend Framework"/><title type='text'>Zend Framework Ctags for BBEdit</title><content type='html'>&lt;p&gt;BBEdit version 9.3 was released yesterday. Many changes but, it includes extensively revised support for PHP.&lt;/p&gt;

&lt;p&gt;Best of all specially formatted Ctags files can now be used to provide function signature auto-complete, similar to that from clippings.&lt;/p&gt;

&lt;p&gt;As such I&#39;ve knocked up a &lt;a href=&quot;http://noumenal.co.uk/resources/downloads&quot;&gt;version for Zend Framework, which can grab it from the downloads page&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;As it says there, this is a one afternoon, first draft so make sure you subscribe to the RSS for updates. Let me know if you have any issues. &lt;/p&gt;

&lt;p&gt;(Know problems are a lack of reference back to source file and line number, but I&#39;ll get that fixed asap.)&lt;/p&gt;

&lt;p&gt;Enjoy.&lt;/p&gt;
</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34474383/posts/default/344903716110735031'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34474383/posts/default/344903716110735031'/><link rel='alternate' type='text/html' href='http://blog.noumenal.co.uk/2009/11/zend-framework-ctags-for-bbedit.html' title='Zend Framework Ctags for BBEdit'/><author><name>Carlton Gibson</name><uri>http://www.blogger.com/profile/13617389803402457692</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKobo9aLIDCTjI52JmaqiCp1a7R6chin6XSjSEfjKj8PzwQAamYGY3v50rm7kEk3qi71u4MUkxilaea-CzUf3V8jNxCNsmAovvWD9vm0ZahzFIVgu31kadiqfgJiWBQ1M/s220/me_in_antigua.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-34474383.post-7075008617404105578</id><published>2009-10-21T20:26:00.001+01:00</published><updated>2009-11-05T15:27:35.925+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Cocoa"/><category scheme="http://www.blogger.com/atom/ns#" term="Objective-C"/><title type='text'>Frequent Bugs</title><content type='html'>&lt;p&gt;Supposedly keeping a log of bugs helps you identify the most common ones. At the moment mine is forgetting to save my nib file before building my application.&lt;/p&gt;

&lt;p&gt;(&quot;Why isn&#39;t this working?&quot;)&lt;/p&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34474383/posts/default/7075008617404105578'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34474383/posts/default/7075008617404105578'/><link rel='alternate' type='text/html' href='http://blog.noumenal.co.uk/2009/10/frequent-bugs.html' title='Frequent Bugs'/><author><name>Carlton Gibson</name><uri>http://www.blogger.com/profile/13617389803402457692</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKobo9aLIDCTjI52JmaqiCp1a7R6chin6XSjSEfjKj8PzwQAamYGY3v50rm7kEk3qi71u4MUkxilaea-CzUf3V8jNxCNsmAovvWD9vm0ZahzFIVgu31kadiqfgJiWBQ1M/s220/me_in_antigua.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-34474383.post-1552338307512630088</id><published>2009-09-15T12:10:00.001+01:00</published><updated>2009-09-15T12:10:29.874+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="BBEdit"/><category scheme="http://www.blogger.com/atom/ns#" term="nTimeline"/><category scheme="http://www.blogger.com/atom/ns#" term="Zend Framework"/><title type='text'>BBEdit Zend Framework Clippings Updated</title><content type='html'>&lt;p&gt;I&amp;#8217;ve just uploaded the latest version of the Zend Framwork Clipping set for BBEdit. As usual you can grab this from the &lt;a href=&quot;http://noumenal.co.uk/resources/downloads&quot;&gt;downloads page&lt;/a&gt;.&lt;/p&gt;

&lt;h4&gt;Changes in this release&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Added the class to the clipping name to disambiguate duplicate method names. (Picture &lt;code&gt;__construct&lt;/code&gt; 1000 times.)&lt;/p&gt;

&lt;p&gt;Since BBEdit doesn&amp;#8217;t allow whitespace in autocomplete suggestions, I&amp;#8217;ve used a double-star &lt;code&gt;**&lt;/code&gt; as the divider between method and class name. This I hope is clear enough visually, but please let me know what you think.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Added parameter and return type hints to the clippings in line with the conventions of Ted&amp;#8217;s original PHP clippings. (The return value is selected upon clipping insertion so a quick delete will get rid of it; its purpose is currently just as an &lt;em&gt;aide memoir&lt;/em&gt; but I hope to leverage it further later.)&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Barring any major issues, this will be the final &lt;em&gt;Beta&lt;/em&gt; of the BBEdit Zend Framework Clippings. They are just missing clippings for the &lt;code&gt;Zend_Search_Lucene&lt;/code&gt; and &lt;code&gt;Zend_Soap&lt;/code&gt; namespaces, which require &lt;em&gt;ad hoc&lt;/em&gt; work-arounds. After that they will follow the Zend Framework release schedule.&lt;/p&gt;
</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34474383/posts/default/1552338307512630088'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34474383/posts/default/1552338307512630088'/><link rel='alternate' type='text/html' href='http://blog.noumenal.co.uk/2009/09/bbedit-zend-framework-clippings-updated.html' title='BBEdit Zend Framework Clippings Updated'/><author><name>Carlton Gibson</name><uri>http://www.blogger.com/profile/13617389803402457692</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKobo9aLIDCTjI52JmaqiCp1a7R6chin6XSjSEfjKj8PzwQAamYGY3v50rm7kEk3qi71u4MUkxilaea-CzUf3V8jNxCNsmAovvWD9vm0ZahzFIVgu31kadiqfgJiWBQ1M/s220/me_in_antigua.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-34474383.post-7566488242778918069</id><published>2009-08-20T14:28:00.001+01:00</published><updated>2009-09-15T12:12:01.658+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="BBEdit"/><category scheme="http://www.blogger.com/atom/ns#" term="nTimeline"/><category scheme="http://www.blogger.com/atom/ns#" term="Zend Framework"/><title type='text'>Beta 1 of Zend Framework Clippings for BBEdit Released</title><content type='html'>&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt; the &lt;a href=&quot;http://blog.noumenal.co.uk/2009/09/bbedit-zend-framework-clippings-updated.html&quot;&gt;BBEdit Zend Framework Clippings have been updated&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;We&#39;ve just uploaded the first beta of our new Zend Framework Clipping set for
BBEdit. &lt;/p&gt;

&lt;p&gt;You can grab it from the &lt;a href=&quot;http://noumenal.co.uk/resources/downloads&quot;&gt;downloads page&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;The set currently covers 99%+ of the Zend Framework&#39;s methods, but we&#39;re
aiming for 100%. After that we&#39;ll be following Zend Framework releases. (&lt;a href=&quot;http://eepurl.com/b43Q&quot;&gt;Updates via the newsletter&lt;/a&gt;.)&lt;/p&gt;

&lt;p&gt;As per usual, bugs via the  &lt;a href=&quot;http://noumenal.co.uk/contact&quot;&gt;contact
page&lt;/a&gt;, questions/suggestions welcome on the &lt;a href=&quot;https://noumenal.fogbugz.com/default.asp?noumenal&quot;&gt;discussion board&lt;/a&gt;.&lt;/p&gt;
</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34474383/posts/default/7566488242778918069'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34474383/posts/default/7566488242778918069'/><link rel='alternate' type='text/html' href='http://blog.noumenal.co.uk/2009/08/beta-1-of-zend-framework-clippings-for.html' title='Beta 1 of Zend Framework Clippings for BBEdit Released'/><author><name>Carlton Gibson</name><uri>http://www.blogger.com/profile/13617389803402457692</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKobo9aLIDCTjI52JmaqiCp1a7R6chin6XSjSEfjKj8PzwQAamYGY3v50rm7kEk3qi71u4MUkxilaea-CzUf3V8jNxCNsmAovvWD9vm0ZahzFIVgu31kadiqfgJiWBQ1M/s220/me_in_antigua.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-34474383.post-7222056429404966477</id><published>2009-08-14T14:53:00.001+01:00</published><updated>2012-02-13T15:33:00.074+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="PHP"/><category scheme="http://www.blogger.com/atom/ns#" term="Zend Framework"/><title type='text'>Using Zend Framework&amp;#39;s FlashMessenger Action Helper</title><content type='html'>We often want to provide users feedback from their actions. Zend Framework
includes the FlashMessenger Action Helper for this purpose. &lt;br /&gt;
A gentle trickle of questions appear on the Zend Framework mailing lists
concerning the exact usage of the FlashMessenger, so I&#39;m going to go over the
details here. Hopefully we&#39;ll get all those Zend Framework FlashMessenger
questions answered.&lt;br /&gt;
We will also introduce the Noumenal PHP Library&#39;s FlashMessenger View Helper.
This encapsulates retrieving flash messages and adds the option to send
different &lt;em&gt;levels&lt;/em&gt; of message (e.g. &quot;notice&quot;, &quot;warning&quot;, &quot;error&quot;).&lt;br /&gt;
The Noumenal
PHP Library is available on &lt;a href=&quot;https://github.com/carltongibson/Noumenal-PHP-Library&quot;&gt;GitHub&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;
&lt;h4&gt;
Overview of the FlashMessenger&lt;/h4&gt;
Zend Framework&#39;s FlashMessenger Action Helper is meant to allow immediate
feedback on the status of a user&#39;s actions: &quot;Your profile was updated&quot;, &quot;Your
message was sent&quot;, &quot;Your junk mail has been deleted&quot;.&lt;br /&gt;
Here&#39;s an example of the sort of thing from Google&#39;s Gmail:&lt;br /&gt;
&lt;img alt=&quot;Example of a FlashMessenger
style message from Google&#39;s Gmail&quot; src=&quot;http://noumenal.co.uk/img/blog/gmail_flashmessage.png&quot; title=&quot;A
FlashMessenger style update in Google&#39;s Gmail&quot; /&gt;&lt;br /&gt;
Basic usage of the FlashMessenger couldn&#39;t be simpler. In your action
controller, you set messages via the &lt;code&gt;addMessage()&lt;/code&gt; method:&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;$flashMessenger = $this-&amp;gt;_helper-&amp;gt;FlashMessenger;
$flashMessenger-&amp;gt;addMessage(&#39;We did something in the last request&#39;);
&lt;/code&gt;&lt;/pre&gt;
or via its proxy, the FlashMessenger&#39;s &lt;code&gt;direct()&lt;/code&gt;:&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;$this-&amp;gt;_helper-&amp;gt;FlashMessenger(&#39;Message stored until needed&#39;);
&lt;/code&gt;&lt;/pre&gt;
(&lt;a href=&quot;http://framework.zend.com/manual/en/zend.controller.actionhelpers.html&quot;&gt;
Action helpers can each define their own &lt;code&gt;direct()&lt;/code&gt; as a short cut to their core
functionality&lt;/a&gt;.)&lt;br /&gt;
Under normal circumstances you&#39;d collect any messages when you want to display
them:&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;//Collect array of messages for display.
$aMessages = $this-&amp;gt;_helper-&amp;gt;FlashMessenger-&amp;gt;getMessages();
&lt;/code&gt;&lt;/pre&gt;
And that is all there is to it. Your user performs some action, e.g. sending
their message; you redirect them somewhere sensible and let them know it was
successful.&lt;br /&gt;
Note, however, the &quot;Under normal circumstances&quot;. There are a couple of &lt;em&gt;wiggles&lt;/em&gt;
that can catch you out. We&#39;ll go over these as way of introduction to the
Noumenal PHP Library&#39;s FlashMessenger View Helper, which handles these.&lt;br /&gt;
&lt;h4&gt;
Messages are stored until the FlashMessenger is next instantiated&lt;/h4&gt;
The FlashMessenger stores its messages in a Zend_Session namespace. The data in
that namespace is collected each time the FlashMessenger is instantiated (i.e.
in the constructor). The data in the namespace is also cleared (via &lt;code&gt;unset()&lt;/code&gt;)
at the same time. This can cause problems for people when they wish to add an
extra action in between setting the messages and retrieving them. If on the
extra request they accidently instantiate the FlashMessenger whilst not wanting
to collect the messages then they find that they are not there when they do want
them later.&lt;br /&gt;
The rule here is simple. Contrary to the &lt;a href=&quot;http://framework.zend.com/manual/en/zend.controller.actionhelpers.html#zend.controller.actionhelpers.flashmessenger&quot;&gt;bad example in the
documentation&lt;/a&gt;, which assigns the FlashMessenger to an instance variable in
the controller&#39;s &lt;code&gt;init()&lt;/code&gt;, &lt;strong&gt;do not get a reference to the FlashMessenger until
you actually need it&lt;/strong&gt;.&lt;br /&gt;
&lt;h4&gt;
There&#39;s also a getCurrentMessages() Method&lt;/h4&gt;
Sometimes we want to send users a message not for the next request but for the
current one. The obvious example of this is a failed form validation. Here we
output the form with error messages and ask the user to resubmit. Zend_Form has
Decorators specifically for displaying form and element level errors, but beyond
this it&#39;s good on the consistency front to send a message via the normal
messaging channel to let the users know that there was a problem.&lt;br /&gt;
Calling the regular &lt;code&gt;getMessages()&lt;/code&gt; method here won&#39;t work. This only returns
messages which were stored in the appropriate Zend&lt;em&gt;Session namespace when the
FlashMessenger was instantiated. Since any messages added this request were not
in the Zend&lt;/em&gt;Session namespace at that time (because the FlashMessenger was
instantiated &lt;em&gt;in order&lt;/em&gt; to add the messages) they won&#39;t be returned by
&lt;code&gt;getMessages()&lt;/code&gt;.&lt;br /&gt;
For just this use-case, the FlashMessenger also provides a
&lt;code&gt;getCurrentMessages()&lt;/code&gt; method (and a related family of &lt;em&gt;current&lt;/em&gt; methods) which
returns those messages set on the current request.&lt;br /&gt;
&lt;h4&gt;
The Noumenal PHP Library&#39;s FlashMessenger View Helper&lt;/h4&gt;
The FlashMessenger View Helper encapsulates the message retrieval side of our interactions with the Zend Framework&#39;s FlashMessenger Action Helper. It checks for messages from both previous requests and the current request, so it satisfies our use-case from above. It also interprets key-value pairs, rather than a simple strings, passed to the FlashMessenger as specifying a message-level.&lt;br /&gt;
&lt;h5&gt;
Setting up the View Helper&lt;/h5&gt;
The first thing to do is to add the call to echo the FlashMessenger View Helper to your layout script, say above the main content:&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
    &amp;lt;div id=&quot;hd&quot;&amp;gt;
        &amp;lt;!-- Header --&amp;gt;
    &amp;lt;/div&amp;gt;

    &amp;lt;div id=&quot;bd&quot;&amp;gt;
        &amp;lt;div&amp;gt;
            &amp;lt;!-- Main Content --&amp;gt;
            &amp;lt;?php echo $this-&amp;gt;flashMessenger(); ?&amp;gt;
            &amp;lt;?php echo $this-&amp;gt;layout()-&amp;gt;content; ?&amp;gt;
        &amp;lt;/div&amp;gt;
        &amp;lt;div&amp;gt;
            &amp;lt;!-- Sidebar --&amp;gt;        
        &amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;

    &amp;lt;div id=&quot;ft&quot;&amp;gt;
        &amp;lt;!-- Footer --&amp;gt;
    &amp;lt;/div&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
Since the layout script is rendered so late in the dispatch process, putting the call the the FlashMessenger View Helper here eliminates most of the risk that you&#39;ll accidently instantiate the FlashMessenger Action Helper when you don&#39;t 
mean to. (Of course this is still possible but if you&#39;re going out of your way to instantiate it then we can assume that you&#39;ll know to handle any messages that still need to be displayed.)&lt;br /&gt;
&lt;h5&gt;
Adding Messages (with levels) to the FlashMessenger&lt;/h5&gt;
Adding messages to the FlashMessenger proceeds via the HelperBroker unchanged. Add simple string messages as you normally would:&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;$this-&amp;gt;_helper-&amp;gt;FlashMessenger(&#39;Your message was sent.&#39;);
&lt;/code&gt;&lt;/pre&gt;
If you want to specify a message-level pass a key-value pair instead:&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;$this-&amp;gt;_helper-&amp;gt;FlashMessenger(
    array(&#39;error&#39; =&amp;gt; &#39;There was a problem with your form submission.&#39;) 
);
&lt;/code&gt;&lt;/pre&gt;
By default, the FlashMessenger View Helper will render the message within a &lt;code&gt;p&lt;/code&gt; tag with a class attribute of the message-level key.&lt;br /&gt;
&lt;h5&gt;
Advanced Options to the FlashMessenger View Helper&lt;/h5&gt;
You can specify the default message-level by passing a string value as the first parameter to &lt;code&gt;flashMessenger()&lt;/code&gt;. The default message-level is &lt;code&gt;&#39;warning&#39;&lt;/code&gt;. To change this to &lt;code&gt;&#39;notice&#39;&lt;/code&gt;, in your layout do:&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;?php echo $this-&amp;gt;flashMessenger(&#39;notice&#39;); ?&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
This applies to simple string messages only. If key-value pairs are passed to the FlashMessenger, any message-level key will override the default value set here.&lt;br /&gt;
Finally, you can override the default message template by passing a format specifier string (suitable for the &lt;code&gt;printf&lt;/code&gt; family of functions) as the second parameter. The default template is &lt;code&gt;&amp;lt;p class=&quot;%s&quot;&amp;gt;%s&amp;lt;/p&amp;gt;&lt;/code&gt; (where the message-level and message fill the respective placeholders).&lt;br /&gt;
As an example, if you regularly expected multiple flash messages, you could render messages as an unordered list by doing this in your layout:&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;ul&amp;gt;
    &amp;lt;?php echo $this-&amp;gt;flashMessenger(&#39;notice&#39;, &#39;&amp;lt;li class=&quot;%s&quot;&amp;gt;%s&amp;lt;/li&amp;gt;&#39;);?&amp;gt;
&amp;lt;/ul&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
Here we have also set the default message-level to &lt;code&gt;&#39;notice&#39;&lt;/code&gt;.&lt;br /&gt;
The FlashMessenger View Helper is part of the Noumenal
PHP Library and is available on &lt;a href=&quot;https://github.com/carltongibson/Noumenal-PHP-Library&quot;&gt;GitHub&lt;/a&gt;.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34474383/posts/default/7222056429404966477'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34474383/posts/default/7222056429404966477'/><link rel='alternate' type='text/html' href='http://blog.noumenal.co.uk/2009/08/using-zend-framework-flashmessenger.html' title='Using Zend Framework&amp;#39;s FlashMessenger Action Helper'/><author><name>Carlton Gibson</name><uri>http://www.blogger.com/profile/13617389803402457692</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKobo9aLIDCTjI52JmaqiCp1a7R6chin6XSjSEfjKj8PzwQAamYGY3v50rm7kEk3qi71u4MUkxilaea-CzUf3V8jNxCNsmAovvWD9vm0ZahzFIVgu31kadiqfgJiWBQ1M/s220/me_in_antigua.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-34474383.post-7525929847738368145</id><published>2009-08-14T13:03:00.001+01:00</published><updated>2009-08-20T14:23:07.602+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="nTimeline"/><category scheme="http://www.blogger.com/atom/ns#" term="PHP"/><category scheme="http://www.blogger.com/atom/ns#" term="Zend Framework"/><title type='text'>Introducing the Noumenal PHP Library</title><content type='html'>&lt;p&gt;We just added the first version of the Noumenal PHP Library to the &lt;a
href=&quot;http://noumenal.co.uk/resources/downloads&quot;&gt;downloads page&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;This is a collection of PHP classes built on top of &lt;a
href=&quot;http://framework.zend.com/&quot;&gt;Zend Framework&lt;/a&gt;. The Zend Framework team
aim for an 80% solution. The Noumenal PHP Library is the next 10%. &lt;/p&gt;

&lt;p&gt;It&#39;s released under a new BSD licence.&lt;/p&gt;

&lt;p&gt;At the moment there&#39;s not much in the Noumenal PHP Library, just a
FlashMessenger View Helper to begin with. We&#39;ve got a big backlog of code to
include but it takes time to get our private code &lt;em&gt;massaged&lt;/em&gt; for an
open-source release. &lt;/p&gt;

&lt;p&gt;Download a copy, try it out and &lt;strong&gt;keep up to date&lt;/strong&gt; via the &lt;a
href=&quot;http://eepurl.com/b43Q&quot;&gt;newsletter&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Bugs via the &lt;a href=&quot;http://noumenal.co.uk/contact&quot;&gt;contact page&lt;/a&gt;,
questions welcome on the &lt;a
href=&quot;https://noumenal.fogbugz.com/default.asp?noumenal&quot;&gt;discussion
board&lt;/a&gt;.&lt;/p&gt;
</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34474383/posts/default/7525929847738368145'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34474383/posts/default/7525929847738368145'/><link rel='alternate' type='text/html' href='http://blog.noumenal.co.uk/2009/08/introducing-noumenal-php-library.html' title='Introducing the Noumenal PHP Library'/><author><name>Carlton Gibson</name><uri>http://www.blogger.com/profile/13617389803402457692</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKobo9aLIDCTjI52JmaqiCp1a7R6chin6XSjSEfjKj8PzwQAamYGY3v50rm7kEk3qi71u4MUkxilaea-CzUf3V8jNxCNsmAovvWD9vm0ZahzFIVgu31kadiqfgJiWBQ1M/s220/me_in_antigua.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-34474383.post-8508412716989209681</id><published>2009-08-08T11:14:00.001+01:00</published><updated>2009-08-08T11:20:56.745+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="The Joel Test"/><title type='text'>Towards a One-Step Build (part1)</title><content type='html'>&lt;p&gt;Number 2 on the Joel Test is &amp;#8220;Can you make a build in one step?&amp;#8221; At Noumenal the answer to this (on this date, but not for much longer) is still &amp;#8220;No&amp;#8221;.&lt;/p&gt;

&lt;p&gt;The necessary &lt;em&gt;explanation&lt;/em&gt; that accompanies all such &amp;#8220;No&amp;#8221; answers is, in this case, &amp;#8220;we&amp;#8217;ve been building small-to-medium web applications that didn&amp;#8217;t force us into automated builds, and we didn&amp;#8217;t know any better&amp;#8221;.&lt;/p&gt;

&lt;p&gt;Well now we&amp;#8217;re building enterprise grade multi-platform, multi-language, high-availability, n-tier architecture, distributed applications, integrated via asynchronous messaging services and exposing open-standards web service APIs. &lt;strong&gt;We damn-well need a one-step build now&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;In moving from here to there, step 1 is easy: &lt;strong&gt;Write down exactly what you do for each of the steps of your current build&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;That&amp;#8217;s it. Nothing more to it.&lt;/p&gt;

&lt;p&gt;Each of the steps are themselves really easy. (They must be otherwise you&amp;#8217;d already have another way of doing it.) Scripting each step individually will be easy too &amp;#8212; &lt;strong&gt;once you know what they are&lt;/strong&gt;. All that then will remain is a script to run each of the mini-scripts in order.&lt;/p&gt;

&lt;p&gt;Sounds simple doesn&amp;#8217;t it.&lt;/p&gt;
</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34474383/posts/default/8508412716989209681'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34474383/posts/default/8508412716989209681'/><link rel='alternate' type='text/html' href='http://blog.noumenal.co.uk/2009/08/towards-one-step-build-part1.html' title='Towards a One-Step Build (part1)'/><author><name>Carlton Gibson</name><uri>http://www.blogger.com/profile/13617389803402457692</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKobo9aLIDCTjI52JmaqiCp1a7R6chin6XSjSEfjKj8PzwQAamYGY3v50rm7kEk3qi71u4MUkxilaea-CzUf3V8jNxCNsmAovvWD9vm0ZahzFIVgu31kadiqfgJiWBQ1M/s220/me_in_antigua.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-34474383.post-7745846493513815853</id><published>2009-07-07T09:25:00.001+01:00</published><updated>2009-07-07T09:27:12.329+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="nTimeline"/><category scheme="http://www.blogger.com/atom/ns#" term="The Joel Test"/><title type='text'>12 on The Joel Test</title><content type='html'>&lt;p&gt;I started Noumenal 3 and a half years ago now. In that time I&#39;ve learnt to program and written some software, some of which has actually been good. My greatest achievement by far is that, one year after the birth of my first child, I&#39;m still business. (Just before his birth, I&#39;d guess, not many thought that likely.)&lt;/p&gt;

&lt;p&gt;Starting out, just surviving was always going to be a lot harder than my natural arrogance would allow: I was a philosophy PhD and despite my focus on the more technical areas, philosophy is the archetypal &lt;em&gt;liberal art&lt;/em&gt; and &lt;a href=&quot;http://www.joelonsoftware.com/articles/CoderToDeveloper.html&quot;&gt;liberal arts majors don&#39;t know anything about developing software&lt;/a&gt;. Thankfully for me I knew nothing of this.&lt;/p&gt;
&lt;p&gt;
More thankfully though, I&#39;m stubborn, as much as that may &lt;a href=&quot;http://www.economist.com/sciencetechnology/displaystory.cfm?story_id=13899022&quot;&gt;not be good for my mental health&lt;/a&gt;. I have learnt the hard way about the need for specifications and testing and iterative development, and all the rest of it.
&lt;/p&gt;&lt;p&gt;
As much of an achievement as still being in business is, it is but a platform for success rather than success itself. (My long term goals were slightly more ambitious than merely not going bankrupt.) As such I&#39;ve decide to apply the famous &lt;a href=&quot;http://www.joelonsoftware.com/articles/fog0000000043.html&quot;&gt;Joel Test&lt;/a&gt;, 12 yes or no questions to help you determine how good your software development process is.
&lt;/p&gt;
&lt;p&gt;
For those of you who may not be familiar, the 12 points of The Joel Test are: 

&lt;ol&gt;
&lt;li&gt;Do you use source control? 
&lt;/li&gt;&lt;li&gt;Can you make a build in one step? 
&lt;/li&gt;&lt;li&gt;Do you make daily builds? 
&lt;/li&gt;&lt;li&gt;Do you have a bug database? 
&lt;/li&gt;&lt;li&gt;Do you fix bugs before writing new code? 
&lt;/li&gt;&lt;li&gt;Do you have an up-to-date schedule? 
&lt;/li&gt;&lt;li&gt;Do you have a spec? 
&lt;/li&gt;&lt;li&gt;Do programmers have quiet working conditions? 
&lt;/li&gt;&lt;li&gt;Do you use the best tools money can buy? 
&lt;/li&gt;&lt;li&gt;Do you have testers? 
&lt;/li&gt;&lt;li&gt;Do new candidates write code during their interview? 
&lt;/li&gt;&lt;li&gt;Do you do hallway usability testing? &lt;/li&gt;
&lt;/ol&gt;

(I&#39;ll be discussing these in reference to their application at Noumenal in future posts but you can read Joel&#39;s &lt;a href=&quot;http://www.joelonsoftware.com/articles/fog0000000043.html&quot;&gt;original discussion&lt;/a&gt; for more details now.)
&lt;/p&gt;&lt;p&gt;
A quick count says I&#39;m currently running at 4 (which could pretty easily be bumped to 6) but 4 (or even 6) isn&#39;t good enough. As Joel says, &lt;q&gt;companies like Microsoft run at 12 full-time&lt;/q&gt;.
&lt;/p&gt;
&lt;p&gt;
Goals should be SMART: specific, measurable, achievable, realistic and time-boxed. Here&#39;s my goal: I will be at 12 on The Joel Test by 6th July 2010, the day my boy is two.&lt;/p&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34474383/posts/default/7745846493513815853'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34474383/posts/default/7745846493513815853'/><link rel='alternate' type='text/html' href='http://blog.noumenal.co.uk/2009/07/12-on-joel-test.html' title='12 on The Joel Test'/><author><name>Carlton Gibson</name><uri>http://www.blogger.com/profile/13617389803402457692</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKobo9aLIDCTjI52JmaqiCp1a7R6chin6XSjSEfjKj8PzwQAamYGY3v50rm7kEk3qi71u4MUkxilaea-CzUf3V8jNxCNsmAovvWD9vm0ZahzFIVgu31kadiqfgJiWBQ1M/s220/me_in_antigua.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-34474383.post-8893172598705210879</id><published>2009-06-12T14:11:00.004+01:00</published><updated>2009-06-12T14:17:54.353+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="nTimeline"/><category scheme="http://www.blogger.com/atom/ns#" term="WebApps"/><title type='text'>Noumenal Web Site (Re)development</title><content type='html'>After much time, and many delays, the Noumenal web site is finally beginning the process of taking shape.

We at least now have a sitemap for the forthcoming v1.0:

&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjcd8-L6zzJy5EtfqRZDPvPVRYIZL3pQZzoa8pn2Jjj5o3C4EjXdP9JOFPYGIR9elBXBapwPw-B_ZmTG237NjBXmi7MUKXiiQJPut2cNyVzUOK55RMAlkb7srz4Yf7GT7hGu-9v/s1600-h/Noumenal+Site+Map.png&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 254px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjcd8-L6zzJy5EtfqRZDPvPVRYIZL3pQZzoa8pn2Jjj5o3C4EjXdP9JOFPYGIR9elBXBapwPw-B_ZmTG237NjBXmi7MUKXiiQJPut2cNyVzUOK55RMAlkb7srz4Yf7GT7hGu-9v/s320/Noumenal+Site+Map.png&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5346428538888717746&quot; /&gt;&lt;/a&gt;

(Generated using &lt;a href=&quot;http://writemaps.com/&quot;&gt;http://writemaps.com/&lt;/a&gt;.)</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34474383/posts/default/8893172598705210879'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34474383/posts/default/8893172598705210879'/><link rel='alternate' type='text/html' href='http://blog.noumenal.co.uk/2009/06/noumenal-web-site-redevelopment.html' title='Noumenal Web Site (Re)development'/><author><name>Carlton Gibson</name><uri>http://www.blogger.com/profile/13617389803402457692</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKobo9aLIDCTjI52JmaqiCp1a7R6chin6XSjSEfjKj8PzwQAamYGY3v50rm7kEk3qi71u4MUkxilaea-CzUf3V8jNxCNsmAovvWD9vm0ZahzFIVgu31kadiqfgJiWBQ1M/s220/me_in_antigua.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjcd8-L6zzJy5EtfqRZDPvPVRYIZL3pQZzoa8pn2Jjj5o3C4EjXdP9JOFPYGIR9elBXBapwPw-B_ZmTG237NjBXmi7MUKXiiQJPut2cNyVzUOK55RMAlkb7srz4Yf7GT7hGu-9v/s72-c/Noumenal+Site+Map.png" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-34474383.post-4914598176815227586</id><published>2009-05-15T11:14:00.001+01:00</published><updated>2009-05-15T11:17:01.373+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Representation"/><title type='text'>Pure Demonstratives and Logically Proper Names</title><content type='html'>&lt;p&gt;My ten month old hasn&amp;#8217;t yet grasped pointing: &amp;#8220;Look over
there&amp;#8221;, arm outstretched, hand clenched, index finger extended; he looks
at the finger rather than anything else. &lt;/p&gt;

&lt;p&gt;Observing this brings to mind remarks of Wittgenstein&amp;#8217;s to the effect
that even our most basic demonstratives are already embedded within what we
might model as a representational schema: &lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Are &amp;#8220;there&amp;#8221; and &amp;#8220;this&amp;#8221; also taught
ostensively?&amp;#8212;Imagine how one might perhaps teach their use. One will
point to places and things&amp;#8212;-but in this case the pointing occurs in the
&lt;em&gt;use&lt;/em&gt; of the words too and not merely in learning the use. [P.I. 9]&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I&amp;#8217;ve always taken this kind of remark (i.e. it &lt;strong&gt;and&lt;/strong&gt;
many others like it) as telling against the possibility of a pure demonstrative,
of a spoken &amp;#8220;&lt;em&gt;This&lt;/em&gt;&amp;#8221; or of a &amp;#8220;&lt;em&gt;That&lt;/em&gt;&amp;#8221;
which successfully picks out an otherwise unknown something, without in so doing
imposing preconceptions upon it.&lt;/p&gt;

&lt;p&gt;From the logical point of view they would tell against the possibility of a
purely designative occurrence of a &lt;em&gt;name&lt;/em&gt;&amp;#8212;one which in a
subject-predicate sentence of the form &amp;#8220;S is P&amp;#8221; would allow
&lt;strong&gt;all&lt;/strong&gt; of the intensional content to reside with the predication.
&lt;/p&gt;

&lt;p&gt;Here, rehearsing Russell, we might draw the distinction between
&lt;em&gt;names&lt;/em&gt; as they commonly appear, which may be laden with
predicative content&amp;#8212;Ivan the Terrible, say&amp;#8212;and &lt;em&gt;logically proper
names&lt;/em&gt; which, being purely designative, may not. &lt;/p&gt;

&lt;p&gt;With this stipulation in place, note that whilst we all agree that names as
they commonly appear are not logically proper names so defined, the
claim at stake is the much stronger one that names howsoever they appear are
&lt;strong&gt;never&lt;/strong&gt; logically proper names. That is, that there are
&lt;strong&gt;no such things&lt;/strong&gt; as logically proper names. (This would not be
worth remarking if the contrary were not, still, so commonly held.)&lt;/p&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34474383/posts/default/4914598176815227586'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34474383/posts/default/4914598176815227586'/><link rel='alternate' type='text/html' href='http://blog.noumenal.co.uk/2009/05/pure-demonstratives-and-logically.html' title='Pure Demonstratives and Logically Proper Names'/><author><name>Carlton Gibson</name><uri>http://www.blogger.com/profile/13617389803402457692</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKobo9aLIDCTjI52JmaqiCp1a7R6chin6XSjSEfjKj8PzwQAamYGY3v50rm7kEk3qi71u4MUkxilaea-CzUf3V8jNxCNsmAovvWD9vm0ZahzFIVgu31kadiqfgJiWBQ1M/s220/me_in_antigua.jpg'/></author></entry></feed>