<?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:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><description>Hi, My name is Rob Morgan. I’m a software engineer based in Perth, Western Australia. I like to travel, DJ and listen to new music. I also contribute to jQuery, Zend Framework and other projects. These are my thoughts on technology, random ideas &amp; music.</description><title>Rob Morgan</title><generator>Tumblr (3.0; @robbym)</generator><link>http://robmorgan.id.au/</link><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/RJMorgan" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="rjmorgan" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://tumblr.superfeedr.com/" /><item><title>Why Apple Needs to Reinvent the TV</title><description>&lt;p&gt;
Personally I can&amp;#8217;t wait for Apple to come in and reinvent the television. I envisage they&amp;#8217;ll raise the bar like they did with the iPhone and make the market several times more competitive.
&lt;/p&gt;

&lt;p&gt;
Televisions were invented in the late 1920s and colour came in 1940s. Since then we&amp;#8217;ve been subject to a business model pioneered by the television networks. They serve us content, they serve us advertising and we have the ability to pay for premium subscription services (such as Foxtel or Cable) and connect peripheral devices.
&lt;/p&gt;

&lt;p&gt;
At the moment the price point for TV&amp;#8217;s is amazing. You can purchase a 40-inch Full-HD LED LCD for around $600 (AUD). Compare that to 4 years ago when I paid over $5000 (AUD) for 43-inch Semi-HD Plasma screen. Both the industrial design and the hardware is great, but this is not the issue. The issue with TVs is the experience.
&lt;/p&gt;

&lt;p&gt;
The experience with TV&amp;#8217;s is appalling. Every user interface varies between brand and model. There is no consistency in terms of design and frankly it&amp;#8217;s pathetic. Let&amp;#8217;s talk about a common task such as changing the channel. You pick up a remote and try to hit the impossible bulls-eye. Occasionally you do and then the television takes it&amp;#8217;s merry time trying to fulfill your request.
&lt;/p&gt;

&lt;p&gt;
With the UI aside have you forgotten about the plethora of boxes sitting within your cabinet? Let&amp;#8217;s go back to 1993 when TV&amp;#8217;s only supported one external device; now we have boxes for just about everything - cable networks, gaming consoles, network media devices, premium subscription services, convertors, boxes to connect more boxes and DVD &amp;amp; Blu-Ray players. It&amp;#8217;s ridiculous!

&lt;/p&gt;&lt;p&gt;
The Apple TV was important for Apple, because it was their entry into the market. Steve Jobs always claimed it was a &amp;#8216;hobby&amp;#8217; and they &amp;#8216;weren&amp;#8217;t very serious about it&amp;#8217;, but it was a lot more than that. The Apple TV was a market tester. Are consumer&amp;#8217;s prepared to pay for content? Do people actually listen to music on their TV&amp;#8217;s? Or how about viewing photos? Finally how long do people spend watching TV? The latter question is very relevant. I think we all know the answer and the potential market size.
&lt;/p&gt;

&lt;p&gt;
Now for the big unknowns. Has Apple thought extremely big? Does what their trying to do require commitment from networks all around the world? It&amp;#8217;s quite possible. For example a feature such as trying to replay a TV program straight after it&amp;#8217;s broadcast would require permission from the copyright holder.
&lt;/p&gt;

&lt;p&gt;
Will the Apple Television disrupt the model where content is restricted by markets? At the moment networks purchase programs from content providers after they&amp;#8217;ve had widespread success in their local markets. But lets not forget the internet exists today and consumers aren&amp;#8217;t prepared to wait 12 months to see what the trending topics on Twitter are all about. They want it now and technologies such as BitTorrent enable this. Could we see a global change to this model across the spectrum? One day they might even go as far as allowing you to determine your own programming. Talk about a total change. All of a sudden you will be dictating your own programming instead of the networks. Going out for dinner later tonight? Then watch the news now instead of at 7:00pm. Video on demand already exists, but not in this capacity.
&lt;/p&gt;

&lt;p&gt;
Last but not least I&amp;#8217;m sure there is another billion dollar App market just waiting to be untapped in the living room. The problem Apple has here though is people aren&amp;#8217;t going to get off the couch to touch their TV screens, they&amp;#8217;ll have to use an iPad or a new category of device (remote on steroids). TheVerge (&lt;a href="http://www.theverge.com/2011/12/18/2645399/apple-working-on-tv-new-interfaces-content-partnerships-wsj"&gt;&lt;a href="http://www.theverge.com/2011/12/18/2645399/apple-working-on-tv-new-interfaces-content-partnerships-wsj"&gt;http://www.theverge.com/2011/12/18/2645399/apple-working-on-tv-new-interfaces-content-partnerships-wsj&lt;/a&gt;&lt;/a&gt;) claims people will use their voice which makes sense given the successful launch of Siri. I would love to check the weather, watch those videos I&amp;#8217;d saved for later, play a few games or catchup on the news. There is definitely room for an App market here.
&lt;/p&gt;

