ACCU 2004 Sessions

Saturday, 17 April

09:00

Practical Excellence: A Perspective on Software Quality

  • Track: Process
  • Presenter(s): Chuck Allison
  • Description:

    We hear alarming news about the poor state of software quality. Money is lost, critical systems fail even lives are lost. Yet the tools and processes of our craft are better than ever. Does this compute? In this keynote address, author, educator, and veteran developer Chuck Allison scrutinizes the diverse forces that mold software quality and uncovers key principles and practices that lead to it.

10:30

Java Generics

  • Track: Java
  • Presenter(s): Angelika Langer
  • Description:

    The addition of generic types and methods to the Java programming language has been explored since the first release of Java. Eventually, with the 1.5 release of J2SE, support for Java generics will be incorporated in the language.

    A common misconception regarding generics is its comparison to C++ templates. Many people believe that Java generics are similar to C++ templates, while in fact both features have barely anything in common: C++ templates is a Turing complete language - Java generics is syntactic sugar that elides some casting. Java generics are a pure compile-time feature that is translated to non-generic Java bytecode, for reasons of compatibility with previous versions of Java.

    In this tutorial, we will take a look into the proposed language feature, how it will help us improve our programs, how it is supposed to be used and where its limitations are. More specifically, we will discuss the additions made to the language itself (parameterized types and methods as well as covariant return types), changes to the platform libraries (generic collections and extended reflection) and various exciting details of generics such as the properties of type parameters (their bounds and their scope), generic methods and type parameters inference, and the translation of generics into bytecode.

    This is an intermediate session, aimed at Java developers who want to deep their command of the language up-to-date. It requires a basic knowledge of Java.

Towards EJB 3.0

  • Track: Java
  • Presenter(s): Scott Crawford
  • Description:

    Enterprise JavaBeans have had a huge impact on enterprise software development and yet everyone has a favourite complaint about them. Here's your chance to feed back changes into how they work. Through a structured process, you will work alongside other participants to determine which problems are the most widespread and what should be done about them. This will be fed back the EJB 3 expert group, which will be drafting the new version of the specification at the time of ACCU.

Writing Exception Safe Code

  • Track: C/C++/C#
  • Presenter(s): Andrei Alexandrescu
  • Description:

    This talk presents the subtle issues associated with writing correct code in the presence of exceptions. Writing exception-safe code is a must for preserving the sanity of any application. This task is daunting because exceptions introduce hidden control flows and require a modified way of thinking. Several approaches to exception safety are discussed on a concrete example, with their advantages and drawbacks. In the end an useful helper class template ScopeGuard is introduced, that enables you to write exception-safe code that's terse, easy to understand, and easy to maintain. "I presented this to someone who hadn't worked with exceptions, and in the end he said: 'Cool. Exceptions are not hard, supporting them is trivial. Do they all do it this way?' He was surprised to hear that most programmers do it the hard way and that ScopeGuard is cutting-edge."

Berkeley DB-XML

  • Track: Python
  • Presenter(s): John Merrells
  • Description:

    This talk will introduce Sleepycat Berkeley DB XML, an application-specific native XML data manager built on Berkeley DB, the world's most widely deployed data management engine. Berkeley DB XML provides fast, reliable, scalable and cost-effective storage and retrieval for native XML data and semi-structured data.

How to write a book

  • Track: Python
  • Presenter(s): Anna Ravenscroft
  • Description:

    Writing a book is a formative experience for many people, and something many programmers aspire to. We are fortunate enough to have no less than four Python book authorsor co-authors speaking here this year. This panel session will discuss the writing experience, with tips on how to go about it and how not to, lessons learned, and doubtless public vows of "never again".

11:15

OOP in Python after 2.2

  • Track: Python
  • Presenter(s): Michael Hudson
  • Description:

    Python 2.2 introduced "new-style classes", at first sight little changed from what became "old-style classes", but which in fact enable a significantly different style of programming. The talk will introduce new-style classes, descriptors and touch on the uses of metaclasses.

Python - to be confirmed

  • Track: Python
  • Presenter(s):
  • Description:

    To be confirmed

13:00

ACCU AGM

  • Presenter(s):

14:00

Heretical Java 1

  • Track: Java
  • Presenter(s): Alan Griffiths
  • Description:

    Java has taken the software industry by storm because it provided practical answers to the problems that developers were facing. Because it has proved so useful to so many there is a significant "orthodox" opinion that it is the right answer regardless of the problem. Twenty years ago Brookes wrote, "There is no such thing as a silver bullet" in software development and the same is true today. In accepting Java one is accepting not just the benefits, but also the problems that it brings with it. The first step to dealing with a problem is to acknowledge that it exists - but orthodox opinion refuses to consider any discussion that posits a problem resulting from the use of Java. These sessions examine both the problems that Java sets the developer and the solutions to these problems. Although related the sessions are independent to the extent that neither is a pre-requisite for the other.

