This site focuses mostly on developing with lightweight web technologies such as PHP, especially when applied with agile methodologies such as XP. No guarantee of quality is given or even intended. It is hoped only that what you find gives you ideas and enthusiasm from a fellow computer programmer.
I've been a little busy of late with children (two versions). They take quite a chunk of your professional life and 100% of what's left! Hopefully the projects below should start to get back on track.
My latest project is Cgreen. It's a C unit tester. There are a couple of C unit testing tools out there already of course. What makes Cgreen different is that it is pure C99, includes a tutorial right here and has facilities for creating mock functions. Mock functions should lead to more decoupled C code if Mock objects are anything to go by. It's alpha status right now until I get feedback from other users. So if you want to be influential, try it out right now. The project has been mostly funded by Wordtracker, for which I am very grateful.
Along with Jon Ramsey, I am a founder of PHP London, a PHP user group not surprisingly based in London. It's going well. The networking meetings take place on the first Thursday of every month at a pub.
In addition the group organises other events that include the 2nd London UK PHP Conference. This is a one day event on Friday the 23rd of February 2007 and costs only fifty quid.
The SimpleTest PHP unit tester is available for download from your nearest SourceForge. It is a PHP unit test and web test framework. Users of JUnit will be familiar with most of the interface. The JWebUnit style functionality is more complete now. It has support for SSL, forms, frames, proxies and basic authentication. The current CVS code should become the 1.0.1 release real soon now and includes file upload and many small improvements. The idea is that common but fiddly PHP tasks, such as logging into a site, can be tested easily.
My most neglected project right now is a requirents testing and sign-off tool called Arbiter. It's actually best described in this Sitepoint thread, but basically think of it as a document driven FIT for small web projects only. The project is currently stalled due the birth of children and writing projects.
Also on the subject of open source, Wordtracker have kindly agreed to publish some of their in house tools. A Wordtracker spin off is fakeMail. Testing applications that send e-mails can be a right royal pain because of all of the infrastructure involved. You will likely need an SMPT gateway that talks to a POP client that you can read the queue from. That's a lot of set up. Fakemail acts as an SMTP gateway on any port you define. When you send it a mail it simply copies that mail to the local file system in whatever directory you want. You then just have to look at the local file. It means that you must be able to configure your application to use a port other than 25, but that's not usualy difficult.
A craft is defined as...
If you lose a screw or clasp from a hand made jewellery box it is hopeless to try to find a replacement. Nothing else is quite the same and the mechanism will fail to work. It may even cause more damage when applied. You need to find the original maker or someone of the same skill to make you another. Sound like software? Yet mechanical parts today are interchangeable.
Writing software has resisted mass production. As soon as a part of it becomes routine it can be automated. Once it is you don't need a programmer any more. Routine programming jobs no longer exist. All that is left is the unsolved problems that require a higher level of skill in constructing their solutions.
This dependency on the ability of the artisan, combined with nothing quite fitting together properly, is what gives software the pre-industrial feel.
The panel at the top is supposed to resemble a standard office index card. The way it is marked out is called a CRC card. It stands for Classes, Responsibilities and Collaborations and is the cheapest software development tool you can find. You really do buy a pack of cards.
The role is written at the top and would often be just a class name. The left side is the object's responsibilities and on the right collaborations (within the page I have treated these as internal links and external links repectively). A group of developers can point at, discuss and discard cards in the heat of design session. It makes it especially difficult for only one person to take charge of a discussion in the way you can with a UML tool or notepad. Try scribbling out five cards before someone gets a look in.
Now nothing beats a whiteboard for collaboration, but if the level of detail is getting too high and you want a temporary record, give the CRC cards a try.