<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Carbon Silk</title>
	
	<link>http://www.carbonsilk.com</link>
	<description>Developing Ideas by James Broad</description>
	<lastBuildDate>Thu, 02 Jul 2009 12:00:13 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/carbonsilk" type="application/rss+xml" /><feedburner:feedFlare href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2Fcarbonsilk" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Fcarbonsilk" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare href="http://feeds.my.aol.com/add.jsp?url=http%3A%2F%2Ffeeds.feedburner.com%2Fcarbonsilk" src="http://o.aolcdn.com/favorites.my.aol.com/webmaster/ffclient/webroot/locale/en-US/images/myAOLButtonSmall.gif">Subscribe with My AOL</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://feeds.feedburner.com/carbonsilk" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Fcarbonsilk" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Fcarbonsilk" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Fcarbonsilk" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><item>
		<title>Writing your first shell script</title>
		<link>http://feedproxy.google.com/~r/carbonsilk/~3/4bmSr4CIWl0/</link>
		<comments>http://www.carbonsilk.com/development/writing-your-first-shell-script/#comments</comments>
		<pubDate>Fri, 12 Jun 2009 13:32:26 +0000</pubDate>
		<dc:creator>James Broad</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[find]]></category>
		<category><![CDATA[loop]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[Unix]]></category>
		<category><![CDATA[vi]]></category>

		<guid isPermaLink="false">http://www.carbonsilk.com/?p=181</guid>
		<description><![CDATA[
Shell scripts are a simple way of completing (repetitive) tasks on the command line, much like many programming languages will be used. You will see ~ something &#8212; ignore the &#8216;~&#8217; this is to signify that it is a command entered onto the command line itself.
Writing the code
~ vi helloworld.sh

#!/bin/bash
# My first script
MESSAGE="Hello World!"
echo $MESSAGE

Here [...]]]></description>
			<content:encoded><![CDATA[<div><a href="http://www.flickr.com/photos/hindesite/37052873/"><img src="http://farm1.static.flickr.com/33/37052873_2d8bfe13ba_d.jpg" alt="Shell"/></a></div>
<p class="clear">Shell scripts are a simple way of completing (repetitive) tasks on the command line, much like many programming languages will be used. You will see <code>~ something</code> &#8212; ignore the &#8216;~&#8217; this is to signify that it is a command entered onto the command line itself.</p>
<h3>Writing the code</h3>
<p><code>~ vi helloworld.sh</code></p>
<pre>
#!/bin/bash
# My first script
MESSAGE="Hello World!"
echo $MESSAGE
</pre>
<p>Here we have just entered a really simple example of using variables and returning the value.</p>
<h3>Setting the permissions</h3>
<p>We need to set permission to allow the script to be executed, this is needed to be done on all unix environments for something to be run</p>
<p><code>~ chmod +x helloworld.sh</code></p>
<h3>Running the script</h3>
<p><code>~ sh helloworld.sh</code></p>
<pre>Hello World!</pre>
<p>Now you should have the response &#8220;Hello World!&#8221; from running this script.</p>
<h3>Going more advanced</h3>
<p>Lets explore some of the basic options we have to play with in the shell by example.</p>
<h4>Loop test</h4>
<p><code>~ vi looptest.sh</code></p>
<pre>
#!/bin/bash
# My first loop
FILETYPES="xml html css js"
for TYPE in $FILETYPES
    do
        echo 'Looking for' $TYPE 'files'
        find . -name '*'$TYPE
    done
</pre>
<p>Now set the correct permissions and run the script</p>
<p><code>~ chmod +x looptest.sh</code><br />
<code>~ sh looptest.sh</code></p>
<pre>
Looking for xml files
./somefile.xml
Looking for html files
./somefile.html
Looking for css files
./somefile.css
Looking for js files
./somefile.js
</pre>
<h4>If conditional test</h4>
<p><code>~ vi iftest.sh</code></p>
<pre>
#!/bin/bash
# If the file does not exist, make it
FILE='test'
if [ ! -f $FILE ] ; then
    mkdir -p $FILE
fi
ls -las $FILE
</pre>
<p>Now set the correct permissions and run the script</p>
<p><code>~ chmod +x iftest.sh</code><br />
<code>~ sh iftest.sh</code></p>
<p>Hopefully this is enough to help you on your way to making more use of the powers of Unix&#8230;</p>
<h3>Further reading</h3>
<p><a href="http://www.gnu.org/software/bash/manual/html_node/index.html">Bash Manual</a><br />
<a href="http://blog.emson.co.uk/2009/06/18-useful-bash-scripts-for-web-developers/">Useful bash one liner scripts</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.carbonsilk.com/development/writing-your-first-shell-script/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.carbonsilk.com/development/writing-your-first-shell-script/</feedburner:origLink></item>
		<item>
		<title>Managing emails</title>
		<link>http://feedproxy.google.com/~r/carbonsilk/~3/9WiWuSEDo_s/</link>
		<comments>http://www.carbonsilk.com/productivity/managing-emails/#comments</comments>
		<pubDate>Thu, 11 Jun 2009 12:17:34 +0000</pubDate>
		<dc:creator>James Broad</dc:creator>
				<category><![CDATA[Productivity]]></category>
		<category><![CDATA[communication]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[GTD]]></category>
		<category><![CDATA[inbox]]></category>
		<category><![CDATA[tasks]]></category>
		<category><![CDATA[time]]></category>

		<guid isPermaLink="false">http://www.carbonsilk.com/?p=171</guid>
		<description><![CDATA[Keeping on top of your email inbox can be a full time job in itself, this is my solution to that problem]]></description>
			<content:encoded><![CDATA[<div><a href="http://www.flickr.com/photos/10ch/3204310433/"><img src="http://farm4.static.flickr.com/3371/3204310433_3059fe3c74.jpg" alt="Inbox" /></a></div>
<p class="clear">Not too long ago dealing with my personal and work emails was turning into a full time job. Having countless subscriptions to mailing lists, trying to handle critical projects, trying to keep on top of communication regarding relocating to another country, it was all getting rather stupid. This is my solution to the hassle of email communication &#8212; project:inbox zero.</p>
<ul>
<li>Set up an archive folder</li>
<li>Move all emails in your inbox older than a month to the archive folder</li>
<li>Decide on the remaining emails in your inbox which need actioning, keep these ones there, move the others to the archive folder</li>
<li>Now you have reached an inbox state that is maintainable and you will continue to maintain</li>
<li>Remove all automatic redirection filters to folders. Any email should enter your inbox and you decide if it gets deleted or filed in that folder</li>
<li>For new incoming messages be quick to archive messages that may be useful later but not actionable or delete messages with no later action/reference</li>
<li>Your goal now is to action off all the items in your inbox at all times to get your inbox message count to read the majestic &#8216;0&#8242; figure</li>
<li>Close you email client when you need to get on with work, else it will act as a distraction. Read your emails in the morning, lunch and 30 minutes before you go home, if anyone has something urgent they are likely to phone or instant message you.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.carbonsilk.com/productivity/managing-emails/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.carbonsilk.com/productivity/managing-emails/</feedburner:origLink></item>
		<item>
		<title>Tips for students entering the web industry</title>
		<link>http://feedproxy.google.com/~r/carbonsilk/~3/EeoSCnEga1s/</link>
		<comments>http://www.carbonsilk.com/education/tips-for-students-entering-the-web-industry/#comments</comments>
		<pubDate>Mon, 08 Jun 2009 10:29:04 +0000</pubDate>
		<dc:creator>James Broad</dc:creator>
				<category><![CDATA[Education]]></category>
		<category><![CDATA[business]]></category>
		<category><![CDATA[career]]></category>
		<category><![CDATA[industry]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[university]]></category>

		<guid isPermaLink="false">http://www.carbonsilk.com/?p=162</guid>
		<description><![CDATA[
I recently attended my old university &#8212; the University of Greenwich to view the final year Multimedia &#38; Internet Technology students&#8217; presentations of  what they had been up to over the course of their studies. I had been in this same position 4 years ago, however standing observing it all came rushing back like it [...]]]></description>
			<content:encoded><![CDATA[<div><a href="http://www.flickr.com/photos/nicmcphee/2217375343/"><img src="http://farm3.static.flickr.com/2042/2217375343_c55801ed85.jpg?v=0" alt="Wrapping ones head around the data" /></a></div>
<p class="clear">I recently attended my old university &#8212; the <a href="http://www.gre.ac.uk">University of Greenwich</a> to view the final year Multimedia &amp; Internet Technology students&#8217; presentations of  what they had been up to over the course of their studies. I had been in this same position 4 years ago, however standing observing it all came rushing back like it was yesterday; the sea of emotions experienced at that time, some of excitement to be finished, some of uncertainty and panic as to what I would go on and do with my life.</p>
<p>Anyway, the work was ok, the presentations ok, the engagement for the most part was ok but everyone seemed to be playing it safe. This was their pitch, the chance for them to be hired or to make the right impression to people that could make a difference. Some tips I would and did put forward to students looking to secure a job in the web industry.</p>
<ol>
<li>Have a website
<ol>
<li>You want to work in the digital world then you need a digital presence, surprising how many students don&#8217;t have one.</li>
<li>Have your best work shown and presented well, definitely quality over quantity here.</li>
<li>Make sure you have a working email address. If you have just set up an account on a new site, check it works.</li>
<li>Use <a href="http://linkedin.com/">LinkedIn</a> or a similar service to list your qualifications</li>
</ol>
</li>
<li>Have a career direction
<ol>
<li>If you like film, animation and web then consider a role that encompasses them all &#8211; Advertising, online gaming, etc.</li>
<li>It helps when speaking to people to tell them the job title your hoping to secure, an employer would be able to think if they need that position filled in their company a lot easier than having to correlate your skill set and make a job title themselves.</li>
</ol>
</li>
<li>Have a speciality/selling point
<ol>
<li>If you find <em>handling web services</em> or <em>making websites accessible</em> a doddle and others seem to struggle you are likely to have a specialist skill which bodes well in securing a job at the CV and interview stage. Be prepared to demonstrate/discuss in detail these attributes of yours.</li>
</ol>
</li>
<li>Be proud and believe in yourself
<ol>
<li>If you do not believe in yourself then no one else will. You are well educated, created work to be proud of, so believe in yourself. Dress smart, hold your head high, engage in conversation as opposed to taking the back seat, its all about confidence you portray.</li>
<li>It&#8217;s likely you will not pass interviews or CV picking processes. For this have a thick skin, being safe in the knowledge that you will be fine, and that you will find better opportunities out there.</li>
</ol>
</li>
<li>Give me your business card
<ol>
<li>It&#8217;s great if you have one but make sure you hand it to me, not to say force but offer at least.</li>
</ol>
</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.carbonsilk.com/education/tips-for-students-entering-the-web-industry/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.carbonsilk.com/education/tips-for-students-entering-the-web-industry/</feedburner:origLink></item>
		<item>
		<title>Making a time lapse video on Mac</title>
		<link>http://feedproxy.google.com/~r/carbonsilk/~3/suY_3xsx7Ww/</link>
		<comments>http://www.carbonsilk.com/development/timelapse-video-mac/#comments</comments>
		<pubDate>Fri, 01 May 2009 12:42:20 +0000</pubDate>
		<dc:creator>James Broad</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[ffmpeg]]></category>
		<category><![CDATA[me]]></category>
		<category><![CDATA[timelapse]]></category>
		<category><![CDATA[Unix]]></category>
		<category><![CDATA[webcam]]></category>

		<guid isPermaLink="false">http://www.carbonsilk.com/?p=122</guid>
		<description><![CDATA[
Me on a time lapse from James Broad on Vimeo.
This video is what you can create (that or something similar) by following these steps on your Mac.
Step 1
Download &#38; install a command line webcam capture utility, we will be using isightcapture
http://www.macupdate.com/info.php/id/18598
Open the DMG and extract the binary to /usr/bin/
sudo cp /Volumes/isightcapture1_1/isightcapture /usr/bin/
Step 2
Set up new [...]]]></description>
			<content:encoded><![CDATA[<p><object width="400" height="300"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=4426507&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=4426507&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="300"></embed></object>
<p><a href="http://vimeo.com/4426507">Me on a time lapse</a> from <a href="http://vimeo.com/kulor">James Broad</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
<p>This video is what you can create (that or something similar) by following these steps on your Mac.</p>
<h3>Step 1</h3>
<p>Download &amp; install a command line webcam capture utility, we will be using isightcapture<br />
<a href="http://www.macupdate.com/info.php/id/18598">http://www.macupdate.com/info.php/id/18598</a><br />
Open the DMG and extract the binary to <code>/usr/bin/</code><br />
<code>sudo cp /Volumes/isightcapture1_1/isightcapture /usr/bin/</code></p>
<h3>Step 2</h3>
<p>Set up new directory to work in.<br />
Lets use ~/captures/<br />
<code>cd ~</code><br />
<code>mkdir captures</code><br />
<code>mkdir captures/scripts</code><br />
<code>mkdir captures/series</code></p>
<h3>Step 3</h3>
<p>Make script to take photo and save it<br />
<code>cd ~/captures/scripts</code><br />
<code>vi captureme.sh</code></p>
<p>Insert the contents into the file:</p>
<pre>
CAPTURE="isightcapture -t jpg"
cd $HOME/captures
D1=`date +%y%m%d/%H`
D2=`date +%y%m%d.%H%M%S`

# If the date directory does not exist, create it
if [ ! -d $D1 ] ; then
mkdir -p $D1
fi

# Construct the filename and path and capture a pic
FN="$D1/$D2.jpg"
$CAPTURE $FN

# Make a symlinked image of the last photo taken
if [ -h 'last.jpg' ] ; then
rm last.jpg
fi
ln -s $FN last.jpg
</pre>
<p>Save and quit (:wq)</p>
<p>To be able to run this script we need to allow execution permission on this file.</p>
<p><code>chmod a+x captureme.sh</code></p>
<h3>Step 4</h3>
<p>Put your capture script on cron<br />
<code>crontab -e</code></p>
<p>Write the contents:</p>
<pre>* * * * * ~/captures/scripts/captureme.sh</pre>
<h3>Step 5</h3>
<p>Install a utility to convert a series of images to a movie. We will be using <a href="http://www.ffmpeg.org/">ffmpeg</a><br />
<code>cd /tmp/</code><br />
<code>svn checkout svn://svn.ffmpeg.org/ffmpeg/trunk ffmpeg</code><br />
<code>cd ffmpeg</code></p>
<p>We need to install ffmpeg to our machine, this process is going to basically compile the code. Hopefully nothing will go wrong for you here, if it does though, take a look on <a href="http://stephenjungels.com/jungels.net/articles/ffmpeg-howto.html">http://stephenjungels.com/jungels.net/articles/ffmpeg-howto.html</a></p>
<p><code>./configure --enable-shared --disable-mmx</code><br />
<code>sudo make</code><br />
<code>sudo make install</code></p>
<h3>Step 5</h3>
<p>Make script to grab photos and run them through ffmpeg<br />
<code>mkdir ~/captures/videos/</code><br />
<code>cd ~/captures/scripts</code><br />
<code>vi make_complete_sequence.sh</code></p>
<p>Write the contents to the file:</p>
<pre>
COUNTER=0;
rm ~/captures/series/*.jpg
for i in `find ~/captures -name '*.jpg'` ;
do
#Write the filename to be friendly with ffmpeg's odd filename input
FILENAME=`printf '%03d.jpg' $COUNTER`
cp $i ~/captures/series/$FILENAME
let COUNTER=COUNTER+1;
done
nice ffmpeg -r 20 -b 1800  -i ~/captures/series/%3d.jpg ~/captures/videos/timelapse_complete.mp4
</pre>
<p>Again setting the permissions to be able to run the script and then run it to generate a movie based on the images taken so far.</p>
<p><code>chmod a+x make_complete_sequence.sh</code><br />
<code>./make_complete_sequence.sh</code></p>
<h3>Step 6</h3>
<p>View the finished result<br />
Browse in finder to your home directory &gt; captures/videos and watch the result.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.carbonsilk.com/development/timelapse-video-mac/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		<feedburner:origLink>http://www.carbonsilk.com/development/timelapse-video-mac/</feedburner:origLink></item>
		<item>
		<title>Ejecting a OS X mount when files are in use</title>
		<link>http://feedproxy.google.com/~r/carbonsilk/~3/zFb2-DpNX_c/</link>
		<comments>http://www.carbonsilk.com/development/ejecting-a-os-x-mount-when-files-are-in-use/#comments</comments>
		<pubDate>Thu, 23 Apr 2009 10:10:24 +0000</pubDate>
		<dc:creator>James Broad</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[disk]]></category>
		<category><![CDATA[dmg]]></category>
		<category><![CDATA[lsof]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[mount]]></category>
		<category><![CDATA[OSX]]></category>
		<category><![CDATA[remove]]></category>
		<category><![CDATA[Unix]]></category>

		<guid isPermaLink="false">http://www.carbonsilk.com/?p=104</guid>
		<description><![CDATA[
So the problem is that you want to eject a disk/DMG/mount on your Mac and it says it is still in use &#8220;The disk &#8220;x&#8221; is in use and could not be ejected.&#8221;. Here is the solution using your command line (Terminal.app) to be able to safely eject the mount.
lsof +D /Volumes/{VolumeName}/
This will give you [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.carbonsilk.com/wp-content/uploads/2009/04/untitled.png" alt="Eject disk" title="Eject disk" /></p>
<p class="clear">So the problem is that you want to eject a disk/DMG/mount on your Mac and it says it is still in use &#8220;The disk &#8220;x&#8221; is in use and could not be ejected.&#8221;. Here is the solution using your command line (Terminal.app) to be able to safely eject the <a href="http://en.wikipedia.org/wiki/Mount_(Unix)">mount</a>.</p>
<p><code>lsof +D /Volumes/{VolumeName}/</code></p>
<p>This will give you some results like:</p>
<pre class="php"  name="code">COMMAND   PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
HoggingApp 69668 myuser  txt    REG   14,5  3791772   27 /Volumes/{VolumeName}/App.app/Contents/MacOS/App</pre>
<p>Hopefully you will recognise the application that is using that resource (in this example <em>HoggingApp</em>). If you can close this application you should be able to eject your mount now.</p>
<p>If closing the application did not work for some reason you could try the following command using the <a href="http://en.wikipedia.org/wiki/Process_identifier">PID</a> found from the above result(s)</p>
<p><code>kill <strong>69668</strong></code></p>
<p>Or If running a kill has a permissions based issue just add &#8216;<code>sudo</code>&#8216; to the beginning of the line (assuming you have sudo access).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.carbonsilk.com/development/ejecting-a-os-x-mount-when-files-are-in-use/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.carbonsilk.com/development/ejecting-a-os-x-mount-when-files-are-in-use/</feedburner:origLink></item>
		<item>
		<title>Using YQL with PHP</title>
		<link>http://feedproxy.google.com/~r/carbonsilk/~3/qC67FXi0ZbM/</link>
		<comments>http://www.carbonsilk.com/development/using-yql-with-php/#comments</comments>
		<pubDate>Sun, 01 Mar 2009 23:18:35 +0000</pubDate>
		<dc:creator>James Broad</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Presentation]]></category>
		<category><![CDATA[codeigniter]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[mvc]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[talk]]></category>
		<category><![CDATA[webservices]]></category>
		<category><![CDATA[yql]]></category>

		<guid isPermaLink="false">http://www.carbonsilk.com/?p=70</guid>
		<description><![CDATA[After presenting on PHP, OAuth and Web Services (4th February 2009) it became apparent that the main killer technology was YQL. YQL for those unfamiliar with the acronym is Yahoo Query Language, a SQL like syntax that will let you query a whole host of data sources as if it were a database table.
Is YQL [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://developer.yahoo.com/yql/"><img src="http://l.yimg.com/a/i/us/pps/yql128.gif" alt="YQL Logo" /></a>After presenting on <a href="http://www.slideshare.net/kulor/php-oauth-web-services-and-yql">PHP, OAuth and Web Services</a> (4th February 2009) it became apparent that the main killer technology was <a href="http://developer.yahoo.com/yql/"><acronym title="Yahoo Query Language">YQL</acronym></a>. YQL for those unfamiliar with the acronym is Yahoo Query Language, a <acronym title="Simple Query Language">SQL</acronym> like syntax that will let you query a whole host of data sources as if it were a database table.</p>
<p>Is YQL relevant to you? Well if you do any work with web services then definitely, it allows you to pull in multiple data sources, sort, transform, query your data points, to name but a few selling points. It will still be relevant to you if you are familiar with the SQL syntax, as it is actually really fun to play with <a href="http://developer.yahoo.com/yql/console/">using the console</a>, especially if you take the provided example queries as a jump off point to tinker with. To demonstrate how easy we can make things, take a look at this <a href="http://carbonsilk.com/yql_php/yql/search_yahoo/yql">example of a search query</a> using <a href="http://github.com/kulor/yql_php/blob/da559e966663a519f436d0aa9944212582806b98/system/application/controllers/yql.php#L65">this code</a>.</p>
<p>YQL is now becoming even more powerful with a feature called &#8216;Open Tables&#8217; which in essence instructs YQL on how to construct a web service URL. The power of this is that it enables you to interject values from other web service calls via sub selects. Some examples of Open Table definitions and <a href="http://github.com/spullara/yql-tables/blob/dea6b29ff0cd01e06fbaf84b821abf6783138b52/alltables.env">example queries</a> are being constructed at <a href="http://github.com/spullara/yql-tables/">github.com/spullara/yql-tables</a>.</p>
<p>During my talk I demonstrated a lot of the PHP code used to consume the results of the YQL calls which can be found over on <a href="http://github.com/kulor/yql_php/tree/master">my GitHub repository</a> or you can browse my example scripts at <a href="http://carbonsilk.com/yql_php/">http://carbonsilk.com/yql_php/</a>.</p>
<p>To make development in PHP straightforward I used CodeIgniter for it&#8217;s MVC strengths and ease of installation. The beauty of using the framework with YQL and OAuth libraries doing the hard work behind the scenes is that you can write a few simple lines like the following to retrieve instant results:</p>
<pre name="code" class="php">
// Controller method to allow us to access http://someurl.tld/yql_php/search_wikipedia/
function search_wikipedia($term = 'open')
{
    echo '&lt;pre&gt;';
    $yql_query = 'select * from xml where
            url="http://en.wikipedia.org/w/api.php?action=opensearch&amp;search=' . $term . '&amp;format=xml"
            and itemPath = "SearchSuggestion.Section.Item"';
    print_r($this-&gt;yql_lib-&gt;query($yql_query));
}</pre>
<p>The above code is the same query as could be found if you <a href="http://developer.yahoo.com/yql/console/?q=select%20*%20from%20xml%20where%20url%3D%22http%3A%2F%2Fen.wikipedia.org%2Fw%2Fapi.php%3Faction%3Dopensearch%26search%3Dyahoo%26format%3Dxml%22%20and%20itemPath%20%3D%20%22SearchSuggestion.Section.Item%22">view in the provided console</a> or view in my final project <a href="http://carbonsilk.com/yql_php/yql/search_wikipedia/open">Search Wikipedia through YQL</a>.</p>
<p>All I can say from doing this talk and looking deep into YQL is that there is a huge potential at our disposal here.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.carbonsilk.com/development/using-yql-with-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.carbonsilk.com/development/using-yql-with-php/</feedburner:origLink></item>
		<item>
		<title>Getting serious about digital photography</title>
		<link>http://feedproxy.google.com/~r/carbonsilk/~3/9-n2w5DvTKI/</link>
		<comments>http://www.carbonsilk.com/photography/digital-photography/#comments</comments>
		<pubDate>Sun, 18 Jan 2009 16:57:08 +0000</pubDate>
		<dc:creator>James Broad</dc:creator>
				<category><![CDATA[photography]]></category>
		<category><![CDATA[creative]]></category>
		<category><![CDATA[Productivity]]></category>

		<guid isPermaLink="false">http://www.carbonsilk.com/?p=59</guid>
		<description><![CDATA[Photography, something that has fascinated me since a wee lad, has returned into my life in a bigger and better way than ever before. I have recently purchased a Digital SLR (Canon 1000d), something I have been longing on getting for a while, which has rekindled my photography hobby.
I studied photography at college and a [...]]]></description>
			<content:encoded><![CDATA[<p><a title="Sea of bicycles by James Broad, on Flickr" href="http://www.flickr.com/photos/kulor/3200513543/"><img src="http://farm4.static.flickr.com/3314/3200513543_c4ea95d6da_m.jpg" alt="Sea of bicycles" width="160" height="240" /></a>Photography, something that has fascinated me since a wee lad, has returned into my life in a bigger and better way than ever before. I have recently purchased a Digital SLR (<a href="http://flickr.com/cameras/canon/eos_digital_rebel_xs/">Canon 1000d</a>), something I have been longing on getting for a while, which has rekindled my photography hobby.</p>
<p>I studied photography at college and a cinematography module at university, consequently gaining a good grasp of the technical and theoretical principles of taking photos, lighting composition and subject matter.</p>
<p>Personally I learn best by doing, so something that made me frustrated using film was the time delay from shot to print, I wanted to see the developed picture instantly. This was where digital entered my radar.</p>
<p>I entered the world of digital photography with my trusty <a href="http://flickr.com/cameras/panasonic/dmc-fz5/">Panasonic DMC-FZ5</a> a semi digital SLR. This was fine but didn&#8217;t offer swappable lenses and was, at the end of the day, a point and shoot camera with a big lens, never really achieving great results.</p>
<p><a href="http://www.flickr.com">Flickr</a> has traditionally been my dumping ground for photos, almost a backup solution for my snaps. Things have now changed and I use it to upload selective shots that I am proud of and think that other people will appreciate. Sharing my photos online has thus far been highly rewarding from the yield of feedback and the social aspects associated with sharing in an interest.</p>
<p>My advice to you if you are intending on getting into photography is to get yourself a beginners digital SLR (Nikon d40 &#8211; d80 or Canon 350d &#8211; 450d) with a kit lens (18 &#8211; 55mm) and/or a 50mm prime lens. With this kit, get yourself set up on Flickr and sign up to a few groups related to your equipment to see what results are achievable.</p>
<p>Now get out and about experimenting with aperture settings, shutter timings, white balance, time-lapse photographs and framing subject matters, after all, it is free to take as many shots, however you like.</p>
<p>You can find my photos at <a href="http://www.flickr.com/photos/kulor">flickr.com/photos/kulor</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.carbonsilk.com/photography/digital-photography/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.carbonsilk.com/photography/digital-photography/</feedburner:origLink></item>
		<item>
		<title>Not paying for software</title>
		<link>http://feedproxy.google.com/~r/carbonsilk/~3/_rF-QGpB5MM/</link>
		<comments>http://www.carbonsilk.com/productivity/not-paying-for-software/#comments</comments>
		<pubDate>Tue, 06 Jan 2009 14:02:35 +0000</pubDate>
		<dc:creator>James Broad</dc:creator>
				<category><![CDATA[Productivity]]></category>
		<category><![CDATA[environment]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://www.carbonsilk.com/?p=48</guid>
		<description><![CDATA[
This post was originally going to be about some of my favourite applications on the Mac, things changed when the trial period expired on one of these applications, prompting me to pay to continue use.
Regardless of this issue, my favourite set of applications for the Mac are currently:

EventBox &#8211; Twitter, Facebook, Flickr desktop integration
Things &#8211; [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://flickr.com/photos/narcisonarcosis/2604564292/"><img title="Stock Animation Floppy Disk Loop" src="http://farm4.static.flickr.com/3121/2604564292_9314822fa8_m.jpg" alt="Stock Animation Floppy Disk Loop" /></a></p>
<p>This post was originally going to be about some of my favourite applications on the Mac, things changed when the trial period expired on one of these applications, prompting me to pay to continue use.</p>
<p>Regardless of this issue, my favourite set of applications for the Mac are currently:</p>
<ul>
<li><a href="http://thecosmicmachine.com/">EventBox</a> &#8211; Twitter, Facebook, Flickr desktop integration</li>
<li><a href="http://culturedcode.com/things/">Things</a> &#8211; Tasks Management</li>
<li><a href="http://www.realmacsoftware.com/littlesnapper/">LittleSnapper</a> &#8211; Screenshot organisation</li>
<li><a href="http://spotify.com/">Spotify</a> &#8211; Music</li>
<li><a href="http://macromates.com/">TextMate</a> &#8211; Text editor, <acronym title="Integrated Development Environment">IDE</acronym></li>
<li><a href="http://www.apple.com/ilife/iphoto/">iPhoto</a> &#8211; Photo management</li>
<li><a href="http://www.vienna-rss.org/">Vienna</a> &#8211; RSS reader</li>
<li><a href="http://www.blacktree.com/">Quicksilver</a> &#8211; application launcher</li>
</ul>
<p>In here are a mixture of paid-for, open source, bundled and freeware applications. The thing that persuades me to &#8216;favourite&#8217; these applications is the relationship I have with them. Relationship, come on your kidding me! No, I have a relationship with these applications (and more), I work with them all day, sometimes night, they frustrate me, impress me and help me to enjoy my experience in trying to reach an objective.</p>
<p>My issue; parting with my hard earned money. I have paid for two pieces of software in the past; Windows XP (Home Edition) and <a href="http://www.salling.com/clicker/">Salling Clicker</a>, both of which being an eventual waste of money. No later than two weeks after buying Windows XP, I bought a new laptop that came pre-installed with Windows XP (Pro) and similarly soon after purchasing Salling Clicker to remote control my Mac Mini, Apple released some <a href="http://www.apple.com/itunes/remote/">remote control</a> software for the iPod touch and iPhone to do the same job but better (native).</p>
<p>These bad experiences could be said to be coincidental, but the issue is prevalent, software is über competitive and fast paced.</p>
<p>Open source has instilled me with confidence in adopting software, I enjoy open source projects tremendously as I feel comfortable with using a product that has been impartially constructed by extremely passionate developers.</p>
<p>Freeware and bundled software: Spotify and iPhoto respectfully are great for me as they offer superior interfaces and functionality for free, can&#8217;t complain there.</p>
<p>Admission time, I am tight, it takes a lot for me to part with my money and I am extremely cautious. Bad thing? Not in my book, keeping tabs on personal finances is fundamental to ensure financial stability.</p>
<h4>Conclusion</h4>
<p>Why pay for something when there is a perfectly reasonable free alternative? Lets keep this simple, of the above paid for favourites here are some free alternatives.</p>
<ul>
<li>EventBox &#8211; <a href="http://iconfactory.com/software/twitterrific">Twitterific</a></li>
<li>Things &#8211; iCal</li>
<li>LittleSnapper &#8211; <a href="http://derailer.org/paparazzi/">Paparazzi</a></li>
<li>Spotify &#8211; <a href="http://www.last.fm/">Last.fm</a> (for the paid for services)</li>
<li>TextMate &#8211; <a href="http://www.eclipse.org/">Eclipse</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.carbonsilk.com/productivity/not-paying-for-software/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://www.carbonsilk.com/productivity/not-paying-for-software/</feedburner:origLink></item>
		<item>
		<title>Panoramic – open source web template</title>
		<link>http://feedproxy.google.com/~r/carbonsilk/~3/IQOLfrcfetE/</link>
		<comments>http://www.carbonsilk.com/development/panoramic-web-template/#comments</comments>
		<pubDate>Sun, 07 Dec 2008 18:55:16 +0000</pubDate>
		<dc:creator>James Broad</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[panoramic]]></category>
		<category><![CDATA[template]]></category>

		<guid isPermaLink="false">http://www.carbonsilk.com/?p=45</guid>
		<description><![CDATA[
View the template
It&#8217;s been a while since releasing an open source web template, the last one being Mighty, added back in January of 2007. Mighty was a template created to allow others to take a basic design and allow them to modify most aspects of the template with relative ease (given some CSS understanding).
Time moved [...]]]></description>
			<content:encoded><![CDATA[<p><a title="Panoramic template design by James Broad, on Flickr" href="http://www.flickr.com/photos/kulor/3089399053/"><img src="http://farm4.static.flickr.com/3252/3089399053_db33e5f9f6.jpg" alt="Panoramic template design" /></a></p>
<p class="clear"><a href="http://www.carbonsilk.com/sandbox/panoramic/index.html">View the template</a></p>
<p>It&#8217;s been a while since releasing an open source web template, the last one being <a href="http://www.oswd.org/design/information/id/3210/">Mighty</a>, added back in January of 2007. Mighty was a template created to allow others to take a basic design and allow them to modify most aspects of the template with relative ease (given some CSS understanding).</p>
<p>Time moved on and the itch arose again to create another open source web template. This time its called Panoramic. Panoramic is the name of the family business and this template design stemmed from a mock for the company I had created some time ago that never got released.</p>
<p><a href="http://github.com/">GitHub</a> seemed the best hosting location for an open source web template, owing to its fantastic interface and functionality and thus Panoramic lives there: <a href="http://github.com/kulor/panoramic/tree/master">http://github.com/kulor/panoramic/tree/master.</a></p>
<p>Having the template hosted on a <a href="http://en.wikipedia.org/wiki/Revision_Control_System">Revision Control System</a> such as GitHub, has many advantages, the main one being that others can contribute to the code and or fork to a version that suits them. Additionally, users downloading the code can always rest assured they are getting the latest code and can see what has changed over time.</p>
<p>If you do use the Panoramic template, please add a comment to this page stating where it is in use, so others can gain inspiration for it&#8217;s uses.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.carbonsilk.com/development/panoramic-web-template/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://www.carbonsilk.com/development/panoramic-web-template/</feedburner:origLink></item>
		<item>
		<title>How to monitor your site status</title>
		<link>http://feedproxy.google.com/~r/carbonsilk/~3/PA8rJ22Zy0Y/</link>
		<comments>http://www.carbonsilk.com/development/monitor-your-site-status/#comments</comments>
		<pubDate>Sun, 07 Dec 2008 17:36:26 +0000</pubDate>
		<dc:creator>James Broad</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[cron]]></category>
		<category><![CDATA[crontab]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[siteup]]></category>
		<category><![CDATA[Unix]]></category>

		<guid isPermaLink="false">http://www.carbonsilk.com/?p=44</guid>
		<description><![CDATA[If you are running and administering your own website, the chances are that your reputation relies on you having a stable site, or at least one that your users can reach. The problem is; how often do you check your site is up and running or how you expect it to look? Probably not often.
I [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://flickr.com/photos/petecarr/475437514/"><img src="http://farm1.static.flickr.com/219/475437514_1565355424_m.jpg" alt="Traffic Lights" /></a>If you are running and administering your own website, the chances are that your reputation relies on you having a stable site, or at least one that your users can reach. The problem is; how often do you check your site is up and running or how you expect it to look? Probably not often.</p>
<p class="clear">I have produced a simple script that will let you check your sites are up and running.</p>
<p>The PHP script is hosted on GitHub at <a href="http://github.com/kulor/siteup/tree/master">http://github.com/kulor/siteup/tree/master</a>. You can see the output at <a href="http://carbonsilk.com/sandbox/siteup/">http://carbonsilk.com/sandbox/siteup/</a></p>
<p>To get this script running, you will need to change some of the defaults found in <a href="http://github.com/kulor/siteup/tree/master/index.php">index.php</a> and place both the files in a web accessible directory on your server</p>
<h3>Automating the script</h3>
<p>The best application of this script would be to deploy on your server (<strong>not on the server you are checking is up</strong>) and run on a <a href="http://en.wikipedia.org/wiki/Cron">crontab</a> at a fairly liberal interval (2 hours) to save server overload. To do this:</p>
<p>On your command line:<br />
<code>$ crontab -e</code></p>
<p>This will take you into an editor window. Enter the line below <strong>replacing {$path} with the location of your script</strong><br />
<code>0       */2     *     *     *   php -q /{$path}/siteup/index.php</code></p>
<p>Now you will receive an email if any of your programmed domains are down.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.carbonsilk.com/development/monitor-your-site-status/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://www.carbonsilk.com/development/monitor-your-site-status/</feedburner:origLink></item>
	</channel>
</rss>
