Added Talking C (1996)

Introduction to SAM C (a small-C variant) for SAM Coupé BASIC programmers

Python GUIs YouTube

Programming screencasts are a popular way to teach programming and demo tools. Typically people will open up their favorite editor and record themselves tapping away. But this has a few problems. A good setup for coding isn't necessarily a good setup for video -- with text too small, a window too …



Hands-free Programming Screencasts. Replay diffs between a series of files to generate faultless coding screencasts

Python GUIs

Added SAM Coupé Code Search (1995)

Search SAM data/code files for specific words

Added UFO: Alien Massacre (1995)

UFO defense but not really

MicroPython is an implementation of the Python 3 programming language, optimized to run microcontrollers. It's one of the options available for programming your Raspberry Pi Pico and a nice friendly way to get started with microcontrollers.

MicroPython can be installed easily on your Pico, by following the instructions on the …

The Basic 10 Liner contest has been running for 11 years. This year (2021) the 10th competition, and the first time I've heard of it, thanks to Dean Belfield.

The competition is simple: write a game in some BASIC language in 10 lines of code. Like the arcade games for …

The Basic 10 Liner contest has been running for 11 years. This year (2021) the 10th competition, and the first time I've heard of it, thanks to Dean Belfield.

The competition is simple: write a game in some BASIC language in 10 lines of code. Like the arcade games for …

Added SAM Coupe Upward Scroller (1995)

Simple BASIC-based scroller routine

The SAM Coupé was a British 8 bit home computer that was pitched as a successor to the ZX Spectrum, featuring improved graphics and sound and higher processor speed.

The SAM Coupé's high-color MODE4 could manage 256x192 resolution graphics, with 16 colors from a choice of 128. Each pixel can …

FRED was the most popular disk magazine for the SAM Coupé 8 bit home computer.Published by Colin MacDonald out of sunny Monifieth, Scotland, the magazine ran from it's first issue in 1990 through to it's last (82) in 1998.

For the SAM networking project I was hoping there might …

How much game can you fit into 25 pixels? Quite a bit it turns out.

This is a mini clone of arcade classic Space Invaders for the BBC micro:bit microcomputer. Using the accelerometer and two buttons for input, to can beat off wave after wave of aliens that advance …


In the first part we looked at the information about the SAM Coupe network available in the user manual, technical manual and other examples of networking systems that may have influenced the design on the SAM Coupe. Next I'm going to look at the electrical design of the SAM Coupe …

The SAM Coupé was a British 8 bit home computer that was pitched as a successor to the ZX Spectrum, alongside improved graphics and sound and higher processor speed it also had in built support for MIDI and networking. The manual talked up how the SAM was ready to expand …

Added Game Development Thingy: Pyromaniac (1999)

Distributed game development project, before that was really a thing.

Learn PySide

As the apocalypse rumbles on, I found myself wondering "Is it getting any better?"

Daily updates of spiralling case numbers (and worse, deaths) does little to give a sense of whether we're getting to, or already past, the worst of it.

To answer that question for myself and you, I …


Is it getting better yet?

Added SAM PD Snow demo (1996)

SAM PD advert, written in SAM C

Added Blastamac! (1995)

Asteroids with SAM Coupe people's heads

Python developer & tutor, ZZP
Senior Software Engineer, Hotjar Ltd. / ZZP
Learn PyQt

So far we've built the Etch-A-Snap and processed an image to produce a 1 bit image. In this part we’ll look at how to take this image and generate the draw instructions for the plotter.

Etch-A-Sketch is a very simple 2D plotter which is limited to drawing a single …

The image processing produces a 1 bit image (B&W) of 240x144 pixels. The next step is to take this image and convert it into movements for the motors.

An example processed 1 bit image

The way this is done is governed largely by the design of the Etch-A-Sketch — any drawing must be made in one …

Etch-A-Sketch is a very simple 2D plotter which is limited to drawing a single unbroken line, of a single thickness and colour which is dark-ish on a silver-ish screen. To be able to plot a photo onto the Etch-A-Sketch we need to transform the image so that —

  1. the resolution makes …
Pocket Etch-A-Sketch Not the really really tiny one. amazon
3D PrinterI have & recommend the Anycubic i3 Mega. amazon
PLARed, white & black amazon
2x 5V 28BYJ-485V stepper motor. amazon
2x ULN2003A IC Darlington array, as stepper driver chip. amazon
1x 330Ω resistor for LED driven off Pi …

