1. A determined cat trying to break through an impenetrable cake force field.

     
  2. 20:53 1st Jul 2010

    notes: 4

    comments: 0

    reblogged from: clubsetc

    clubsetc:

    The Intelligence of Crows

     
  3. 10:59 30th Mar 2010

    notes: 37

    comments: 0

    reblogged from: camh

    tags: ipadappletwitterapp store

    image: download

    camh:

I … I just don’t know anymore.

    camh:

    I … I just don’t know anymore.

     
  4. 12:02 23rd Feb 2010

    comments: 0

    tags: video

    ‘Embrace Life’ - always wear your seat belt. An original approach to road safety advertising from the Sussex Safer Roads Partnership.

     
  5. Howto Log Directly to Your OS X Terminal using Zend Framework and NodeJS

    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!

    What is Zend Framework and NodeJS

    First of all you may be wondering about Zend Framework and NodeJS? Zend Framework is a PHP 5 based development framework. It is commonly used to build web applications. NodeJS 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 TCP server that writes log messages to the OS X terminal (via STDOUT).

    Getting Started

    First of all you will need to have NodeJS installed. You can follow the instructions on their website: http://nodejs.org/#build. You should also have a basic understanding of how to use Git and GitHub.

    Running the Node_Log Server

    Start by cloning my GitHub repository (http://github.com/robmorgan/node_log) to a working directory on your system and start the server:

    $ git clone git://github.com/robmorgan/node_log.git
    $ cd node_log
    $ /usr/local/bin/node node_log.js
    

    The server will fire up and start listening on the default host and port (tcp://localhost:8003):

    Next we can begin logging events to the Node_Log server.

    Logging Events from your Zend Framework App

    I have written a Zend Framework compatible log writer specifically for Node_Log. It is available here: http://github.com/robmorgan/zfnode_log_writer. You can clone my git repository by executing:

    $ git clone git://github.com/robmorgan/zfnode_log_writer.git
    

    Next you should copy the contents of the library/ directory to the library/ directory within your Zend Framework based app. Now we are ready to log our first event to Node_Log. Simply include Zend_Log and the log writer (ignore the includes if you use the Autoloader) and make a standard logging call. I have provided an example below:

    And here’s what the terminal output looks like:

    Conclusion

    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’d like to contribute. Have any questions? Please leave a comment below or follow me on Twitter and @reply me.

     
  6. Software I Use

    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’ll add to it as I go.

    • Text Editor / Simple Coding Tool: TextMate ($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.
    • Web Browser: I use Firefox (Free) with the Firebug (Free) development extension.
    • Email: Gmail (Free) is web-based and also works on my iPhone.
    • IDE: Eclipse (Free) with the Flex Builder ($249) and PDT for PHP (Free) plugins.
    • Image Editing: I’m a developer, but I use Pixelmator ($59) to quickly measure designs, chop images up and convert files between formats. It’s lightning fast compared with Photoshop and Fireworks on my MacBook Pro. Well worth the small price-tag.
    • FTP / SFTP / Amazon S3: Transmit by Panic ($29.95) has proved itself over the years.
    • Blogging: Tumblr (Free) is good and it can host your custom domain name as well for nothing.
    • Web Stats: I’ve always used Google Analytics (Free), but I heard there are a few new good contenders albeit with Twitter, Bit.ly integration etc.
    • Twitter: I use Tweetie on my Macs and iPhone. I’ve found it to be alot faster than TweetDeck as it’s written in Cocoa.
    • Short URL Service: Bit.ly (Free) is ridiculously simple and also provides statistics including referrer and timestamps for tracking your links.
    • Web Proxy: Charles ($50) is an indispensable tool. I use it everyday and it’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.
    • Music: iTunes (Free).
    • Music Downloads: The iTunes Store and Beatport are my favourites.
    • Music Production / Sharing: I have a premium account on SoundCloud ($14/month). I use this to share my DJ sets, tracks and host my podcast.
     
  7. My Thoughts on the iPad

    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.

    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’s trend towards creating a closed and restrictive computing platform.

    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.

    Whilst Apple has not officially specified whether or not the iPad supports flash, a popular image has been travelling around internet taken by an Engadget blogger.

    Missing Plugin

    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.

    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’m certain that this is not the case and that their motives are quite different. I believe its about suppressing the competition.

    I’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.

     
  8. Interactive CD Cover

     
  9. Howto Publish a Pear Package on Pearhub

    Here’s a quick tutorial I put together to help you get started on Pearhub.

    The Differences Between Pear, the Pear Package System and the Pear Repository

    First of all you may be wondering what is Pear? From the Pear Documentation - “PEAR is short for “PHP Extension and Application Repository” and is pronounced just like the fruit”. 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: http://en.wikipedia.org/wiki/PEAR.

    What is Pearhub?

    Now that we have learnt about Pear, you might be wondering what is Pearhub? From Pearhub.org - “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”. You can read Troels Knak-Nielsen’s introductory blog post here: http://www.sitepoint.com/blogs/2010/01/08/introducing-pearhub/.

    See my Sample Project

    For the purposes of this tutorial I have created a sample repository 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: http://pearhub.org/projects/pearhub_tutorial.

    Getting Started

    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’ll be using Git for this tutorial. You can get a free OpenID account at myopenid.com. Also this tutorial was written for Mac OS X, so you’ll need to adapt it for other platforms. Finally, you should have a basic understanding of pear, php and git.

    Developing a Project Locally

    Start by creating a new directory. I have labelled mine ‘pearhub-tutorial’. 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:

    Now save the file (I named my file ‘pearhubtutorial.php’).

    Note: 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.

    Creating a Repository on GitHub

    Sign into GitHub and create a new repository. This is where we’ll develop your project before publishing it on Pearhub.

    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:

    $ 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
    

    Note: Be sure to substitute ‘yourusername’ and ‘yourrepository’ with your respective details. The terminal output should look similar to this:

    If you were successfully able to push your project up to GitHub, then the repository browser should show your source-code:

    We are now ready to publish your project on Pearhub.

    Publishing Your Project on Pearhub

    Navigate to Pearhub.org and log in using your OpenID. Click the ‘Register your project on pearhub’ 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 ‘/lib’ if you wanted to include sample code in your repository. See the following screenshot for more information:

    Note: At the time of writing you must specify a value in the license field. Enter the value ‘None’ in the ‘title’ field and your Github repository URL in the ‘href’ field. Also make sure you enter an email address in the lead maintainer section as Pear requires this. Leave the release policy as ‘Automatic’ and hit ‘Create project’.

    Pearhub will create your project and show you its summary page. Next click ‘Show releases’. You will notice Pearhub has added your project to it’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.

    Tagging the Initial Release

    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 Semantic Versioning. Switch back to your terminal window and execute the following commands to tag a release and push it up to GitHub:

    $ git tag -a v0.0.1 -m 'Tagged Release 0.0.1'
    $ git push origin : v0.0.1
    

    The version you pushed up to GitHub should now be visible under the ‘Tags’ 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’s Pearhub release page and wait for the first version to start building. When the status of your release changes from ‘building’ to ‘completed’ we are ready to move to the next step.

    Installing Your Package

    To install your newly published package, we need to add the Pearhub channel to your local Pear installation. This step is quite simple:

    $ sudo pear channel-discover pearhub.org
    

    Next execute the following command to install the latest version of your Pear package (Be sure to replace ‘yourpackagename’ with the name of your package):

    $ sudo pear install pearhub/yourpackagename
    

    Pear will connect to Pearhub and install your newly published package. In my case I can find the file here on my filesystem: ‘/usr/lib/php/pearhubtutorial.php’. You can now use your package like you would with any other standard Pear release.

    Using Your Package

    If you published the tutorial package it’s usage is quite simple. Simply include the script and call the ‘getString()’ method. This method returns ‘Hello World’.

    Conclusion

    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 Pearhub FAQ or follow me on Twitter and send me a Direct Message.

     
  10. Some Thoughts on Social Location Sharing - Gowalla / Foursquare [video]