&lt;p&gt;
For Apple, reinventing the television makes sense. It extends their walled garden into your living room. They already control your phone, tablet and computer and now they want the 10-foot experience. I hope they have solved all of the problems including creating a universal product that works around the world. I look forward to a product debut in 2012.
&lt;/p&gt;</description><link>http://robmorgan.id.au/post/14545128102</link><guid>http://robmorgan.id.au/post/14545128102</guid><pubDate>Wed, 21 Dec 2011 11:29:22 +0800</pubDate><category>apple</category><category>tv</category><category>appletv</category><category>television</category></item><item><title>A determined cat trying to break through an impenetrable cake...</title><description>&lt;iframe width="400" height="300" src="http://www.youtube.com/embed/RDa5IO9ASoc?wmode=transparent&amp;autohide=1&amp;egm=0&amp;hd=1&amp;iv_load_policy=3&amp;modestbranding=1&amp;rel=0&amp;showinfo=0&amp;showsearch=0" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;A determined cat trying to break through an impenetrable cake force field.&lt;/p&gt;</description><link>http://robmorgan.id.au/post/813247152</link><guid>http://robmorgan.id.au/post/813247152</guid><pubDate>Thu, 15 Jul 2010 10:03:34 +0800</pubDate><category>pets</category><category>cats</category><category>funny</category><category>video</category></item><item><title>clubsetc:


The Intelligence of Crows</title><description>&lt;object width="400" height="292"&gt;&lt;param name="movie" value="http://video.ted.com/assets/player/swf/EmbedPlayer.swf" /&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;param name="allowScriptAccess" value="always" /&gt;&lt;param name="wmode" value="transparent" /&gt;&lt;param name="bgColor" value="#ffffff" /&gt;&lt;param name="flashvars" value="vu=http://video.ted.com/talks/dynamic/JoshuaKlein_2008-medium.flv&amp;su=http://images.ted.com/images/ted/tedindex/embed-posters/JoshuaKlein-2008.embed_thumbnail.jpg&amp;vw=432&amp;vh=240&amp;ap=0&amp;ti=261&amp;introDuration=15330&amp;adDuration=4000&amp;postAdDuration=830&amp;adKeys=talk=joshua_klein_on_the_intelligence_of_crows;year=2008;theme=what_s_next_in_tech;theme=evolution_s_genius;theme=animals_that_amaze;theme=tales_of_invention;event=TED2008;&amp;preAdTag=tconf.ted/embed;tile=1;sz=512x288;" /&gt;&lt;embed src="http://video.ted.com/assets/player/swf/EmbedPlayer.swf" pluginspace="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" wmode="transparent" bgcolor="#ffffff" width="400" height="292" allowfullscreen="true" allowscriptaccess="always" flashvars="vu=http://video.ted.com/talks/dynamic/JoshuaKlein_2008-medium.flv&amp;su=http://images.ted.com/images/ted/tedindex/embed-posters/JoshuaKlein-2008.embed_thumbnail.jpg&amp;vw=432&amp;vh=240&amp;ap=0&amp;ti=261&amp;introDuration=15330&amp;adDuration=4000&amp;postAdDuration=830&amp;adKeys=talk=joshua_klein_on_the_intelligence_of_crows;year=2008;theme=what_s_next_in_tech;theme=evolution_s_genius;theme=animals_that_amaze;theme=tales_of_invention;event=TED2008;"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;&lt;a href="http://clubsetc.tumblr.com/post/755299416/the-intelligence-of-crows" class="tumblr_blog"&gt;clubsetc&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;&lt;!--copy and paste--&gt;
&lt;p&gt;The Intelligence of Crows&lt;/p&gt;&lt;/blockquote&gt;</description><link>http://robmorgan.id.au/post/757534875</link><guid>http://robmorgan.id.au/post/757534875</guid><pubDate>Thu, 01 Jul 2010 20:53:01 +0800</pubDate></item><item><title>camh:

I … I just don’t know anymore.</title><description>&lt;img src="http://25.media.tumblr.com/tumblr_l02ickZOl61qzprmho1_500.png"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;&lt;a href="http://camh.tumblr.com/post/482780444/i-i-just-dont-know-anymore" class="tumblr_blog"&gt;camh&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;I … I just don’t know anymore.&lt;/p&gt;&lt;/blockquote&gt;</description><link>http://robmorgan.id.au/post/483203802</link><guid>http://robmorgan.id.au/post/483203802</guid><pubDate>Tue, 30 Mar 2010 10:59:41 +0800</pubDate><category>ipad</category><category>apple</category><category>twitter</category><category>app store</category></item><item><title>‘Embrace Life’ - always wear your seat belt. An...</title><description>&lt;iframe width="400" height="225" src="http://www.youtube.com/embed/h-8PBx7isoM?wmode=transparent&amp;autohide=1&amp;egm=0&amp;hd=1&amp;iv_load_policy=3&amp;modestbranding=1&amp;rel=0&amp;showinfo=0&amp;showsearch=0" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;‘Embrace Life’ - always wear your seat belt. An original approach to road safety advertising from the Sussex Safer Roads Partnership.&lt;/p&gt;</description><link>http://robmorgan.id.au/post/406274622</link><guid>http://robmorgan.id.au/post/406274622</guid><pubDate>Tue, 23 Feb 2010 12:02:09 +0800</pubDate><category>video</category></item><item><title>Howto Log Directly to Your OS X Terminal using Zend Framework and NodeJS</title><description>&lt;p&gt;
Are you interested in being able to log directly to your OS X terminal from within your Zend Framework based app? If yes, then this tutorial may be for you!
&lt;/p&gt;