Etch-A-Snap is (probably) the worlds first Etch-A-Sketch Camera. Powered by a Raspberry Pi Zero (or Zero W) it snaps photos just like any other camera, but outputs them by drawing to an Pocket Etch-A-Sketch screen. Quite slowly.

Photos are processed down to 240x144 pixel 1-bit (black & white) line drawings using …


Etch-a-Snap the Etch-a-Sketch camera, built using a Raspberry Pi Zero & Camera

This little project combines the previous accelerometer-gyroscope code with the 3D rotating OLED cube to produce a 3D cube which responds to gyro input, making it possible to "peek around" the cube with simulated perspective, or make it spin with a flick of the wrist.

Take a look at those …

Measuring acceleration and rotation has a lot of useful applications, from drone or rocket stablisation to making physically interactive handheld games.

An accelerometer measures proper acceleration, meaning the rate of change of velocity relative to it's own rest frame. This is in contrast to coordinate acceleration, which is relative to …


The keys, values and items from a dictionary can be accessed using the .keys(), .values() and .items() methods. These methods return view objects which provide a view on the source dictionary.

The view objects dict_keys and dict_items support set-like operations (the latter only when all values are hashable) which …

An ESP2866 is never going to compete with an actual graphics card. But it has more than enough oomph to explore the fundamentals of 3D graphics. In this short tutorial we'll go through the basics of creating a 3D scene and displaying it on an OLED screen using MicroPython.

This …

We've previously covered the basics of driving OLED I2C displays from MicroPython, including simple graphics commands and text. Here we look at displaying monochrome 1 bit-per-pixel images and animations using MicroPython on a Wemos D1.

Processing the images and correct choice of image-formats is important to get the most detail …

Dictionaries are key-value stores, meaning they store, and allow retrieval of data (or values) through a unique key. This is analogous with a real dictionary where you look up definitions (data) using a given key — the word. Unlike a language dictionary however, keys in Python dictionaries are not alphabetically sorted …

These mini monochrome OLED screens make great displays for projects — perfect for data readout, simple UIs or monochrome games.

Wemos D1 v2.2+ or good imitations. amazon
0.91in OLED Screen 128x32 pixels, I2c interface. amazon
Breadboard Any size will do. amazon
Wires Loose ends, or jumper leads.

Setting …

Senior Software Engineer, Hotjar Ltd. / ZZP
Python Developer, Hotjar Ltd. / ZZP

This build started as something simple: a lucky cat which would turn on and off automatically in response to some event. Since lucky cats are associated with good fortune the idea was to make one do this every time I got paid. This was working pretty well but unfortunately, after …

Below is a quick reference guide to Wemos D1 pin mapping for GPIO, I2C and SPI when working from MicroPython.

Pin mapping

The visible pin numbers written on the Wemos D1 does not relate to the internal pin numbering. In MicroPython you need to use the internal pin numbers to …

Pulse sensors have become popular due to their use in health-monitors like the Fitbit. The sensors used are cheap, simple and pretty reliable at getting a reasonable indication of heart rate in daily use. They work by sensing the change in light absorption or reflection by blood as it pulses …

Pulse sensors are a common feature of fitness monitors, used to track your activity and cardiac fitness over time. These external monitors use the reflection and absorption of bright green/infra-red light to detect the pulse wave travelling down the artery — a technique called photoplethysmography (PPG). This same techique is …


Added Safari Sam (1994)

1994 platform game for the Sam Coupé 8bit computer


A Python library for the MAX30100 HR/Oximetry sensor.

KropBot is a little multiplayer robot you can control over the internet. Co-operate with random internet strangers to drive around in circles and into walls.

If it is online, you can drive the KropBot yourself!

Raspberry Pi Zero W amazon
Pi Zero Camera amazon
Pi Zero Camera Cable Watch …


KropBot: Multiplayer remote-controlled Raspberry Pi robot

The Scroll pHAT is a little 11x5 (55) white LED matrix pHAT which you can control easily from a Raspberry Pi. In this project we'll squeeze a tiny-yet-playable game of Tetris onto the Scroll pHAT.

Raspberry Pi Zero / Zero W You don't need wireless for this project, but it …
Python Developer, Hotjar Ltd. / ZZP
Data Scientist/Python developer, ZZP

