Life in New Zealand

We have been rather busy!
About 7 months ago we moved our family back to New Zealand, and we're now living in Milford on the North Shore of Auckland.
It has been a great experience, the kids are in a new school, we are close to the 8 other cousins who come around and play often. Both sets of grandparents are around to help and to enjoy having everyone back in the country again. My brother in law is also back in NZ with their 2 kids after 10 years in Hong Kong.
So it was 11 years in London in the end - a bit more than the 2 or 3 we planned, but we have some great memories and a lot of work experience over there.
Anne's company Orion Health relocated us, which was nice as our shipping would have cost a lot (about half a container), compared to the 2 suitcases each that we had 11 years ago.
I have set up a digital agency specialising in lead generation for businesses using chatbots and more specifically Facebook Messenger. I have been working with ad campaigns, Facebook APIs and eCommerce for so long now it was time to switch to helping other businesses, and it seems the perfect time to do so with such amazing opportunities through messenger opening up to businesses. My website is which is a great domain for NZ and one that numerous companies have tried to buy off me while I've been away - finally time to make good use of it.
So if you're in New Zealand, look us up!

Here is a photo if Milford beach, just down the road - my runs in the morning are spectacular.

Posted on 23 June 2019 | 3:40 pm

An ad for home builders

You build it... I'll help you find people to move into it! You probably already know this, but most Home builders are...

Posted by Prosper Technologies Ltd on Saturday, 22 June 2019

Posted on 23 June 2019 | 3:28 pm

360 Degree Google Map Walkthroughs

I've been working with a Gear 360 camera to make 360 degree walkthroughs for businesses. Here are some examples:

