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 | 5:21 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 | 10: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 | 8: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 | 1:49 am

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 15 August 2013 | 12:26 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 24 July 2013 | 6:23 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 | 6: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 | 4:42 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 | 8:11 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 | 12:29 pm

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 9 October 2010 | 2:02 pm

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 | 12:21 pm

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 | 6:30 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 | 6:09 am

Test 2

Posted on 18 June 2009 | 3:10 pm

Fun at the eBay seller meetup

My Dream Car - only it's black.

Posted on 18 June 2009 | 3:01 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 18 February 2009 | 12:41 am

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 15 December 2008 | 9:11 am

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 | 9:29 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 | 8:37 am

Posted on 11 February 2008 | 10:13 am

ebay search

Posted on 3 January 2008 | 12:38 pm

Blur album search

Posted on 19 December 2007 | 10:27 am


Posted on 11 December 2007 | 5:16 am

Text size in Ubuntu

Applications like Zend Studio Neon inherit size for the PHP Explorer from Gnome - so you can change it using gnome-control-center under font settings.

Posted on 23 November 2007 | 11:29 am

Tweets by @nathanlon
Help Feed

Sponsored: The 3 Week Diet

Posted on 25 February 2016 | 7:56 am

5 Tips for Running Redis over AWS

redis aws

Posted on 23 February 2016 | 4:31 am


sprites generator

Posted on 17 February 2016 | 12:18 pm

Dashboard | GTmetrix

performance optimization

Posted on 17 February 2016 | 12:16 pm

The Product Foundry | Ideate, Incubate, Accelerate - Innovify

worldwide outsourcing leanstartup

Posted on 28 January 2016 | 6:41 am

google/physical-web · GitHub

Posted on 18 January 2016 | 11:14 am

10 Technology Trends

future technology

Posted on 25 November 2015 | 8:35 am

The 37 - Learn Something New


Posted on 21 November 2015 | 6:37 pm

Customer Communication Platform | Intercom

online helpdesk tools

Posted on 21 November 2015 | 5:48 pm

FBA Toolkit

ecommerce amazon

Posted on 11 November 2015 | 4:21 pm

Ketnap Ltd

google apps support

Posted on 3 November 2015 | 9:58 am

The Elevator Programme

entrepreneur pitches

Posted on 23 October 2015 | 10:38 pm

Microexchanges – exchange platforms

peertopeer lending

Posted on 21 October 2015 | 5:34 am

ProductHunt for Social Innovators

techfugees products

Posted on 10 October 2015 | 6:19 am

IBM Watson Developer Cloud

cloud development ai

Posted on 8 October 2015 | 9:09 am

Angular Development - Todd Motto

angularjs blog

Posted on 7 October 2015 | 9:04 am

Online regex tester

regex tools programming

Posted on 6 October 2015 | 11:26 am

Swagger | The World's Most Popular Framework for APIs.

api documentation

Posted on 6 October 2015 | 10:09 am — Super-sweet Technical and API documentation!

api documentation

Posted on 6 October 2015 | 10:06 am

Introducing the 11 - Techstars


Posted on 30 September 2015 | 6:55 am

itracks - Online focus groups

user testing research

Posted on 24 September 2015 | 7:25 am

Wayra | Telefónica's startup accelerator

startup hackday workhub

Posted on 17 September 2015 | 9:22 am


open data

Posted on 20 July 2015 | 5:28 am

Coverr - Beautiful, free videos for your homepage


Posted on 1 July 2015 | 4:07 pm

Blanches - Coastal Cornwall Cottages


Posted on 1 July 2015 | 9:50 am

UX Archive

ux onboarding

Posted on 22 June 2015 | 10:22 am

Formula E Championship

Posted on 22 June 2015 | 9:04 am

Mobile App Development Company | Brightec, Brighton, UK

brighton apps developers

Posted on 4 June 2015 | 11:19 am

Deen City Farm - Wimbledon's community farm

cityfarm kids

Posted on 28 May 2015 | 12:30 pm

iATS Payments: Payment Processing for Nonprofit Organizations | iATS Payments


Posted on 22 May 2015 | 9:44 am

Secure Online Payment Solution from Simplify Commerce

payments ecommerce

Posted on 22 May 2015 | 9:04 am


crowdfunding equity startup

Posted on 18 May 2015 | 12:29 pm

GraphConnect 2015 | Innovate. Share. Connect.

neo4j conference

Posted on 18 May 2015 | 12:00 pm

Dashboards by Keen IO

dashboard bootstrap

Posted on 6 May 2015 | 5:43 pm

CEIS | Supporting Enterprise & Communities

enterprise Social

Posted on 27 April 2015 | 10:35 am

Rhema Church London

church webdesign

Posted on 27 April 2015 | 10:08 am

time calendar travel

Posted on 15 April 2015 | 4:03 pm

Create books, magazines & ebooks | Blurb


Posted on 14 April 2015 | 12:44 pm | How to Start a Startup

startup courses yc

Posted on 14 April 2015 | 10:50 am

Good Incubation | Nesta

Incubation innovation

Posted on 14 April 2015 | 4:45 am

accelorator programmes

Posted on 14 April 2015 | 4:45 am


video webcast interactive

Posted on 14 April 2015 | 4:26 am

Messenger - Platform

f8 messenger

Posted on 25 March 2015 | 6:30 pm


the car to have

Posted on 10 March 2015 | 6:15 am

Symfony Certification

certificate symfony education

Posted on 9 February 2015 | 5:33 am


