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

ACCU 2006 Speakers

Guido van Rossum

Guido van Rossum is the creator of Python, one of the major free scripting languages. He created Python in the early 1990s at CWI in Amsterdam, and is still actively involved in the development of the language.

In 1995 he moved to the US; first to work for CNRI in Reston, VA as a researcher, then for Zope Corporation as Director of PythonLabs, and since 2003, after a move to the SF bay area, for Elemental Security.

His home on the web is

Helen Sharp

Helen Sharp is co-director and founder of the Empirical Studies of Software Development research group at The Open University. She is also a Senior Visiting Fellow at the Centre for HCI Design at City University, London. Since working as a developer in the 1980s, Helen has been keen to understand the social dimensions of software practice. This has led her to conduct a variety of studies over the last 15 years or so, focusing on several areas of software practice, including quality assurance, object-oriented development and agile software teams. Throughout her investigations, she focuses consistently on the people and their social interactions, rather than on the technologies available and where to apply them. Helen regularly features on the programme and organising committees of several national and international conferences including SPA, OOPSLA, Agile, XP and HCI. She is joint author of a leading textbook on Interaction Design and has published over 50 peer-reviewed articles.

Herb Sutter

Herb is an architect in Microsoft's Developer Division, where he is currently the designer of the Concur concurrency extensions for existing programming languages. He also chairs the ISO C++ standards committee, and is the author of four acclaimed books and hundreds of technical papers, including the widely-cited essay "The Free Lunch Is Over" that coined both that term and "concurrency revolution" to describe the software sea change now in progress to exploit increasingly parallel hardware.

Hubert Matthews

Hubert Matthews is a freelance consultant specialising in system architecture and design as well as training programmers in C++, UML and Java. His clients range from large companies such as DHL and Orange to small companies and startups. He also is technical director or advisor to a number of startup companies. Hubert is a regular speaker at ACCU conferences and has been an ACCU member for 8 years.

Hubert lives in Oxford and in his abundant spare time he likes to pretend that he coaches rowing, dances salsa, dabbles with martial arts and drives too fast.

Giovanni Asproni

Giovanni has more than ten years of professional experience in which he had the opportunity to work in several different roles, from Programmer to Senior Architect and Technical Project Leader, in a variety of application domains including CASE tools, telecommunications, bioinformatics, and, more recently, banking. His main interests are agile software development, software architecture and design, project management, and, last but not least, writing code (especially in C++, Java, and Python). He is an expert in Object Oriented Design and Development, Agile Software Development, and a Certified Scrum Master. He is a member of the ACCU, the AgileAlliance, the ACM, and the IEEE Computer Society.

Tony Barrett-Powell

Tony Barrett-Powell has been involved in software development since 1990, mainly working in C, C++ and Java languages focused on object orientated techniques. Over the last five years Tony has become more focused on the software development process as his experience has shown him agile processes are a factor in project success.

With his free time, which is minimal nowadays, he enjoys composing and performing music, reading and watching films.

Mark Bartosik

I have been writing C++ code since early 1990's, first at RCP Consultants in Didcot, later moved to the USA. Now I mostly debug code and bugs that have evaded capture by others. Occassionally this means flying around the world to tackle the most important bugs. I also write debugging tools in my limited spare time.

Schalk Cronjé

Schalk Cronjé has been around computers ever since learning ZX81 BASIC in 1982 and typing in bytes of Z80 machine code by hand. After that humble start he has subsequent engineering degree he worked in industry on Windows, OS/2, Linux, Solaris and some embedded platforms mostly in C and C++. He currently works in the UK office of one of the world's leading internet security and antivirus companies. Besides crafting up lots of C++, XSLT and the odd script, he continually attempts to find new ways of improving software development processes. He can sometimes be found working on FLOSS projects, especially projects related to the localisation of software into African languages.

Rachel Davies

Rachel Davies is a consultant and facilitator in United Kingdom. She has been working in the software industry for nearly 20 years. She coaches teams in XP and Scrum and advocates the use of frequent retrospectives to help teams adapt their process to their context. Rachel is a frequent presenter at agile conferences and serving director of the Agile Alliance and British Computer Society Software Practice Advancement specialist group. She can be reached by email at rachel at, and via her website

Remi Delon

