About CodeHelp

How can CodeHelp.co.uk help you?

CodeHelp.co.uk can help explain elements of web-page design, but you'll learn more quickly if you design your own pages at home and work through the problems yourself. If (when) you get stuck, I'll gladly help but I won't write the whole site for you!

CodeHelp has pages on a variety of programming topics, from C++ to PHP and your first choice page to ask questions should be the CodeHelp Forum where others can also benefit from your queries and answers. Also make sure you search the CodeHelp Glossary of HTML terms before posting queries about HTML tags. Although I have experience of platform dependent binary executables created in C++/Pascal etc, most recent work has been on plain text interpreted languages based around web development like HTML, XML and PHP.

CodeHelp is a personal site - a one-man operation. Although I undertake to answer queries when I can, I cannot give guarantees or respond within deadlines.

I also believe in helping people help themselves. To this end, I will not respond to queries that ask me to develop an entire program or project. In particular, any and all queries that appear to solely or mainly consist of a school/college/work project/assignment will be rejected. Specific questions only please - one snippet of code (with a little background) NOT the entire project MAKE file.

Free Software

CodeHelp is not just a not-for-profit site. All the HTML, code and text on this site is free software, it is licenced under the GNU Free Documentation Licence. Details are at the bottom of this file. Please take care in how you describe Free Software and open source projects. There are significant differences between the terms "open source" and "Free Software".

Linux users will be familiar with the concept of completely free support, Windows users seem forever bemused that information is available without anyone having to be paid to produce it! In the best traditions of the Linux community, this site really is 'Just for Fun'. Thanks for the idea, Linus.

Principles behind www.codehelp.co.uk

I firmly believe that ALL code is meant to be shared. No-one expects you to share your login usernames and passwords, personal identification data or financial data but the rest of the code is for the benefit of others. Using an open source or Free Software program does not make you vulnerable to data theft - all the code you are running is there for you to inspect and check. Running a proprietary program is far more dangerous because you have no way of checking if there is a spyware or malware component!

"... the dominating perception of software is as a purely economic property, which is why it is being treated this way by politics and press.
But software already transcends daily life in an increasing manner and becomes a deciding factor. Just as other developments in the past of mankind, software develops from being an economic to a cultural property with increasing presence in everyday life.
Other than developments that seem to be comparable at first glance like printing press, car or telephone, software is purely virtual. It can not only be reproduced without loss, this reproduction also serves its evolution.
This makes software have properties that are very different from those of other phenomenons in history; the invention of software probably has the biggest similarities with the discovery of language, writing or science.
It is essential for the future of mankind that software as a cultural property will remain accessible for everyone and is preserved in libraries like other knowledge."
Free Software Foundation Europe
"When programmers can read, redistribute, and modify the source code for a piece of software, the software evolves. People improve it, people adapt it, people fix bugs. And this can happen at a speed that, if one is used to the slow pace of conventional software development, seems astonishing. We in the open source community have learned that this rapid evolutionary process produces better software than the traditional closed model, in which only a very few programmers can see the source and everybody else must blindly use an opaque block of bits."
Open Source Initiative
"Free software is a matter of freedom: people should be free to use software in all the ways that are socially useful. Software differs from material objects--such as chairs, sandwiches, and gasoline--in that it can be copied and changed much more easily. These possibilities make software as useful as it is; we believe software users should be able to make use of them."
Free Software Foundation


Peer review of software

I trained as a scientist and I value the principles behind scientific analysis and critique. One trial or one paper is not sufficient evidence of value or efficacy - scientific results must be reproducible, the design and methodology must be public so that the basis of the results can be assessed and validated. All aspects of the proposal are put up for inspection by others in the same field or with similar or higher experience and training. The process of discussion, improvement, re-testing and publication is called peer review. I believe that the same analysis and critique must be involved in the development of software. Software must be portable, the structure and design must be public and freely available so that the software can be improved. To keep the software structure and design private, as some kind of personal ego trip, leads to poor software that breaks as soon as the environment changes. Open, portable, adaptable code builds robust software. The structure and design of any software ultimately lies in the source code. Free Software provides a framework for this peer review to occur.

Peer review is fundamental to science because the process adds meaning to the results and strengthens the hypothesis. For example, most software projects begin with the question "How can I use language/platform X to do Y?". The hypothesis that is implicit in the resulting software is "I/We believe this is the most suitable way to use language/platform X to do Y." Software always starts with an hypothesis and it grows by design and experiment, a truly scientific process. Peer review works because different teams in different environments can test the methodology freely. It is pointless writing software that only works in one specific environment, it needs to be applicable to as many users as possible. By opening the software to input and feedback, the software develops more quickly and more reliably. Free Software is open to the maximum number of developers and users because everyone is free to contribute. Crucially, every contributor to the software is also required to maintain that freedom for others.

Peer review does not work when all the contributors are only accountable to the software publisher or to one scientific discipline - not enough environments and perpectives can be included for the process to function. Scientific papers are reviewed by a panel and made public. Errors and assumptions are highlighted publicly. Anyone is free to read the details - whether or not they belong to the original discipline. This allows for input from outside the original environment - input that is also public and is therefore reviewed in the same way. If it's junk, the peer review process will ignore it or rewrite it. More commonly, it opens the door to a multi-disciplinary approach that can reap immense benefits from lateral thought and a new perspective.


I believe that patents are a selfish and protectionist framework which have only ever held back scientific progress. The artificial limits set within the patent limit scientific progress for commercial ends, leading to ludicrous situations. Recent pharmaceutical patent expiries have led to the company changing the format of the product purely to extend the patent. The original product is then withdrawn before patent expiry to prevent patients benefitting from the non-patent versions. When the patent finally does expire, the company hopes that patients will not be switched for a second time. There is no pharmaceutical or patient benefit of the new product over the old one. There may not even be a cost benefit. The only benefit is for the patent holder. This happens despite pharmaceutical patents having a shorter life than other patents.

Unlike pharmaceuticals, all software evolves from prior software. One project requires another to build it or write it. Software patents can get you prosecuted for publishing texts you wrote yourself, because of an underlying technology. Software patents can only hold back software development by protecting the commercial interests of the few over the security and functionality requirements of the many. In direct contrast to epatents, Free Software promotes development of adaptable, robust code by protecting the freedom of the developers and the code. Free Software is not anti-commercial or anti-capitalist. Free Software does not have to be free of charge, it does have to be free as in speech.


CodeHelp hall of shame:

As a footnote to this, sites that send me unsolicited commercial email can expect a poison response. If such companies are arrogant enough to not even read the contents of this page, then I shall post details of their incompetence here.

  1. The spam email and reply from http://www.netsity.com
  2. The spam email and reply from http://www.vonset.com
  3. The spam email and reply from http://www.indiatimes.com


My public keys Suitable for PGP and GnuPG

The copyright licensing notice below applies to this text.

Copyright © 1998-2004 Neil Williams

Permission is granted to copy, distribute, and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with the Invariant Sections being "Principles behind www.codehelp.co.uk", "Peer review of software" and "ePatents" only, with no Front-Cover Texts, and with no Back-Cover Texts. A copy of this license is included in the file copying.txt