New Server Upgrade Almost Ready!


 This is the new Dell PowerEdge 2950 server that will be used on the website. It’s packing a nice dual quad-core 3.16Ghz CPU, 16gb of ram, and VMWare to make management and repairs easier and better. The current server only has 2GB of ram, and a very ancient quad-core 2.1Ghz cpu (one of the first Xeon quad core CPU’s released). We are still adding some bits to it, saving up our spare change and buying them as we can.

In the next few weeks, this bad boy will be shipped off to the datacenter and installed in it’s rack, so the site can receive a much-needed upgrade.

If you want to check out CVGM and listen to some great oldskool computer game music, check out  Thanks!


New Version Of Litecoin Miner Status Released



Today I released a new version of my popular Litecoin Miner Status program. The tool sits in the background of your computer and monitors various litecoin mining pools for your mining activity. The program does not do any mining of it’s own, it simply watches the pools that you mine at to provide you with statistics about how well your miners, and your profits are doing. You can go directly to the application page Here or by the Discography -> Litecoin Miner Status link at the top of this page.

Lots of changes & tweaks have gone into the new program, including the addition of new pools to monitor. If you mine LTC and wish to keep track of your mining rigs or your coins, give the program a try.


Reversi Magic Updated For iOS / Android / Amazon Kindle Fire


I have been spending a lot of time lately working on Reversi Magic, my Othello/Reversi game. Since the game was originally released last year, I have been spending time on optimizing the various parts of the game for AI, appearance, and also ensuring that it works on absolutely any device out there. The game has certainly come a long way since I originally started working on it!

The game’s AI functions make use of a NegaScout/PVS algorithm to determine the best possible moves based on a series of conditions, such as difficulty, board status and a few other things. The easy level is designed to be not too difficult, but good enough to keep you alert during play. As the levels get harder, the AI will step up it’s game and the Hard levels are quite tough to beat! I spent close to a full month working on AI code alone, and it was very educational for me. One day I should write up something on how the AI works, as someone else might find it useful in a different game.

embedded by Embedded Video

YouTube Direkt

Anyways, if you would like to give the Free version of the game a go, you can find it at your favourite App Store by clicking one of the links below:



Screenshot Gallery for Reversi Magic:


How To Link To All Your Apps On The App Store In iOS, and other App Stores


While working on an update for one of my games, I ran into a problem where I wanted to create a link to every app on the App Store that I had written. Each of my games has a button for ‘More Games’ that currently just takes you to my website, where you can see the games, but what if this could be tailored to go directly to the app store page itself? This generates better install follow through, as the viewer can simply click the Install/Purchase buttons, without having to go anywhere else!

How To List All Of Your Apps On Google Play

Directing the viewer to a list of all of your published apps on Google Play is as simple as making a link to your Publisher Name, such as:


Or, if you wish to do it via the web, you can link to this (clickable) link:

If your Publisher Name uses spaces, replace them with a + instead. Feel free to check out some of my Android games at the store!

How To List All Of Your Apps On Amazon Kindle Fire

The Kindle Fire runs Android, however it does not run any of the Google services at all, and many developers make the mistake of accidentally using some of the services in their apps, which do cause problems. Nothing is more embarrassing when you release a lite version of your game, only to have the link to upgrade to the paid version not work. The Amazon method is extremely simple:

The com.fishguygames.WordSearchHunterFree is the package name of the originating request, although Amazon doesn’t appear to do much with this initially that you can see, it lets the system know where the request was generated from. You can also manually enter the above URL in a regular browser window, which will generate a new address that can also be used, such as the following:

Both are 100% compatible from launch. If launched on a Kindle device, the 1st link will give you the option of viewing the app list on the web, or in the Amazon App Store. The 2nd link is only viewable on the web, even if launched on the Kindle, so for use within your App, I reccomend the top link. On Non-Kindle devices, the top link is auto-converted to the 2nd one for display purposes.

How To List All your Apps On iOS/Apple

Follow these simple steps to do the same thing on iOS for your Apple products:

