“Programming is the art of breaking problems down into smaller problems until you have trivial problems like adding numbers together. Once you can do that, everything else is just syntax.”
I’m a freelance developer, with over 20 years programming experience from my first forays into simple code on a ZX Spectrum to working with embedded sytems and multi-million record databases. I love the creative aspect of programming, seeing a project come from an initial idea through the challenges and refinement to a stable useful system.
- Excellent working knowledge of C, both in applications and embedded use.
- Good working knowledge of .NET and associated languages.
- Working knowledge of assembler.
- Experience with Java on a variety of platforms.
- Good working knowledge of a wide range of communicaton protocols, from TCP/IP networking to RS485 serial lines.
I’m passionate about writing lightweight, efficient code and using the right tool for the job, whether that is a simple script to perform routine tasks, a desktop application or turning data into a meaningful graph for use over a web interface, I pride myself on the quality of my code.
In addition to my current skillset, I’m keen to explore new challenges and languages. I am quick to learn new tools, languages and methods. I’m interested in working as part of an existing team, as an inhouse developer or to work independently to outsource your development needs. I’m also interested in all aspects of work from maintaining and expanding existing projects, adding resources to a current development cycle or to help architect and implement a new ideas.
Some projects I have delivered include:
PPS Controls – I developed a Windows application using a combination of Visual Basic .NET and C to provide a rapidly developed application which was easily maintained, but which was still able to provide great performance for large quantities of data.
GPS Tracking – Working for a large logistics company, I was asked to look at the time taken for geo-positions to be looked up. Initially this was achieved with a large SQL database with queries taking several seconds. This was resulting in a considerable backlog of messages to perform lookups on. I replaced the SQL data with a client-server setup written in C. The data for comparison was held in RAM, with multiple concurrent connections being offered to perform lookups. By an innovative method of lookup, I was able to bring search times down to a few milliseconds while at the same time greatly increasing the data set used for lookups.
Axscend – In response to a need for data collection, I was able to provide a server program which lisensed on a TCP port for incoming data from GPRS-enabled units. By ensuring that the software was programmed to be efficient and use the minimum of resources, it was able to share a pre-existing (physical) server, saving expense. It’s lightweight nature meant that messages could be processed quickly and stored in a database for later processing, maximising availability.