Remi Delon is a french software developer living in London. He's been using python for more than 7 years and mostly does web development these days. He's the author of the CherryPy framework which is the engine for higher-level frameworks such as TurboGears and Subway. For the past 3 years Remi has been running which is a web hosting service with great support for Python.

Jutta Eckstein

Jutta Eckstein (, is an independent consultant and trainer for over ten years. She has a unique experience in applying agile processes within medium-sized to large mission-critical projects. This is also the topic of her new book Agile Software Development in the Large. She is a member of the board of the AgileAlliance and a member of the program committee of many different European and American conferences in the area of agile development, object-orientation and patterns.

Michael Feathers

Michael Feathers is a consultant with Object Mentor. He has been active in the XP community for the past six years, balancing his time between training and coaching and working with various teams. Early in his career, Michael designed a proprietary programming language and wrote a compiler for it, he also designed a large multi-platform class library and a framework for instrumentation control. Publically, Michael developed CppUnit, the initial port of JUnit to C++, and CppFit a port of the FIT testing framework. He is also a member of the ACM and the IEEE. Michael is also the author of 'Working Effectively with Legacy Code (Prentice Hall 2005). When he isn't engaged with a team, he spends most of this time investigating ways of altering design over time in codebases.

Steve Freeman

Steve Freeman is an independent consultant, specialising in Agile software delivery. He was one of the pioneers of XP in the UK, and an early member of London's Extreme Tuesday Club. He co-authored the original paper on Mock Objects, and an OOPSLA experience report.

Steve has developed software in many environments: research labs, bespoke systems, and shrink-wrap. He has degrees in Statistics, Music, and Computer Science. He is a developer of jMock and nMock.

Francis Glassborow

After a long and distinguished career teaching mathematics and latterly computing, Francis retired in 1988 through ill health. In that same year he joined the C Users Group UK that later became ACCU. He was Chair of the organisation for most of the 1990's as well as editor of its principle publication from August 1990- December 2001 In 1990 Francis became involved in the BSI's panels for standardising C and C++. From there he went on to represent the UK at the ISO/IEC SC22/WG14 (C) and WG21 (C++) committees. During the last few years he has been head of the UK delegation to those workgroups. Most recently he has written and had published a book, 'You Can Do It', introducing programming to complete newcomers.

Pete Goodliffe

Pete Goodliffe is a programmer, a software development columnist, and author. He never stays at the same place in the software food chain. He has a passion for curry and doesn't wear shoes.

Paul Grenyer

Paul Grenyer has gained experience in a number of languages including C# and Python, but C++ has always been the mainstay of his professional career, which began in 2000 writing a Windows based machinery control application.

In 2001 Paul moved to the direct mail industry where he wrote a highly successful distributed data processing suite for one of the largest direct mail houses in the UK.

Paul is currently working for Openwave Systems (Europe) Limited ( integrating the Openwave Phone Suite into manufacturer handsets. This has added experience of compiling on platforms such as ARM, Solaris and Linux to his already extensive experience with Microsoft Visual C++.

Paul is a firm believer in the benefits of unit testing and specifically test-first development. He is the creator and primary maintainer of Aeryn, a cross platform C++ testing framework.

Paul's more recent interests have been in both cross-platform memory usage monitoring and C++ streams.

Paul has been an active ACCU member since joining in 2001. In which time he has had a number of articles published in both CVu and Overload, has become a committee member and is co-creator and driving force behind the ACCU's mentored developers.

Dr. Rix Groenboom

Rix Groenboom supports fortune 2000 companies in field automated software error prevention and correction for Parasoft. His main area of expertise is in the use of formal languages for the specification, design and validation of software applications. Using this knowledge, Rix Groenboom has written over 30 technical articles and presented on Open Source and quality development issues at many IT industry conferences in Europe and USA. Dr. Groenboom holds a MSc and PhD in Computing Science from the University of Groningen (the Netherlands) and published a thesis focusing on Formalizing Knowledge Domains - Static and Dynamic Aspects (Shaker Publishing, 1998).

Andreas Aardal Hanssen

Andreas Aardal Hanssen works as a software engineer for Trolltech, and is based in their office locations in Oslo. He holds a M.Sc. in computer programming, and spends most of his day working with threads, networking and I/O management in Qt. He is also the author of the open source Binc IMAP server written in C++. Before working for Trolltech, Andreas has written and maintained backend software for huge webmail providers, and for the The Global Name Registry, Ltd.

Kevlin Henney

Kevlin Henney is an independent consultant and trainer who specialises in programming languages and techniques, OO design, patterns, agile development and software architecture. He has been a columnist and contributor for various magazines, including Application Development Advisor, Java Report, C++ Report, C/C++ Users Journal and EXE, not all of which have folded or undergone severe changes. He appears to get himself drawn into various committees, including the one for this conference, the one for the C++ standard and the one for The C++ Source. He has been a long-time member of the ACCU, and has occasionally been known to write in the third person and use run-on sentences.

Jez Higgins

Jez sits in his attic and types for a living. He's let out to walk the dog and go swimming occasionally.

He describes myself as a C++ programmer, but also spends a reasonable amount of time working in Java and C#. Over the last several years, everything he has done has had some type of XML data flying around somewhere. Without really meaning to he's become really pretty comfortable with XML processing, particular with some kind of publishing slant.

Steve Holden

Steve Holden of Holdenweb LLc is an experienced consultant and the author of "Python Web Programming". as well as one of the leading figures in the Python community. For the previous few years he has organised the US Python conferences. As usual, many of the most exciting developments in the Python year will come at PyCon, shortly prior to ACCU; Steve will be there and will bring us the highlights

Richard Howells

Richard Howells - - is an independent consultant, instructor and mentor specializing in .Net Application Architecture and Development. Richard's career has followed the evolution of the computer industry working initially on mainframes, later on mid-range, and currently on micro-computers, probably moving to more powerful equipment at every stage. His experience ranges from single user systems to applications with thousands of users. When not computing he drives a taxi for his two children and plays Volleyball.

Michael Hudson

Michael Hudson, although a mathematician by training, has been involved in the Python community for the better part of a decade, and has been contributing to PyPy since the inception of the project. He currently works full-time on PyPy as a researcher in the Programming Languages and Systems group in Düsseldorf.

Jon Jagger

Hi, I'm Jon Jagger, an independent software consultant/trainer/mentor specialising in C#, C++, Java, OO, design, patterns, and process improvement. I am a lapsed UK C++, and C standards panel member and a regular contributor to the ACCU Overload journal. My interests include training excellence, design, problem solving, reading, and monty python (required knowledge for all software developers).

Career highlights:

  • marrying my wife Natalie and being Dad to our three children.
  • serving as the ECMA TG2 C# convenor and helping to improve the quality and accuracy of the C# specification.
  • writing most of a 5 day instructor led training course on C# that now forms part of the official Microsoft curriculum (Introduction to C# Programming, course 2124).
  • co-authoring (with John Sharp) the Microsoft Press book Visual C#.NET Step by Step.
  • converting the ECMA C# 1.0 language specification into a hyperlinked HTML presentation using PERL, XML, and XSL (I plan to repeat this for the C# 2.0 specification sometime in 2005).
  • building a car (when I was 21).

I'm currently collaborating with several members of the ECMA C# committee to write an annotated version of the C# 2.0 specification (using a dedicated XML-XSLT-CSS based Wiki I wrote using PHP5).

Derek Jones

Derek started his professional life writing compilers (front ends for Pascal, CHILL, C, and Snobol; back ends for Pascal, Cobol, and C; code generators for Z80, 8086, 68000, Concurrent 3200, SPARC, 88000), then moved on to static analysis of source (mostly C). He now appears to be spending the rest of his life trying to finish a book (to be found at and probably spends too much time trying to introduce cognitive psychology to software engineering

Nico Josuttis

Nicolai Josuttis (, is an independent systems architect, technical manager, author, and consultant. He designs mid-sized and large software systems for the telecommunication, traffic, finance, and manufacturing industries. He is well known both in the C++ Community and to attendees at ACCU Conferences. He not only speaks and writes with authority about C++ (being the author of 'The C++ Standard Library' and 'C++ Templates') but is also an innovative presenter. He has also written other books and articles about object-oriented software development and programming in general. He is a partner of

Allan Kelly

Allan Kelly has over ten years experience in code trenches battling with technology. He believes most of the impediments to improving our world are not technological but social. To tackle these we need to understand and deal with people, learning and change. Allan is a regular contributor to ACCU conferences and journals as well as being an active pattern writer. He holds BSc and MBA degrees.

Allan Kelly-MacGregor

Allan works in IT for large financial institutons, currently as a Senior Infrastructure Architect with the Royal Bank of Scotland, and previously in various Architecture roles in HBOS. With a background in academic computing and Internet Start-up programming and sys admin, Allan has moved from small, date and cost limited systems into the world of Change Control, governance, DR, support contracts and policies - and survived!

Jan-Klaas Kollhof

I am a 28 year old professional developer, working in London, UK.

I have studied Business Informatics at the University of Rostock, Germany for (too) many years. I enjoyed giving courses in computer science and working with the students on software projects at the department of Business Informatics.

My main interest in software development is client-server communication for webapplications and making JavaScript more usable by building jsolait. I very much enjoy giving courses and presentation on these subjects.

Bronek Kozicki

Dietmar Kuehl

Dietmar Kuehl is a software developer for EAI-Systems working on a prognosis system. In the past, he has done mainly consulting for software projects in the banking area. He is a regular attendee of the ANSI/ISO C++ standards committee and a moderator of the newsgroup comp.lang.c++.moderated.

Oliver Kullmann

I did my PhD at the University of Frankfurt (Germany) in Mathematics in 1997. From 1999 to 2001 I was a post-doc in the group of Stephen Cook at the University of Toronto (Canada). In 2001 then I was employed as a lecturer in the computer science department at the University of Wales Swansea, where I stayed since then. Like most researchers, I have given numerous conference talks, publish regularly in international journals and visit researchers at other places.

My research is centred around the understanding of hard computational problems, where "hard" means here something around exponential time, which is typical for most problems in hardware and software verification, in artificial intelligence and in planning and scheduling.

Especially I'm interested in the study of the so-called SAT problem, the problem of deciding whether a propositional formula (boolean variables, connected by "and", "or" and "not") is satisfiable or not. Several years ago I've written a SAT solver (which was successful at that time), and now for several years I'm developing a generative C++ library for SAT solving (supported by an EPSRC grant since February 2004).

Alan Lenton

Alan Lenton is in charge of game design and development and overall technical matters for Interactive Broadcasting. Alan handles all the design and programming for new and existing games, and the maintainance of existing games.

Multi-player games Alan has designed and programmed include Federation, an adventure/economic simulation set in a future universe; Iron Wolves, a submarine simulation; Age of Adventure, a role-playing game based in Victorian times, now in beta-test; and the forthcoming Barbarossa, a strategy wargame based on the German invasion of Russia in 1941.

Alan lives in London, and as well as his work for Interactive Broadcasting, he is a member of the British Standards Institute C++ panel.

Steve Love

Steve Love started real life as a C programmer at University, where as always he was a late starter. He grew up to become a C++ programmer, and more recently a C# programmer, which covers most of the last 10 years or so of his life. He really does enjoy programming in both, which is handy because everyone has to make a living somehow.

Klaus Marquardt

Klaus Marquardt has participated in object oriented software projects since 1993. His roles include developer, team lead, architect, coach, and consultant. Currently he works for Dräger Medical as technical manager and system architect in large, international projects. His main interests are people, linking different worlds and views, patterns, and the relation between architecture and development culture. Since 1998 he has published about patterns, architecture and methodologies. He has contributed and led sessions at various conferences including OOPSLA, OOP, EuroPLoP, VikingPLoP, and OT/SPA. He has joined the program committee of various conferences, and served as program chair of EuroPLoP 2004.

Alisdair Meredith

Ivan Moore

Ivan Moore has been programming for over 20 years and yet he still regularly makes mistakes. That's why he's interested in test driven development, refactoring, iterative and incremental development, and drinking tea. He has a PhD in automated refactoring (1996), and has presented papers, tutorials and workshops at numerous international conferences, such as OOPSLA, XP, XPDay, ACCU, TOOLS and ECOOP. He works for Team Optimization Ltd as a coach, developer, team lead or tea boy, helping teams to "get agile". He hopes that his Cruise Control monitoring tray icon will allow people to forgive him for developing Jester, a mutation testing tool for Java/JUnit. His contact details are available from

Chris Morris

The presenter is project manager for the "Protein Information Management System". He works for a government research laboratory. He was first hired there as a software developer in 2001, and this is the first large project he has managed.

He began his career writing software in IBM assembler language, for the "Headquarters Computing Centre" of the Central Electricity Generating Board. He was increasingly dissatisfied, partly because the project was designed to meet the needs of the supplier, not the customer, and left after six years.

He then had experience in a variety of industries including semiconductor production, and then returned to programming. He spent a year teaching himself Java in the evenings, then got a job with an Internet Service Provider as a web developer.

He then realised the coding was not the hardest part of his job, and began studying project management and team leadership.

Dan North

Dan North has been writing enterprise software for 15 years, starting with C on SunOS, through the heady days of C++ and Perl on Solaris to Enterprise Java. For the last five years he has been a passionate advocate of Agile software delivery, and is currently working with software consultancy ThoughtWorks.

Günter Obiltschnig

Guenter Obiltschnig is the founder and president of Applied Informatics, a software company providing tools, consulting and development services for technical and embedded computing located in Carinthia, Austria. His main interests are distributed and embedded systems, XML, and middleware technologies. Despite occasional adventures with Java and .NET, he still prefers to express his ideas in C++. He is the principal developer of the C++ Portable Components.

Guenter received an engineering degree (M.Sc. equivalent) in Computer Science from the University of Linz, Austria. He is a member of the ACCU, the ACM and the IEEE Computer Society.

Currently, Guenter is writing a book on C++ cross-platform programming.

Roger Orr

I have over 20 years experience in IT, using a variety of languages and platforms and during that time have spent much time removing bugs (both my own and other people's) from a variety of computer programs. In 1989 I became a contract computer programmer and have managed to remain at the technical end of IT ever since. My recent work has been in C++ and Java, mostly on Windows. I have been a member of the BSI C++ panel since 2002. I currently run the Student Code Critique section of CVu and also write the occasional article for CVu and Overload.

Astrid Osborn

Astrid Osborn is Senior Technical Architect for Consignit ( She specialises in regulatory compliance & collaboration solutions for global enterprises and has been in the business for over 7 years. Astrid has done projects in the construction, transport, asset management, engineering, petrochemical, banking, insurance, agrichemical and utilities industries.

She hopes, one day, to retire to run a small third-world country.

Tim Penhey

33 year old Kiwi stuck in London. Majority of the last 11 professional years have been as a contractor (sometimes we prefer consultant). Primary language interests are in C++ and Python. Worked on many multithreaded applications, both good and bad.

Duncan Pierce

Duncan Pierce has been helping companies including Egg and British Telecom improve their software development using agile techniques for the last 4 years.

Duncan regularly presents at conferences, including XPDays in the UK, Benelux and Germany, XP2004, Agile Business Conference, ACCU and SPA. He is a long-standing member of the Extreme Tuesday Club (XTC), and was a founding organizer of the first XPDay conference. You can find out more, including his email address, at

Nat Pryce

Nat Pryce is an independent consultant specialising in software design and development process and practices. He was an organiser of the first London XP Day conference and programme chair of XP Day in 2004 and 2005.

He is a developer of the jMock and nMock libraries for test-driven development, which both employ the technique of embedding a domain specific language in a traditional programming language, and has also applied the technique to graphical animation.

Mark Radford

I Studied Maths and Physics at Trent Polytechnic, Nottingham, graduating in 1986. Having found the computing part of the course more interesting I embarked on a career in software development, using a variety of languages and platforms - e.g. VAX/VMS, Pick, Windows, Fortran-77, C, C++ and Java - over the last twenty years. Since 1995, I have specialised in C++ and relevant supporting approaches to design, working on a variety of developments including distributed and embedded systems. More recently I have become interested in web-based development using languages such as PHP and Perl.

I have been a member of the BSI C++ panel since November 1998, and have been a member of the UK delegation to ISO C++ meetings on four occasions.

Andy Robinson

Andy Robinson is the CEO and Chief Architect of ReportLab, who build tools for document generation and graphics with a strong emphasis on the Fund Management and financial services industries. He has been an active Python community memeber for 12 years, co-authoring O'Reilly's "Python Programming on Win32", is initiator and lead developer of a significant Open Source framework, and has years of practical experience using Python for unblocking corporate pipes rather than rocket science. He has been organising the Python track at the ACCU conference for 5 years.

Seb Rose

Since I first played Advent on a PDP 11/64 I have worked with many of the key software technologies of the day. I have also worked with various hardware technologies such as straw, earth and wood. I drew on these diverse experiences to lead a session at OT 2003 and write an article for Overload 54. For the past two years I have been developing an organic home delivery service in Southern Scotland, as well as supporting an internet bank.

Sam Saariste

Sam has an MSc degree in Electrical Engineering and has been developing software in C++ professionally since 1995. He discovered XP around 2000 and has been a been a big fan of Agile development methods ever since. Since then he has been practising a test-driven approach to development and in 2004 discovered Fitnesse, a wiki-based acceptance testing tool. Since then he has used Fitnesse for all his software development projects and finds it difficult to imagine what development was like without such a tool.

Peter Sommerlad

Peter Sommerlad is professor and head of Institute for Software at HSR Hochschule für Technik, Rapperswil. He is a well-known Patterns author (POSA) and consideres himself a test-infected programmer.

Andrew Thompson

Andrew is a partner in Titanium Capital Management, a hedge fund, and in Newhert Ltd. which has been developing advanced financial solutions for 4 years. He has been applying Python in finance for many years. Andrew was Global Head of Equity Proprietary Trading for Commerzbank (1997-2000), and has worked at Goldman Sachs and Deutsche Morgan Grenfell. He studied Maths at Oxford, after a publishing book on machine code programming and various computer games while in school in the mid 1980s

Phil Thompson

Phil Thompson of Riverbank Computing has been maintaining the PyQT package for several years. His company, Riverbank Computing, provides Linux and C++ related services.

Detlef Vollmann

Detlef Vollmann has a background of 20 years in software engineering and more than 15 years with object technology. He is an active member of the C++ standardization committee and one of the authors of the C++ performance report. He designs and implements embedded systems with and without Linux since 1990.

As an independent consultant he supports several Swiss companies with the design of embedded and non-embedded object-oriented systems.

Since 1991, he has authored and taught seminars, tutorials and short presentations about C++, object-oriented technologies, software architecture, embedded design and distributed computing for major Swiss companies and at international conferences.

Chris Withers

Chris Withers has been one of the UK's leading Zope consultants over the last few years. Until September 2003 he worked for New Information Paradigms, before founding his own consultancy Simplistix. Chris is an active contributor to the Zope community and an authority on Unit Testing and Extreme Programming.

Russel Winder

I used to be a Theoretical Physicist but after getting my PhD in 1980, I recovered. My path into the real world was by becoming a UNIX systems programmer and I have been fascinated by operating systems ever since which I guess could be classified as an illness. However, academia, in the form of UCL Computer Science Department, pulled me back in, mostly so I could research into programming and programming languages with emphasis on object orientation, concurrency, parallelism and human factors. I spent some fun time teaching programming and software engineering, researching and climbing the academic ladder.

I seemed to be headed towards a cushy life until retirement when an old friend approached me and said "Oi, you, why don't you take this really serious challenge" which led me leaving academia, becoming Chief Technology Officer at OneEighty Software Ltd and bringing the ORIGIN technology into the world. Unfortunately, one of the funders of the company got cold feet (or got nobbled by our competitors) and pulled the financial plug so the company went into liquidation.

I am now an independent consultant and technical author. Wiley's seem to have confidence in me as an author as they have published:

  • Developing C++ Software (two editions, 1991 & 1993)
  • Developing Java Software (with Graham Roberts: two editions, 1998 & 2000)

and will soon publish:

  • Developing Java Software, third edition (with Graham Roberts, 2006)
  • Developing Java Software Part 2 (with Graham Roberts, 2006)

I am also writing books for Thompson Learning and O'Reilly.

Simon Willison

Simon Willison is one of Django's principal developers.

Thomas Witt

Being a mechanical engineer by training Thomas Witt has spent most of his professional work life designing and writing software for the railway industry. In 2004 he joint Zephyr Associates, Inc. as a senior software engineer where he is writing investment management software using C++.

Thomas has been a regular attendee at C++ standards committee meetings since 2002 and is currently representing Zephyr Associates. He is an active member of the Boost community and coauthor of the Boost Iterator Library.