Third Door Workhub & Nursery
(if you can't see this, view on ProsperTech Blog) Showroom
(if you can't see this, view it on ProsperTech Blog)

Lots of fun connecting up the dots and ensuring the flow works well.

Posted on 16 May 2017 | 12:51 pm

Code for the Kingdom 2016

I have taken a back seat from constant meet ups and hack weekends the past few years - I started The London Web a group which has 4800 members and counting… Kids are now the priority without grandparents around for us in London - getting out to London when you’re based close to the school run can prove quite difficult to co-ordinate.
I am fortunate enough to have combined my Christian faith with my passion for code and web application development - for the past 3 years I’ve been building and maintaining Lepton - a church giving app. I’ve been doing web development for 20 years, but only just 3 years ago got the chance to do this for the thing that I’m most passionate about - my faith and love of Christ and his church.
Many have this perception that it is the clergy - the church leaders, that have the main role to play - that’s not quite true.
As christian developers and technology professionals, I believe we play the most important background scene in this technology based world.
The church is about communicating Christ and his message - before I was a teenager, computers were for insular activities - your own games, your own code - then the internet came and every bit of our Communication sphere has changed - now the church is still in many ways in the dark ages - well we have at least moved on from OHP’s (Over Head Projectors) - and we have computers for things now - and you get emails - wow that’s a change -
For most churches, their IT department is under-utilised, a bit of a mess to be frank - IT contractors are expensive, and IT is a bit ‘ad-hoc’. We have a major role to play over the next few years to ensure the church “Gets with the times”..
Join me and other christians in tech - and we’ll change this - co-ordinate visions, work out our passions, our interests, and apply them to our faith..
The Code For the Kingdom Hack weekend is the second EVER in London - the first year,
= Voice Recognition Slide Transitions = iBeacons for the homeless - give to them without risk of them using your money for alcohol and drugs. = Refuge Homes - a registry of the places UK refuges can be accommodated by our communities = Prayer app collaborations = just a few to spark your interest.
This year I’m planning on hitting the ground full force with coding tools I am totally familiar with - last year I tackled Django for just the second time and it was a bit much - this year the code will be cranked out with passion through the night - and I’ll still probably get more sleep than when my kids are around!
Search “Code for the Kingdom” and get your tickets - it’s a global event with 16 cities taking part on one weekend ! It’s on the 21st to the 23rd of October 2016 - it’s going to be awesome!

Posted on 12 October 2016 | 2:25 pm

Hack Weekend Plans

As a group of Christians in tech, about 10 of us have been meeting for a number of months to plan a Hack Weekend in combination with 13 other cities around the world. It's called Code For The Kingdom, and the London base will be on the 2nd of October 2015 starting Friday evening and ending Sunday afternoon.
I thought I'd share some of the vision behind it:

We have so much to offer as Christians in tech. In 2 Solomon 2 vs 7 it says:
"Send me, therefore, a man skilled to work in gold and silver, bronze and iron, and in purple, crimson and blue yarn, and experienced in the art of engraving, to work in Judah and Jerusalem with my skilled workers, whom my father David provided."
Although it didn't mention "programming" or "IT" in the building of the temple, I have no doubt that Jesus calls us all to be professionals and use our skills and gifts for His glory. What better way to start this than joining us on 2 October. Sign up here!

Posted on 1 September 2015 | 7:31 am

Upgrade Crucial m4 SSD firmware on Mac without CD drive

I recently found my system crashing after about an hour, this would happen without doing anything in particular.
I did some investigation, cleaned up drives, etc, then found out it was my 512GB SSD that I bought over two years ago - it needed a firmware upgrade.
So I followed the information in the above link, only to find it didn't work for the mac.
After a lot of hunting I found this article which pointed to this older article that wasn't needing translation.
I followed the tutorial, and took the advice to section off a bit of my extra hard drive (the non SSD 750GB drive in the DVD Rom enclosure), and tried to boot off it - it wouldn't boot.
So now that I had the correct disk image copied from my flash rom drive on a 5GB partition on my 750GB drive, I found I needed to download the newer rEFIND Boot Manager , specifically the USB flash drive image file, and followed the instructions to install it on the 16GB Flash ROM drive.
I plugged the 16GB Flash ROM drive in, restarted while holding down the option key, and it asked me to select my usual options but also a orange drive that was the rEFIND Boot Manager that was on the Flash ROM Drive. Once selected it asked me if I wanted to use the SYSLINUX partition that I had made by following the article above. From there I followed the instructions to install the firmware upgrade.
I hope this helps someone!

Posted on 2 September 2014 | 5:09 am

Upgrading OpenSSL on Ubuntu 12.04

I needed to upgrade my Ubuntu box to patch the Heart Bleed bug in OpenSSL. Here's what I did:

apt-get remove openssl
cd /tmp
sudo wget
tar -zxvf openssl-1.0.1g.tar.gz
cd /tmp/openssl-1.0.1g
make install
sudo mandb
vi /etc/environment
log back in again

Posted on 21 April 2014 | 3:04 pm

Working Remotely

After 6 years in the UK, my next five months will be working remotely for a UK client from New Zealand. So far things have gone well, with communication and catch ups happening at 10.15pm in the evening my time (9.15am UK time). I'm working on Lepton, which has an iPhone app and a mobile web interface at

Posted on 6 January 2014 | 2:27 pm

My Available Days in 2013

So the latest news is that I have some availability again for contract work. View here if you're connected to me on Google+

I've created a calendar for my availability for "Symfony 2 PHP Development", best practice training, and web development support for 2013. If you know me, you already know that I've been doing web development for 16 years, so can take on all manner of projects, but I'd prefer them to be built with Symfony 2 and jQuery.

The calendar will be booked up on a first come, first accepted basis. Generally I'll require a £100 deposit, but this can be negotiated based on connections.

I'll be in contact about all bookings, so be sure to leave your contact details when you book in! I can be on-site in London for the full 8 hour day. Please contact me @nathanlon on all social platforms for further details.

Posted on 27 July 2013 | 2:10 am

Installing PHP 5.4.4 with Ubuntu 12.04

edited /etc/apt/sources.list
deb squeeze all
deb-src squeeze all
deb squeeze-php54 all
deb-src squeeze-php54 all
deb squeeze php54
edited /etc/apt/preferences
Package: *
Pin: release a=testing
Pin-Priority: -10
apt-get update
apt-get install php5

Posted on 13 July 2012 | 3:41 pm

XML Default Namespaces

The following code can work for XML default namespace.
$xml = <<<EOT
<?xml version="1.0" encoding="UTF-8"?>
<entry xmlns="" xmlns:other="" >
$doc = new DOMDocument;
$xpath = DOMXPath($doc);
$xpath->registerNamespace('atom', "");
$xpath_str = '//atom:entry/atom:published/text()';
$entries = $xpath->evaluate($xpath_str);
print $entries->item(0)->nodeValue ."n";

Posted on 19 February 2012 | 1:46 pm

Symfony2 Services Notes

A service has a class, arguments to pass in on instantiation (can be other services @mailer) (must be present in constructor)

arguments can be optional (@?my_mailer),

outside of the constructor, with the calls: yml line under class, e.g. - [ setMailer, [ @my_mailer ] ]

services are by default public.

If two services have common dependencies or calls requirements, extend each from an abstract, and use parent: abstract_class_name for each service,

with the abstract defined higher up - set with abstract: true, and the calls on these.

You can override the calls parameter on the service that extends a parent, by adding calls to this too, and using the same key. Note that it is then called twice, so if you want to add to an array you can (otherwise it gets replaced with the last call). You could remove parent param from extender to stop this.

Factories can be used to make a service (if more complex than just passing other services in as arguments), first define the factory,

then use factory_service: yml line referencing the factory key. For the method used within this factory, define it as factory_method: , e.g. get.

For arguments you wish to pass into the get method, use arguments: - an array - @templating for example.

Services can have tags, which implies that the service is to be used for a specific purpose.

Posted on 25 January 2012 | 5:13 am

PHP5.3 on Ubuntu Lucid Lynx 10.4

I found myself needing to install PHP5.3 on a new install of Ubuntu Lucid Lynx 10.4 recently, here's how I did it:
Had to get libicu38
Had to remove the newer version of libkrb - which removed apache and everything (couldn't ssh in after this - so need to then
apt-get install openssh-server
aptitude install libicu38 apache2 apache2-mpm-prefork mysql-client-5.1 mysql-server-5.1 php5 php5-cli php5-mysql libapache2-mod-php5
set timezone in /etc/php5/apache2/php.ini :
date.timezone = Europe/London
I also wanted mod_rewrite:
sudo a2enmod rewrite
aptitude install curl curl-ssl php5-curl
/etc/init.d/apache2 restart
Hope this helps someone.

Posted on 5 December 2010 | 9:33 am

XDebug using a Parallels VM and PHPStorm 1.0.2

I wanted to get XDebug working with my new IDE of choice: PHPStorm. I'm running a Parallels Virtual Machine (VM) with Ubuntu on it, and sharing my local folder on my Mac running Leopard.
I already had PHP 5.3.2, Apache 2.0 and mySQL running on the VM.
I installed XDebug using:
apt-get install php5-xdebug
This added a file named: "/usr/lib/php5/20090626+lfs/"
I then went in to /etc/php5/apache2/php.ini and added the following lines to the bottom:

Another time, I used this:
I also checked there was no zend lines referring to zend debuggers etc, which conflict.
The IP I used above was not the IP of the VM as reported when using ifconfig on the VM, it was instead the IP of my host machine (my mac):
ifconfig on my mac:

I added a file phpinfo.php with to see the xdebug settings:

I now needed to set up PHPStorm to use this configuration:
Under: Run > Edit Configurations in PHPStorm:

Clicking on Server path mappings:

Above, I made sure to use the mount point that the VM was using - this was configured using Parallels > Virtual Machine > Configure > Shared Folders options tab previously when setting up my VM.
I had mapped the /media/psf/ mapping to /var/www/ using a symlink. ( ln -s)
Here is the server configuration

and the mappings tab:

I made sure my VM Apache was restarted:
/etc/init.d/apache2 restart
Now to debug, I could click the Run > Debug option in PHPStorm.
I hope this helps someone. Any questions, please email nathan [ at ] eit dot co dot nz.

Posted on 13 March 2012 | 6:23 am

GIT with CruiseControl

To get GIT to work as a plugin within cruisecontrol, you need to configure like this:
<plugin name="git" classname="net.sourceforge.cruisecontrol.sourcecontrols.Git" />
This is not obvious when looking here:
The resulting config.xml file will look like this:
<project name="socialgo" buildafterfailed="true">
<currentbuildstatuslistener file="logs/${}/status.txt"/>
<modificationset quietperiod="60">
<git localWorkingCopy="projects/${}/source/"/>
<plugin name="git" classname="net.sourceforge.cruisecontrol.sourcecontrols.Git" />
<antbootstrapper anthome="apache-ant-1.7.0" buildfile="projects/${}/build.xml" target="build" />
<schedule interval="300">
<ant anthome="apache-ant-1.7.0" buildfile="projects/${}/build.xml"/>
<merge dir="projects/${}/target/test-results"/>
<artifactspublisher dest="artifacts/${}" file="projects/${}/target/${}.jar"/>

Posted on 14 June 2010 | 9:29 am

Calum's website

Calum Ryan ( @zizzfusion ) is offering a free pizza voucher prize - and although I love pizza, I'm always interested in commenting or helping on any website designs that people ask for feedback about.
The website is:
The things that I like:
- that smokey look at the top
- easy to see fresh articles from the homepage - with comment count as bubbles.
- simple top right navigation
- a contact form on the homepage
- flickr photos
- screen shot popup - love these things.
The things I would change (if I had time - and yeah, I never do have time so I understand):
- the positioning of the popup about this competition - overlays the logo - could do with a cookie check to see it doesn't show again when refresh the homepage, but ideally slide it in, and position it so it doesn't look like an overlay banner advert.
- when viewing on 1024*768 there is no margin and slightly to wide, so the nice circle to the right is cut off and a unnecessary scroll bar appears.
- the logo is a bit flat - could do with some backdrops and colour contrast
- the logo does not appear on all pages - so I could be mistaken for looking at another website when going to the portfolio page
- portfolio page calls "articles" "tutorials"
- navigation doesn't show which page you are currently on
- Article category buttons only work for text area - expect the whole button to be clickable
- screen shot popup needs a close button at the top.
- could enhance the portrait picture on the portfolio page as it's very dark.
- description in meta tags could be stuffed with more keywords like "design, webdesign, london etc.. - not exceeding 156 characters of course.
With a few tweaks this could be a great website!

Posted on 24 March 2010 | 3:49 am

Ignoring files in a GIT repository

To ignore a file:
if the project is /work/project
you have /work/project/.git folder
If you want to have the files ignored over all pages, create a file called:
/work/project/.gitignore and put one line for each file, relative to /work/project, eg:
I have a /work/project/src/cache folder which I want to have its contents ignored (any files within the /work/project/src/cache folder, so I put in .gitignore:
then make sure there are none of these files in the cache folder already:
git rm --cached src/cache/*
Then, the standard commit - note, you may need to directly add .gitignore:
git add .gitignore
git commit
git push projecthostnamehere branchnamehere
For the same project, if you want to ignore on just this local copy, edit:
Note, you don't have to add this change, but you do need to rm anything that was there before, as it only ignores it once it is removed (see git rm --cached src/cache/* above)

Posted on 30 December 2009 | 3:18 am

Test 2

Posted on 18 June 2009 | 12:10 pm

Fun at the eBay seller meetup

My Dream Car - only it's black.

Posted on 18 June 2009 | 12:02 pm

eBay API overdrive

Lately I've been doing a lot with the eBay APIs and more specifically the trading APIs for listing items. (I've also used selling apis a lot in the past when working with the ebay deals placements while at eBay). Some of the quickest results can be acheived with the use of pre-entered products found using isbn, ean or reference numbers. The trick when comparing with existing competitor items and trying to re-find these numbers, is to find the item using individual trading api calls and your token, as the shopping APIs don't often give quite enough detail about things like Ean numbers.
I'll possibly be showing some of my out-of-normal-hours work at this months eBay seller Meetup, happening this thursday. So much is happening in the ecommerce and ebay space at the moment, so it will be good to discuss the month over a beer. If your interested in eBay selling, RSVP and come along, it's every month on the third Thursday of each month -

Posted on 17 February 2009 | 10:09 pm

Macbook Pro with PHP and symfony 1.2 - PDO support with mySQL

I have recently purchased a macbook pro and wanted to set up my web development environment on it. A lot of people seem to download MAMP, but I have (so far) being able to avoid this.
Opened Terminal, and Apache 2.2.9 is already installed. (use httpd -v to see this)
sudo -u root -s
to shell in as root and not have to write sudo everywhere.
apachectl start
I needed to get PHP 5 running, even though it was installed it needed enabling. I edited /etc/apache2/httpd.conf and uncommented:
LoadModule php5_module libexec/apache2/
then restarted apache using:
apachectl restart
Now for mySQL installation. I went to mySQL and downloaded the 'community edition' Mac package and installed it. I also installed the startup script that came with the download. This allowed me to start mySQL using:
/Library/StartupItems/MySQLCOM/MySQLCOM start
I wanted to be able to run PHP from the command line, so I added the necessary modifications to local environment variables using setvar - look this one up.
I needed PECL and PEAR so I followed this article to get it installed:
Pear is now under /usr/local/bin/pear - this will be handy to know when specifying the location of symfony later.
Installed symfony using the guide here:
pear channel-discover
pear install symfony/symfony-1.2.1
I would recommend a newcomer to symfony should follow the tutorial here
When you get to day 3, you will face the command:
php symfony propel:insert-sql
This will not work with the error:
Some problems occurred when executing the task:
build-propel.xml:275:1: [wrapped: could not find driver]
Read the logs to fix them
I could not find any logs, but the problem was a lack of PDO support for mySQL. After searching around, I found articles where people had tried to recompile mysql, recompile php, modify apache to be 32 bit instead of 64 bit, and other ideas. All would possibly work, but all looked quite complicated. Some comments were given saying this may not work on Leopard etc. So I kept searching. I found this article:

Because PECL was already installed (with PEAR above), I tried:
pecl install PDO_MYSQL
(note this is case sensitive)
got an error:
ERROR: `make INSTALL_ROOT="/var/tmp/pear-build-root/install-PDO-1.0.3" install' failed
ERROR: `/usr/local/temp/PDO_MYSQL/configure' failed
so I needed to bypass the standard pecl install. I followed:
but this had the wrong path for the location of mysql, so modified it to:
1. Download PDO_MYSQL /
2. cd ~/Downloads/PDO_MYSQL-x.x.x/PDO_MYSQL-x.x.x
3. phpize
4. ./configure '--with-pdo-mysql=shared,/usr/local/mysql'
5. make install
I modified the existing /etc/php.ini file (if this doesn't exist, make a file named ~/Sites/phpinfo.php with within it, and go to http://localhost/phpinfo.php in your web browser. It should show you where php.ini is located.
I modified extension_dir to:
extension_dir = "/usr/lib/php/extensions/no-debug-non-zts-20060613"
and added the line:
(ignore all the pdo_mysql.dll modules as they are for a PC).
Now restart apache using:
apachectl restart
You should be able to run:
symfony propel:insert-sql
And PDO support should display with mysql listed within it.
The problem with the above is that the command:
symfony propel:data-load
would not work and, it seems this was because of a fault with versioning of PDO.
So to fix all of this I decided upon Mac Ports, which required the Developer Tools on the OS X Leopard installation CD.
After installing this, I went to and downloaded the tar package and installed it.
The commands to install were:
port selfupdate
port install mysql5 +server
sudo -u root mysql_install_db5
port install apache2
sudo launchctl load -w /Library/LaunchDaemons/org.macports.apache2.plist
cp /etc/apache2/httpd.conf /opt/local/apache2/conf/
also found this good tutorial:
AFTER install it told us to do this:
If this is your first install, you might want
cd /opt/local/apache2/modules
/opt/local/apache2/bin/apxs -a -e -n "php5"
* copied the php.ini in /etc/php.ini to to /opt/local/etc/php.ini
port install php5 +apache2 +mysql5
The above command took quite a while, basically copy the tutorial referenced above.
Location of old apache was:
new apache is:
To start APACHE:
/opt/local/apache2/apachectl -k start
to allow "apachectl start" to work from anywhere, modify the path in ~/.profile and add the line at the bottom:
export PATH=/opt/local/apache2/bin:$PATH
This will mean apachectl in this folder will be run instead of /usr/sbin
the php.ini file used is:
Edit php.ini and modify the following line to read:
mysql.default_socket = /opt/local/var/run/mysql5/mysqld.sock
To run mysql5, use:
mysql5 -u root
You can also set up PHPMyadmin, which will be stored in /opt/local/www/phpmyadmin when you run:
port install phpmyadmin
and follow the documentation at:
To get pear working, you need to modify what is shown in:
pear config-show
then you can modify with:
pear config-set attribute value

Posted on 18 December 2008 | 2:44 pm

UK Ubuntu 8 MythTV install with Nova-S-Plus

UK Ubuntu 8 MythTV install with Nova-S-Plus satellite card and a working satellite dish pointed at Astra.
References are:
Similar tutorial
Older community MythTV documentation
This suggests partitioning with certain file systems - this may be better than a "standard wipe everything" approach.
DVB and mplayer
A good list of programs to check you have is available at:
If you have a new motherboard, make sure you plug in the sound plug from the front of the case, and ensure any on-board audio is enabled in the bios.
GET UBUNTU 8 installed
use the standard wipe everything approach from the disk
change the password for root, so you can use "su -" and not have to use sudo.
passwd root
change to root account.
su -
You should really do these, but I sometimes don't until the end:
apt-get upgrade
apt-get update
My kernel number is found as: 2.6.15-26-386
uname -a
do the update it requests in gui.
Now install the DVB utils so that you can confirm everything is working before trying to get MythTV to work:
apt-get install dvb-utils
mkdir /root/.szap
scan /usr/share/doc/dvb-utils/examples/scan/dvb-s/Astra-28.2E > /root/.szap/channels.conf
This should generate a list of channels in /root/.szap/channels.conf, this will take a while, let it run to the end.
12324 29950
11914 27500
10920 22000
12226 27500
12187 = paracomedy
12070 - sky box office
10861 - talksport
10743 - RTE 0 scrambled
10802 - bbc R5 Live - bbc1 scotland, wales
10847 -
11222 - urban tv
11488 - info tv2
12643 - pitchgaming 2
10964 - five
12402 - 12199
10832 - ITV1 Border
10891 - ITV1 BorderSco
10906 - ITV3+1
10714 - ITV2_1
10758 - ITV1 Anglia E
11992 -
10729 - More 4
11642 - Flava
If the "channels.conf" file looks OK, verify you can find and lock on to a channel.:
cp /root/.szap ~
szap "BBC NEWS"
(where "BBC NEWS" is one of the lines in channels.conf)
get out of root, and back to the logged in user account (eg: named username) you were in before using su -.
Try viewing video with mplayer:
apt-get install mplayer
initially run
mplayer dvb://
it will complain, but create the .mplayer directory, then:
cp /root/.szap/channels.conf ~/.mplayer/
mplayer dvb://
sudo apt-get install mythtv
don't bother entering a password for mysql. use all the defaults when installing.
Say yes, when asked if using other computers to run with MythTV.
don't make a password for the mysql root user, but I did, so read up about problems you may have when you set it.
instructs that to run backend, use: "sudo /etc/init.d/mythtv-backend start"
eo5PZpmi = mysql password for mythtv-network
stored in /etc/mythtv/mysql.txt
says to use: "sudo dpkg-reconfigure mythtv-common" if wanting other machine to use existing mythtv-network.
- should ask you if you are ok with setting the user in the mythtv group.
Keep others as defaults.
These should mostly be left at the default settings, although you may need to change (or create with appropriate permissions) the directories to hold recordings and hold the Live-TV buffers. For the UK, TV format should be PAL, VBI format should be PAL Teletext and the Channel frequency table should be europe-west. On the page marked "Job Queue (Host-Specific) I turn off "Allow Commercial Detection jobs" since I haven't found that the commercial detection works very well, and the mythcommflag processes are running more or less all the time.
Select (New capture card)
In Capture Card Setup, select Card type as: DVB DTV capture card (v3.x)
Press DiSEqC button
Select (Unconnected)
Select LNB
In LNB Configuration, keep defaults as Universal (Europe)
Select (New video source)
Name it "vid"
Select Listings grabber as: "No grabber" for now
Channel frequency table: europe-west
Select [DVB:0(DVBInput) -> (None)
Select Video source as: vid
Keep others as defaults
Select "scan for channels"
In Scan Configuration, select Scan Type as: Import channels.conf
File location: /root/.szap/channels.conf
select to scan, and wait about 15 minutes
exit and run:
mythfilldatabase - you may be asked to do this anyway.
mythbackend should also ask to run after all of this

Posted on 21 June 2008 | 6:30 am

PDT and eclipse for symfony

> PDT has the following pre-reqs
> # Java 5 JRE
> # Eclipse SDK v3.3.1.1
> # EMF SDO XSD 2.3.1
> # GEF 3.3.1
> # DTP 1.5.1
> # WTP 2.0.1
Installing PDT - care of: KRavEN at
Download Eclipse Platform from here: 1-200710231652/index.php
Get the "Platform Runtime Binary", you don't need one of the others as it just includes things you probably won't be using.
Download the attached bookmarks.xml from this thread.
Extract the Eclipse Platform Runtime archive to a folder and run the Eclipse binary in the folder. There is no installer to run.
In the menu go to Help-> Software Updates -> Find and Install
Bullet "Search for new features to Install" and click Next
Click the "Import Sites" button on the right side and choose the bookmarks.xml file you downloaded.
Check all the boxes in the list and click Finish at the bottom.
When it comes up with the list start at the bottom and open up each arrow. You only need to open the first arrow for each item. This is required for the "Select Required" to work.
Now check the first box for "Zend Update Site" and click "Select Required" on the right. Once it is finished and everything is checked, uncheck the "Zend Update Site" box.
Drill down into Spket and choose only Spket IDE.
Uncheck the outer checkboxes for "Subversive update site 0.7.x" and "Subversive update site 2.0.x".
Check the outer box for Symfoclipse.
Drill down into Subclipse and choose only Subclipse.
Drill down into Target Management Updates-> TM and RSE 2.0.2 and choose the protocols you want to have for Remote System Explorer.
If there are any unresolved dependencies at this point click "Select Required" again.
Finally click finish and have it install all the stuff.
When you're done you should be able to follow the directions in the symfony wiki for including symfony in PDT to get the code completion working. You'll also want to cleanup the update site list and remove all the duplicates as installing features adds new update sites to the list.
For javascript code completion for your favorite ajax library see the site
The attachment can be found at:

Posted on 12 June 2008 | 5:46 am

Posted on 11 February 2008 | 7:14 am

ebay search

Posted on 3 January 2008 | 9:44 am

Tweets by @nathanlon