Graduated, PhD Doctor of Philosophy, Immunology

Because of the low stoichiometry of protein phosphorylation, targeted enrichment prior to LC–MS/MS analysis is still essential. The trend in phosphoproteome analysis is shifting toward an increasing number of biological replicates per experiment, ideally starting from very low sample amounts, placing new demands on enrichment protocols to make …


Proteomic Data Analysis with Python (pandas, scikit-learn, numpy, scipy)

Data Scientist/Python developer, ZZP
Post-doctoral Bioinformatician, Universiteit Utrecht


GUI-based MaxQuant proteomics processing tool built on PaDuA and Pathomx libraries


Standalone 1D NMR processing application built on the Pathomx libraries

Epstein-Barr virus, a B-lymphotropic herpesvirus, is the cause of infectious mononucleosis, has strong aetiologic links with several malignancies and has been implicated in certain autoimmune diseases. Efforts to develop a prophylactic vaccine to prevent or reduce EBV-associated disease have, to date, focused on the induction of neutralising antibody responses. However …

Current biomarkers of renal disease in systemic vasculitis lack predictive value and are insensitive to early damage. To identify novel biomarkers of renal vasculitis flare, we analysed the longitudinal urinary metabolomic profile of a rat model of anti-neutrophil cytoplasmic antibody (ANCA) vasculitis. Wistar-Kyoto (WKY) rats were immunised with human myeloperoxidase …

Common bean (Phaseolus vulgaris L.) is one of the most consumed staple foods worldwide. Little is known about the molecular mechanisms controlling seed development. This study aims to comprehensively describe proteome dynamics during seed development of common bean. A high-throughput gel-free proteomics approach (LC–MS/MS) was conducted on seeds …

He took his first steps down into the cellar, a dank smell entering his nostrils and a sigh escaping his mouth.

He did not like dank. Dank was the smell of forgotten items, rotting items, worthless items. He liked polish, upstairs smelled like polish. Perhaps he should go back.

His …


Partial least squares discriminant analysis (PLS-DA) is an adaptation of PLS regression methods to the problem of supervised clustering. It has seen extensive use in the analysis of multivariate datasets, such as that derived from NMR-based metabolomics.