Symfony2 testing certification

Posted on 9 February 2015 | 5:33 am

Help and Support - Salesforce Foundation

salesforce ngo connect help

Posted on 28 January 2015 | 12:39 pm

Charity Miles

crowdsourcing fitness

Posted on 28 January 2015 | 7:07 am

My Tours

diy mobile app

Posted on 20 January 2015 | 7:09 pm

Apache Cordova

mobile html5 webapps

Posted on 8 January 2015 | 5:16 pm

Live pixel check

resolution pixels

Posted on 7 January 2015 | 9:11 pm

Learn Ionic

mobile app dev angularjs

Posted on 7 January 2015 | 8:10 pm

The Hour of Node

kids programming

Posted on 18 December 2014 | 5:18 pm


html5 components

Posted on 4 December 2014 | 4:43 pm

Increase ulimit open file Centos


Posted on 4 December 2014 | 4:51 am

20 Tools To Make A Web Developer’s Life Easier

tools webdev

Posted on 3 December 2014 | 5:50 pm

Web Fundamentals — Google Developers

google webdesign

Posted on 3 December 2014 | 5:48 pm


browser testing

Posted on 3 December 2014 | 5:47 pm

Google Analytics Demos & Tools

analytics guide

Posted on 29 November 2014 | 3:36 pm

Facebook Login for iOS

facebook oAuth ios

Posted on 25 November 2014 | 8:48 am

IOS testing using a local hostname

testing mobile

Posted on 24 November 2014 | 4:35 am

Christian giving with Lepton

lepton giving ios

Posted on 21 November 2014 | 5:49 am

Using Swift with Cocoa and Objective-C

swift ios

Posted on 21 November 2014 | 5:32 am

SimpliQ - Bootstrap Admin Template

Posted on 13 November 2014 | 11:08 am

Functional Reactive Programming

programming functional reactive

Posted on 13 November 2014 | 11:08 am

Google design guidelines

google webdesign

Posted on 11 November 2014 | 5:19 am

Ekos Global

ecommerce hosted shop webstore

Posted on 5 November 2014 | 3:26 pm

Zap Map

electric car

Posted on 27 October 2014 | 4:51 pm

Pod Point - POD Membership Card

electric car

Posted on 27 October 2014 | 4:03 pm

JavaScript | Codecademy


Posted on 24 October 2014 | 5:42 am

CasperJS - a testing utility for PhantomJS and SlimerJS

javascript testing phantomjs

Posted on 24 October 2014 | 5:21 am

eVolt - Charging points map UK

electric car maps

Posted on 11 October 2014 | 1:00 pm

electric car charge

Posted on 11 October 2014 | 12:37 pm

Public Charge Points

electric car

Posted on 11 October 2014 | 12:36 pm

SymfonyLive London 2014: The lowdown

Symfony2 London

Posted on 7 October 2014 | 10:58 am

Five Whys

agile programming

Posted on 7 October 2014 | 6:51 am

Embrace technical debt

agile startup strategy

Posted on 7 October 2014 | 6:50 am

iOS Tutorials - Swift tutorials

ios programming

Posted on 6 October 2014 | 3:46 pm

Using Swift with Cocoa and Objective-C: Basic Setup

ios swift

Posted on 3 October 2014 | 4:10 pm

BuildAModule - Drupal Training

drupal videos

Posted on 3 October 2014 | 9:00 am


ecommerce selling ebay stockcontrol

Posted on 2 October 2014 | 5:25 pm

FosUserBundle and HWIOAuthBundle

dev oauth symfony2

Posted on 25 September 2014 | 9:29 am

The HttpKernel Component


Posted on 24 September 2014 | 5:50 am

Using RabbitMQ in Symfony2 Projects


Posted on 22 September 2014 | 5:36 am

True Rent

rental property

Posted on 15 September 2014 | 5:02 am

web prototyping for designers | Marvel


Posted on 12 September 2014 | 3:42 pm

Symfony Development using PhpStorm

symfony2 phpstorm ide

Posted on 9 September 2014 | 8:48 am

Invested: A startup's guide to getting investment in NZ

Posted on 9 September 2014 | 4:40 am


analytics angularjs

Posted on 29 August 2014 | 1:05 pm


upload angularjs

Posted on 29 August 2014 | 11:57 am

Heiner's SHELLdorado

linux bash scripting

Posted on 26 August 2014 | 9:20 am

Scaling Symfony2 apps with RabbitMQ

Symfony2 rabbitMQ

Posted on 21 August 2014 | 9:57 am

Ionic: Advanced HTML5 Hybrid Mobile App Framework

angularjs ios

Posted on 21 August 2014 | 6:01 am

Creating an Instance Store-Backed Linux AMI - Amazon Elastic Compute Cloud

Posted on 21 August 2014 | 5:51 am

Adminer - Database management in a single PHP file

php database

Posted on 12 August 2014 | 6:19 pm

JustPark - The Parking App


Posted on 12 August 2014 | 5:41 pm

Smarter Puppet Deployment - adrienthebo/r10k

automation puppet

Posted on 12 August 2014 | 5:02 pm

Currency Exchange | Cheap Travel Money from WeSwap

crowdsourcing currency

Posted on 12 August 2014 | 11:14 am

Transfer Money Online

money startup

Posted on 12 August 2014 | 11:13 am

Ionic - Hybrid Mobile App Framework

mobile html5 angularjs

Posted on 9 August 2014 | 4:29 pm


angularjs speed up templates

Posted on 9 August 2014 | 4:16 pm