Saturday, 23 April
09:30
Five Considerations
- Room: Ballroom
- Track: Process
- Presenter(s): Kevlin Henney, UK
- Description:
Programmers have a lot to keep in mind as they negotiate the worlds inside and outside of their code and the relationship between them. For those interested in improving the state of their art there are many (many) sources of specific recommendations they can use to sharpen their practice. This talk takes a step back from the busy, overpopulated and often overwhelming world of such recommendations to see if there are more general considerations that apply usefully to software development as a whole, informing rather than regimenting design practice by drawing attention to certain qualities in code, software and the activities around them.
10:30
Break
11:00
SchoolBell - a Sexy Zope 3 Calendar Server
- Room: Room E
- Track: Python
- Presenter(s): Marius Gedminas, Software Engineer, Lithuania, Tom Hoffman
Software Engineering In The Metaprogramming Age
- Room: Room C
- Track: C++/C/C#
- Audience Level: Medium
- Presenter(s): Thomas Witt, Senior Software Engineer, USA
- Description:
A look at C++ templates from the software engineering point of view. This talk will not give a detailed introduction in all the technical details of C++ templates but look at the way the practicing programmer can benefit from C++ templates today.
Topics covered will be:
- Compiletime vs. runtime polymorphism.
- Interfaces in compiletime and runtime polymorphism.
- When to use compiletime polymorphism.
- Advantages and drawbacks of compiletime polymorphism.
- Compiletime polymorphism and code maintenance.
- Things to come (aka. C++0X).
What Are Tiger Annotations For?
- Room: Room B
- Track: Java
- Presenter(s): Benedict Heal, UK
- Description:
Java release 5.0 (Tiger) extends the language by allowing user-defined annotations to be added to any declaration. These may be examined by pre-compilation tools, by the loader, or at runtime.
The documentation for annotations emphasises their use in generating code, such as boiler-plate EJB code. However, the ability to add arbitrary data to a declaration, and then interpret that at runtime with user code opens the door to much more radical uses. In effect, we can now extend the Java language with our own declarations, and specify our own semantics by writing code to give them meaning.
This is a very new area of Java. Come and learn what is possible, and share your ideas on how this powerful feature might be used. We are all language designers now!
Notes on the Craft of Software Architecture
- Room: Room A
- Track: Process
- Audience Level: Medium
- Presenter(s): Frank Buschmann, Senior Principal Engineer, Germany
- Description:
Quality software systems require quality software architectures. Otherwise it is hard, if not impossible, to meet their functional and non-functional requirements or to master their inherent complexity. For instance, software architectures for systems with end-to-end quality of service demands, systems with stringent security requirements, or systems that are supposed to be in operation for 20 years and more cannot be created on the fly. Instead these architectures must be crafted with care, following a defined specification process and being based on thoughtful design decisions.
This talk therefore explores some of the timeless secrets of building high-quality software architectures, with a specific focus on important architectural goals, the forces and factors that influence the design decisions for each goal, the methods and technologies that help to achieve each goal, and on general quality attributes of successful architectures. To complete the picture, we briefly outline the role and responsibilities of a software architect as well as the process principles that support to create high-quality software architectures.
In at the Deep End with XSLT
- Room: Room D
- Track: Process
- Presenter(s): Lois Goldthwaite
- Description:
Hard-working computer mercenaries occasionally find themselves accepting contracts demanding skills in which they have not yet become expert. In such a circumstance it is important to zero in quickly on the subset of knowledge which will enable one to produce professional-quality work from the outset, while absorbing further relevant material as work progresses. We are not talking about a "cheat's guide" to throwing around a few buzzwords, but a targeted focus on the most important aspects of using Extensible Stylesheet Language Transformations for practical applications. It includes a number of tips which can be summarised as "things I learned the hard way after wasting a lot of time".
11:45
Python Deployment Challenges
- Room: Room E
- Track: Python
- Presenter(s): Andy Robinson, CEO/Chief Architect, ReportLab Europe Ltd.
- Description:
Python provides a number of basic tools for installing and compiling simple libraries and executables. However, the reliable deployment of enterprise applications is a much harder problem - not just for Python but for the world.
ReportLab has to maintain and deploy mixtures of open-source and commercial code, for multiple Python version, multiple target operating systems, and multiple contexts ranging from canned desktop demos to multiple server clusters, with a tiny team. Equally importantly, we ship up to a hundred releases of applications per year to corporate clients, which then go through multiple stages of promotion and deployment. This has made us acutely aware of the challenges in deploying applications. It is an area in which Java has a clear lead, with widely understood standards such as Ant and WAR files. Nevertheless, there has been progress within the Python world, with Zip file deployment in 2.3 and the steady improvements in py2exe and others.
This talk will discuss the pains and the problems, look at some of the tools, and make some suggestions on how to manage this critical area.
12:30
Lunch
13:00
ACCU AGM
- Room: Ballroom
- Presenter(s):
14:30
Grappling with C++
- Room: Room A
- Track: C++/C/C#
- Presenter(s): Alan Griffiths
- Description:
In "Surviving OO Projects" Alastair Cockburn singles out using C++ as a specific risk factor. And while I enjoy using C++ I have to agree with this assessment: using C++ is a risk that has to be managed.
Significantly, in addition to risks, C++ can also offer a project benefits that justify its use. And, for those involved in such projects, it is important to adopt an approach that recognises the potential for problems that this implies.
This talk assesses the problems that C++ presents and examines an assortment of some of the good (and bad) solutions that have been employed.
Threads Considered Harmful
- Room: Room D
- Track: C++/C/C#
- Presenter(s): Detlef Vollmann, Switzerland
- Description:
Why multiple threads are almost always a bad choice if alternatives are available
Threads are an interesting technical mechanism for concurrent programming. But in most cases where multiple threads are applied, it's like using a sledge hammer for putting a pin in a pni board: the collateral damage is much worse than the gain.
This talk should make you think twice before using multi-threading.
This presentation reserves a considerable amount of time for open discussion to give attendants the opportunity to discuss their own experience and convictions in this domain.
Plenty People Programming Java 5.0
- Room: Room B
- Track: Java
- Presenter(s): Tony Barrett-Powell, Senior Software Engineer, UK
- Description:
A session where the audience write small programs using the new Java 5.0 language features (and I provide the laptop and do the typing).
The aim of the session is to increase the understanding of the new langauge features through exploration. The programs written will therefore be based on suggestions from the audience, unless none are forthcoming, in which case I will provide some examples to explore.
This session is based on one run by Nicolai Josuttis at the 2003 conference: "Plenty People Programming: C++ Programming in a Group"
Coding For Long Term Maintainance
- Room: Room C
- Track: Process
- Audience Level: Medium
- Presenter(s): Alan Lenton, UK
- Description:
Two statements heard all too often:
"Programming is write only"
"This program was supposed to have been been replaced xxx years ago. Unfortunately, it's still in use and we dare not change it because no one understands how it works." (substitute a number between 7 and 25 for 'xxx')
It doesn't have to be that way.
It's true that most programmers can't remember the code they wrote ten days ago, let alone ten months ago or ten years ago. I know I fall into that category! However, there are things you can do to make it possible for a competent programmer programmer to figure out what is going on without too much effort. It's also true that a lot of programs are still around years after their sell by date, and are difficult, if not impossible to maintain.
The irony is that most of the things you need to do are either common sense or good programming practice anyway. I've been maintaining a number of my own programs (each between 80,000 and 120,000 lines of code) for lengths of time varying between five and twenty years. In this talk I will be sharing some of the things I've discovered about making things easy for maintenance.
PyPy and type inference
- Room: Room E
- Track: Python
- Audience Level: Hard
- Presenter(s): Armin Rigo, Research assistant, Switzerland
- Description:
A technical status report on PyPy, the Python interpreter implemented in Python; or "how to turn an interpreter into a compiler".
The talk will be followed by a tutorial part on how to use PyPy's tools to check and compile your own programs.
16:00
Break
16:15
It's all Geek to me!
- Room: Ballroom
- Presenter(s): Kevlin Henney, UK
- Description:
It was bound to happen sooner or later: the ACCU conference quiz! What better way to end the conference than to watch others struggling with questions that challenge their geekhood? Alternatively, what better way to end the conference than the opportunity to win prizes and the admiration (or admonition) of your peers?
You will have the chance to register as a contestant for this once-in-an-object's-lifetime quiz during the conference. The draw for contestants will be completely fair, as will the algorithm used by the quiz master for distributing points to contestants as they answer questions on anything from Knuth to Kenobi and Middle Earth to C!