Portfolio
Here's a little run-down on some of the work I've done in the past and a few of the projects I've been involved in.
I mostly tend to work with PHP and the GD library to create dynamic image based systems and other dynamic web pages but also have a few heavy ties to web design work, MySQL, AJAX and a variety of other languages and skills.
There's always new work and work that isn't big enough to warrant an entry here which you can find in my blog too.
Web based work
A collection of my previous web based work. Click on an item to see the expanded information. Click it again to hide the information.
Personal work
- Palmnet
- Shoutboxes
- CodeBox
- JacaScript Sandbox
- Questbars
- Mini Polls
- ASCII Art
- Twitter Online
- Image Filters
- Raycaster
- PHP + GD + Maths
- CPU S Emulator
- Tic Tac Toe
That's this site!
Yup, everything here was done by me, code wise. Even some of the visual style. The logo was custom made for me by Gerrard Maguire in early February of 2006, many thanks to him.
The base code for the whole of Palmnet was started in late 2006 and is still being developed and upgraded to this day. There is much more code than the average user gets to see, with a very extensive backend system to aid me in altering the site as needs be.
The code is fully portable and only needs some very basic information from a MySQL database. As of June 2007 when this was written the system source has not been opened to the public and is not available for download.
The Shoutbox system is by far the most popular thing Palmnet has ever done. With thousands of hits, and hundreds of users, this script made a huge splash when it was released.
Though rival systems existed the ease of use of mine, the open source factor, and the encouragement for users to learn from my code, this system far excelled compared to its competitors.
The basic premise is that people can put images on some sites, like a forum signature, but there is no interaction there. The Shoutbox aimed to change that by allowing anyone in the world to have access to alter the image through a simple web form. Anyone can leave a message or a note on the image and anyone can then see the image with the note on.
This kind of thing was very popular on a few forums that I showed it to and within weeks of release of the first beta versions we had about 100 downloads with minimal advertising.
The current status of the project is stale. A new version is in the works however and work is planned to start either at the end of June or sometime before August.
An example can be viewed here: http://sandbox.palmnet.me.uk/shoutbox/
The project page is located on Google Codes Project Hosting: http://code.google.com/p/freepss/
A development log can be found here: http://www.howtousea.com/project_development:shoutbox
CodeBox is a PasteBin clone I made. CodeBox was developed to iron out some of the flaws that PasteBin has and create an overall better system for sharing snippets of code.
Though it's still a very basic system it's proved very useful in day to day life whether helping people out with snippets of their code or just sharing some of mine.
The main bulk of the system is the database that stores all the snippets and associated information. It used CodePress to do the dynamic syntax highlighting of the languages when adding or editing a snippet.
The CodeBox can be found here: http://sandbox.palmnet.me.uk/testbox/codebox/
The JavaScript Sandbox is just a little sandbox development area for JavaScript. I made it to help me debug my code for Programming for the World Wide Web, a module I had here at Loughborough University in semester 1.
The lesson system I started works, but is lacking lessons, especially good helpful lessons! But when I have some free time I plan to try and write it all up and get a good little JS learning environment up and running to help others in the future.
The testbox can be found here: http://sandbox.palmnet.me.uk/testbox/js_tester/
The Questbar system has gone through many changes in the past 2 years.
Starting in Jun 2006 the 'system' was just a simple PHP script that got values through the URL to output a bar that represented the amount of money owned, and the amount wanted to buy an item. This was given away freely to one and all.
In late July of 2006 I upgraded the system so that users could have accounts and store logs of past 'quests'. I charged a small fee of fake money used on a forum, though if people gave me tips or anything they always got a free account. This system proved to be very popular, however the designs were limited and the custom themes lacked usability.
So, in early 2007 I changed the system. I got rid of user accounts and signing up and replaced it with a free system that was open to all. This gave people a variety of bars to choose from and every bar had its source viewable in the page.
There are some plans to update the system sometime soon so that people can optionally sign up and keep logs of their quest histories, but this is not really on the top of my TODO list and might not happen for months.
The current Questbar system can be found here: http://bars.palmnet.me.uk/
The Mini Poll system is another PHP, GD and MySQL mash up system that was based on a script another site used to run.
It's basically a poll system but with each option able to be shown as an image of part of a bar graph so it can be embedded most anywhere on the internet, from comments on blogs to the front page of a website.
You can find the script here where it also includes a more detailed description: http://www.palmnet.me.uk/polls/
Way back in the days before I even knew what PHP was I found this site that had a script to convert any image into ASCII art. I was amazed by this and ended up finding the AAlib for C++ and all sorts of wonderful toys. Eventually I gave up playing with everyone else's ASCII art toys and moved on.
While revising for my exams I needed a break. So I asked my friend Dan to give me a little challenge in PHP to occupy my mind for a few minutes and take it off all the exam stress. He suggested I try to make an ASCII art tool, just like the ones I'd seen a few years earlier, and to make mine in under an hour so I could get back to my revision. An hour later I had done it! Though only a simple one. It could convert JPEG format images into a massive 8 bits of ASCII quality.
Today I still update it with tweaks now and again. It now supports 12 bit detail, colours and scaling (With anti-aliasing too) among a few other things.
The guide on how to use my script is here: http://www.howtousea.com/image_to_ascii_script
Here's a demonstration, the Flock logo with font colour and scaled to half size: http://sandbox.palmnet.me.uk/ascii/main.php?image=flock.jpg&colour&scale=2
Twitter is an online social website where users can update their profiles with whatever they're getting up to. Usually a short message every few hours for most users, letting their friends and colleagues know what they're up to.
Twitter has a variety of ways to put your latest 'Tweets', or status messages, onto your own site. These methods include Flash, JavaScript and an RSS feed. However they do not offer any image based solutions.
Another great feature Twitter has is the Twitter API which I duly used to generate an image based output from the JSON data using the API.
This script is still under development, but a couple of test systems have been started.
The first demonstration of the Twitter API/PHP system is here: http://www.palmnet.me.uk/sandbox/twitter/image.php?user=palmer&theme=blue
I then made a slightly smaller form factor one here: http://sandbox.palmnet.me.uk/twitter/image2.php?user=palmer
Just my little foray into the wonderful maths-filled world of image filters.
I wrote the code to load images easily, add an overlay of the time it took the script to run and, most importantly, it can filter images with a median filter and a mean filter.
I enjoyed writing this script almost as much as the ASCII art script because I love to play around with images and get a cool effect at the end of it. Even if it does take a while for the script to run as it's hardly optimised!
The reason it is not optimised is because it's an image filter written in an interpreted language. Even if I optimised it like a crazy man it would still suffer heavy performance issues.
As it takes anything from a few seconds to a few minutes to filter an image and it doesn't have a friendly front end I have only written a blog post about it in which I link to the source and display a pre-rendered demonstration.
The blog entry can be found here: http://blog.palmnet.me.uk/post/index/153/Image-filtering-and-Spunge
This is a semi-working script that's still having some fairly active development from time to time.
It's currently just a simple raycaster that only renders walls of fixed height and without textures, but hopefully in the future if I have enough time I will finish it off enough for it to have textures and maps. Though the actual use for this is unknown, it was mainly done to test my maths skills.
More details and information here: http://blog.palmnet.me.uk/post/index/161/PHP-Raycaster
I'm not sure if I should include this in the portfolio as it's not a project, so to speak. However, it is fairly fancy and pretty to look at so here it is.
I was reading some whitepapers on image rendering when I stumbled upon some maths I could understand for drawing a spiral, which was done fairly quickly, but soon led on to making a Lissajous curve drawing script.
Blog entry can be found here with images(right click and view image to see parametes used for the Lissajous curve): http://blog.palmnet.me.uk/post/index/160/Project-update-status
The CPU S emulator is a PHP script I wrote so I could play around with the computer model S that we were given during my computer systems lectures in semester 2 of my computing and management course.
The emulator doesn't stay true to all the hardware and is more geared towards producing the correct output rather than the function itself. It also introduces a few things we were not given in the lectures, like comments in the assembly language it uses (I dubbed it SASM) and dynamic addressing. However, even with 8 of the ten commands you can make it do very complex actions, from adding two numbers together and moving memory about to calculating the Fibonacci series.
I don't expect anyone but the people on my module to understand half of what I said, let alone use the emulator, but here's the link if you're interested: http://www.palmnet.me.uk/uni/emus/
The Fibonacci code I wrote can be located here: http://sandbox.palmnet.me.uk/testbox/codebox/index.php?module=snippet&id=83
This is a very small, simple, and basic concept I did using PHP and the GD library again.
The main premise behind the game was to make a simplistic game that was image based. Like the Shoutbox, this would enable the game to be embedded onto most sites where flash and JavaScript are ordinarily blocked.
The game uses an image map to grab the mouse click coordinates and then uses a database to store the results and current positions. A regular expression checks to see if a player has won and increments the score accordingly.
The game can be found here: http://games.palmnet.me.uk/module/tic_tac_toe
Commercial work
- BNTA
- Midland Coin Fair
- Spunge
The work I did for the British Numismatic Trade Association was a collaborative project with PWnet
PWnet handled the customer, design and most of the general system and built their site upon CuteNews, then he called upon my services to make an events system for the client, and re-code some aspects of CuteNews to make the member list work in a bespoke manner.
The events system was coded from the bottom up. Starting with the current paper-based system and making it digital and improving it with Google Maps integration. See here: http://bnta.net/events.php
The members list was a functional script before I was called in, the client just needed some tweaks to get it ordering the members in a custom order. See here: http://bnta.net/members.php
The Midland Coin Fair is the largest coin fair in the county and wanted a similar system to the events system I made for the BNTA but for booking places at one event, the West Midlands Coin Fair.
For this site I mostly re-used the events system from the BNTA site and altered it for bookings for the one event, the West Midlands Coin Fair.
I also made an AJAX system for a simpler way for the admin to add dealers who were attending the event.
Most of the code is for admin use so there's not much to show the general public, however, the front end system can be found here: http://www.midlandcoinfair.co.uk/fair-dates.php
I'm still working on this project. Check the blog for occasional updates and news.
Spunge can be found working here: http://www.palmnet.me.uk/spunge/
Other projects
- How To Use A
How To Use A is a small wiki me and my co-developer, Phil from PWnet, setup to let people know how to use all sorts of random things.
Though the general idea never really took off in a major, mostly due to lack of advertising and lack of time on our parts, there was a short burst of articles and I now use it to store documentation for a few of my online tools and systems. It currently boasts 24 active articles on how to use everything from the Shoutbox system to a coaster.
The site uses Dokuwiki for the wiki system.
How To Use A can be found, read and contributed to at: http://www.howtousea.com/
Offline work
Here's a few of my offline programs. There are more but most have yet to be listed.
- Flash Hacker
- PIntEd
- JiTR
- Twitter Offline
- NetTest
- Winamp Control
- Bees
- QTR
- Maze Game
All the information you need is available at http://software.palmnet.me.uk/module/flashhacker
This project is not quite ready for release to the general public. When it is I'll update this section so remember to check the blog for updates.
All the information you need is available at http://software.palmnet.me.uk/module/JiTR
Still in the very early days of development, this is going to be a Ruby made tool that interacts with the Twitter API in a few different ways and enables the hardcore terminal users to get a bit of Twitter into their lives.
The project is open source, but as it's not released yet it's not under any license yet, however it will probably be released under the BSD license when complete.
Source is in the CodeBox while being developed. Available here: http://sandbox.palmnet.me.uk/testbox/codebox/index.php?module=snippet&id=30
This project was one of my favourites that I had ever written in VB6.
I first made a network tester when I started to play with the IRC and MSN protocols around 2005 but in 2007 I rewrote the whole script from the ground up to give it more features and make it a bit more professional and easy to use. It even supported listening to connections from multiple users!
The main use of NetTest is to connect to a server, TCP/UDP on any port, and be able to send/receive data without using telnet which is always a bit awkward. I added in a listening feature to it and several other options to make the whole app more useable. After a week or so of working on it while using it at the same time to rid it of bugs I uploaded it to my site for everyone to have a play with. Lucky I did as a few days later I formatted my drive and lost ALL the source code!
After losing the source and not having a reason to re-write it again the app has no current development. However, I did gain a lot of sockets knowledge from it so I might make something similar soon.
The program is still available for download on Palmnet Software: http://software.palmnet.me.uk/module/nettest
Before the days when I knew Winamp had a Global Hotkeys setting I used to be annoyed at having to close a full screen program so I could maximise Winamp and change the track.
So I made this nifty little tool that sits in the top right of your screen, displays the current track when commanded to and lets you control Winamp through key presses. It worked well and never let me down, however, as Winamp has a Global Hotkeys setting it's pretty much useless now.
Not under active development, but it does come with a Winamp API ActiveX control for VB6 should anyone need it: http://www.palmnet.me.uk/uploads/winamp%20control.exe
This is a little tech demo I made for my old VB game engine I started in early 2005.
It was made to show off the elastic function I'd just added at the time, and it started with a simple yo-yo on a string. However, I then added a dodge function to the AI section, and wanted to test that. "Why not show off both functions in one tech demo?" I thought! And this is the result.
You have some Honey on a piece of elastic, and swing it round while a swarm of bees try to attack it, however, when they get in contact with the honey jar they dodge it.
Bees is not, and never was really, being developed, but is still available for download here: http://www.palmnet.me.uk/uploads/bees.exe
Quick Text Replace is a rather buggy program I spent a few hours on to help a friend.
The friend, Rydian, had many custom images that he frequently would link to on forums and during instant message conversations. However, his old PC meant the best way for him to store and retrieve his links was to store them all in a text file, and rummage through it for the correct link every time he needed it.
He asked me to develop a program that would run on Windows 98 easily, not eat much memory and would make his life easier when it came to storing and retrieving his links.
After a few hours of research and a few hours of coding I came up with a program that would sit in the system try, not consuming much memory, and would read from a text file all his links and replace them as he typed, or copy them to his clipboard via the system tray icons right click menu.
Not only did Rydian save lots of time, but it can also be used to help eliminate a few common mistakes as it can replace 'i' with 'I' and so on.
QTR is no longer developed, but is still available for download here: http://www.palmnet.me.uk/uploads/QTR.zip
The Maze Game was made in late 2005 as part of a bit of class retaliation in my first year at college. Most people already treated me as a VB6 guru after the first week there due to my incredible skills when it came to making nonsensical applications, but another student decided he could beat me with a simple maze game.
This really wasn't on! And a battle soon started. As soon as the news spread I'd considered a rival maze game he stepped it up a notch by adding in a score system, however, 20 minutes later he was defeated by my mighty maze game!
My game included custom maps, timing and images too! Though still a very useless program it let me win the battle and my VB6 guru status was returned for the day.
The game can now be found here: http://www.palmnet.me.uk/uploads/maze%20game.zip
Please note this hasn't been updated since: 31/05/06