How to Bluff Your Way with CORBA and Java

  • Track: Java
  • Presenter(s): Neil Martin
  • Description:

    CORBA is an integral part of the J2SE but is often ignored by developers, When and how is it appropriate to fire up the CORBA libraries. We look at at the basics of using CORBA including a whistle stop tour of IDL, IIOP skeletons and bodies, no my mistake stubs and skeletons. The bodies are from Friday the 13th. We look at how simple it is to create simple networkp chat applications in the style of IRC etc..

Interviewing Skills: a panel

  • Track: Process
  • Presenter(s): John Crickett, Allan Kelly, Carolyn Morris, Russel Winder
  • Description:

    A panel discussion, chaired by Allan Kelly

    Most advice on interview skills tends to be aimed at the interviewee. But for the interviewer, the process can be equally daunting. Identifying and assessing candidates' skills is not an easy task, and one which technical staff often struggle with. The objective of this panel is to explore ways in which interviewers can make interviews work effectively for their organisation and candidates.

How to design a game

  • Track: Python
  • Presenter(s): Alan Lenton
  • Description:

    Most programmers have either tried writing a game, or have told themselves that they could write a much better game than the one they are currently playing. Those that have tried have found, however, that it's not as easy as it looks. The skills needed to write code are very different from those needed to design a game that grips other people, and the skills to design multi-player games are different again. The session will look at some of the things you need to know to write games, particularly multi-player games, and some of the pitfalls to avoid.

Jython - how it works and where it's going

  • Track: Python
  • Presenter(s): Samuele Pedroni
  • Description:

    Jython is an implemention of Python written in Java, and it enables seamless two-way communication between Java and Python code. This has allowed Jython to become the scripting language of choice for Java applications. This talk will provide a rapid introduction, showing how to add scripting capabilities to Java applications, and thus how to use quick-to-write Python scripts to automate and test substantial Java frameworks efficiently.

14:45

Implementing Python.NET

  • Track: Python
  • Presenter(s): Duncan Booth
  • Description:

    Python may at long last be moving towards a .NET implementation. After an early proof-of-concept by ActiveState employees 3 years ago, development of a Python which runs on the Common Language Runtime is proceeding on at least two fronts. Duncan will show excerpts from a trial implementation, discuss work in progress, and look at the challenges and prospects for Python.NET

16:00

Heretical Java 2

  • Track: Java
  • Presenter(s): Alan Griffiths
  • Description:

    Java has taken the software industry by storm because it provided practical answers to the problems that developers were facing. Because it has proved so useful to so many there is a significant "orthodox" opinion that it is the right answer regardless of the problem. Twenty years ago Brookes wrote, "There is no such thing as a silver bullet" in software development and the same is true today. In accepting Java one is accepting not just the benefits, but also the problems that it brings with it. The first step to dealing with a problem is to acknowledge that it exists - but orthodox opinion refuses to consider any discussion that posits a problem resulting from the use of Java. These sessions examine both the problems that Java sets the developer and the solutions to these problems. Although related the sessions are independent to the extent that neither is a pre-requisite for the other.

C++ Templates In Depth

  • Track: C/C++/C#
  • Presenter(s): Chuck Allison
  • Description:

    More than any other single feature, it is the template facility that distinguishes Modern C++ from other programming languages, including pre-standard versions of C++ itself. Templates are the key to effective generic programming, and the standard C++ library is almost 100% templates. This tutorial takes you beyond C containers to an in-depth understanding of template specialization and instantiation, the varied nature of template parameters, the role of member templates, when to use the typename and template keyword to resolve ambiguities, name lookup gotchas and template programming idioms and compilation models. The examples are derived from Thinking in C++, Volume 2: Practical Programming, by Eckel and Allison (Prentice-Hall, 2004).

All Heap No Leaks

  • Track: C/C++/C#
  • Presenter(s): Paul Grenyer, Phil Nash
  • Description:

    The use of new and delete in C++ causes many old and new programmers problems. Using new without a corresponding delete results in a memory leak. Some languages such as C# and Java provide Managed Objects that the user can create on the managed heap and then leave deletion to the garbage collector. Similar behaviour can be obtained when creating objects in C++ by using smart pointers. However, the user still has to know that they should be using smart points and many don't. We will be discussing ways of writing your classes in such a way as to prevent them from being created on the stack (as described by Scott Meyers in More Effective C++), controlling how and when they are destroyed and forcing them to be managed by smart pointers when necessary. If you are lucky we might even give you an idea of when these techniques might be useful!

Lightning Talks

  • Track: Python
  • Presenter(s):





Your Privacy

By clicking "Accept Non-Essential Cookies" you agree ACCU can store non-essential cookies on your device and disclose information in accordance with our Privacy Policy and Cookie Policy.

Current Setting: Non-Essential Cookies REJECTED


By clicking "Include Third Party Content" you agree ACCU can forward your IP address to third-party sites (such as YouTube) to enhance the information presented on this site, and that third-party sites may store cookies on your device.

Current Setting: Third Party Content EXCLUDED



Settings can be changed at any time from the Cookie Policy page.