Tips for applying for a web developer role

Here it is, an ad for a front-end developer/designer on Seek.

Since putting up the ad we have received some brillant and some terrible resumes.

This has lead me to think that web developers need some guidelines when they are seeking a new job.

  1. You must have a personal site. This is critical, you are a web-head, you advocate the web, you love the web, I expect you to have a website. This does not have to be the world’s most mind blowing site. Just something that is going to show you can at least put some code together. If you are a hardcode developer and cannot design than use Twitter BootStrap, at least it will look neat. If you are a designer than the site needs to look awesome!
  2. Back-end and front-end are very different roles. Sometimes the lines are very blurred, other times it isn’t. Your strength is going to be one or the other. If it is a back-end role, than Java, Ruby, PHP, C++ or Python (insert other server-side language) should be a big part of your background. If it is a front-end role HTML, CSS, JavaScript, PhotoShop, Illustrator, and basic server-side should be a big part of your background.
  3. If the job is for UX/UI your resume must reflect this, even if it isn’t, you are a tech-head so it should show a logical organisation. DO NOT USE THE STANDARD WORD TEMPLATES!!! They are horrible and lead to a bad user experience.
  4. Explain your role on projects. Do not list one of the world’s largest sites with a vague one word description of your role. Clarify exactly what you did. Otherwise there is no way of knowing if you were the UX lead who designed the end-to-end customer experience or the tea-lady.
  5. Do not list your ex-company’s projects unless you were on them, and if you were on them, list what your role and accomplishments were.
  6. DO NOT CLAIM OTHERS’ WORK AS YOURS. Are you serious? Do you honestly think that you will not be caught out? Come on! If you do not get caught in the interview process, you will be caught out once you start and your new employers will be very upset. Though I get the feeling if you are in this group you are like one of the applicants who’s code samples still contained the original author’s links in the footer.
  7. This is professional process, so treat it as such. While you can be quirky and this is encouraged, do not put not safe for work content in your resume. Check your spelling. Consistently format your resume. Write a cover letter covering each of the requirements. Write a two to three sentence introduction in the email.
  8. Make me want to hire you. You are a product, you need to make me want to spend money on you. Tell me about how you will make us successful, especially when I put exactly how you will in the job ad.
  9. Provide samples of your work. These can be code samples, wireframes, mockups, GitHub, your blog posts, side projects, StackOverFlow responses, Redit etc. as long as you created it. Given the fact it is so easy to create side-projects online there is zero reasons for not having something you created.
  10. Do not apply for roles above your experience level. If you are straight out of uni you will do well, just don’t apply for a role which is requiring you take on responsibility beyond your ability (there is of course exceptions). There is plenty of opportunity to jump in the deep-end. Just get some experience first.

PHP Multi-thread Asynchronous Process Manager

PHP Multi-thread Asynchronous Process Manager

I have been build some background apps recently which need to do a lot of repetitions (think 100,000 times the same task which takes about 0.25 to 1 second to execute, of which most of it is waiting for the remote server to respond). Since these are daily and are not that server intensive it made sense to run them concurrently so instead of taking the good part of the day it just takes a few hours. I noticed on the proc_open page there was a very nice solution by Matou Havlena of

Continue reading “PHP Multi-thread Asynchronous Process Manager”

Password Hashing – With some smart salt

Password Hashing – With some smart salt

Basic hashing of passwords is poor. LinkedIn should have expected that one day that their password list would be stolen and when that happened it should have been hashed better so a standard dictionary could not reverse the passwords. Tthe LinkedIn passwords were leaked all over internet and with the help of crowd-sourced hackers the passwords were easily reversed back from SHA-1 hashes substrings to the plain text passwords. With tools like John the Ripper social hackers like Francois Pesce was able to reverse over 2 million LinkedIn passwords.

Continue reading “Password Hashing – With some smart salt”

Getting the directory listing using PHP's Glob Function

The other day the new developer  in my office wanted to get a directory listing using  PHP as he was writting a new plugin for WordPress. To his surprise this is really easy with the glob() function:

foreach (glob("*") as $filename) {
    echo $filename . 'size ' . filesize($filename) . 'n';


Glob allows you to use patterns similar to those when you are using the ls command in Terminal and returns the file list as an array.

Get the HTML of any page with PHP

Quick tip: if you want to get the HTML for any web page you can use the PHP function file_get_contents(). To see the HTML in your web browser wrap the htmlentities  function around the file_get_contents() function.


echo htmlentities(file_get_contents(''));

Which returns:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "">
<html xmlns="">
	<title>IANA &mdash; Example domains</title>
	<!-- start common-head -->
	<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
	<link rel="stylesheet" type="text/css" href="/_css/2008.1/reset-fonts-grids.css" />
	<link rel="stylesheet" type="text/css" media="screen" href="/_css/2008.1/screen.css" />
	<link rel="stylesheet" type="text/css" media="print" href="/_css/2008.1/print.css" />
	<link rel="shortcut icon" type="image/ico" href="/favicon.ico" />
	<script type="text/javascript" src="/_js/prototype.js"></script>
	<script type="text/javascript" src="/_js/corners.js"></script>
	<script type="text/javascript" src="/_js/common.js"></script>
	<!-- end common-head -->

	<!-- start common-bodyhead -->
	<!-- end common-bodytail -->



Essential toolkit for a developer building a site

This is my own opinion of the keys to give you a leg up when creating a new PHP/MySQL site:

  1. Apple Mac – Go to Web Directions and it is clear web developers prefer Macs for many reasons (costs vary)
  2. MAMP Pro – So so good, so easy to use and create local hosts on the local in various locations across your Mac ($US59)
  3. Coda – The best IDE / text-editor for Mac – the all in one window is amazing ($US99)
  4. CodeIgniter – Easy to learn and very fast to develop with PHP framework (free)
  5. CodeIgniter Coda Mode – Code hinting for CodeIgniter within Coda (free)
  6. Twitter BootStrap – Basic front end layout (free)
  7. Font Awesome – Font vector images for Twitter BootStrap (free)
  8. Litmus – Get quick screenshots of your sites (from $US49 p/month)
  9. VirtualBox and Windows IE Testing VMs – Microsoft allows you to download VMs to test your site in different versions of IE (free)
  10. Sequel Pro – Awesome database GUI (free)
And a bonus is the amazing Google Apps – GMail, Google Docs, Google Analytics, Google Web Master Tools, Google Maps…(free for low volume usage)

With these tools you can get started on your next site in hours.

Increasing the PHP Memory Limit

Today I needed to run a some code that did a lot of heavy lifting and kept having the error below:

Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 71 bytes) in /Applications/MAMP/htdocs/test_memory.php on line 46

The solution is to override the memory limit set by PHP.ini:


Check out PHP.Net’s ini_set documentation for more details.


  • This has be done as one of the first commands in your PHP file
  • You may need to have to increase the limit to more if the problem is still occurring
  • If this is unexpected there may be some really inefficient code in your code base

URL Shortening with CodeIgniter

If you are looking for a fast way to URL shorten with CodeIgniter you are in luck.

Basically you set your routes (application->config->routes.php) $route[‘404_override’] to point to the controller and action which directs shorten URLs

e.g. in you routes file:


Then short_links has a function retrive

if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Short_links extends CI_Controller {

    function retrive()
        $this->load->model('shorten_urls');//load the model which looks after the URLs
        $url = $this->uri->segment(1);//get the URL segment e.g. abc
        redirect($this->shorten_urls->get_url($url)); //lookup the original URL and redirect