The PHP and Web Standards (PaWS) Conference is designed to cater to long-suffering UK PHP and Web developers, who until now have had to travel abroad to learn in person. With the help of Mark Leavy and the input of many members of the PHP community, we’re bringing some of the finest talents in PHP and Web standards right here to Manchester.
We would like to stress that whether you are interested in PHP or Web Standards there will be talks geared to both audiences. Some of our content will cover the usage of both together, but we will be providing much content that is one or the other.
Our goals are to boost awareness of what the UK has to offer its native PHP developers and to advocate Web Standards within the PHP Community, while at the same time offering a quality learning experience to ‘locals’ and visitors alike.
Where & When
Attend PaWS in Manchester, England, February 20th to 24th, 2004.
Although it’s being held in England’s 3rd largest city, PaWS is not just for UK developers. We look forward to meeting PHP and Web Standards developers from all over the world. Come enjoy our fine weather (if you like rain…), food, and scenery while subjecting your brain to some of the finest talents we could find.
The PaWS Conference is headed up by Davey Shafik, with assistance from Mark Leavy, and the online PHP community.
About the PaWS Website
Our web site is still under development while we strive to create the most technologically current PHP and Web Standards-driven web site possible. We have some great tricks up our sleeves and hope you’ll be just as excited about the finished product as we are.
The PaWS web site will be a living, breathing demonstration of our willingness to eat our own dog food. We’ve got a big image to live up to as creators of a PHP and Web Standards conference, and we’re pulling out all the stops. As we gather data and write our code we will be stretching not only the limits of our imaginations but also the limits of current technologies.
Right Tool for the Job
As programmers, we know that any programming project is defined by the data it deals with. We have worked long and hard to determine the best way to define our critical data so we can proceed to do truly cool things for our visitors. The following is a sampling of data we will collect:
- Geographical Data – Location of people and the venue itself
- Personal Data – Your name & related information, hometown, and originating airport
- Calendar Data – The days and which talks you wish to attend during the conference
- Commentary Data – Your thoughts about our website or other PaWS Related things
By storing this data in its purest form, we can use it most effectively. We’ll be using nifty formats like the RDF- and XML-based technologies listed below plus a relational database for maximum data transformation goodness.
- GeoInfo – Geographical Data [GeoInfo Wiki Topic]
- FOAF – Personal Data [The FOAF Project]
- RdfCalendar – Calendar Data [RDfCalendar Wiki Topic]
- Annotea – Commentary Data [W3C Annoetea]
We plan to play with the data with RDQL, XSLT and PHP and serve it up in myriad formats including XHTML, WML, SVG, PDF, and RSS. We’re not kidding about the “Web Standards” bit.
What We Can Do
Here are some of the things we have planned for the finished PaWS site.
Using Geographical Data
We’ll be dynamically mapping where our visitors and speakers are located which not only looks really cool but is also quite useful in determining where the majority of our audience is coming from, regionally speaking.
We’re also planning a way to connect you with other attendees in your area, if you opt in for it. You could meet new people in your area, and you might even decide to fly out together. Just think… you might be able to sit next to a fellow developer instead of someone who wants to spend hours talking at you about their Elvis/alien abduction theories.
Using Personal Data
We’ll be using FOAF (Friend of a Friend) to store all personal data, including-through our referral system-who you refer to PaWS Con and who referred you (if applicable). We hope to use this to identify groups of acquaintances/friends so we can offer you discounts. (Yes, discounts!)
Using Calendar Data
For storing date/time-related information we’ll be using RdfCalendar. We plan to transform the data into many formats including iCalendar files for those of you using Mozilla Calendar, Apple iCal, and other compliant calendaring programs. We will have an online iCal file that you can subscribe to, to get up-to-date information whenever you launch your calendar.
Using Commentary Data
Commentary data, AKA comments, allow us to peer into your innermost thoughts regarding our site, our conference, and all sorts of other things. We promise we won’t blackmail you with anything you say. Really.
What This Means to You
We’re not just trying to show off-honest. The whole catalyst for this enormous project was our desire to make our web site really useful to visitors, including finding new ways to reward people for letting their friends know about PaWS, and helping attendees find each other so that the dialog about PHP and Web Standards starts before the conference and doesn’t end afterwards. Conferences aren’t just about learning, they’re about community, and we want to really maximize that. Especially since (what can we say) programming is really an activity that must be seen in a group or community context, even though we’re not always the best at meeting each other out in the big blue room.
We hope you’ll stretch your brain and your skills to the limit, meet new people, have brilliant conversations, and in general have a lot of fun. And we hope that all the stuff we’re cramming into this site will help ensure that all of the above happens.
Perhaps our fondest wish is that the sense of community experienced during PaWS will continue long afterwards through new-found friendships and alliances, and we will do everything we can to see that wish to fruition.
What This Means to Us
We’re going to blackmail you out of house and home! Oh, we said we wouldn’t do that, didn’t we. In that case, we’ll use your non-personally-identifying information to help us sculpt our next event to be even better than this one. We also plan to make this same non-personal aggregate data available to the PHP community so that we can all learn more about how our community works and how it too can be improved.
We repeat: We will not sell, license, lend, look aside as someone ‘borrows,’ or in any other way transfer your name, address, or email address to a third party. Ever.
The PHP and Web Standards Conference UK 2004 Keynote talk will be given by Wez Furlong. Chosen because of his recent contribution to PHP – some of the most significant seen during the life-span on PHP4. Wez has continued to contribute to the PHP project in a major way and is setting the pace for the rest of the UK community to follow.
This session will deal with multiple ways to work securely with sensitive data. Included in the different methods to ‘secure’ information are: Using Message Digest Authentication with HMAC based methods, asymmetric encryption for signed and encrypted data, MCrypt streams to store your data in an encrypted way. The session will also include tips on when securing data doesn’t make sense, why it is important to secure sensitive information and some of the theory that accompanies the different ways of dealing with encryption (public key, asymmetric and symmetric).
PECL_Gen – a PHP extension code generator
Ever tried to create your own PHP extension? Then you know that there is a lot of stuff to be taken care of before you can even start to implement the smallest bit of actual functionality. You have to create a config.m4 file for the UNIX build system or a Visual Studio project file with the right settings, initialization code for the extension. Functions have to be registered and parameters have to be parsed into and returned from your new functions and you have to find out how the extension API works in general and detail.
Most of these tasks are repetitive in that they are solved in similar ways by all existing extensions. So if you create or maintain multiple extensions you’ll find that you do the same infrastructural work over and over again. That’s were PECL_Gen comes in.
Heresy: Inappropriate Standards
Over the past four years, web standards have gained an incredible mind share. While many people think of web standards as simply implementing clean HTML and CSS, they actually have many more far-reaching implications. Standards mean interoperability, they mean accessibility and many of the most innovative standards have yet to be implemented. However, they are also being mandated by organizations and Governments.
This talk offers a critical look at web standards. The positive effects of web standards are acknowledged, but it explores the weak spots in depth. The theme of “graceful degradation” is the undercurrent throughout the talk, and we will look at accessibility, practical web site building and why sometimes web standards just aren’t appropriate.
This talk will be grounded in practical experience building standards-compliant web sites, and will be of particular interest to those earning a commercial living from web programming in the UK.
Processing XML with PHP 5
Apart from the Zend Engine 2 with its new language features for object-oriented programming the PHP 5 major release brings new features like improved support for XML technologies. This session will make the audience familiar with PHP 5’s new extensions for processing XML with the Document Object Model (DOM), the Simple API for XML (SAX) and XSL Transformations (XSLT) as well as using the SimpleXML approach.
Take HTML seriously!
As far as I can tell most people think HTML is easy – ‘anyone can do it’. It is a language that most potential web professionals will learn first before moving on to something ‘more difficult’ such as PHP, JAVA or whatever. But I have been specializing in these technologies for around five years now and I still find challenges every day. The basics may be easy but to really master HTML, CSS, standards, semantics and the separation of content from presentation is a great challenge and I for one enjoy HTML and I am proud with what can be achieved with it.
This is important stuff.
ZZ/OSS Installer: A PEAR-based Packager and Installer for Applications
Developers of modular PHP applications need to maintain the components of their software across release cycles. A solution would be to use the PEAR package manager for this task. Unfortunately, it can deal with packages only and not install, upgrade, or uninstall applications in total. With the ZZ/OSS Installer, both can be done. Developers have access to a PEAR-like packaging system that is combined with a PHP-based installation wizard for in-house application releases. Furthermore, the plugin framework of the ZZ/OSS Installer allows for customized installation routines.
SQLite is an embedded SQL database engine that stores it’s data in a single file per database. Sounds slow? it’s 2-3 times faster than PostgreSQL and MySQL. Sounds limited? it supports a very large amount of SQL 92 (including triggers and transactions). Sounds cool? Yes! In this session we will see how easy it is to use SQLite for your general storage needs and provide some tips for the best performance.
Introduction to PostgreSQL
The first talk is about the PostgreSQL extension in PHP. It explains the very basics of how to use the pg_* function set and how to use it effective, efficient and practical. After methods to connect to the database, I’d talk about error handling and recovering from unwanted behavior. The next step would be the several aspects of retrieving data, again, in the light of different application needs, speed and effectiveness. Later on, I throw a light on more advanced functions and how to use them, more important when and when NOT to use them. This session would include a small abstraction layer (DAO) for a fictional project which is also presented in the session. This project shows a real-life example of how to use the PostgreSQL functions in a PHP application.
PCRE in PHP
Perl Compatible Regular Expressions are a great tool to work with text data. The session is an introduction into the basic structure and the special PHP modifiers, followed by the PHP functions and practical samples.
Artificial Intelligence supported sales with PHP
Selling simple goods like Books, Compact Discs (e.g. Amazon) or even used stuff (eBay) over the internet is simple but profits are low. Complex goods that need to be configured to fit customers needs usually allow for higher profits but are hard to sell without the help of educated sales personal.
This session aims to introduce the audience to the highly flexible PEAR::LiveUser authentication and permission management framework. As LiveUser is a framework the idea is that users can easily extend its functionality for their respective needs by adding or extending containers. At the same time LiveUser already comes with a wide range of sample containers that cover most uses in various complexity levels. Finally LiveUser features its own nomenclature which may not be the same as some users have come to know from some other systems. The session will therefore give a basic introduction to LiveUser, cover all of the currently available containers as well as how to modify LiveUser to fit other scenarios and discuss how LiveUser maps concepts found in other authentication and permission systems.
Content-negotiation – providing the right language for the user and the user agent.
This session discusses content negotiation: why it is useful, the use of user selectable manual overrides and developing a generalized algorithm for selection of the most suitable document version.
XSLT – Templates for PHP
XSLT is a standard to transform XML data in different output formats. So you can use it as a template system for php applications. It allows a strict split between the application logic and the layout logic. The session shows a simple template system using the output buffering included in PHP.
Introduction to iterators and SPL
Iterators are an easy programming pattern that are mainly used for lazy initialization of collectable data to save memory usage. In this session you will learn the basics of iterators as implemented in PHP5. After that you will learn about extension SPL aka Standard PHP Library which provides you with a set of more complex iterator based algorithmns and how to take your advantage from them. Since other extension implement iterators too this session enables you to do a lot of laziness with data stored in XML or relational databases.
PHPUnit: Testing Object-Oriented PHP Applications
PHPUnit is a family of PEAR packages that supports the development of object-oriented PHP applications using the concepts and methods of Agile Programming, Extreme Programming, Test-Driven Development and Design-by-Contract Development by providing an elegant and robust framework for the creation, execution and analysis of Unit Tests.
PHPUnit is modelled after the de-facto standards of the Java world, JUnit and MockObjects, and is developed by Sebastian Bergmann, the speaker of this session. This session will give a detailed introduction into the PHPUnit framework.
Practical Application of Semantic Markup
A look at how semantic use of HTML can make information gathering and browsing easier, more productive, and enjoyable for all groups of visitors; and how it can make the web more accessible for those with special needs. The speaker uses several examples written in ECMAscript, PHP and Perl to illustrate.
PEAR compote (2 hours)
Stefan Neufeind and Tobias Schitt
PEAR – Usage, support, development – An introduction. PEAR (PHP Extension and Application Repository) is a collection of high quality reusable PHP components. It offers a wide range of solutions, designed to help you with standard tasks as well as tricky implementations. Based upon common standards the classes offer flexible and functional interfaces, are designed to be reusable and extendable.
The first half of hour 2-hours-“journey” through PEAR starts with an introduction about the infrastructure and tools available. We’ll give even PEAR-newbies an easy and helpful introduction to the PEAR website, the mailing lists and the package-system. This part will also give you examples what PEAR has to offer you and give reasons why you should consider to use the valuable resources and implementations.
The second part of the session is dedicated to potential contributors for PEAR and everyone who would like to say thank you to the developers.
We will given an overview of the PEAR processes from the proposal of a package, the coding standards and common design rules a PEAR package has to fulfill to the usage of the PEAR installer for PEAR package-creation. But there are more ways you can help PEAR. We will also show you alternative ways for contributing to PEAR. Testing, writing documentation and reporting/fixing bugs are as important as maintaining a package in PEAR.
DM-U: A Rapid Deployment of PHP-Powered Web Services
DM-U is an ERDF/NWDA-funded project providing support services to the North West “Digital Media” sector.
This talk discusses the development of an e-learning management system from scratch in just under 30 man days using PHP, including the development of a complete SOAP Server capable of tight integration with .NET code. The talk will cover the basics a developer needs to be aware of before building SOAP servers in PHP and offers examples of real-life code, an introduction to XML, XSD, WSDL, SOAP and the fact that, if done correctly, you don’t need to know any of these to build, test and deploy a working SOAP server in PHP
Complete CSS & XHTML development for current browsers
Elliott White III
My company a while back saw Netscape 4.0 drop from our usage statistics, which opened up the opportunity for moving to XHTML 1.0 development with complete CSS layout control. This class will delve into practical examples of moving to complete CSS design for the IE 5.0+ and Mozilla-based browsers. It will also cover what can and cannot be done in these current browsers, and also how to deal with browser incompatibilities in CSS implementations. This will include certain aspects to avoid, basic coding strategies to not run into as many problems, as well as using CSS Hacks to send different CSS code to different browsers in order to work around some of those bugs.
Search Engines with (or without) PHP
Christian Wenz and Stefan Fischerlnder
If a website isn’t in a search engine, it is hard to be found by potential customers or followers. However, dynamic websites with PHP are often not accepted into a search engine’s catalogue. This session gives an introduction to search engine optimization and shows how PHP can be used to get a better ranking-and how to get no ranking at all.
PHP 5 object oriented, get involved (6 hours)
All Day Tutorial
- Review of the PHP 4 OO model
- Introducing the new PHP 5 OO concepts
- visibility for properties and methods (private, protected, public)
- abstract methods, abstract classes
- final methods and classes
- static properties and methods
- Identify which OO concepts are not available with PHP 5
PHP-GTK – PHP for the desktop
This is an introductory talk about PHP-GTK, the PHP language bindings for the GTK toolkit. Using PHP-GTK, it is possible to make GUI desktop applications very easily, while retaining all the features that make PHP so popular. It is relatively lightweight as a distribution package, can be made into a binary executable fairly easily, can (since the advent of the SQLite extension) have its own database engine with it, and works cross-platform.
Managing the Semantic Web
Thinking of WebServices and the Semantic Web, the future of Open Source Content and Knowledge Management Systems is the future of distributed and annotated content. The implications are vast and not only of technical nature. We also have to take into account aspects related to the we work in a knowledge based economy and society (life-long learning, self-organised groups of interest, …). That means that Open Source CMS and KMS projects should not only worry about the right choice of APIs and semantic vocabulary (e.g. SOAP, XML-RPC, RDF, RSS, Ontologies, …). They should also be concerned with modelling new forms of user interaction.
Progressive Enhancement and Graceful Degradation
PHP & SVG
SVG (Scalable Vector Graphics) is the official W3C standard for vector graphics in the World Wide Web. This talk first gives an introduction to the format and to the hurdles that have to be overcome until SVG will dominate the world. Furthermore, techniques and available PHP packages are shown that allow the two hot technologies to combine their forces.
PHP as a WebDAV server and Client
WebDAV is an extension to HTTP that allows to access data on a web server as if it were a regular file server. In addition to general file and directory access operations it supports storage and retrieval of arbitrary meta data in the form of XML formated properties (similar to MacOS resource forks), file level locking and version management.
WebDAV support can be added to PHP using the PEAR packages HTTP_WebDAV_Client and HTTP_WebDAV Server.
ABC of Web Services with PHP
Some people say that one of the strong points of Microsoft’s .NET strategy is that Web Services are easy to implement. However, PHP is closing the gap really quickly. This session gives a brief introduction to the theory of web services and then shows which PHP packages can be used to make Web Services really easy. Topics covered include XML-RPC, SOAP, UDDI, WSDL, interoperability with .NET Web Services.
Image_Graph – A Graph Says More Than a Thousand Words
There are several more or less powerful implementations of classes for visualization of numerical data using graphs. Some are not flexible enough, others are too overloaded or maybe only available under a commercial license. Image_Graph us a flexible and clearly structured implementation of a graph-library that fits the expectations of the PEAR community.
Image_Graph enables you to easily visualize numerical data using lines or bars, combine multiple data-rows using up to two independent Y-axes, provides features like grouping and stacking of data, generate image-maps etc. The creation of captions, the usage of background images as well as different shading-styles are also part of the current design. The API has an open design, so the class is extensible in multiple ways regarding the types of visualization. One major design goal was to keep the class open for different output-media. Currently Image_Graph supports the generation of graphics using the GD-library + FreeType. But output-renderers for SVG-graphic are already in the works and there are plans to support PIMP, to allow PDF-generation etc.
This session aims to introduce the audience to the new database abstraction layer MDB2, which was build based on MDB a merge of the popular PEAR::DB and Metabase packages. MDB2 offers several important features to make database independent programming more feasible, including datatype and schema abstraction. Moreover MDB2 is very flexible and extensible. The audience will be shown various features of MDB2 as well as how to extend MDB2 to fit more specific needs. Finally the audience will receive some general recommendations about how to structure their queries and possible pitfalls to evade maximizing their queries performance across multiple RDBMS.
Efficient debugging by using Xdebug
This session teaches you how to detect and debug PHP scripts with the free open source tool Xdebug, which is an extension to PHP. The first part of the session will cover detecting problems in your scripts by showing how Xdebug provides debugging aides in the form of stack/function traces, dumps of variables, modified PHP functions. The second part will deal with some of the internals of the extension to explain how it gathers information from the PHP Engine. In the last part I will show the remote debugger capabilities of Xdebug, where you can: set breakpoints on functions, methods and file/line compabinations; watch execution details such as stack frames, per-frame information; run PHP code to modify the current state of your script and evaluating error messages. No knowledge of C is required to follow this session, but some basic knowledge would be beneficial for the second part.
CSS and Liquid Design – How to, and where CSS fails us
Elliott White III
CSS and Liquid Design can sometimes make an odd pairing. The CSS standards were first developed back when static width/length design was standard practice. Since then, design has matured and Liquid (Stretchy) Design has shown it’s advantages, and more websites have converted to using it. Now we are on the verge of truly using CSS for our daily work, but how well does it handle Liquid Design? It is possible to do Liquid Design with CSS; however, there are many places where it falls short of what one would dream for. The session will cover how to successfully accomplish liquid design with CSS, what pitfalls to watch out for along the way, and hopefully invoke a discussion of what CSS is missing to fully flesh out it’s liquid design capability.
Automatic SOAP Server/Client Code Generation
SOAP is a buzzword that has taken large chunks of the web industry by storm. In the real world however, developing both Server and Client code can be time-consuming and confusing. This talk/workshop goes through a suite of tools being made publicly (and freely) available for the first time at PaWS that takes the pain out of SOAP Server and Client development.
The server generation tools, written entirely in PHP, can take nothing more than a description of a database (connecting to it and developing the description itself if needed), and generate a fully working SOAP Server with common methods (insert rows, selecting rows, deleting rows, etc.) made available to be installed on a web server within seconds. In addition, using the libraries available in PHP, WSDL and DISCO files are automatically made available to aid Client code development.
The code will be made freely available to all attendees and from the 24th February and will be publicly launched as version 0.1
Accessibility – a look at theory and reality in a historical context
What’s accessibility really all about; where did it come from, where is it now, and were are we going. A close look at historical, theoretical, pragmatic, and real accessbility and why the difference matters.
Andi Gutmans presents a session on PHP5, whats new, whats not, whats different and what we can expect in the near future.
Lukas Smith and Pierre Alain Joye
- How to use the PEAR infrastructure in your project
- The packages and versions management
- Customizing the PEAR/PECL web and tools
- Automatic tasks (documentation tools, cvs usages)
- How packages are proposed and accepted into PEAR
- How the development process works
RDF API for PHP
The next generation of the current Web called Semantic Web aims at representing data in a more machine-understandable way, allowing enhanced information discovery, data exchange and integration as well as advanced automation of a variety of tasks. The core technology of the Semantic Web is the Resource Description Framework (RDF) which provides means for structural and semantic description of data.
RAP – RDF API for PHP is the leading RDF toolkit for PHP developers. It offers features for parsing, manipulating, storing, querying, and serializing RDF models. It has been developed as an open source project at the Freie Universit?t Berlin. Its latest release (RAP V0.7) includes among others: an up-to-date RDF/XML parser, support for other serialization techniques (i.e. N-Triple, Notation3), support for in-memory or database model storage, and support for the RDQL query language.
You don’t need a database, to handle data
Elliott White III
Today everyone talks about databases, and it seems that the short answer to every web based solution is to drop everything into a database. However, there are many situations where databases are overkill, or not the right solution. Databases don’t handle large amounts of binary data well (such as images), and when you are dealing with a small amount of data, and don’t have a database set up, or worse, completely don’t have access to a database, it isn’t a workable solution. There are however many easy solutions to building your own data management solutions simply. We will cover filesystem based databases, serialize/unserialize, XML data files, and more.
Structure and Presentation
HTML was designed to be independent of display. The intention of Tim Berners-Lee was to create a language that would add meaning to text for user agents to interpret.
Unfortunately, in the early days there was no adequate way of applying detailed presentation to HTML so browser manufacturers invented presentational tags such as <font> and tables, designed to display tabular data, were used to layout pages.
But now we have CSS and the intentions of the past can be taken seriously and adhered to. Stripping out all presentation from HTML and handing over the job to CSS not only upholds a tradition; it results in real practical advantages.
Migrating from MySQL to PostgreSQL
This session is about migrating from MySQL to PostgreSQL.
What scenarios there are why someone has to migrate, when it is wise and when not to do so. The talk is about the problems and hints when moving between databases in general with MySQL and PostgreSQL as popular examples. This talk would show the migration process and its problems and solutions on a fictional or real-world PHP application. A step by step routine is built up that one could follow when migrating arbitrary applications written in PHP. After the migration is done, I will show how PostgreSQL’s features that MySQL lacks can ease database and application design. Including reducing JOINs to simpler queries, making effective use of views and so on.
The End Keynote will be given by Davey Shafik, Chairman of the PaWS Conference. It will feature a critical look at how the conference went as well as a look ahead to 2005. This will be your opportunity to give feedback.