Step 1 – Find your app in the App Store. Right click on your Publisher name, and choose Copy Link to copy the address to the clipboard, so you can paste it in the next step.

Edit The Link
Step 2 – Paste in the link, and change the http:// header (the link in the example is highlighted above) to itms://, as this will stop the app from redirecting as many as 3 times, and instead use the iTunes Store app directly, making the experience faster for the end user. This link can be used in any app and shouldn’t ever change.

App Store List
Step 3 – Test the code on different devices, to ensure it works the way you expect it to! If you wish to have the same effect from your website, just keep the URL as it was.

If you would like to play some of the various games I have written for iOS, Check Out My List Of Games for more information! This should open a window, which will then open your iTunes and take you directly to my developer pages!

I hope this post helps you!  Andy Kellett


Running a Django / mod_wsgi project on DirectAdmin Server


Recently I purchased a new Dedicated server box running Ubuntu 8.10 / DirectAdmin and needed to transfer a bunch of my stuff to it. One of the sites I needed to trandsfer was CVGM ( ) which is powered by Django / Python / Mod_WSGI. I couldn’t find many instructions on the net on how to complete the task easily, so after I figured out how to do it, I wanted to post my results here so that other people who need the same kind of help can find the post and maybe use it 🙂

The DirectAdmin default setup uses a customized version of Apache in order to work, and as a result, it’s not as simple to work with/customize as a regular install of apache. To give you an example, if you would apt-get a module (such as mod_wsgi) that relies on apache2 as a dependency, it thinks apache2 isn’t even installed, so be careful! The global config file for the DirectAdmin apache is /etc/httpd/conf/httpd.conf and I should point out that right now, you should not edit anything in this file whatsoever!!

First, we need to install the Apache module for Mod WSGI. I copied a version of the file from a copy of 8.10 Server I installed on a VM to make sure it matched the same system requirements (Python 2.5) however you can always build one, or obtain one from somewhere on the net. Once I built the file, I copied it to /usr/lib/apache/ on the dedicated box.

There are two ways that you can proceed to activate the module, and i’ll explain both ways. The 1st way is probbably more beneficial if you plan on running multiple WSGI applications, whereas the second is better if you just plan on running a single site and you don’t want to initialize it for every thread your apache creates.

Enabling As Global Module

This is the simplest method of enabling the module. Open the following file for editing:

vim /etc/httpd/conf/extra/httpd-phpmodules.conf

There should already be a line in there for PHP, so we only need to add the following line underneath it:

LoadModule wsgi_module /usr/lib/apache/

Save and Exit the file, if you restart the httpd instances within DirectAdmin, they will all have access to mod_wsgi features.

Setting up a VirtualHost to run a WSGI Application

I’d like to point out here that we are manually editing/changing the automated VirtualHost information generated from within DirectAdmin, so DirectAdmin might change it all back again if you go to edit anything through the admin panels. Remember, when it works, back it up in case that does happen!

The VirtualHost lists are defined in a user’s httpd.conf file, so to edit the list for your site, run the following command:

vim /usr/local/directadmin/data/users/[UserName]/httpd.conf (Replacing UserName with the user account name set up under your site)

Modify the top portion of your Vhost file to look like the following, with your own WSGI settings of course:

# Frontpage requires these parameters in every httpd.conf file or else
# it won't work.
ServerRoot /etc/httpd
WSGIDaemonProcess ProcessName threads=25
WSGIProcessGroup ProcessName

<VirtualHost *:80>

Inside the VirtualHost container, you will add your actual WSGI code as such:

# Load the WSGI adapter just for this VirtualHost, if you choose not to enable it
 # Globally. Do not add this line if you added the module globally!!
 LoadModule wsgi_module /usr/lib/apache/

# Set up Aliases to Django admin, and our own static files
Alias /media/ /usr/share/python-support/python-django/django/contrib/admin/media/ (path might vary on your setup)
Alias /static/ /path/to/static/

<Directory /usr/share/python-support/python-django/django/contrib/admin/media> (path might vary on your setup)
 Order deny,allow
 Allow from all