&lt;h4&gt;What is Zend Framework and NodeJS&lt;/h4&gt;
&lt;p&gt;
First of all you may be wondering about Zend Framework and NodeJS? &lt;a href="http://framework.zend.com"&gt;Zend Framework&lt;/a&gt; 
is a PHP 5 based development framework. It is commonly used to build web applications. &lt;a href="http://nodejs.org/"&gt;NodeJS&lt;/a&gt; is a tool designed to provide an easy way to build scalable network programs. By using
the I/O capabilities of NodeJS, I have built a simple &lt;a href="http://en.wikipedia.org/wiki/Transmission_Control_Protocol"&gt;TCP&lt;/a&gt; server that writes log messages to the OS X terminal (via STDOUT).
&lt;/p&gt;

&lt;h4&gt;Getting Started&lt;/h4&gt;

&lt;p&gt;
First of all you will need to have NodeJS installed. You can follow the instructions on their website:
&lt;a href="http://nodejs.org/#build"&gt;&lt;a href="http://nodejs.org/#build"&gt;http://nodejs.org/#build&lt;/a&gt;&lt;/a&gt;. You should also have a basic understanding of how to use
Git and GitHub.
&lt;/p&gt;

&lt;h4&gt;Running the Node_Log Server&lt;/h4&gt;

