Welcome! I'm Lorna Jane Mitchell: web development consultant, trainer and author. I work mostly with PHP, git and the LAMP stack - plus the various excellent technologies associated with it. Part of the time, I am Principal Developer for Siftware, the other part of the time I spend on open source activities, consultancy and training.

This site is a combination of a blog, a central place to keep links to my books, talks and other resources, and also a place to put a bit of information for anyone who wants to work with me. If you have any questions, or if you'd like to work with me, then please let me know.

Work With Me

PHP Migration

Ready for new PHP but need a hand getting your application upgraded? I am happy to assess your codebase and advise on upgrade paths.


If your team needs to gain or improve their technical skills, I can help. Get in touch with me and we'll work out a package that fits your needs.


With buckets of LAMP experience, I can help your team work through the tough spots - and I love to lend a safe pair of hands to help others along.

PHP Services

Time for better tools or better practice? Time for a new version of PHP? Let me lend a hand to make your transition go smoothly.

From The Blog

Generating a File List for Phan

Phan is the PHP Analyzer for PHP 7 code. I've been using it, partly out of curiosity, and partly to look at what the implications of upgrading my various projects will be. The simplest usage instructions are:

phan -f filelist.txt

I generated my filelist.txt files with a little help from grep - by looking for all files with opening PHP tags in, and putting that list of filenames into a file. My command looks like this:

grep -R -l "<?php" * > filelist.txt

This simply greps recursively (the -R switch) in all files looking for <?php and when it finds it, outputs only the filename (the -l switch does that bit). Then I just put all the output into my filelist.txt file.

Phan is in its early stages but it's ready for you to run on your own projects. Look out that you may need to put your bootstrap or other include files first in the filelist.txt file if phan isn't finding things in the right order - luckily with it all in one file, it's relatively easy to move things around if you need to.

Git Won't Check Out A Path It Autocompleted

One of my git repositories has developed a tendency to refuse to checkout a feature branch locally that exists on the remote repo. My git bash completion works, but then strange things happen! It turned out to be that I had two remotes with the same refspec, so I thought I'd write down the behaviour I saw and hopefully help someone else to fix this problem faster if they see it. Continue reading

Why My Open Source Project Needs a Code of Conduct

I'm an open source project maintainer, working on the projects associated with joind.in, and recently we added a Code of Conduct to all our projects (we have quite a few as you can see from our github organisation page https://github.com/joindin).

I feel the same way about codes of conduct for open source projects as I do about codes of conduct for events. You can absolutely run a totally safe and effective event without one, but by having one you make very clear what your expectations are - and in turn this manages the expectations of the people attending that event. Continue reading

Talks, Articles, Podcasts, and More


ChatOps With Hubot

VelocityConf, October 2015

Pick Your Git Branching Strategy

GitHub Community Meetup, October 2015

Git and Github Fundamentals

OSCON, October 2015

What To Expect From PHP 7

OSCON, October 2015

ChatOps With Hubot

TechnologyUG, October 2015

API Survival Kit Workshop

FOWA, October 2015