In this method the groups within the samples are already known (e.g …

1D 1H NMR is a commonly applied to metabolomic studies, being well suited to untargeted analysis of complex biofluids. It has been successfully applied to the classification and diagnosis of a number of diseases including [ref].

There are a number of important steps that must be applied prior 1D …

Metabolomics studies have been reported for virtually all of the main rheumatologic diseases, although notably none yet for SSc. Our own group has demonstrated the use of urinary metabolic fingerprint analysis to predict responses to anti-TNF, and we have suggested that metabolites resulting from TNF-driven cachexia are among the useful …

Wooey is a simple web interface to run command line Python scripts. Think of it as an easy way to get your scripts up on the web for routine data analysis, file processing, or anything else.

The project was inspired by how simply and powerfully sandman could expose users to …


Background Metabolomics is a systems approach to the analysis of cellular processes through small-molecule metabolite profiling. Standardisation of sample handling and acquisition approaches has contributed to reproducibility. However, the development of robust methods for the analysis of metabolomic data is a work-in-progress. The tools that do exist are often not …

This is quick start-up guide for new users of Pathomx. Following it should give you everything that you need to know to start using Pathomx right away. Once you've been through the basics you might like to see some of the demos to see what Pathomx is capable of.

Pathomx …

Pathomx is a workflow-based data analysis tool built on IPython. It began as a metabolomic-analysis toolkit, but has extended to support general data analysis workflows. It aims to be simple to use for non-experts while powerful enough for complex analysis tasks. Key to both of these goals is the ability …

Post-doctoral Bioinformatician, Universiteit Utrecht
PhD Student, Birmingham University
United Kingdom


MISA: Minimally Improved Segmental Alignment


Metabolic pathway visualisation built on Graphviz


A simple Python biological pathway mining algorithm based on the Biocyc database

This notebook demonstrates automatic phase correction algorithms implemented for nmrglue. Two standard algorithms are implemented:

  • ACME algorithm by Chen Li et al. Journal of Magnetic Resonance 158 (2002) 164-168

  • Naive peak minima minimisation

The outputs for the two algorithms are shown below. Automatic phase correction can be used through the …

This notebook uses a subset of the available processing features in NMRLab (+Metabolab) to process 1D NMR spectra. The output is saved as a CSV file that can be imported into pandas, PLS_Toolbox or any other package for subsequent analysis.

To use this workbook you will need an installation of …

This notebook contains snippets of code that are useful when working with MATLAB in IPython Notebooks.

Displaying images from MATLAB

Passing variables into cells using the %%matlab magic requires h5py which is tricky to install. If you only need to pass in simple variables (strings) you can instead pass it …

MetaboHunter is a Python module for accessing the MetaboHunter web service web service for automated assignment of 1D raw, bucketed or peak picked NMR spectra.

More information about the algorithm is available in the published paper:

Tulpan, D., Leger, S., Belliveau, L., Culf, A., Cuperlovic-Culf, M. (2011). MetaboHunter: semi-automatic identification …

MetaboHunter is a web service for automated assignment of 1D raw, bucketed or peak picked NMR spectra. Identification is performed in comparison to two publicly available databases (HMDB, MMCD) of NMR standard measurements. More information about the algorithm is available in the published paper:

Tulpan, D., Leger, S., Belliveau, L …


A Python interface to the Metabohunter 1D 1H NMR metabolite identification service

BioCyc is a Python interface to the BioCyc. Acting as a wrapper it queries the database and then presents the XML returned in a pythonic object-based interface. Support for IPython views is included offering nice summary tables of object attributes.

BioCyc are approaching the renewal period for their NIH grant …

This notebook is a quick demo of a BioCyc Web API I've released for Python. While incomplete the API offers access to most basic attributes for metabolites, proteins, reactions, pathways and organisms in the database. The Python interface comes with an disk-based caching mechanism under ~/.biocyc that greatly reduces the …


A Python interace to the BioCyc Web API

Analyzing a dot blot in ImageJ by background subtraction and measuring the integrated density of each dot. This dot blot image is available in the File/Open Samples menu in ImageJ 1.33s or later.


  • This method usually requires background correction of the image, which can be done using …

Determining the level of cellular fluorescence from fluorescence microscopy images in ImageJ

  • Open ImageJ. Note: ImageJ may be freely downloaded from here
  • Select the cell of interest using any of the drawing/selection tools (i.e. rectangle, circle, polygon or freeform)

  • From the Analyze menu select “set measurements”. Make sure …

QtIPy: The data automator! a simple GUI-based run-automator for IPython notebooks. It allows you to attach triggers to files, folders or timers to automatically run notebooks.



IPython notebooks are great for interactively working through analysis problems, so why would you want to automatically run them? To get a record …

I've just released a simple API for managing matplotlib line and marker styles for plots. It's called mplstyler and you can get it from Github or PyPi. This code is based on the style manager in Pathomx, extracted for more general use.

from mplstyler import StylesManager
styles = StylesManager …


An API for assigning consistent marker styles to plots. Assign colours, markers, line-styles to labels and re-use on subsequent plots.


This content was previously available on WikiPedia but deleted as not really encylopaedia-worthy. Since an article of mine was originally a major source for the data in the page, I took a copy for posterity. It's now here on Github, reformatted as an editable CSV file and publicly editable by all.

This short demo shows analysis of a publically available GEO dataset using Pathomx, with a workflow build using the new visual editor (available in the next release).

You can download the example dataset from here.

Pathomx is an open-source workflow-based scientific analysis application. Source code is available here with packaged …



See publication trends over time; demo plugin for metapath

Short demo of an experimental analysis of metabolomic (NMR) data using Pathomx. Metabolomic test dataset produced from THP-1 cells grown under normal and hypoxic conditions. Spectra (2D 1H JRES) have been pre-processed and quantified using the BML-NMR service.

The video shows an example analysis from processed data through to metabolic …

Pathomx is a unique workflow-based analysis tool that provides complete analytical control while maximising usability.

Construct complex analysis workflows including multivariate, univariate and pathway-mining approaches from a simple drag-drop interface.

Configure tools and immediately see the result reflected downstream. Prototype scripts and share or export the result for others to …

A Python implementation of the Icoshift algorithm, a versatile tool for the rapid alignment of 1D NMR spectra

Icoshift is a Matlab-based algorithm for the alignment of NMR spectra developed by Francesco Savorani and Giorgio Tomasi. It performs correlation shifting of spectral intervals using an FFT engine that aligns …


A versatile tool for the rapid alignment of 1D NMR spectra

Cytoscape 3.0.2 was released on 1st August, a bugfix release for the 3.x series. However, there is a compatibility issue with the latest Java update from Apple resulting in Cytoscape hanging on startup. I'd followed advice found elsewhere to update to the latest Java version with no …

A command line program for the conversion of Accuri .c6 flow cytometry data files to the standard .fcs format, has been released today via github and PyPi.


Someone in our lab recently needed to convert a large number of files (>500) and processing each one manually in the c6 …


Accuri2svg is a command line program for the conversion of Accuri .c6 flow cytometry data files to the standard .fcs format.

Gpml2svg, a command-line/Python API for rendering GPML (GenMAPP Pathway Markup Language) to SVG, has been released today via github and PyPi.


In order to add support for GPML pathways (and later KEGG) in MetaPath I needed a way to get SVG rendered versions of marked up pathways. The …


A command line tool and Python API for the conversion of biological pathways marked up using GPML to SVG.

Background: Macrophages are abundant in the synovium of RA and are the major source of many inflammatory cytokines, including TNFα. Disease severity correlates strongly with both synovial macrophage abundance and activation status but inversely with oxygen levels. Given the importance of oxygen to cell metabolism, differentiation and function, we hypothesized …

I'd had success using py2app for building Mac binaries for distribution but wanted to give cx_Freeze a go since it's cross platform - allowing builds for Windows, Linux, and more. Unfortunately, attempting to build using cx_Freeze was resulting in errors:

libpyside-python2.7.1.1.dylib: No such file or directory …

As mentioned in the previous post, I recently migrated this site over to the very clever Pelican. Setting it up was relatively straightforward using a combination of the official docs, this post and linked github repo from Dominic Rodger. That said, there were a few things that I stumbled at …


[Archive] Previous iteration of the golifescience site based on Django. Code here for archival purposes only; have at it.


Quickly generate publication-quality figures from MATLAB with scripted transformations.


Workflow based scientific analysis built on Python


Simple scientific data graphing from the command line with matplotlib

On MacOS X 10.5 there is considerable slow-down in the MATLAB editor and other GUI elements. The issue is related to a change in the default Mac Java 2D rendering engine from Quartz2D (10.4) and Sun2D (10.5). This newer rendering engine improves performance for figure drawing, but …

OBJECTIVE: Anti-tumor necrosis factor (anti-TNF) therapies are highly effective in rheumatoid arthritis (RA) and psoriatic arthritis (PsA), but a significant number of patients exhibit only a partial or no therapeutic response. Inflammation alters local and systemic metabolism, and TNF plays a role in this. We undertook this study to determine …

Inflammation is an important component of normal responses to infection and injury. However, chronic activation of the immune system, due to aberrant responses to normal stimuli, can lead to the establishment of a persistent inflammatory state. Such inflammatory conditions are often debilitating, and are associated with a number of important …


You can use the command ls --color (or an alias) to show directories with colours for folders, files, links, etc. However, you may not realise these colours can be easily configured using bashrc and a configuration file.

Edit your .bashrc file (in your home directory) to include the following line …

Metabolomics in the Analysis of Inflammatory Diseases is chapter 11 in the open-access book Metabolomics edited by Ute Roessner.

Metabolomics is a rapidly emerging field in life sciences, which aims to identify and quantify metabolites in a biological system. Analytical chemistry is combined with sophisticated informatics and statistics tools to …

memcached is a general-purpose distributed memory caching system originally developed by Danga Interactive for LiveJournal but now used by many other sites. It is often used to speed up dynamic database-driven websites by caching data and objects in RAM to reduce the number of times an external data source (such …

Haiku is an open source operating system currently in development that specifically targets personal computing. Inspired by the Be Operating System, development began in 2001, and the operating system became self-hosting in 2008 with the first alpha release in September 2009, the second in May 2010 and the third in …

Haiku is an open source operating system currently in development that specifically targets personal computing. Inspired by the Be Operating System, development began in 2001, and the operating system became self-hosting in 2008 with the first alpha release in September 2009, the second in May 2010 and the third in …

A quick one-liner to recursively search files for a given text string.

Open up a terminal session and enter the following - replacing "foo" with the text to search for.

find . -exec grep -l "foo" {} \;

You can also limit the search to files with a particular extension (e.g …

Upgrade threaded comments using mptt to allow AJAX submission of comments and update the template - without any backend hacking of Django. Everything is accomplished via Javascript and template tags.

method/1533/Screenshot from 2012-07-31 20:53:24.png


Set up Django threaded comments using the mptt method outlined previously.

First open up your comment form template form.html …

Show another of your blogs or any other RSS news feed on your WordPress blog with this simple template code.

Open your template file in either the WordPress admin editor or via FTP/SSH access to your hosting server. If you want to put the feed links in your sidebar …

A simple trick to make comments from the original post author stand out a bit more in the comment listing - useful for seeing replies to comments.

First you need to create a style to apply to highlighted comments on your blog. To do this, either in the admin editor or …

Sometimes things go a bit wrong. Sometimes they go very wrong. XKill is a simple little application that allows you to kill a running X application that has got out of kilter. Think of this as a quick way to get back control of your Desktop.


xkill (installed by …

On desktop setups where icons are shown on the desktop these are normally taken from the specific folder ~/Desktop. If you find you want to show icons from either your Home or another directory for a particular install/user you can do so by editing the user-dirs config file as …

Screen is a neat little program that allows you to use multiple virtual terminals in a single session on Unix/Linux and Mac. However, it does more than just that. It can also allow you to share your current session on a machine with another user - allowing you to collaboratively …

Install the latest version of Google Earth for linux direct from Google sources.


Open a terminal window to perform the installation (Ctrl-Alt-T) then enter the following at the prompt:

wget http://dl.google.com/dl/earth/client/current/google-earth-stable_current_i386.deb

You will see a progress bar as the …

Bash command substitution performs a given command replacing the marker with the resulting standard output. It is particularly useful when you want to store the output of a command in a variable or as an alternative method of chaining multiple commands together.

Bash command substitution is achieved by wrapping your …

Syntax highlighting is more than just eye candy. It can turn a block of impenetrable code into a simple grok (although it has it's limits). To boost the usability of our code guides on this site we wanted to implement nice clear syntax highlighting of our hacks. Code samples are …

Django ships with it's own comments contrib app that provides commenting on arbitrary models. However this is a flat-comment system which doesn't allow replying to comments. An app called django-threadedcomments exists but has not been updated for a number of versions and is broken. Other alternatives are less flexible than …

A quick method to remove duplicates from text files - including for example CSV files - where multiple records have been added (perhaps automatically) at different times resulting in multiple copies of the same record scattered throughout the file. Here is a simple one-liner bash command to remove duplicates using sort.

This …


System request (often abbreviated SysRq or Sys Req) is a key on keyboards for PCs that has no standard use. This key can be traced back to the operator interrupt key of the IBM System/370 mainframe computer. But under Linux there's a bunch of useful things available via this …

Graduated, MRes Biomedical Research

Background: Macrophages have a wide range of immunological and non-immunological functions, ranging from clearance of apoptotic cells, tissue remodelling, and release of pro and anti-inflammatory mediators at sites of tissue damage or infection. Subsets of phenoty- pically distinct macrophages may be uniquely adapted to perform these roles. Phenotypically and functionally …

Brace expansion is one of the most powerful bash tricks with the potential to save you considerable time. Here are some common use cases.

Be careful with the use of spaces as these will stop expansion working. If you have any text containing spaces, wrap it in quotes. However, the …

Find the currently running processes on your system that were not started by yourself. A great way to find out what is hogging your system on multiple-user setups or remote logins.

Open up a terminal session and enter:

ps aux | grep -v `whoami`

ps aux returns (a) all processes …

Often forgotten the file command will give you a simple summary of a file's type and content.

At the prompt enter file <filename> where <filename> is the name of the file you are interested in.

You will receive output detailing the files contents, e.g.

A Word Document.doc: Composite …

Cinnamon is a re-implementation of the Gnome 2 desktop in GTK3 developed by the Linux Mint project as an alternative to both Gnome3/Shell and Ubuntu Unity. Here we explain how to install Cinnamon on top of your Ubuntu installation, without installing Linux Mint.


As with all Ubuntu unsupported software …

Update your session to new settings in .bash_profile without logging out and back in again.

At the prompt enter:

source ~/.bash_profile

add the following line to your .bash_profile or .bash_aliases file alias reload='source $HOME/.bash_profile' after running source ~/.bash_profile the command reload will be available to do the same …

Find the pids of all instances/processes of a given program running on your system

Open a terminal and enter ps ax | grep "firefox" ...replacing 'firefox' with the name of the program you are looking for.

The columns in the output are as follows: (1) pid 'process id' (2) tty …

Create your own bash pipes to send program output between shells, processes and users.

You may already be familiar with the | command commonly used to send the output of one command into another, e.g. cat /var/log/messages | less. Here we create user-defined pipes to carry output between shells …

A short one liner to quickly serve any folder via a http server.

Start the server

cd to the directory you want to serve.

Python 2.7

At the shell prompt enter python -m SimpleHTTPServer

Python 3

At the shell prompt enter python -m http.server

Access the files from …

CDPATH is an environment variable which tells the cd command where to look for the specified folder. By including the parent folders of commonly used locations you can access folders more easily - and without typing an entire path.

Open up your shell profile file .bashrc (Linux) or .bash_profile (Mac).

Somewhere …

ifconfig.me is a web service that displays information about your connection, including IP address, hostname and User Agent string. Helpfully it provides a simplified interface that can be easily queried to get this information from the command line.

All commands are variations on the below. The full list is …

A quick one-liner to find the most common pages giving 404 errors on your apache2 setup. Set this up as a shell alias to get easy access at any time.

This one liner breaks down as follows:

  1. cut splits the input (the logfile) by -d delimiter and returning only the …

Re-run previously entered command as root user.

sudo !!

!! is automatically substituted to the content of the previous command. Turning the above line into sudo <your command here>.

Looking Glass is GNOME Shell's integrated inspector tool and JavaScript console useful for debugging.


Open the run prompt by pressing Alt+F2

Enter lg to start Looking Glass

Commands can be entered directly at the prompt e.g. global.get_window_actors()

step/7348/Screenshot at 2012-05-03 20:15:22.png

Exit at any time by pressing Esc

Debug Gnome Shell, or run it from the console, either for plugin development or troubleshooting.


Switch to the console using Ctrl Alt F1 Type "w" to find your display (usually it's :0.0) Export your display (usually with export DISPLAY=:0.0) Restart gnome shell from the console by typing …

Bash history expansion allows you to quickly re-run previous commands using ! and the number of the command in your history.

method/1492/Screen Shot 2012-04-22 at 16.03.03.png

You can adjust the size of the history by setting the HISTSIZE variable in the shell e.g. export HISTSIZE=1000. You can clear the current history with history -c …

Interactively search through your command line history with a simple keyboard shortcut.

method/1491/Screen Shot 2012-04-22 at 15.55.21.png

At a new shell prompt (bash or Terminal.app on Mac) press Ctrl-R

Start typing the search string to lookup in your bash history. As you type the top matching command in your history will appear.

Hit Return …

Homebrew is the easiest and most flexible way to install the UNIX tools Apple didn't include with OS X. It provides a simpler alternative to MacPorts, installing under an isolated non-root prefix, symlinked to /usr/local

method/1490/Screen Shot 2012-04-21 at 17.37.33.png

You do not need to use sudo when using Homebrew as software is installed …

GNU Screen is a command-line application that allows use of multiple virtual sessions within a single real terminal or remote session. Importantly, it allows for persistent running of command-line applications independent of the shell that initiated them program, meaning active applications can persist during disconnection.

This is just one of …

When in a repository directory you can show the name of the currently checked out Git branch in the prompt, making it easier to track where you are (and where you're about to commit).


The following instructions are written for Mac OS X (Lion) or later, using a terminal with …

Show a warning in the Terminal's prompt when the current working directory is no longer where the shell expects it to be. (e.g. it was deleted or replaced by a new, different directory with the same name by some other app).


Why is this useful? Take the scenario where …

PhD Student, Birmingham University
Postgraduate MSc, Birmingham University

Install and setup the tools necessary for Android development with Eclipse on Mac OS X (Lion)



Mac running Mac OS X (Lion) (Intel)


Download Eclipse Classic for Mac from the Eclipse download page.

Eclipse Classic is recommended but those who know they need a different version can download …

Initialize a Git repository from a local directory, and the files therein, pushing it to an existing but empty remote.


Assumes that the remote bare repository has been created.


  • Git
  • An empty bare remote repository


Open a terminal/console (Terminal on Mac/Linux, cmd.exe on Windows) and …

Macrophages have a wide range of immunological and non-immunological functions in the host, ranging from clearance of apoptotic cells, tissue remodelling, and release of pro and anti-inflammatory mediators at site of tissue damage or infection. Within these wide-ranging functions however, subsets of macrophages show unique phenotypic adaptations to their role …

Epstein-Barr virus is a γ-herpesvirus endemic (>90%) in the human population and implicated in a variety of lymphomas and solid tumours including Hodgkin’s lymphoma, Burkitt’s lymphoma and post-transplant lymphoproliferative disorder. Despite the prevalence of EBV, little is known about the mechanisms of early infection, including the role of …

Postgraduate MSc, Birmingham University

Graduated, BMedSc Medical Science

BMedSc Undergraduate, Birmingham University


A drop in media player app for Django projects using the flowplayer flash player backend. Supports playlists, multiple player types and flowplayer configurations.

BMedSc Undergraduate, Birmingham University

The new plugin download interface, hooked into wp-plugins.org adds extra incentive for plugin developers to use SVN.

There are a number of detailed SVN guides available, as well as an entire online book. But for casual plugin developers wanting to get the benefits of using the system most of …

While getting started using the new wp-plugins.org SVN I was looking for a quick way to download the contents of an SVN to local disk. This can be useful when doing research on methods employed by other plugins or for getting a local development copy where SVN access is …

Increasing traffic is the measure of success for a website. More visitors equals more exposure which in turns generates more income. However, if you have hosted your site on a low-end package you could get hit by excess use charges just as your start celebrating your success.

In this article …

Psychology & Artificial Intelligence, University of Edinburgh
Psychology & Artificial Intelligence, University of Edinburgh
Nelson & Colne College, Lancashire

Pyromaniac (originally Game Development Thingy) was a collaborative game development project I started in 1999. Written in Pascal, which I was learning at college at the time, it started as a bit of fun and then evolved into a bit of fun with other people. Sometime in 1999-2000 I launched …

Nelson & Colne College, Lancashire
West Craven High School, Barnoldswick

Mention in FRED 74 interview of Jupiter Software

SCADs software wasn't popular on FRED (slow, and large).

Originally published in Vol.9 No12 (August, 1996) edition of Format Magazine, this is a short tutorial I wrote based on SAM C, intended for people currently writing programs in BASIC -- I never actually wrote part II.

This is the first in a series of articles on SAM C, helping …

This small demo was written in SAM C as an advert for the SAM PD / F9 Software library from Derek Morgan -- where I released all my games.

The demo has a Christmas theme with a snowman & trees with falling snow. The snow lands and rolls off the tops of things …


Blastamac is an asteroids clone I wrote using SCADS on the Sam Coupe. In place of asteroids it uses the heads of people from the SAM scene -- with photos taken from the previous SAM & Spectrum show in Gloucester. The name Blastamac is because one of the heads is Colin MacDonald …

This is a simple upwards scroller written in SAM BASIC and included on FRED 59. There had been an upward scroller demo in a previous magazine, but I couldn't figure out how it worked so implemented my own. It generates double-height, double thickness characters scrolling up the screen.

Upscroller appeared in Bits & Bobs, Fred 59 Upscroller appeared …

Safari Sam reviewed in Fred Issue 59

...scoring a whopping 57%

Small code-search utility released on FRED 55 Bits & Bobs. We didn't have IDEs back in those days so I wrote this little utility to find strings (methods, text) in code files on disk -- useful when you forget where you left something.

Firstly is a code searcher program by Martin 'Duhh' …

UFO Alien Massacre is a little SCADS game I wrote, which appeared on Fred 53. It's a little shooter, where you control a UFO over a planet and must destroy the other UFOs without hitting the ground bases.

You can only drop bombs, while other UFOs can fire missiles sideways …


Safari Sam was released from the Sam Coupé sometime in 1994, a collaboration with Derek Morgan (of SAM PD) who provided the theme and level ideas. It was developed in SCADs

Safari Sam is a platform game I developed for the Sam Coupé, sometime in 1994 — I didn't have the …


First own computer, the MGT Sam Coupé

Z80 based microcomputer, 16 colour, 6MHz

West Craven High School, Barnoldswick

First computer, the ZX Spectrum +2

Started programming around now

Established 1980