# Direct root to our WSGI script file
WSGIScriptAlias / /path/to/file.wsgi
<Directory /path/to>
 Order deny,allow
 Allow from all

<Directory /path/to/static>
 Order deny,allow
 Allow from all

Save the changes to your VirtualHost. I would like to point out here, that for CVGM I chose to comment out completely the same VirtualHost entry for SSL (port 443). My site has no use for SSL, and duplicating this code in the 2nd VirtualHost (which is what would happen if edit the Custom HTTPD for this domain in DirectAdmin) will cause an error for already having being called once.

The WSGI file for your project is created in pretty much the standard way:

import os, sys

os.environ['DJANGO_SETTINGS_MODULE'] = 'ProcessName.settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

Save it, double check the paths to the files and then restart httpd in DirectAdmin. If all goes well, the site should fire right up! If you start getting 503/500 errors, check the error.log file in the DirectAdmin viewer for a detailed description of what is happening. If there are no errors in the log, it’s not WSGI causing the problem, it’s something else in your code.

Common Error With Mod_WSGI and DirectAdmin

Depending on which version of DirectAdmin you are using, you may run into a massive slap-in-the-face 503 error regarding misconfiguration, and the error log will tell you something like: “No such file or directory: mod_wsgi (pid=7295): Unable to connect to WSGI daemon process”.

If you do run into this problem, you can try one of two things in the virtual host file. Here is a quote directly from Graham Dumpleton on the WSGI homepage explaining the problem and the solution ( ) :

“To resolve the problem, the WSGISocketPrefix directive should be defined to point at an alternate location. The value may be a location relative to the Apache root directory, or an absolute path.

On systems which restrict access to the standard Apache runtime directory, they normally provide an alternate directory for placing sockets and lock files used by Apache modules. This directory is usually called ‘run’ and to make use of this directory the WSGISocketPrefix directive would be set as follows:

WSGISocketPrefix run/wsgi

Although this may be present, do be aware that some Linux distributions, notably RedHat, also locks down the permissions of this directory as well so not readable to processes running as a non root user. In this situation you will be forced to use the operating system level ‘/var/run’ directory rather than the HTTP specific directory.

WSGISocketPrefix /var/run/wsgi

Note, do not put the sockets in the system temporary working directory. That is, do not go making the prefix ‘/tmp/wsgi’. The directory should be one that is only writable by ‘root’ user, or if not starting Apache as ‘root’, the user that Apache is started as. ”

So, you would change the top of the VirtualHost to read something along the lines of:

WSGISocketPrefix /var/run/wsgi
 WSGIDaemonProcess ProcessName threads=25
 WSGIProcessGroup ProcessName

After restarting Httpd in DirectAdmin, it should clear up the problem!

This was a post I had originally made a long time ago (November 2009), so I have edited/replaced it here for completeness, as I get a lot email requests about it. I don’t use this setup any longer, and use a dedicated box for CVGM which solved a lot of other issues that I was having at the time, and of course the dedicated box is running a much newer Ubuntu distribution. Thanks!

Twinz Loading Screen

Twinz! Free Version Released For Android


Twinz Loading ScreenIt has been a long time since I last worked on one of my own game projects, so it is nice to be able to say that I have finally released a new game 🙂 The game is called Twinz! and is based on an game I wrote back on the Commodore Amiga back in 1996 (HOL Link). The original game it was based on was written by Theo Develegas on the ZX Spectrum (WOS LINK) back in 1991, it was a covertape game that I liked to play and back then, I wanted to have a go at doing one myself. If you asked people to load games from cassette tape nowadays, they would have a heart attack! hehe.

The objective of the game is very simple, you turn over 2 tiles at a time to see if the pictures behind them match. If they do, then they stay open and you keep going. If they don’t match, they turn back over. The logic to the game comes from remembering the images behind each tile, so when you find it somewhere else you can turn it over at the right place. Points are awarded for better playing tactics (tiles that are not checked underneath lots of times) and pairs that are found in sequence (one after the other). The game features 5 levels, three difficulties, and an online high score sharing system where you can post your best scores directly from within the game.

