I’ve used many editors for programming over the years.
- 1996 - 1999, Emacs
- 2000 - 2007, BBEdit
- 2009 - 2011, Emacs
- 2012 - Present, Sublime Text 2
This week I was providing some mentoring with somebody that was using Notepad++ as their code editor of choice. What struck me was how few features of the program he was using. Cursor keys to move around. Not using the find function. Clicking rather than using keystrokes.
It was painful to watch!
The thing is, it doesn’t really matter which editor, or indeed IDE, you use. What’s important is how you use it.
As Andrew Hunt noted in The Pragmatic Programmer, use a single editor well.
Watching somebody who really knows their editor is a joy. I remember a few yers back marvelling at a colleague who used vim and he just flew around it. He had mastered it.
The most important thing is that you know your editor inside out. Be efficient. Be effective. It can make a huge difference to your software development productivity.
photo credit: Code by Riebart, on Flickr
notfound.org provide a way of showing missing people on your 404 page.
I've just installed this on my blog using the WordPress plugin.
You can see it in action by visiting a non-existent page.
Ever started work on an existing software project that has NO technical documentation whatsoever?
I have recently, and I immediately felt lost.
No coding standards, no testing guidelines and most importantly, no notes at all about how the existing codebase was designed.
Why is this a problem? Well, for me it meant a lot of time reverse engineering the codebase and subsequently generating new documentation. I had to learn the project from scratch. It added a huge amount of time before I could do any real work on the project.
Every little piece of documentation that you add to your project can help save time later on – either for yourself or for another person working on the project.
What’s the minimum you should have in your project documentation?
- Database schema in visual form
- Coding standards
- Source control branching strategy
- Deployment instructions for all environments (e.g. staging and/or production)
- Development environment setup
Wikis are perfect for collecting this kind of documentation. They are free-form, so you have freedom to structure as you wish.
Have no documentation at all? Fear not, it’s easy to get up and running. A few ideas to start with:
- Use a database management tool, such as MySQL Workbench, to reverse engineer your database schema and produce a graphical model
- Use your unit testing framework to produce agile documentation from your tests – for example, PHPUnit has a –testdox option for generating documentation.
- Start using standard inline documentation. For example, use phpDocumentor for PHP code.
Take a look at the documentation you have for the project you are currently working on. If a new developer came onto the project today, would the documentation be enough to get them up to speed? If not, what would you need to add?
image credit: LimeSurvey v2 schema by juhansonin, on Flickr
This is a visualisation of transfer speculation involving English Premier League teams, and their players. The rumours were taken from various sources, including the BBC, The Guardian and The Daily Mirror. Click on the thumbnail to view the full size image (around 900Kb).
The data was collected and saved as a graph as a set of nodes and edges. These were then visualised using Gephi and exported as a PNG. Thicker lines between players and teams means a greater number of reports (e.g. Wayne Rooney to Chelsea).
Here are the best books I've read recently that have helped to improve aspects of my freelancing career.
I could have done without the cringeworthy tales of "Sarah's Pies", but there many nuggets of advice in this book about creating processes and systems to grow your business.
The Checklist Manifesto
Related to the above, Atul Gawande gives some real-world examples of where the humble checklist have helped improve many situations -- and this is something that can easily be applied to freelancing.
Winning Without Losing
How to grow a successful business without having to work every hour in the day. I found this book aligned with my philosophy about building a business without impacting on my family life.
Changing behaviour -- for example in your client's businesses -- is difficult, and this book gives a solid framework to ease any transitions.
4-Hour Work Week
More good advice on creating processes and systems in order to free yourself from the more mundane aspects of running a business.
Book Yourself Solid
Describes a system whereby you can become an expert or authority in a particular market, and solve problems experienced within that field. Good advice about building up an audience that trusts you.
What books have you found helpful in your freelancing career?
Getting away from my home office is a nice treat. One of the perks of being a member of the PCG is their offer of flexible workspaces. Here's a map I've put together to show the London locations:
View PCG Flexible Workspace in a larger map
For more information, please see the Flexible Workspace page on the PCG site.
A quick tip if you are getting timeout issues when creating new Laravel migrations:
$ php artisan migrate:make create_users_table --table=users --create
Created Migration: 2013_06_25_100053_create_users_table
Generating optimized class loader
The process timed-out.
Open up the
vendor/symfony/process/Symfony/Component/Process/Process.php file within your Laravel application and change the constructor from:
public function __construct($commandline, $cwd = null, array $env = null, $stdin = null, $timeout = 60, array $options = array())
public function __construct($commandline, $cwd = null, array $env = null, $stdin = null, $timeout = null, array $options = array())
This removes the timeout, and will prevent the error from happening.
Looking for reliable hosting for your Laravel projects? I recommend Clook Internet.
I'm going to be working on a Laravel 4 project soon, so I've been reading up on it. Here are a few key resources I've used for getting up to speed:
Looking for a reliable host for your Laravel projects? I recommend Clook Internet.
If so, you may be interested in a new service that gives you more insurance about your WordPress powered site.
It's called WordPress Peace of Mind, and includes backups, security scanning and system updates. Above all it allows you to focus on the interesting parts of WordPress, without having to worry about the boring bits.
If you are a freelancer or contracter in the UK, it's important to know if you fall under the IR35 legislation. This legislation was put in place to stop "disguised employees" -- that is, workers who are invoicing companies but working as if they are employees. The legislation has been quite a grey area in the past, but guidance has been recently published which helps to clarify the levels of risk.
Using this guidance, I've put together a tool which asks a series of questions and then rates you as either low, medium or high risk.
You can find the tool at ir35risk.co.uk
Even with this tool, I would recommend speaking with an accountant if you have any concerns about whether you are at risk.