Latest Blog Posts

So it turns out PHP rules the web?

PHP is often the butt of jokes online, but I've always thought that quite unfair. Turns out, that I am certainly not the only one, as outlined in this article 'The Internet of PHP

The way things are going...

I have now been using Chat-GPT, and Github's Copilot for coding for 3 months, and I just have to say, some days I am just breezing through tasks that woul...

Chat-GPT is not coming for my job just yet!

The dust has settled a bit after the wide release of Chat-GPT and my excitement has tempered somewhat. It is capable of some very cool stuff, but its main limitation is accuracy. There are a lot of mistakes, and it asserts itself so conf...

Check out the Perception Census...

Here is one cool project I have been working on recently. This is the perception census, a huge study of perceptual diversity undertaken by world-leading academics Anil Seth from ...

Using Chat-GPT to do my job

I am so excited! Today after reading articles about Chat GPT I decided to see if I could start using it to help me do my job. Here is my first bit of work:

How can I prevent a user from signing up with a particular email address, w...

Python environment joy

I love python, I had what seemed like a fairly complicated task, I googled and found two packages that basically do it all. One simple conda command to install.

Wait a sec.... let me just spend an inordinate amount of time fixing my pyt...

Checking for blacklisted IPs

I had a project where users were reporting intermittent flags from malware software. This wasn't something I had encountered before, but apparently if a scammer uses a hosting service's ip address, they get put on various blacklists, and then an ...

Celebrating some unsung wins

When you are the only programmer on a project, you sometimes get an unsung win, something which you are proud of, but that no one really understands so didn't notice fully 🥲. Often it's little things, like being able to add a new feature reall...

Thoughts on SwiftUI dev experience

I have just completed a new iOS app and it was my first time using SwiftUI. I have to say the developer experience felt almost... phenomenal... although recently the bar has been prett...

Do I have Javascript fatigue?

Recently I had to spend a few hours updating a React project, and fixing breaking changes from all the new dependencies and upgrades on npm packages, and in timely fashion I came across this article discussing

Live Photo Cleaner

Came across this great open source app for iOS that automatically removes the annoying, space-hogging 'live' effects from photos taken on iPhone. It is called LivePhotoCleaner. Cynicism alert: This live...

Solvitur ambulando

The latin phrase Solvitur Ambulando is translated as "it is solved by walking". It has a funny double meaning: classically it has meant "the problem is best solved by actively trying ...

Canceling my Spotify subscription

As part of a process of taking the advice in Stolen Focus I have cut out nearly all notifications, turning off all sounds, and indications of message waiting on email, slack, ...

Data preprocessing tasks in big projects

There is a common source of friction (and anxiety) in psychology projects with large datasets: The pipeline of getting data from the data collection stage wherever or whatever that may be, into the final form to perform statistical analysis. Fre...

How to make responsive Likert scales in CSS (like Qualtrics)

At work I’ve been updating many forms to be responsive and work on mobile. This is not as exciting as it sounds - but like any boring but necessary task, there is fun to be had searching for an optimal solution. Psychology is just full o...

Presenting half finished projects for feedback

In my job, I tend to work as a sole developer, and quite often in a project there comes a stage where I need feedback on a specific feature, before the rest of the project is in a presentable state. When working on something tricky I will disable...

Home garden office - Self build - Part 1

We are having a baby soon! That and the likelihood that I will continue to need a room to work from home, we decided that it was worth looking at getting a garden office, if it can be done within a budget. Both pre-made off-the-shelf buildings, ...

Too much wine during lockdown?

I think he's trying to tell me I am drinking a little too much. Well, it's Christmas and it's just been 2020, what does he expect!

My white and ginger cat with tail around wine glass

...

Live updates during PHP dev - without React or Watchify

Recently I decided to go back to basics and rewrite my site and blog in as minimal format as possible. No libraries or frameworks, no database, all hand coded, fast loading and clean etc. However, one of the things I really missed from developing ...

Embedding a Qualtrics survey in another site

Qualtrics is used widely throughout academia to administer surveys and gather data. It is easy to set up surveys, which automatically look good and the data is stored reliably and is easily exportable.  And ...

Modelling Personal Finance in Python

This is for people who want to understand how to make choices in personal finance and know how to program.  Normally, it's easy enough to use rules of thumb, and to just follow advice / well trodden paths in finance - but if you're inclined you c...

Reading CVPixelBuffer in Objective-C

I wanted to inspect individual pixels in a CVPixelBuffer, which is the format provided by default on iOS's camera callbacks - but I couldn't find a recipe online, so after figuring it out, here it is. You can adjust this code to iterate through t...

Python in SPSS

Using Python in SPSS is great if you want to do any complex calculations, without having to leave the SPSS environment. Python is much more flexible than SPSS syntax, and it's actually very easy to use. It is especially useful when you are colla...

Draggable Piechart JS class

For a recent project I made a draggable pie chart. I thought this might be useful, so I have made it open source for others to use. There are many off the shelf libraries for doing charts, but only the extremely heavyweight ones are c...

Random non-overlapping circles in MATLAB

For a recent project I had to generate a stimulus set consisting of random non-overlapping circles in MATLAB.  My solution was to keep a list of the outside of a gradually increasing outer ring of circles, and add new ones, expanding the ring.  ...

A Simple Introduction to Core Audio

I had to learn Core Audio for a project recently, which despite being notoriously difficult, has been great fun. Starting out, I would have killed for a basic example audio player that didn’t have any unnecessary bells and whistles to ju...