About Me

My name is James Hamilton. I am currently studying for a PhD in the Department of Computing at Goldsmiths, University of London. My research involves Java, Java bytecode, decompilaton, obfuscation, watermarking and related areas.

I have previously obtained First Class Honours in Master in Science (MSci) Computer Science degree at Goldsmiths, University of London - a combined BSc degree (for which I obtained First Class Honours, and investigated ant behaviour and it's applications to computing) and research based masters degree in which the primary research project was Static Source Code Analysis Tools and their Application to the Detection of Plagiarism in Java Programs.

I teach part-time at Lewisham College, a Further Education College in Lewisham.
I also do freelance web-programming work currently working on functionpix.com, and previoulsy co-worked on an internal project for Saatchi & Saatchi, back-end development for wannabeeuk.com and developed Kalms-Associates.com for a local IT support company. The main scripting language I use is PHP, along with MySQL or PostgreSQL for a backend database. I also use Flash, mainly focussing on the ActionScript side of things, Fireworks for web graphics and Vi for text editing on Linux/TextPad for text-editing on Windows.

I have been interested in computing since I was young starting out with old computers obtained from car-boot sales - my first computer was an Amstrad CPC464.

Read my CV here and Contact Me here

Get a quote for a web site, by contacting me.

PHP Stuff

Find some useful PHP tips, code and ideas here. Latest: PHP Shopping Cart

News Feeds

Read Some News Here. XML Feeds, From BBC to Slashdot.

Current Projects

PhD Research

Details of my PhD research in the Department of Computing at Goldsmiths, University of London can be found here. My research involves Java, Java bytecode, decompilaton, obfuscation, watermarking and related areas.

Arabic

أهلاً وسهلاً. إسمي جيمس هميلتن. أنا من لندن في إنجلترا. أتكلم عربية شوية. درست عربي في القاهرة وأحب مصر
Welcome. My name is James Hamilton. I'm from London, England. I speak a little Arabic. I studied Arabic in Cario and I love Egypt.

Egypt Pictures

Egypt Pictures

Previous Projects

Static Source Code Analysis Tools and their Application to the Detection of Plagiarism in Java Programs

This project develops a system for detecting plagiarism in sets of student assignments written in Java. Plagiarism is viewed as a form of code obfuscation where students deliberately perform semantics preserving transformations of an original working version to pass it of as their own. In order to detect such obfuscations we assume we have a set of programs in which we attempt to find transformations that have been applied. We investigate tools for static analysis and transformation of Java programs to build a system for plagiarism detection.

Static Source Code Analysis Tools and their Application to the Detection of Plagiarism in Java Programs

Ants - Computer Science Project

My BSc computer science project - simulating ant behaviour and investigating the uses of this behaviour including shortest path algorithms.
Go to Ants: BSc Computer Science Project

Get the Flash Player to see this player.

Video 1 - A demonstration of the ant simulator with 29 food squares using directed pheromone trails and strength.

Data Mining

I'm previously took a Data Mining course as part of my degree. Here is some data mining examples in PHP.

Semantic Tagging

I am currently working on a semantic tagging solution for functionpix.com

Java

Audio Player

Audio Player Screenshot
A Java audio player based on the basic player library from javazoom.net. Features include mp3 playback, play/pause/stop/previous/next/seek/volume controls, m3u playlist management, album art, ID3 tag display/editing, different views. Download (zip including jar and libs), Source.

Solitaire

Solitaire Screenshot
An implementation based on Microsoft Windows Solitaire. Only allows one card to be moved at a time. This was my first java program (apart from little Hello World type programs) - I decided to write this program while I was in the first year, as it was a second year coursework and the first year java course was pretty dull! I draw the suit symbols using The GIMP (Jack, King, Queen don't yet have pictures).
I learnt a lot about programming, 2D graphics programming (e.g. at first dragging cards created lots of flickering - until I learnt about Double Buffering!) and Java by writing this game.
Go To Solitaire Applet  Download Source

Robot

A virtual robot implementation using a UDP based communication protocol. A control program runs on one computer and a robot simulation runs on another. Implements a basic parser to parse commands to send to the robot. Download Source.

Space Invaders

Space Invaders Screenshot
What to do after I wrote Solitaire? First year Java work? Or maybe create a version of the classic Space Invaders. After writing Solitaire I wrote this simple game. I used the 2D graphics knowledge gained from writing Solitaire and learnt more about programming in Java for example Threads from writing this game.

The Rules: shoot the aliens, before they reach the bottom or shoot you three times. The aliens speed up as the move closer to the bottom, the bonus space craft occassionaly moves across the top and is worth more points.

I created the alien and explosion graphics in The GIMP.

Go To SpaceInvaders Applet  Download Source

Breakout

Breakout Screenshot
You'd think that by the time I'd created Solitaire and Breakout, the first year Java course would've have started to get interesting. Well, it didn't so I made Breakout. There is a bug in the game that I didn't get around to fixing - the ball can go throught the side of the bricks.

There are several kinds of bricks - some have to be hit twice to destroy them (yellow), some once (blue), some can't be destroyed (orange).

There are some secret controls that were to be removed when the game was finished: press S to go to the next level (only 2 levels), A to go to the preivous level, M to reverse the mouse direction, - to decrease mouse speed, + to increase mouse speed.

Go To Breakout Applet  Download Source

Letter Count

Letter Count Screenshot
This is an example of one the 2nd term, 1st year assignments. The specification was to create a command line program to load a file and count the letters - pretty boring stuff. So I made a graphical version. It's prettier.

Download Jar  Download Source

Diary

Diary Screenshot
This is the other of the 2nd term, 1st year assignments. The specification was to create a command line diary program. I made a graphical version again. I learnt a lot about Java Swing by doing the application, as well as programming techniques such as the Singleton Pattern.

Download Jar  Download Source

Data Compression

I've just completed a data compression course as part my of BSc Computer Science Degree.

Some websites that I have developed

  • functionpix.com
    • Took over development of this site in August 2006, much of it needed re-writing and there was a lot still to implement in which I haven't been involved since 2007 due to other commitments
    • Main technologies used include
      • PHP, MySQL, HTML, CSS
      • GD Image Library for image resizing and effects (B/W etc)
      • RSS and XML for data interchange
      • Integrated and customised Openads adserver
      • Flash Uploader for uploading multiple images
      • AJAX techniques for forms and UI effects (e.g. registration page, newsletter signup, article voting) using the prototype and script.aculo.us JavaScript libraries
      • FCKEditor for article submission
      • Currently working on a semantic tagging solution for image searching and retrieval
      • Statistics of site usage e.g. for contributors scores, views, sales, distribution of profits to contributors
  • viewdo.com
    • I offered my services after finding a security flaw in their download script.
    • Have been advising, making suggestions and implementing certain features
  • Carshalton Boys Sports College
    • Site has since been re-developed
    • I created this website from scratch using PHP and a PostgreSQL database.
    • I also set up and now maintain the Linux RHEL server that it runs on
    • I learnt a lot about programming, databases and specifically PHP and PostgreSQL from this site
  • Kalms Associates
    • Simple web site built with Dreamweaver and Photoshop

Some old websites