Whilst there is no good reason to write new web applications using CGI, there is still a lot of old code out there. In this chapter we will look at CGI in enough detail that you can recognise some of the more common techniques and suggest ways to move a CGI application to more modern architectures.