Twinz is compatible on any mobile or tablet device. Releases coming for Kindle fire soon, along with iPhone/iPad and other markets. Stay tuned!

Twinz! Screenshots – Click any thumbnail to make it larger

Download Twinz! Now!


New Tool In Development – Litecoin Miner Status – Monitor Multiple Litecoin Miners At Multiple Pools!

Project Update
This project has now been officially released. You can visit the project page (and download the tool) Here or get to it throught Discography tab at the top of the page. Thanks!

LTC Miner Status ScreenshotI have been working on a new tool for the last couple of weeks to assist Litecoin miners in their quest of mining. As a Litecoin miner myself in this new coin, a few pools started to pop up here and there and there was not much of a way to track what was going on. Hence my tool came along!

A common thing with any coin mining process is hopping, or switching from one pool to another. With my tool, you can see what you are doing across multiple pools, including how much LTC you have mined and how much you have been paid.

The interface is split into 3 main portions. The top part is a “ticker” of sorts that pages through the supported mining pools, showing you the current overall stats of that individual pool such as it’s overall mining speed, and the number of individual miners currently working there (and their combined KH/s speed). The middle field view shows the miners you have listed in that specific pool (If any) and what your miners are currently doing there. The base view is an overall view of your current mining summary across all of the supported pools. The tool is quick, easy to use, and sits quietly in the background keeping itself updated.

The tool is currently going through the last few days worth of testing with some close friends and miners, and I hope to have it released in the next couple of weeks once all the fine tuning has been done to it. If you are interested in testing out the tool, feel free to get in touch with me at andy [at] with your information. You can also find me on IRC , in #elitist, #litecoin and #rfcpool

Support For Many Pools!

At the time of the release, or unless someone suggests otherwise, the following mining pools will be supported from the initial launch of the application:

  • Elitist Jerks
  • OzCoin 

Additional Mining Pools

If you own/run/reccomend another litecoin mining pool that you would like to see added to this program, let me know either by email or in the comments of this post and I will see what I can do to get it in. Your pool must support JSON statistics that can easily be accessed via the web. The tool supports all mmcfe-based pools, I just need to know your details.

The Program Is Beerware!

The program itself will be released as BeerWare, meaning if you like it and you find it extremely handy, you should donate some coin towards a beer or two for the developer! Pool owners who want their pools listed within the app are encouraged to donate a couple of extra beers as well, especially if your pool requires a lot of work to get added (custom JSON etc.) There will not be a charge to buy the program ever, and anyone who does try to sell it for money are trying to rip people off. It will always work the same if you choose to donate or not. Donation addresses to send coin to will be in the About section of the program in various different formats. All donations are truly appreciated 🙂

Donation Addresses

Some people are already asking for donation addresses to bribe with, they are as follows:

LiteCoin: LfrxgdK1PgJQPRkPVDqopQt3FaYVswmp74

More details will be released for the program as soon as they are available. Versions will also be made available for Mac & Linux in time. Feel free to comment or ask any questions in the comments section on this post. Initial testing only available to Windows users. Thanks! FishGuy876


Dennis Ritchie, father of Unix and C, Has Passed Away


Dennis RitchieDennis Ritchie, creator of the C programming language and co-creator of the Unix operating system, has died aged at the age of 70.

Thank-you for giving us a superior language, and being a pioneer in the age of computing. Rest in peace!

/* for Dennis Ritchie */
#include <stdio.h> 

    printf("Goodbye World");

ZD Net Article:

Wiki entry on C: 


Telling Git To Ignore File Permissions


So, I have been having issues with git and repos. Im still extremely new to git (having used subversion for years) so every once in a while I run into something that makes me want to keep going back to svn. Today was such a day when I discovered that git didn’t like that some of the permissions had changed on the files within my repos.

Most of this problem for me occurs from working on files both in Linux and Windows, so its natural that samba will change some of these permissions. So, after reading the manual for a while, I discovered I could issue the following:

git config core.filemode false

