L'ultima Craft ?

The Last Craft? Web developer tutorials on PHP, Extreme programming and Object Oriented development

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, concurrently maintaining version 1.0 and version 2.0. 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 now that they are reaching school age.

# what Ongoing projects

A recently revived project is Phemto, a dependency injection container for PHP. Similar to Pico in concept, it uses a fluent interface and plenty of automagic to cut down the amount of configuration you have to write. This was originally written as a 50 line demo for a PHP Architect column on creating objects.

My newest 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 partly 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. We run a yearly conference called PHP UK, this year at Olympia that attracted 300 delegates. The networking meetings take place on the first Thursday of every month at a pub, and typically attract about 60 people.

The SimpleTest PHP unit tester is available for download from your nearest SourceForge. It is a PHP web test and unit test framework, with mock objects. A native PHP web browser is included, so that functional tests of web pages can be carried out. The idea is that common but fiddly PHP tasks, such as logging into a site, can be tested easily. The browser is pretty complete, but does not support Javascript. It does not yet support CSS selectors, but these will be added later.

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. Perl and Python versions are available.

# why Why the Last Craft?

A craft is defined as... Art or skill; dexterity in particular manual employment; hence, the occupation or employment itself; manual art; a trade.

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.

# crc The cards?

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.

Projects under development. All free and open source software. Why Last Craft? Odd name isn't it? Why the funny index card at the top?
SimpleTest is a PHP unit test framework. My article on TDD My article on the Registry Pattern. Site E-mail is SpamCop filtered which I cannot recommend enough.
software development, computer programmer, php programming, programming php, software development tools, software development company, php tutorial, free php scripts, bespoke software development uk, corporate web development, architecture, php resources, wordtracker, xslt, java, bug tracker, bug reporting, unit test, php testing, test cases tutorial, explain unit test case, unit test example, xml
A web site of software development tutorials and examples with an emphasis on web programming, testing, agile methodology and PHP development