&lt;p&gt;
Start by cloning my GitHub repository (&lt;a href="http://github.com/robmorgan/node_log"&gt;&lt;a href="http://github.com/robmorgan/node_log"&gt;http://github.com/robmorgan/node_log&lt;/a&gt;&lt;/a&gt;) 
to a working directory on your system and start the server:
&lt;/p&gt;

&lt;pre&gt;
$ git clone git://github.com/robmorgan/node_log.git
$ cd node_log
$ /usr/local/bin/node node_log.js
&lt;/pre&gt;

&lt;p&gt;
The server will fire up and start listening on the default host and port (tcp://localhost:8003):
&lt;/p&gt;

&lt;img src="http://media.tumblr.com/tumblr_kxppvyPqVp1qaprs8.jpg"/&gt;&lt;p&gt;
Next we can begin logging events to the Node_Log server.
&lt;/p&gt;

&lt;h4&gt;Logging Events from your Zend Framework App&lt;/h4&gt;

&lt;p&gt;
I have written a Zend Framework compatible log writer specifically for Node_Log. It is available here:
&lt;a href="http://github.com/robmorgan/zfnode_log_writer"&gt;&lt;a href="http://github.com/robmorgan/zfnode_log_writer"&gt;http://github.com/robmorgan/zfnode_log_writer&lt;/a&gt;&lt;/a&gt;.
You can clone my git repository by executing:
&lt;/p&gt;

&lt;pre&gt;
$ git clone git://github.com/robmorgan/zfnode_log_writer.git
&lt;/pre&gt;

&lt;p&gt;
Next you should copy the contents of the &lt;i&gt;library/&lt;/i&gt; directory to the &lt;i&gt;library/&lt;/i&gt; directory within your 
Zend Framework based app. Now we are ready to log our first event to Node_Log. Simply include &lt;i&gt;Zend_Log&lt;/i&gt; and 
the log writer (ignore the includes if you use the Autoloader) and make a standard logging call. I have provided 
an example below:
&lt;/p&gt;

&lt;script src="http://gist.github.com/302310.js?file=test_nodelog_writer.php"&gt;&lt;/script&gt;&lt;p&gt;
And here&amp;#8217;s what the terminal output looks like:
&lt;/p&gt;

&lt;img src="http://media.tumblr.com/tumblr_kxppwru3lF1qaprs8.jpg"/&gt;&lt;h4&gt;Conclusion&lt;/h4&gt;

&lt;p&gt;
Now you have the ability to log to your OS X terminal direct from your ZF-based app!
In the future I plan to add a web interface, color highlighting based on severity and persistence of log messages to disk. 
Feel free to clone my GitHub repository if you&amp;#8217;d like to contribute. Have any questions? Please leave a 
comment below or &lt;a href="http://twitter.com/_rjm_"&gt;follow me on Twitter&lt;/a&gt; and @reply me.
&lt;/p&gt;</description><link>http://robmorgan.id.au/post/385010188</link><guid>http://robmorgan.id.au/post/385010188</guid><pubDate>Fri, 12 Feb 2010 13:17:12 +0800</pubDate><category>javascript</category><category>php</category><category>tutorial</category><category>zend framework</category><category>nodejs</category><category>git</category><category>github</category></item><item><title>Software I Use</title><description>&lt;p&gt;
Somebody asked me the other day about the software I use. So I decided to make a list and share it around. This list covers desktop, phone and web software and I&amp;#8217;ll add to it as I go.
&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;&lt;b&gt;Text Editor / Simple Coding Tool:&lt;/b&gt; &lt;a href="http://www.macromates.com"&gt;TextMate&lt;/a&gt; ($56) is the best by far. I use it to write my blog articles, ruby code and simple text files. I highly recommend buying a license.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Web Browser:&lt;/b&gt; I use &lt;a href="http://www.mozilla.com"&gt;Firefox&lt;/a&gt; (Free) with the &lt;a href="http://getfirebug.com/"&gt;Firebug&lt;/a&gt; (Free) development extension.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Email:&lt;/b&gt; &lt;a href="http://www.gmail.com"&gt;Gmail&lt;/a&gt; (Free) is web-based and also works on my iPhone.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;IDE:&lt;/b&gt; &lt;a href="http://www.eclipse.org"&gt;Eclipse&lt;/a&gt; (Free) with the &lt;a href="http://www.adobe.com/products/flex"&gt;Flex Builder&lt;/a&gt; ($249) and &lt;a href="http://www.eclipse.org/pdt"&gt;PDT&lt;/a&gt; for PHP (Free) plugins.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Image Editing:&lt;/b&gt; I&amp;#8217;m a developer, but I use &lt;a href="http://www.pixelmator.com"&gt;Pixelmator&lt;/a&gt; ($59) to quickly measure designs, chop images up and convert files between formats. It&amp;#8217;s lightning fast compared with Photoshop and Fireworks on my MacBook Pro. Well worth the small price-tag.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;FTP / SFTP / Amazon S3:&lt;/b&gt; &lt;a href="http://www.panic.com/transmit/"&gt;Transmit&lt;/a&gt; by Panic ($29.95) has proved itself over the years.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Blogging:&lt;/b&gt; &lt;a href="http://www.tumblr.com"&gt;Tumblr&lt;/a&gt; (Free) is good and it can host your custom domain name as well for nothing.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Web Stats:&lt;/b&gt; I&amp;#8217;ve always used &lt;a href="http://www.google.com/analytics"&gt;Google Analytics&lt;/a&gt; (Free), but I heard there are a few new good contenders albeit with Twitter, Bit.ly integration etc.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Twitter:&lt;/b&gt; I use &lt;a href="http://www.atebits.com/"&gt;Tweetie&lt;/a&gt; on my Macs and iPhone. I&amp;#8217;ve found it to be alot faster than TweetDeck as it&amp;#8217;s written in Cocoa.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Short URL Service:&lt;/b&gt; &lt;a href="http://bit.ly"&gt;Bit.ly&lt;/a&gt; (Free) is ridiculously simple and also provides statistics including referrer and timestamps for tracking your links.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Web Proxy:&lt;/b&gt; &lt;a href="http://www.charlesproxy.com/"&gt;Charles&lt;/a&gt; ($50) is an indispensable tool. I use it everyday and it&amp;#8217;s saved me so much time. The main features I love about it are the throttling for testing slow connections, decoding of binary AMF data, JSON data, XML support and also the ability to repeat and modify HTTP requests.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Music:&lt;/b&gt; &lt;a href="http://www.apple.com/itunes"&gt;iTunes&lt;/a&gt; (Free).&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Music Downloads:&lt;/b&gt; The iTunes Store and &lt;a href="http://www.beatport.com"&gt;Beatport&lt;/a&gt; are my favourites.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Music Production / Sharing:&lt;/b&gt; I have a premium account on &lt;a href="http://www.soundcloud.com"&gt;SoundCloud&lt;/a&gt; ($14/month). I use this to share my DJ sets, tracks and host my &lt;a href="http://robmorgan.dj/tagged/podcast"&gt;podcast&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;</description><link>http://robmorgan.id.au/post/367066962</link><guid>http://robmorgan.id.au/post/367066962</guid><pubDate>Tue, 02 Feb 2010 23:46:00 +0800</pubDate><category>software</category><category>web apps</category><category>iphone</category><category>desktop</category></item><item><title>My Thoughts on the iPad</title><description>&lt;p&gt;
Yesterday, Apple revealed their much-anticipated tablet device. As most of you probably know the announcement itself was quite controversial. It is still an impressive device, but it is virtually a larger form-factor iPhone. Mind you I would still love to get my hands on one.
&lt;/p&gt;

&lt;p&gt;
Lets start with the hardware. From the demo videos and the keynote we can see the device is really responsive and the 9.7-inch multitouch display looks gorgeous. According to Steve, the iPad has 10 hours of battery life and will be available from $US499. The device lacks a USB-port (although apparently there is an accessory), slots for removable media (Why no SD Support??) and a camera. The latter in my opinion is a big disappointment. This device could of been perfect for users at home talking to their friends all the way through to business users using the iPad for realtime video conferencing. However the real problem with this device lies with Apple&amp;#8217;s trend towards creating a closed and restrictive computing platform.
&lt;/p&gt;

&lt;p&gt;
Why is it a problem that Apple has complete control over the platform? Because Apple already has a history of preventing competitive applications from being distributed on the iPhone/iPod Touch. A great example of this is Adobe Flash. Mind you as Apple further develops or improves the functionality of existing applications, there is nothing stopping them from restricting or blocking third party applications.
&lt;/p&gt;

&lt;p&gt;
Whilst Apple has not officially specified whether or not the iPad supports flash, a popular image has been travelling around internet taken by an &lt;a href="http://www.engadget.com/2010/01/27/apples-ipad-keeping-adobe-flash-away-from-your-couch/"&gt;Engadget blogger&lt;/a&gt;.
&lt;/p&gt;

&lt;img src="http://www.blogcdn.com/www.engadget.com/media/2010/01/apple-creation-0128-rm-eng.jpg" alt="Missing Plugin"/&gt;&lt;p&gt;
Was this website viewed intentionally by Steve in the keynote? The answer is yes, but was this website used to demonstrate that the iPad will not support flash? I am unsure even though the missing plugin icon makes us certain. Without Adobe Flash support on the device, users will not be able to access the full range of content available on the web. Adobe Flash accounts for over 70% of games available on the web and 75% of online video. However Apple has ignorantly restricted their platform (through the App Store approval process and the absence of core software APIs) to make Flash on the iPad impossible.
&lt;/p&gt;

&lt;p&gt;
Apple has always argued that a fantastic user experience of both their hardware and software is paramount. I can definitely see how its in their best interests to create this type of platform. They get to sell the hardware, develop the guidelines and the core software, restrict competitors and benefit from the 70/30 revenue split with developers. The end result is complete control of their platform. Maybe they can argue there is no room for Flash because it affects the stability and battery life of the device? I&amp;#8217;m certain that this is not the case and that their motives are quite different. I believe its about suppressing the competition.
&lt;/p&gt;

&lt;p&gt;
I&amp;#8217;ve been an Apple user now since mid-2007 after jumping ship when Vista arrived. I believe as the web is moving more and more towards open technologies, Apple is severely damaging itself by creating this restrictive ecosystem. It affects developers, users and ultimately the progression of the web itself.
&lt;/p&gt;</description><link>http://robmorgan.id.au/post/359005544</link><guid>http://robmorgan.id.au/post/359005544</guid><pubDate>Fri, 29 Jan 2010 11:51:00 +0800</pubDate><category>apple</category><category>ipad</category><category>flash</category><category>adobe flash</category></item><item><title>Interactive CD Cover</title><description>&lt;iframe src="http://player.vimeo.com/video/8909955" width="400" height="225" frameborder="0"&gt;&lt;/iframe&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Interactive CD Cover&lt;/p&gt;</description><link>http://robmorgan.id.au/post/352788607</link><guid>http://robmorgan.id.au/post/352788607</guid><pubDate>Tue, 26 Jan 2010 00:50:05 +0800</pubDate><category>design</category><category>cd covers</category></item><item><title>Howto Publish a Pear Package on Pearhub</title><description>&lt;p&gt;
Here&amp;#8217;s a quick tutorial I put together to help you get started on Pearhub.
&lt;/p&gt;

&lt;h4&gt;The Differences Between Pear, the Pear Package System and the Pear Repository&lt;/h4&gt;
&lt;p&gt;
First of all you may be wondering what is Pear? From the &lt;a href="http://pear.php.net/manual/en/about.pear.php"&gt;Pear Documentation&lt;/a&gt; - &amp;#8220;PEAR is short for &amp;#8220;PHP Extension and Application Repository&amp;#8221; and is pronounced just like the fruit&amp;#8221;. It is an umbrella-term that encompasses a package management system, an official package repository, a coding standard and a command-line tool. For more information please read the Wikipedia page: &lt;a href="http://en.wikipedia.org/wiki/PEAR"&gt;&lt;a href="http://en.wikipedia.org/wiki/PEAR"&gt;http://en.wikipedia.org/wiki/PEAR&lt;/a&gt;&lt;/a&gt;.
&lt;/p&gt;

&lt;h4&gt;What is Pearhub?&lt;/h4&gt;
&lt;p&gt;
Now that we have learnt about Pear, you might be wondering what is Pearhub? From Pearhub.org - &amp;#8220;Pearhub is a pear channel and a pear package publishing platform. As a user, you can install packages. As a developer, you can publish packages&amp;#8221;. You can read Troels Knak-Nielsen&amp;#8217;s introductory blog post here: &lt;a href="http://www.sitepoint.com/blogs/2010/01/08/introducing-pearhub/"&gt;&lt;a href="http://www.sitepoint.com/blogs/2010/01/08/introducing-pearhub/"&gt;http://www.sitepoint.com/blogs/2010/01/08/introducing-pearhub/&lt;/a&gt;&lt;/a&gt;.
&lt;/p&gt;

&lt;h4&gt;See my Sample Project&lt;/h4&gt;

&lt;p&gt;For the purposes of this tutorial I have created a &lt;a href="http://github.com/robmorgan/pearhub-tutorial"&gt;sample repository&lt;/a&gt; on my Github account. You can have a look before we get started or even fork it to your own account. The project has been published on Pearhub here: &lt;a href="http://pearhub.org/projects/pearhub_tutorial"&gt;&lt;a href="http://pearhub.org/projects/pearhub_tutorial"&gt;http://pearhub.org/projects/pearhub_tutorial&lt;/a&gt;&lt;/a&gt;.
&lt;/p&gt;

&lt;h4&gt;Getting Started&lt;/h4&gt;

&lt;p&gt;
First of all you will need a couple of things - an OpenID account, an account on GitHub and a working copy of Git installed. Pearhub also supports Subversion, but we&amp;#8217;ll be using Git for this tutorial. You can get a free OpenID account at &lt;a href="https://www.myopenid.com/signup"&gt;myopenid.com&lt;/a&gt;. Also this tutorial was written for Mac OS X, so you&amp;#8217;ll need to adapt it for other platforms. Finally, you should have a basic understanding of pear, php and git.
&lt;/p&gt;

&lt;h4&gt;Developing a Project Locally&lt;/h4&gt;

&lt;p&gt;
Start by creating a new directory. I have labelled mine &amp;#8216;&lt;i&gt;pearhub-tutorial&lt;/i&gt;&amp;#8217;. This is going to be the root of the Git repository and contain your new project. Open up your favorite text editor or IDE (I happen to use TextMate) and insert the following code:
&lt;/p&gt;

&lt;script src="http://gist.github.com/273464.js?file=pearhubtutorial.php"&gt;&lt;/script&gt;&lt;p&gt;
Now save the file (I named my file &amp;#8216;&lt;i&gt;pearhubtutorial.php&lt;/i&gt;&amp;#8217;).
&lt;/p&gt;

&lt;p&gt;
&lt;b&gt;Note:&lt;/b&gt; You can skip this step and use the code from any pre-existing project you may have. Next we will need to create a new repository on GitHub to push this project to.
&lt;/p&gt;

&lt;h4&gt;Creating a Repository on GitHub&lt;/h4&gt;

&lt;p&gt;
Sign into GitHub and create a &lt;a href="http://github.com/repositories/new"&gt;new repository&lt;/a&gt;. This is where we&amp;#8217;ll develop your project before publishing it on Pearhub.
&lt;/p&gt;

&lt;img src="http://media.tumblr.com/tumblr_kvyw41ADe51qaprs8.jpg"/&gt;&lt;p&gt;
Next fire up the OS X Terminal and switch to your working directory. We are going to initialize a local Git repository and push it up to GitHub. This can be achieved by issuing the following commands:
&lt;/p&gt;

&lt;pre&gt;
$ git init
$ git add pearhubtutorial.php
$ git commit -m 'initial commit'
$ git remote add origin git@github.com:yourusername/yourrepository.git
$ git push origin master
&lt;/pre&gt;

&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; Be sure to substitute &amp;#8216;&lt;i&gt;yourusername&lt;/i&gt;&amp;#8217; and &amp;#8216;&lt;i&gt;yourrepository&lt;/i&gt;&amp;#8217; with your respective details. The terminal output should look similar to this:&lt;/p&gt;

&lt;img src="http://media.tumblr.com/tumblr_kvyxlfhYJB1qaprs8.jpg"/&gt;&lt;p&gt;If you were successfully able to push your project up to GitHub, then the repository browser should show your source-code:
&lt;/p&gt;

&lt;img src="http://media.tumblr.com/tumblr_kvyxzyvWjq1qaprs8.jpg"/&gt;&lt;p&gt;We are now ready to publish your project on Pearhub.&lt;/p&gt;

&lt;h4&gt;Publishing Your Project on Pearhub&lt;/h4&gt;

&lt;p&gt;Navigate to &lt;a href="http://pearhub.org"&gt;Pearhub.org&lt;/a&gt; and log in using your OpenID. Click the &amp;#8216;&lt;a href="http://www.pearhub.org/projects?new"&gt;Register your project on pearhub&lt;/a&gt;&amp;#8217; link and fill out the form. In the files section I have chosen to set the path to my repository root (/). You could also set this to something like &amp;#8216;&lt;i&gt;/lib&lt;/i&gt;&amp;#8217; if you wanted to include sample code in your repository. See the following screenshot for more information:
&lt;/p&gt;

&lt;img src="http://media.tumblr.com/tumblr_kvyzooSuh31qaprs8.jpg"/&gt;&lt;p&gt;
&lt;b&gt;Note:&lt;/b&gt; At the time of writing you must specify a value in the license field. Enter the value &amp;#8216;None&amp;#8217; in the &amp;#8216;&lt;i&gt;title&lt;/i&gt;&amp;#8217; field and your Github repository URL in the &amp;#8216;&lt;i&gt;href&lt;/i&gt;&amp;#8217; field. Also make sure you enter an email address in the lead maintainer section as Pear requires this. Leave the release policy as &amp;#8216;Automatic&amp;#8217; and hit &amp;#8216;Create project&amp;#8217;.
&lt;/p&gt;

&lt;p&gt;
Pearhub will create your project and show you its summary page. Next click &amp;#8216;Show releases&amp;#8217;. You will notice Pearhub has added your project to it&amp;#8217;s build queue. It will now begin polling your specified repository for tags. When it detects a new tag it will connect to your GitHub repository and package up your release. In the next step we will tag your first release.
&lt;/p&gt;

&lt;img src="http://media.tumblr.com/tumblr_kvyzq6ztMN1qaprs8.jpg"/&gt;&lt;h4&gt;Tagging the Initial Release&lt;/h4&gt;

&lt;p&gt;
Now that your project has been published on Pearhub we are ready to tag a release. Pearhub requires you to tag your releases so it can keep track of them. In order for Pearhub to recognize a tagged release, you will need to follow a naming convention called &lt;a href="http://semver.org/"&gt;Semantic Versioning&lt;/a&gt;. Switch back to your terminal window and execute the following commands to tag a release and push it up to GitHub:
&lt;/p&gt;

&lt;pre&gt;
$ git tag -a v0.0.1 -m 'Tagged Release 0.0.1'
$ git push origin : v0.0.1
&lt;/pre&gt;

&lt;p&gt;
The version you pushed up to GitHub should now be visible under the &amp;#8216;Tags&amp;#8217; drop down in the repository browser. In the next few minutes Pearhub will detect the new version and begin building a release. It is now a good time to head back over to your project&amp;#8217;s Pearhub release page and wait for the first version to start building. When the status of your release changes from &amp;#8216;&lt;i&gt;building&lt;/i&gt;&amp;#8217; to &amp;#8216;&lt;i&gt;completed&lt;/i&gt;&amp;#8217; we are ready to move to the next step.
&lt;/p&gt;

&lt;h4&gt;Installing Your Package&lt;/h4&gt;

&lt;p&gt;
To install your newly published package, we need to add the Pearhub channel to your local Pear installation. This step is quite simple:
&lt;/p&gt;

&lt;pre&gt;
$ sudo pear channel-discover pearhub.org
&lt;/pre&gt;

&lt;p&gt;
Next execute the following command to install the latest version of your Pear package (Be sure to replace &amp;#8216;yourpackagename&amp;#8217; with the name of your package):
&lt;/p&gt;

&lt;pre&gt;
$ sudo pear install pearhub/yourpackagename
&lt;/pre&gt;

&lt;p&gt;
Pear will connect to Pearhub and install your newly published package. In my case I can find the file here on my filesystem: &amp;#8216;&lt;i&gt;/usr/lib/php/pearhubtutorial.php&lt;/i&gt;&amp;#8217;. You can now use your package like you would with any other standard Pear release.
&lt;/p&gt;

&lt;h4&gt;Using Your Package&lt;/h4&gt;

&lt;p&gt;
If you published the tutorial package it&amp;#8217;s usage is quite simple. Simply include the script and call the &amp;#8216;getString()&amp;#8217; method. This method returns &amp;#8216;Hello World&amp;#8217;.
&lt;/p&gt;

&lt;script src="http://gist.github.com/273951.js?file=pearhubtest.php"&gt;&lt;/script&gt;&lt;h4&gt;Conclusion&lt;/h4&gt;

&lt;p&gt;
Hopefully this tutorial has given you a basic understanding of using Pearhub. You should be able to adapt these instructions to suit your own code/projects. If you still have any questions you can read the &lt;a href="http://www.pearhub.org/faq"&gt;Pearhub FAQ&lt;/a&gt; or &lt;a href="http://twitter.com/_rjm_"&gt;follow me on Twitter&lt;/a&gt; and send me a Direct Message.
&lt;/p&gt;</description><link>http://robmorgan.id.au/post/322528178</link><guid>http://robmorgan.id.au/post/322528178</guid><pubDate>Fri, 08 Jan 2010 10:29:00 +0800</pubDate><category>php</category><category>pearhub</category><category>git</category><category>svn</category><category>github</category><category>tutorial</category></item><item><title>Some Thoughts on Social Location Sharing - Gowalla / Foursquare [video]</title><description>&lt;p&gt;&lt;a href="http://kevinrose.com/post/321201305/gowalla-foursquare" class="tumblr_blog"&gt;kevinrose&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;
&lt;object height="344" width="425" data="http://www.youtube.com/v/UlJy343uJdE&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;rel=0" type="application/x-shockwave-flash"&gt;
&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;param name="src" value="http://www.youtube.com/v/UlJy343uJdE&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;rel=0"&gt;&lt;param name="allowfullscreen" value="true"&gt;&lt;/object&gt;
&lt;/p&gt;&lt;/blockquote&gt;</description><link>http://robmorgan.id.au/post/322349896</link><guid>http://robmorgan.id.au/post/322349896</guid><pubDate>Fri, 08 Jan 2010 08:36:55 +0800</pubDate></item><item><title>The anti-whaling group Sea Shepherd’s hi-tech stealth boat...</title><description>&lt;iframe width="400" height="300" src="http://www.youtube.com/embed/Bbuq0YEIPNU?wmode=transparent&amp;autohide=1&amp;egm=0&amp;hd=1&amp;iv_load_policy=3&amp;modestbranding=1&amp;rel=0&amp;showinfo=0&amp;showsearch=0" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;The anti-whaling group Sea Shepherd’s hi-tech stealth boat Ady Gil was hit and damaged by a Japanese whaling fleet vessel in Antarctic waters.&lt;/p&gt;</description><link>http://robmorgan.id.au/post/322329484</link><guid>http://robmorgan.id.au/post/322329484</guid><pubDate>Fri, 08 Jan 2010 08:23:00 +0800</pubDate></item><item><title>The Prodigy Invaders Must Die book Signing.</title><description>&lt;iframe width="400" height="300" src="http://www.youtube.com/embed/YWpFF8V9kA0?wmode=transparent&amp;autohide=1&amp;egm=0&amp;hd=1&amp;iv_load_policy=3&amp;modestbranding=1&amp;rel=0&amp;showinfo=0&amp;showsearch=0" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;The Prodigy Invaders Must Die book Signing.&lt;/p&gt;</description><link>http://robmorgan.id.au/post/321522928</link><guid>http://robmorgan.id.au/post/321522928</guid><pubDate>Thu, 07 Jan 2010 21:12:00 +0800</pubDate></item><item><title>Singleton Pattern in Actionscript 3</title><description>&lt;p&gt;
Here is the current implementation of the singleton pattern I use in ActionScript 3.0:
&lt;/p&gt;

&lt;script src="http://gist.github.com/113390.js?file=AS3Singleton.as"&gt;&lt;/script&gt;</description><link>http://robmorgan.id.au/post/319162827</link><guid>http://robmorgan.id.au/post/319162827</guid><pubDate>Wed, 06 Jan 2010 12:08:00 +0800</pubDate><category>as3</category><category>actionscript</category><category>singleton</category><category>design pattern</category></item><item><title>2010 New Year's Resolutions</title><description>&lt;p&gt;Here&amp;#8217;s a few things I&amp;#8217;d like to achieve:&lt;/p&gt;
&lt;ol&gt;&lt;li&gt;Take more photos&lt;/li&gt;
&lt;li&gt;Start Blogging again (see &lt;a href="http://twitter.com/p52info"&gt;@p52info&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Start a music related podcast (done: &lt;a href="http://robmorgan.dj/tagged/podcast"&gt;&lt;a href="http://robmorgan.dj/tagged/podcast"&gt;http://robmorgan.dj/tagged/podcast&lt;/a&gt;&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Travel&lt;/li&gt;
&lt;li&gt;Make a contribution to my Super&lt;/li&gt;
&lt;li&gt;Launch a Web App&lt;/li&gt;
&lt;li&gt;Build an iPhone app&lt;/li&gt;
&lt;li&gt;Wake up Earlier in the Mornings&lt;/li&gt;
&lt;/ol&gt;</description><link>http://robmorgan.id.au/post/312637891</link><guid>http://robmorgan.id.au/post/312637891</guid><pubDate>Sat, 02 Jan 2010 16:50:00 +0800</pubDate></item><item><title>Sebastian Ingrosso Playing his and Dirty South’s remix of...</title><description>&lt;iframe width="400" height="300" src="http://www.youtube.com/embed/7IS-tU3NHZM?wmode=transparent&amp;autohide=1&amp;egm=0&amp;hd=1&amp;iv_load_policy=3&amp;modestbranding=1&amp;rel=0&amp;showinfo=0&amp;showsearch=0" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Sebastian Ingrosso Playing his and Dirty South’s remix of Silvia by Miike Snow.&lt;/p&gt;</description><link>http://robmorgan.id.au/post/312527227</link><guid>http://robmorgan.id.au/post/312527227</guid><pubDate>Sat, 02 Jan 2010 15:25:55 +0800</pubDate></item></channel></rss>