This will instruct git to ignore changes to file permissions! Yay! Migraine easing. And according to the git manual:

    If false, the executable bit differences between the index and the
    working copy are ignored; useful on broken filesystems like FAT.
    See git-update-index(1). True by default.

And there you have it 🙂 Pretty straight forward, and saved me from having to buy more headache pills 🙂


Finally Finished Working On My Amiga A1200


AMIIGGGAAHH!I Spent quite a bit of time this weekend working on my Amiga. It has been a few years since I used it for anything other than recording music (for and thought it was about time I got it working again. For quite a while now I have had the itch to get back into programming on the Amiga, and couldn’t think of a better time. Its also not that often lately that I have a few hours of downtime to actually devote to filling the entire kitchen with old computer stuff 🙂

Over the years as a programmer on the Amiga, I have accumulated a fair amount of Amigas, and also bought a few bits here and there. All my Amiga 1200’s are PAL, and every time I fly home to the UK I always bring one back with me if I can find one. On my trip last year, I was able to find an “Desktop Dynamite” pack for 50 quid, so I threw away a bunch of closes and packed my suitcase with wonderful Amiga goodness instead. The machine I had been using previously had a broken pin on the PCMCIA slot, which seems to be a common thing to break on all my Amiga machines over the years.

Amiga 1200 Catweasel HDThe most useful device I ever bought for my Amiga was my Catweasel A1200, it lets me hook up all kinds of drives to the system, and access them natively. In this modification, I will be replacing the built-in floppy with a PC drive. It will prevent me from booting via floppy disk, but the benefits of being able to read Amiga and PC disks while in Workbench are worth it. I also have a Scandy VGA ScanDoubler device thingy that clips over top of some of the chips in the Amiga and lets me connect it directly to a VGA monitor, though I tend to run into a few problems from time to time with it (it might be because my PAL Amiga doesn’t like it, I bought it in the US so it might be NTSC based) such as the screen flickering green or with a tint of blue. For this particular project, I have decided to leave it out of the system and I will put it back in another time. For now, I will settle for my 1084S and a nice Interlaced screen.

Amiga Hard Drive In The PCThe hardest part about working on the Amiga is getting the hard drive working. By default, the Amiga has a size limit of 4gb. I had bought 2 4Gb IBM HD’s online for $1 through Ebay just for this. Now we had to get them working on the Amiga! This is where UAE comes in. One of the nice new features of the newer UAE is the ability to connect Amiga hard drives natively and use them like a real hard drive, instead of the traditional HDF files. It does however still have some problems. It cannot yet (at the time of writing anyways) partition the drive correctly, so all the partition work must be done on the real Amiga. This was a bit of a ballache for me, as I have every Workbench disk except the Install disk (that contained HDToolbox) so I ended up connecting my A2000HD and using an old version from there, just to get the partitions going. From there, I could connect to the drive to the PC and mount it natively.

To begin with, I tried to copy a version of AmiKit to the drive. The copy process went very well, however I ran into a lot of problems getting it to work on the real Amiga. After a few hours of trying to get it to boot, and never reahing the desktop, I decided to take another approach and instead I went with a more simplified Workbench from ClassicWB ( which only required my OS 3.9 CD. The bare basic programs and tools were installed, which was enough to get me started at this point. I added some more games and demos for WHDLoad, and that’s all I really needed. I also took advantage of being online with UAE, and added the newest Catweasel drivers, and a few other tools.

My Amiga has a wireless Netgear card, and I need to use the prism2.device to get it to connect to the network. Once I get moved into my new place next week, I will get that all set up and working. I tried briefly with the Genesis TCP stack and just couldn’t get it to see the card. Nothing like browsing the web on a 16 colour Amiga Interlaced screen! Oh how modern day kids are spoiled!

Detailed Amiga Specs: Commodore Amiga 1200 (PAL, Personally Purchased From the UK), DKB 1240 & 32Mb RAM (030 & 6882 FPU), Catweasel A1200, 4Gb IBM HD, OS 3.9 w/Boing Bag 1 & 2, ClassicWB Image.

Some Pictures Of Beauty:

Go to Top
%d bloggers like this: