ACCU Home page ACCU Conference Page
Search Contact us ACCU at Flickr ACCU at GitHib ACCU at Facebook ACCU at Linked-in ACCU at Twitter Skip Navigation

ACCU 2002 Speakers

Andrei Alexandrescu

Andrei is graduate student in Computer Science at University of Washington. Before that, he worked for seven years in the software industry, in domains ranging from Wall Street to Internet appliances to video streaming.

Andrei is considered a world-class expert in software development using C++. In the C++ community, he is best known for his book, Modern C++ Design. Also, Andrei is a former columnist for the C++ Report, a columnist for C/C++ Users Journal, and a sought-after speaker at conferences world-wide.

Error Handling in C++: Are We Inching Towards a Total Solution?

For years, the programming community has been bouncing between ecstasy and agony in search for a good, deterministic, automated solution to error handling. C++ led the pack because of its wide use in the industry and because of its rich semantics. Today, the long evolution is reaching maturity: yes, you can devise a complete set of rules and a reusable framework to implement error handling in C++.

Matthew Allum

I'm a freelance programmer with skills in Python, C and Perl. An Advocate, developer and user of open source software, I spend my spare time involved in 2 'open' projects. I develop the Python library for the Jabber xml messaging protocol and am involved in the effort to port Linux to the compaq ipaq pda. For employment over the last 5 years I have worked for various failed dot coms and publishing company's concentrating mainly on content management systems.

Programming Jabber with Python is a Python module for the jabber instant messaging protocol. deals with the xml parsing and socket code, leaving the programmer to concentrate on developing quality jabber based applications with Python. In this talk we'll look at basics of the jabber protocol, how this is implemented in Python, look at some example jabberpy applications and then look at some advanced / future uses of jabberpy, namely jabber server components and a Python jabber server.

Steve Alexander

Steve Alexander holds a BSc(Hons) Computer Science and Software Engineering, Lancaster. Based in Lancaster, NW England, he divides his time between researching component based software at Lancaster University, and running a smallZope/Python start-up. Steve is very active in the Zope developer community, was one of the first outside Zope Corp to be granted CVS check-in rights to Zope.

Zope 3

This talk will set out where Zope is heading. Zope is perhaps the leading open source web application framework, written entirely in Python.

Leen Ammeraal

Leen Ammeraal has been programming since 1960 and has a university degree in mathematics. While teaching computer science to technical students, he wrote many books about programming, programming languages and computer graphics, both in English and in Dutch. He is currently improving a chess program that he has written.

Writing a chess program

It has been said that, in principle, any good programmer who is familiar with chess can write a chess program. Unlike most other applications, a chess program reveals its strength or weakness in a very clear and unambiguous way, namely by its score when it plays matches and tournaments against other chess programs. Authors of chess programs never regard their products as completely finished. They keep trying to improve their programs, frequently introducing errors resulting in crashes, illegal moves or deterioration of strength, giving rise to complaints from users about newer program versions playing weaker than older ones. Because of the importance of speed, some programming tricks and even some small routines written in assembly code are far more popular in chess programming than in most other applications. In this presentation the speaker will discuss some aspects of a chess program (named Queen) that he wrote himself, using C++ as a programming languages. He will explain why some data structures, such as bitboards and a special kind of hashtable, are particularly popular in chess programming.

Matt Austern

Matt Austern is the author of Generic Programming and the STL, a regular columnist for C/C++ Users Journal and the chair of the C++ standardisation committee's library working group. He graduated from UC Berkeley with a PhD in physics in 1994, and worked in the SGI compiler group from 1996 through 2000, where he was the principal implementor of the SGI Standard Template Library. He now works in the Large-Scale Programming Research department at AT&T Labs - Research, and can be contacted at austern( at )

A generic framework for Balanced Binary Trees

Balanced binary trees, binary trees where each leaf node has approximately the same depth, are one of the basic data structures of computer science. There are many different types of balanced binary trees, where the distinction is the technique by which balance is maintained as nodes are inserted or erased. Examples include red-black trees, AVL trees, splay trees, and treaps.

Balanced binary trees are most commonly used for search applications; that is, they are usually found as binary search trees. Just as there are many different balancing strategies, there are also many different search algorithms and applications.

Operations on a binary search tree combine search strategy with balancing strategy. Until now, there has not been a clear separation (either in theoretical papers or in production implementations) between the balancing algorithms and the search algorithms. Typically the two are presented as a single package, in which searching and balancing are closely entangled.

Bintrees is a generic framework for balanced binary trees where balancing strategies and user applications, such as search, can be combined in arbitrary ways: it turns an N*M problem (where N is the number of balancing strategies and M is the number of user applications) into an N+M problem. The design of Bintrees relies heavily on C++ template techniques; the balance and search aspects are separate but interdependent.

Bintrees is valuable because it makes it possible to present search algorithms while abstracting, but not ignoring, tree balancing, because it makes it easy to compare the performance of different balancing strategies, and because it incorporates performance improvements that have not been found in earlier binary tree implementations.

Singly linked lists

Singly linked lists are a basic data structure, and they are fundamental to programming in such languages as lisp and ML. Ad hoc singly linked lists are also commonly used in C and C++ programming, but, while the Standard C++ Library provides a doubly linked list class (std::list), it has no singly linked list class.

Surprisingly, singly linked lists turn out to be considerably more complicated than doubly linked lists. There is a wide range of reasonable implementation techniques, and some of the differences are visible to the user in important ways. Node-based algorithms that are appropriate for some representations are inappropriate for others.

This talk describes a generic framework for singly-linked lists in C++.

Thomas Bednasch

Thomas' started as a hobby programmer in the era of home computers with the Sinclair Spectrum and Basic. While his studies of architecture he developed several solutions for 3d computer graphics and animation in Pascal, Delphi and VBA. In 1998 he started to study computer science at the University of Applied Sciences Kaiserslautern, Zweibrücken. Since then he becomes an expert in generative programming with C++, Java and Ada. Now he is working on his diploma thesis.

Generative Programming, Methods, Tools, and Applications

There are exciting new developments in Software Engineering: New "post-object-oriented" programming paradigms such as Aspect-Oriented Programming and Intentional Programming are emerging, and the recent work in Software Product-Line Engineering integrates classic Domain Engineering methods with object-oriented and component-based programming. Generative Programming builds upon these new developments to support the design and implementation of generative models of system families, which allow a specification-based generation of family members from reusable components. In this talk, the speaker will present the basic motivation for the shift to software system family engineering, an overview of the process of generative programming and its work products, generative programming techniques in C++ and Java.

Mike Banahan

Mike Banahan ( has been involved in C & C++ since 1977. He has worked on C++ standards committees, is a regular speaker on C++ topics and a published author. He has been chairman of the European C++ User Group, and is currently Managing Director of GBdirect, a company specialising in the use of open source software for eCommerce.

Building portable websites with PHP and MySQL

The Open Source products PHP and MySQL are extremely popular in the GNU/Linux and Unix environments as well as providing cost-effective alternatives to ASP and SQL Server solutions. Since they allow you produce cross-platform solutions, you no longer have to learn a nonportable set of skills to address the widest range of target systems. This tutorial describes how the website was built, providing B2B e-commerce and running simultaneously on Linux and NT 4. Anyone with a working knowledge of SQL and C/C++/Java/Perl will rapidly feel at home with PHP - as the code samples will demonstrate. The project represents a few weeks' work for one person.

Duncan Booth

Duncan graduated as a Computer Scientist from Cambridge University and initially worked for Torch Computers using BCPL, C and Assembler before joining the fledging RCP as the third employee in 1984. Duncan has worked on many projects in RCP, including foreign exchange dealing, real-time financial data, banking back office systems, and healthcare systems. His interest in Python was first sparked at a science fiction convention, since when it has become a major player in his choice of languages. As well as writing in Python he also ported it to the Psion 5 handheld. He is currently working with a variety of internet based systems including Python and Zope.

An Introduction to Python Programming; New Features in Python 2.x

This is a general introduction to the Python programming language. Python is easy to learn, but has some significant differences from other languages. Learn how to write Python programs, when to choose Python and when not to use it. Some of the common questions asked by almost all Python novices have surprising answers that may change the way you think about programming.

After a break, the session will go on to cover some of the many new features introduced in Python 2.0, 2.1 and 2.2.

Paul Brain

Started a cybercafe in 1996 when they were a good idea. Moved to London. Stopped being a 'highly paid' Internet consultant in 1997 because "this demand just cannot keep going, so I better get a proper job" Ran teams building complex internal and external web applications for a well known ISP. Now I tell the company how to spend its money -they call it commercial analysis.

ebXML, Python and how small businesses get clout

What is ebXML - why will it change the world? What is Tim Berners Lee doing with the Semantic web and why will that change ebXML and the world? Examples of ebXML and Python

Silas S. Brown

Silas is a second-year PhD student in Computer Science at Cambridge University, working in the Rainbow graphics and HCI (human-computer interaction) research group. His research topic is "transformations for presenting data to a diverse range of people." He has severely impaired sight.

Beyond XML: Building Transformation Algorithms in Python

Structured data (such as XML) can be presented in many different ways for different audiences, but the tools available for doing this have their limits. The speaker describes his alternative approach, which he believes is in many cases more intuitive. Python code will be used, but it is not necessary to know Python (although familiarity with a C-like language and object-oriented concepts is assumed).

Nicholas Chauvat & Alexandre Fayolle (of Logilab)

Logilab is a start-up company based in Paris (France), specializing in artificial intelligence and intelligent agents. Logilab are partners of Fourthought Inc, whose 4Suite library forms the core of Python's XML toolkit.

Nicolas Chauvat received a master degree from Ecole Centrale Paris and from Université Paris 6. After some time doing research in french and US artificial intelligence labs, he founded Logilab, a company that specialises in Python, XML, and industrial applications of advanced computer science.

Python's XML tools

After a quick summary of XML and its relatives, the talk will cover the various aspects of the PyXML and 4Suite Python libraries : SAX, DOM, XPath, XSL(T), Schemas, RDF, etc. Several applications that use extensively these libraries will be presented, including 4SuiteServer and Narval.

Jim Coplien

Jim Coplien is a retired member of the Software Production Research Department in Bell Laboratories, and is a Visiting Professor at University of Manchester Institute of Science and Technology. He holds a BS in Electrical and Computer Engineering, an MS in Computer Science, both from the University of Wisconsin at Madison, and a Ph.D. in Computer Science from Vrije Universiteit Brussel. His early career work includes applied research in software development environments, version and configuration management models, and in object-oriented design and programming.

His current research areas include ethnography, software composition, multi-pardigm design and architectural patterns of telecommunications software.

He is author of "C++ Programming Styles and Idioms," the foremost high-end C++ book in the industry, and of "Multi-Paradigm Design for C++." He was co-editor of two volumes of "Pattern Languages of Program Design." He writes a patterns column for the C++ Report. He is a Member Emeritus of the Hillside Group, a small consortium of industry leaders providing industry-wide leadership and support in the pattern discipline. He was program chair of ACM OOPSLA '96 and program co-chair of the First International South Pacific Conference on Pattern Languages of Program Design.

The Death of Patterns and the Last Pattern Language

In 1996, Alexander exhorted us: As a layman, trying to read some of the works that have been published by you in this field, it looks to me more as though mainly the thing is kind of a neat format that is a good way of exchanging ideas about programming. And that part is working very well, but these other two dimensions, the moral capacity to produce a living structure and the generativity of the thing, that is, its capability of producing coherent wholes. I haven't seen very much evidence of those two things. Have we made progress since then? This talk investigates state-of-the-art in pattern practice: a practice in which progress and publications are characterised by automation, rigidity, dehumanisation, and industrialisation. Maybe the GOF was a good beginning but must it be the last pattern language? Have we lost our way? This serious introspection will challenge the audience to raise the bar by adopting new ways of thinking about design and about life as a whole - as perhaps the Japanese already have.

Organisational Patterns

This talk provides a high-level overview of organisational patterns. It briefly describes the methodology we used at Bell Laboratories to discover and document these patterns. It presents a model of organisational change based on patterns, using patterns for process improvement. The talk presents a few of the most key patterns common to successful software development organisations, but the focus is on how to apply the organisational patterns that have precipitated from this work, and which can be found in the literature. Some XP practices owe to these patterns, while on the other hand, these patterns shed considerable doubt on the viability of other XP claims.

Dr. Tim Couper

Tim has been working in information systems and technology for the last 20 years. His wide experience includes working and speaking internationally on computing, information technology, and is currently interested in architecture issues & agile development methodologies.

Introducing Python to a large industry leader

The information system consequences of merging two major pharmaceutical companies have been significant, and provided opportunities to look at new rapid development tools and methodologies. This talk is a case study looking at the challenges, successes and failures involved in introducing Python into one division of an organisation with no previous history of its use.

James Dennett

James' programming life started with BBC Basic around 1983, but has since taken in 6502 and ARM assembler, Modula-2, Rexx, C++, C, Perl and Java and a basket of other languages. Having graduated in Mathematics at Trinity College, Cambridge, he claims that he spends his days making software because it's more fun that working for a living. He is part of the BSI C++ panel, a member of ACCU and ACM, a moderator for comp.std.c++, and can be found posting in the other C++ newsgroups.

Felix -- what comes after C++?

A talk on John Skaller's "Felix" programming language, with a view to its potential to leverage the popularity of C++ whilst leaving behind the legacy of C syntax. This should cover a very brief overview of the limitations of how C++ can evolve now that it is standardised, some motivating examples which are tricky in C++ but more natural in Felix, some simple Felix code, and a discussion of the sourceforge project. I'll probably be unable to avoid making some cynical comments about how most "C++ killer" languages fail to even match C++'s achievements.

Jutta Eckstein

Jutta Eckstein ( is an independent consultant and trainer from Munich, Germany. Her interest in agile processes is based on over ten years experience in developing object-oriented applications. Besides engineering software she has been designing and teaching OT courses in industry. Having completed a course of teacher training and led many 'train the trainer' programs in industry, she focuses also on techniques which help teach OT and is a main lead in the pedagogical patterns project. She has presented work in her main areas at OOPSLA, OT and EuroPLoP.

She is a member of the board of Hillside Europe e.V., the association to advance expert knowledge (in the shape of patterns) about practice-proven techniques for analysis, architecture and programming of software systems as well as for the formation of organisational and team structures for software development.

She is also a member of the program committee of XP 2002, EuroPLoP 2002, OT2002 and OOPSLA 2002.

EJB Role Play by Nico Josuttis and Jutta Eckstein

Do you know Enterprise Java Beans? Do you know about how containers manage the lifecycle of EJBs? Did you understand the difference between entity beans and stateless session beans? Do you know why we don't mention stateful session beans in the question before? The EJB role-play is a way to understand the lifecycle of EJBs. By interacting with others you "feel" the way things are organised. It's an interesting way to learn complex behaviour for both newbies and experts.

E-Quality by Nico Josuttis and Jutta Eckstein

The E-century changes the world. The heavy-weight processes of the eighties and nineties are not appropriate anymore. Agile system development is cool, now. We did it - in a project with more than 100 developers - developing a J2EE application for more than 50.000 simultaneous users. Believe us, there is a lot to say about it. For example, how we defined to get quality. In fact, our "E-Quality" was forced by:

  • Communication
  • Transparency
  • Discipline
  • Simplicity
  • Courage
  • Fun

So, let's talk a bit about this experience. And, as it is the ACCU meeting, about some technical details of our experience. Enjoy!

Alan Griffiths

Alan is the Chair of the ACCU and has been writing for the ACCU Journals since 1990. Other publications include Java Report, C/C++ Users Journal, EXE and English Bridge.

He is currently employed by Microlise Limited and has responsibility for mentoring developers in OO development techniques and revising the software development process.

You can find details of some his published work by visiting his website (

Reworking the Organisation (a case study in improving the software development process)

Changing the development practices in an organisation is a lot like giving up smoking. It is not enough that better practices are identified - there must be a strong and unwavering intent to change. There are many factors that lead to problems manifesting during development and many of them are not normally under the control of developers. Being given the opportunity to change them is rare. This talk covers the first six months of my experiences in working to improve the effectiveness of a development group where costs were too high and timescales frequently not met.

Duncan Grisby

Duncan Grisby is a researcher at AT&T Laboratories Cambridge, working on distributed systems technologies and ubiquitous computing. Amongst other things, he is one of the core developers of omniORB for C++, and is the author of omniORBpy, one of the CORBA implementations for Python. Duncan holds MA and PhD degrees from the University of Cambridge Computer Laboratory.

Distributed Objects and Web Services in Python

This talk will provide an overview of distributed object technologies using Python such as SOAP, CORBA, and XML-RPC, and how they are used in the emerging field of Web Services.

Kevlin Henney

Patterns for Concurrent and Networked Objects

Nowadays, most software applications are developed to run on networks or on the Internet. However, to build sophisticated distributed systems in an efficient and an effective way a lot of experience and knowledge is required from developers. Patterns are the perfect means to document the experience of professional developers in this area. Hence, the goal of this tutorial is to introduce a web of important patterns that together explain how to build distributed concurrent systems with quality in mind. The patterns introduced will not only help to build software applications but also to understand the "secrets" of object-oriented middleware and component-based from an architecture perspective.

Steve Holden

Steve Holden is a consultant, advising on system and network architectures and the design and implementation of programmed web systems as well as for commercial clients. He also teaches classes on TCP/IP, Unix and web security, intranet technologies and database topics for Learning Tree International.

Steve has spent time on both sides of the "academic divide", and was an early researcher into the integration of text, graphics and database while teaching commercial computing topics at Manchester University.

A Web Framework for Python

This will present a simple framework for server development in Python, as featured in Steve's forthcoming book "Python Programming for the Web" (New Riders, Jan 2002).

Tushar Joshi

Software Development with Linux

With Linux's GNU License, and the host of opensource tools and software available under the GNU license, Linux makes the ideal application development platform. This talk will cover the benefits of using Linux to develop in a variety of languages including Java and C++. An overview of the tools available for development such as source control, versioning and self-documentation. The ease of debugging on a Linux environment show how to trace system calls, analysing core files and compiling and debugging code using the GNU debugger.

Nicolai Josuttis

Nicolai Josuttis ( is an independent systems architect, author, and consultant. He designs mid-sized and large software systems for the telecommunication, traffic, finance, and manufacturing industries. He is well known for his best-selling book about the C++ Standard Library.

But he has also written other books and articles about object-oriented software development and programming in general. He is a partner at System Bauhaus, a German group of recognized object-oriented system development experts.

EJB Role Play by Nico Josuttis and Jutta Eckstein

Do you know Enterprise Java Beans? Do you know about how containers manage the lifecycle of EJBs? Did you understand the difference between entity beans and stateless session beans? Do you know why we don't mention stateful session beans in the question before? The EJB role-play is a way to understand the lifecycle of EJBs. By interacting with others you "feel" the way things are organised. It's an interesting way to learn complex behaviour for both newbies and experts.

E-Quality by Nico Josuttis and Jutta Eckstein

The E-century changes the world. The heavy-weight processes of the eighties and nineties are not appropriate anymore. Agile system development is cool, now. We did it - in a project with more than 100 developers - developing a J2EE application for more than 50.000 simultaneous users. Believe us, there is a lot to say about it. For example, how we defined to get quality. In fact, our "E-Quality" was forced by

  • Communication
  • Transparency
  • Discipline
  • Simplicity
  • Courage
  • Fun

So, let's talk a bit about this experience. And, as it is the ACCU meeting, about some technical details of our experience. Enjoy!

Allan Kelly

Allan Kelly is a hands on software engine with over 10 years practical experience - mainly in financial systems. His areas of interest cover physical software design and understanding what the engineering in software engineering as all about! He is a regular contributor to both Overload and Accent.

Porting Software in the Contemporary World

Based on his series of porting articles in Overload this talk will look at:

  • Why porting is necessary
  • What types of port exist and why it is difficult
  • The role of tools in helping porting
  • C++ features which assist in porting
  • Structuring systems for porting
  • A selection of porting problems and solutions

It is Allan's central hypothesis that porting is more of a cultural problem than a technical one.

Dietmar Kühl

Dietmar Kühl ( was born in 1968 and finished his Diploma in Mathematics in 1997. He has worked as a consultant since 1997 with expertise in the OO area using Java and C++, mostly for banking applications. Since 2000 he's working for Phaidros Software AG implementing an UML based business application development and maintenance platform (Phaidros/eaSE). Since 1996 Dietmar is a moderator of comp.lang.c++.moderated and has regularly attended the ISO C++ meetings.

Boost's approach to XML

For processing XML documents various components are useful. This starts with an XML parser. Of course, everybody knows that XML parsers are implemented either as SAX or DOM parser. The parser used here is similar to SAX in that it travels over events when encountering document entities. It differs from the normal SAX interface because it provides an iterator like interface rather then a callback approach. Of course, such an iterator can be used to provide the familiar SAX and DOM interface if this is desired. Once an XML document is available in memory something to write it to an external destination is necessary. Similarly, to navigate an XML document an XPath engine is helpful. These tools are implemented in terms of a generic tree abstraction: If you have something which feels like a tree you should be able to apply the XML writer, XPath, and other tools using this tree abstraction. This way, things like XPath become useful far beyond DOM structures and also become applicable e.g. to graphs, simple vectors, etc.

Implementing templates

There is lots of talk about templates in C++ and every C++ program uses templates in one way or another. Still, the basics of implementing templates are rarely covered. This talk provides an introduction to the implementation of templates walking a non templatized pair implementation through all template basics. Template syntax, code organisation, specialisation, type traits, dependent names, concepts, and archetypes will be explained in a cook book style to get you started on implementing your own templates.

Although pairs are pretty trivial themselves, a small library providing general pairs and corresponding utility functions can be used to demonstrate how templates are implemented and how basic problems are addressed. One of the fundamental problems is organising template codes and three approaches (inline implementation, explicit instantiation, and exporting templates) are shown and their respective pros and cons are discussed. Pairs of identical types are given a sequence interface to introduce specialisation. Coping with string literals is used to demonstrate type traits and dependent names. Once the implementation basics are introduced, the idea of concepts and corresponding archetypes for documentation and testing are explained.

Angelica Langer

Angelika Langer ( is a freelance trainer/mentor working and teaching in the area of object-oriented and component-based software development in C++ and Java. She is a recognized speaker at conferences world-wide, co-author of the book "Standard C++ IOStreams and Locales" and author of numerous articles about C++ and Java. A more comprehensive biography can be found on my web page (

Understanding Expression Templates

Gradually, as C++ compilers begin to support C++ templates more seriously, novel template programming techniques find their way into the programming practice. One example of contemporary use of C++ templates are expression templates. Several expression template libraries are available as freeware. However, understanding them is usually difficult, since these libraries are fairly complex.

This tutorial aims to make complex things easy, which in fact cannot be done, but we try to provide a first insight into the ideas and techniques behind expression template libraries.

Comparing Apples and Pears - Object Comparison in Java

Functions such as equals(), compareTo(), hashCode(), clone(), and finalize() belong to the basic infrastructure that practically every class type must provide. Yet it is amazing how little agreement there is in the Java community as how to implement them correctly. Java gurus, such as recognized authors and experienced Java developers, are in serious disagreement regarding correct implementation of these methods. In this tutorial we look into the semantics and implementation of the equals() method. For illustration of the related difficulties and misconceptions we study a number of implementations of equals() that have been published by recognized authors in their books or by experienced Java developers in commonly available Java source code. We will find that some of the implementations are incorrect, others are correct, and some are debatable and fragile. We aim to explain the different underlying strategies and to evaluate their up- and downsides. Eventually we condense our conclusions to a set of guidelines that help Java programmers to avoid common mistakes and to provide correct and robust implementations of equals().

Adam Langley

Adam Langley is a student in England and a free software programmer in his free time. Interests range from software to politics, typesetting and theatre. He is currently implementing Freenet in C++ and working on the next generation mixmasters

Implementing Freenet in C++

Freenet is a very complex networking protocol and presents special challenges to implementors. Adam Langley, of the Freenet project, discusses how synchronous threading makes the problem manageable and the lessons learned.

Stanley Lippman

Stanley Lippman ( is a software consultant. At Bell Laboratories for over 12 years, Stan worked with Bjarne Stroustrup, the inventor of C++, on cfront, the C++ reference implementation. In addition, Stan worked for over 5 years in Feature Animation both at the Disney and DreamWorks Studios. His screen credits include Hunchback of Notre Dame, El Dorado, and Fantasia 2000. Stan is the author of C++ Primer, Essential C++, and Inside the C++ Object Model, and the soon to-be-published C# Primer, all published for Addison-Wesley.

XMLmeets C#

In this talk, I'll look at the XML support provided within the .NET framework from Microsoft using C# as the programming language. The primary emphasis is on the program manipulation and display of XML documents under the .NET platform.

We'll look at both the firehose or pull model for parsing an XML document, as well as support for W3C DOM Level 2 which provides a memory-resident tree representation of the XML document for transversal. In addition, we'll look at both XPath and XSLT support and, if time allows, a brief look at Schema support.

Prerequisite: The talk presumes you are passingly familiar with XML.

C# for C++

C# (C Sharp) is a new object-oriented programming language invented within Microsoft and delivered as part of its Visual Studio.NET. C# has been submitted to the ECMA standards body co-sponsored by Microsoft, Intel, and Hewlett-Packard. C# is derived from both C++ and Java - this makes it an easy read for both programmer communities.

This talk is focused on introducing C# to the working C++ programmer, so we'll emphasis both the strange (interfaces, type reflection, properties, and garbage collection, for example) and the subtly different (operator and conversion overloading, name visibility, and overload resolution, for example). In addition, we'll look at the .NET class framework, in particular in light of the C++ standard library.

Prequisites: The talk presumes you are passingly familiar with C++.

Alan Lenton

Alan Lenton ( Alan Lenton is in charge of game design and development and overall technical matters for Interactive Broadcastin g. Alan handles all the design for new and existing games, and the programming f or new games. He also has responsibility for managing other programmers doing ma intenance work and writing game tools. Unusually for a multi-player game designer, Alan has also written single-player computer games, including the well-receiv ed strategy wargame Frontline.

Alan has extensive management, publishing and software design experience, having worked as the manager of a rock band, manager of a bookshop, a graphic desi gner, and the production editor of a London listings magazine. He was for three years general manager of the UK's first commercial consumer network Compunet, be fore leaving to concentrate on writing IB's award-winning multi-player game Federation.

Multi-player games designed by Alan include Federation, an adventure/economic simulation set in a future universe; Iron Wolves, a submarine simulation; and the forthcoming Age of Adventure, a role-playing game based in Victorian times.

Testing the Water

The current round of licence fee increases has many business looking at open source alternatives to their current platforms. Understandably, companies are not interested in just jumping into an alternative operating system that their staff are unfamiliar with. The people likely to be asked for information are the senior programmers, many of whom will be unfamiliar with Unix based systems. What, then, is the best way to evaluate the available open source alternatives?

The talk looks at ways you can gain some experience with open source systems - Linux, Free BSD and the like - without disrupting the work of the department. Options to be considered will include setting up a single machine as a print and file server, an internal web server, perhaps a mail server, or other applications.

It's not possible to evaluate something properly unless you have it doing real work, so the talk will look at the things in which open source systems excel and at things to avoid in the first instance.

Neil Martin

Partner of Make IT so, Director of TFJ Ltd, The Test Place Ltd, The Hosting Place Ltd and Sumit UK Limited Neil is a freelance Software Fabricator (sometimes building other times faking), he spends his time delivering Java Training for the QA Group, Lead Software Quality related training for LRQA and developing Java related test suites which are marketed through the Test Place Ltd Formerly a director of Plum Hall Europe Ltd and a manager of BSI Quality Assurance Software Products Services (responsible for conformance testing programme including the European C Compiler Validation Service). Neil has spent considerable time on standards committees include the BSI and ISO C standards committees and has extensive experience in the development of distributed Java based systems.

C# Vs Java

What hope does C# have of displacing Java, does the world really need another language. Why the about face; Microsoft pushing C# through the ECMA standardisation process while SUN does its own thing with the Java Community process and ignores the world of formal standards. What are we to make of Microsoft release of J# Java for .NET, is this another attempt at FUD or a serious attempt to attract the Java fraternity. This talk will compare the c# and Java and the contrasting approach to their development.

Software Quality Standards Clean Pipes, Dirty Water

The underlying theory of software quality standards that have been created in the last fifteen years has been improve the process and the product will improve. This talk will consider whether this approach to software quality delivers or whether it is possible to produce low quality software with a high quality process (dirty water from a clean pipe).

Mark Radford Studied Maths and Physics at Trent Polytechnic, Nottingham, graduating in 1986. Having found the computing part of the course more interesting embarked on a career in software development, working over the last twelve years for various organisations, using a variety of languages and platforms.

This began with an eighteen month spell as a Fortran-77 programmer, followed by two years using the Pick operating system and its native language (a variant of BASIC). In 1991 moved on to develop for Windows platforms in C, C++, and Java.

In 1997, became an independent consultant, initially specialising in Windows development using C++ and MFC, but quickly moved on, to specialise more in C++ and object oriented design, particularly on large scale developments.

Member of the BSI C++ panel since November 1998, and regular member of the UK delegation to ISO meetings.

Observer Patterns

In object oriented software design, it is common to come across the problem of how an object should notify another of changes in its state. The "Observer Pattern" (as described by Gamma et al in their seminal work on patterns "Design Patterns: Elements of Reusable Object Oriented Software") addresses the problem and presents discussion of some of the issues involved in finding a solution. However, both the design context in which the problem arises, and the possible tradeoffs which must be balanced in solving it, are so varied that solutions are better captured by a number of related patterns. This talk aims to explore the factors - e.g. dependencies between components, concurrency - which influence the design context and which lead to the need to accept different sets of tradeoffs, as well as presenting examples of the resulting patterns.

Exploring Design with Objects - A C++ Perspective

Object Oriented design and programming have attracted much attention in the computing world and with this attention has come much hype. Too many projects that have adopted the approach have failed to gain benefit, and one reason is that the hype has overshadowed the need for a grasp of the fundamental concepts and principles. This talk will present a simple problem and by going through the process of designing software to solve it, attempt to show how to get from the problem to an effective design. On the way, it will look at the role that fundamentals such as objects characteristics (identity, state and behaviour), and the distinction between the type and class of an object, play in software design.

Gabriel Dos Reis

Former student of the École Normale Supérieure de Cachan (France), Gabriel Dos Reis got his PhD in Mathematics (Differential Geometry) at Université de Paris VII in 2001. His research interests include applying numerical and computational methods in Geometry and especially in the construction of constant mean curvature surfaces. He began lobbying for C++ in scientific computations since 1996 when he worked on the European scientific project FRISCO (Framework for Numerical and Symbolic Computations) when working at INRIA Sophia Antipolis (France). He is the author of the numerical components of the new GNU libstdc++-v3. Currently he is working, for CodeSourcery LLC, on the C++ front-end of GCC. He is also the co-maintainer of libstdc++-v3.

On Data Abstraction and Polymorphism in C++

The main objective of this talk is to understand the role of types (and their incarnation by classes) in programming in C++. After a short review of the polymorphism classification made nearly twenty years ago by Cardelli and Wegner, we examine the impact of the template technologies on programming in the large and its interaction with the so-called Object Oriented Programming using the C++ programming language.

Generic programming in C++: The next level

A short survey of generic programming as currently supported by C++ reveals needs for one more level or "meta-constructions" as far as types are concerned. This talk focuses on "concept" or "signature" extension both in the form of a formal proposal for C++0x and a practical implementation. The Standard Library serves as a basis for demonstrations of applicability.

Andy Robinson

Andy Robinson is the CEO and Chief Architect of ReportLab, Inc. He is also co-author of 'Python Programming on Win32' (OReilly 2000). Three he realised that Python's abilities as a 'glue language' could be combined with a PDF library to create a new generation of reporting tools, and these are now in mission-critical use in some of the world's largest financial firms. He has now made the transition from an occasionally creative developer to a stressed-out workaholic.

ReportLab: XML to PDF via Python (Report creation with Python)

This will give a comprehensive introduction to ReportLab's tools for generating real-time PDF and graphics on the web, and how you can put them to work in your own products and projects. We will also include real world case studies of deploying Python solutions in large financial firms, and explore our own approach to XML processing in Python.

Dale Strickland-Clark

Dale Strickland-Clark, a 25 year novice at IT, recently gave up any hope of being an expert at everything and now concentrates on improving his typing speed so he can get a word in edgeways in chat rooms. In his spare time he jointly runs Riverhall Systems Ltd, a software company specialising in database systems and Web applications. His past is littered with a diverse list of IT related employment including journalism and consultancy.

Python and Databases in a Commercial Environment

Riverhall has been using Python to develop database applications for the office and the Web for over two years. In that time we have used Python extensively both as middle tier objects in a larger system and to produce the whole application. This talk will look at the strengths and weaknesses of Python as a real commercial development tool with databases.

Bjarne Stroustrup Born in Aarhus Denmark 1950. Cand.Scient. (Mathematics and Computer Science), 1975, University of Aarhus Denmark. Ph.D. (Computer Science) 1979, Cambridge University, England.

Bjarne Stroustrup is the designer and original implementer of C++ and the author of "The C++ Programming Language" (1st edition 1985, 2nd edition 1991, 3rd edition 1997) and The Design and Evolution of C++. His research interests include distributed systems, operating systems, simulation, design, and programming. Dr. Stroustrup is the head of AT&T Lab's Large-scale Programming Research department, an AT&T Bell Laboratories Fellow, and an AT&T Fellow. He is actively involved in the ANSI/ISO standardization of C++. Recipient of the 1993 ACM Grace Murray Hopper award. ACM fellow.

Possible Directions for C++0x

The ISO C++ standard comes up for renewal in 2003. By then, we need to have a good idea where the language and standard library is going, and some concrete proposals. So the committee has started a project to create a standard libraries TR (chaired by Matt Austern) and established an "evolution" working group (chaired by me) to chart a course for the standard as a whole and to consider early proposals for new libraries and language features.

This talk presents my views of general directions for C++0x and gives examples of possible new language features and libraries. The brief summary of my position is that we should be reluctant to add language features and add only a few, but ambitious and opportunistic in our pursuit of new standard libraries. I propose two overall goals: Make C++ a better language for systems programming and library building. And, make C++ easier to teach and learn.

XTI: An Extended Type Information Library

This talk presents a library representing types, names, and declarations of a C++ program, part of a C++ program, or even several C++ programs so that they can be easily analysed and manipulated from within a C++ program. Basically, XTI presents an abstract tree representation of C++ and provides ways of traversing, querying, and annotating that representation. So far, this library has been used to generate distributed programs from Standard C++ source. It's original purpose was the support of distributed programming. Another application has been a library for reading and writing an XML representation of C++.

Herb Sutter

Herb Sutter is the author of more than 150 technical articles and of the widely acclaimed books Exceptional C++ and More Exceptional C++. He is also secretary of the ISO/ANSI C++ standards committee, contributing editor and columnist for C/C++ Users Journal (CUJ), and former editor-in-chief of C++ Report.

C++ Language Features to Beware Today, and to Anticipate in C++0x

From exception specifications to export, from typedef templates to typeof to delegating constructors, this talk analyzes current C++ features that you should use with care if at all, and important new C++0x language features coming soon to a compiler near you. It shows why the features are useful, where they have areas or effects that can be dangerous or result in unintended effects, what kinds of coding idioms and techniques they make possible, when you can expect them to be stable in shipping compilers, who the people and companies behind them are, and how you can use them safely and effectively.

Julian Templeman

After nearly 30 years in programming, Julian now runs his own consultancy and training company in London, specialising in C++, Java and the .NET technologies. He is also the author of several books on COM and .NET

Managed C++ In .NET

Microsoft's .NET has greatly changed the way Windows programs are written. As well as greatly upgrading Visual Basic and introducing a new language in the form of C#, they have also introduced extensions to C++ to enable C++ programmers to work in the .NET world. This talk will provide an introduction to the .NET architecture, how .NET applications can be written using Managed C++, and address some of the issues involved in mixing traditional and Managed code.

Markus Voelter

Markus Voelter works as a software engineer and senior consultant for MATHEMA AG, Germany, where he also manages their Ulm office. His main interests include distributed systems, component technologies and patterns. Markus has published several papers in this area and he's a regular speaker at the respective conferences.

Comparing Java and .NET

Both Java and Microsoft .NET offer complete frameworks to build and deploy desktop applications and enterprise applications without dependencies on the concrete platform used. Both of them now focus on the delivery of Web services to build Web-based applications in a much more sophisticated way. For the developer it is very difficult to decide which of these technologies to use. What are the benefits and liabilities of these solutions? What are their similarities and differences. It is the goal of the tutorial to reveal all of these issues.

Patterns in .NET

Today, many developers build solutions that run on standard middleware or platforms such as Microsoft.NET. To use these platforms efficiently sound knowledge of the underlying system is essential. This is in contrast to common believe because vendors often claim that knowledge of internals is obsolete as everything is hidden behind layers of transparency. However, this approach turns out to be wrong as many real-world examples demonstrate. Hence, the goal of the tutorial is to introduce Microsoft .NET from an architectural perspective. Attendees will learn how to efficiently leverage Microsoft .NET within their own applications by looking into the details of the .NET infrastructure. Patterns will be used to reveal fundamental design decisions Microsoft has taken when they built the framework. As a side-effect, developers will also learn how to reverse-engineer existing software to look behind its architecture.

Anthony Williams

Anthony started programming with BBC BASIC in the mid 80's, quickly progressing to Z80 assembly language (hand-assembled on paper, and entered as hex code) on a ZX81 and an Amstrad CPC. Since then he has programmed in a number of environments, using many computer languages, notably C, Java, C++ and various assembly languages. Although he has a master's degree in Physics from St. John's College, Oxford, his interest in programming outweighed his interest in science, and he decided to pursue a career in software. He has written several articles on C++ for Overload (which are available online at, and is a member of the UK C++ Standards Panel. He can frequently be found posting to comp.lang.c++.moderated or comp.std.c++.

Functional Composition and Return-type Deduction

A key feature of functional programming is the ability to create a function h(x) which is equivalent to f(g(x)) for some functions f(x) and g(x). Here I present a set of function- and class- templates which enable the inline composition of functions, for use with standard algorithms - the function h(x) can be written as compose(f,compose(g,_1)) when used as the function argument for something like std::for_each, rather than having to be written explicitly. An important part of the implementation of such functors is determining the return type. Traditionally, this is done using typedefs, as in std::binder1st, but the mechanism I present here eliminates the need for such typedefs, using automatic type deduction instead. This enables the writing of functors that wrap operators, that are normal classes with template member operator(), rather than template classes.


Writing for Publication Chaired by Francis Glassborow

The aim of this session is to cover a range of aspects related to technical writing. Topics will include writing for magazine publication and writing books. We intend to cover not only how to write but how to set about getting published. We hope to include at least one commissioning editor on the panel.

Working by Yourself Chaired by Francis Glassborow

When you write programs by yourself you have to take on all the various roles of a software house. Often you are your own customer as well as coder, designer and test department. This session aims to explore some of the pitfalls that face the solo software developer.

Work Group

Ideas for Evolving C++

The idea for this session is for participants to work together to provide a list of things that they would like to see in the next release of C++. For the first part delegates will work in groups of about six to generate lists of things they think should be considered. The second part will be devoted to giving more detailed consideration of the ideas with the aim of producing a considered shopping list for more detailed consideration by the BSI C++ Panel and other equivalent groups in other countries.