Digging for Design Patterns: an archaelogical approach to understanding software systems
|Time:||15:45 - 16:30|
|Day:||Thursday 21 January 2010|
|Location:||Ilott Theatre (Town Hall)|
Programmers can be quite ingenious at finding clever solutions to awkward problems. These solutions are usually documented only by being the basis for implementing some specific piece of code. Even when that code is available as open or free software, it can be hard to other programmers to benefit from the full ingenuity of the solution.
One way to help release that ingenuity is through the process of identifying and documenting Design Patterns. These Patterns identify a particular class of problem and describe one or more solutions that have proved successful -- or, conversely, unsuccessful -- in past experience.
Any large body of code is likely to implicitly contain a number of patterns relevant to the particular problem space. Like treasure in an archaeological dig, they are just waiting to be discovered.
This talk follows on from the June 2009 lwn.net series on the same topic and explores the process of identifying Design Patterns and shows how they can be used to understand and improve the code.
While the ideas can apply to any large body of code, examples used will be from the Linux Kernel.
Not being the adventurous type, Neil's first real job was at the
University he graduated from (UNSW) maintaining the UNIX computers
(Level-7 from Bell Labs) he had been taught on, from the kernel up.
The decade of the 90's required a bit of experimentation as purchasing
decisions forced him to work with various proprietary Unicies, making
kernel hacking less of an option. Mail systems, software
installation, user-account management and related enterprises had to
keep him entertained until the turn of the millennium brought him into
contact with Linux and kernel-hacking could begin again.
Since then, Neil has been maintaining the NFS server and md/RAID in
Linux - because no-one else was there to do it. This has lead to the
exploration of much of the filesystem, memory management, and block
device code in the kernel while fixing bugs and implementing or
reviewing new features.
When not on his computer (which his wife says isn't often enough)
Neil enjoys his family, cycling, and serving his Lord.