/usr/bin/git-receive-pack: stale NFS file handle Error

What do you do when you want to commit some work, you go to do a git push and what you get back is the following?

fatal: protocol error: unexpected 'Error running git: fork/exec /usr/bin/git-receive-pack: stale NFS file handle'

At first I spent ages doing a search and checking various Stack Overflow questions to see whether I could find a fix. All sorts of things were suggested and I looked into before I remembered that a push in my case was to a remote origin. The third party service BitBucket. When I had a look at their status page the … Read the rest

The controller/method pair you requested was not found.

A very quick Codeigniter tip this week which will hopefully save you hours of tearing your hair out.

As you can see from the image above I have been writing a command line function and was getting the following error:

The controller/method pair you requested was not found.

This was incredibly confusing as the name I was giving on the command line matched that on the controller – or so I thought. What I actually had in the controller was this:

class kanboard extends CI_Controller {

Turns out that Codeigniter3 expects controller names to have leading caps so changing the … Read the rest

Automatically auditing User Actions with CodeIgniter

One important action you might want to carry out is auditing what actions users have taken in your application. Having this knowledge is useful for working out which functions are being used and in what order. Sometimes users reach functionality in a way you might not have imagined when writing your code. Of course this is also very useful for carrying out support too.


Fortunately it is very easy to record actions without too much coding and even better you don’t need to add the call to audit into everyone of your functions making a retrofit of user auditing … Read the rest

What to do when your Scanner is no longer Supported

If you are a regular reader of this blog then you will know that I am a fairly early adopter for new technologies regardless of whether they are hardware or software. Sometimes that works well, other times not so much.

I’ve had and loved a Fujitsu Scansnap S1500M for many years now and have happily been scanning my paperwork into Evernote with it. However, more recently I had been getting dire warnings from MacOS that at some point in the future the Scansnap software would stop working. With the arrival of MacOS Catalina that day arrived and instantly (albeit with … Read the rest

Applying .gitignore Change to a Repository

A great feature of git is the ability to mark certain file and folders as being excluded from the repository which is done via entries in the .gitignore file.

One issue I regularly have is when things change and I need to update the .gitignore file and I always forget how to apply that change. That’s because it is something that isn’t obvious or something that I do regularly. Fortunately it is incredibly easy to achieve and here’s how…

How to apply .gitignore changes

Assuming that you have already edited and made your changes to .gitignore the next this to … Read the rest

Styling Codeigniter form error messages

As I get more and more deeply involved in using Codeigniter for my projects I discover bits and pieces that I think might be useful to others.

Today is a very quick tip about styling the error messages that are thrown on a form. Looking at the statement that you have in your view it isn’t immediately obvious how you apply any styling to this at all.

The answer, strangely, is to apply the look and feel through a call to set_error_delimiters in your controller and not in the view. The function takes two parameters: the html code that should … Read the rest

Slush ‘19

A bit of a departure for the blog this week as I am currently away in Finland for the annual Slush event. As it is primarily a technology event I thought it would fit here.

Slush styles itself as the world’s leading startup event and takes place in Helsinki every November. The event name and the location suggest that we might be knee deep in wet snow but actually when we arrived on Wednesday it was warmer than the UK we had just left.

Having not been before it was difficult to know just what to expect but what I … Read the rest

The Paperlike2 for iPad

If there is any gadget related job worse than cleanly applying a screen protector to a device I don’t know what it is. So it was with mixed emotions when my Paperlike2 arrived in the post this morning.

Paperlike2 is yet another Kickstarter project but one that had a higher chance of success as it it the follow-up to, of course, Paperlike. Basically Paperlike is an iPad screen protector that adds a slightly course layer on top of the screen making it more, well, paper like, and better for writing and drawing.


But before you can get to the … Read the rest

Why Silence Unknown Callers is the Best Feature in iOS13

I’ve had a bit of a love/hate relationship with the latest iteration of Apple’s mobile operating system with some pretty irritating bugs (although nowhere near as bad as the awful macOS Catalina release). However, there is one feature that I do love – Silence Unknown Callers (SUC).

The feature does pretty much what it says on the tin and at first seems something of a blunt instrument especially as it appears to only be on or off. There is, however, quite a bit of subtlety behind this toggle switch.

Why would you want to turn on SUC? Simply to reduce … Read the rest

Accessing Local Resources over the Internet with Packetriot

When I am doing any development, such as for PostRecycler, I do the coding on my laptop running Apache, PHP and MySQL locally via MAMP. This is fine until I need to share work with others which means I have to either upload the work onto a public server or do it via screen sharing. Neither are particularly ideal.

I was vaguely aware of the service ngrok which allows you to expose your local services on the web and then, via Reddit, saw the similar service Packetriot which does a similar thing so I thought I would give … Read the rest