Melbourne Meetings
December-
Refactoring - John McDonald
John demonstrated the use of the refactoring support facilities
in Delphi, particularly rename and extract method, and compared
them with similar support offered by third party tools ModelMaker,
Code Explorer and Castalia.

November-
Playtime with Firemonkey - Rober Connell
and Richard King
This meeting was billed as an opportunity to "allow anyone
who has done anything with Firemonkey to share their experience..".In
the event it was a two part presentation by Roger and Richard respectively.
Roger focussed on the issue of converting vcl forms to Firemonkey,
while Richard gave a fascainating rundown on his exploration of
3D, which culminated in a windfarm with turning blades. You can
read more about this in Richard's blog post on the ADUG blog site
here.

October-
Coding Challenge
We were inspired by an event organized by the Python User Group
called 'Code
Wars'. The idea was to have the meeting break up into small
teams, in most cases two, each with a lap top, and for all teams
to tackle a sequence of basic problems. On majority completion,
compare results, discuss, and move on to the next problem. Problems
were kindly generated by Glenn Crouch, and presented for the first
time at the meeting. Interesting and fun.

September-
AGM
Reports were received, a rule change in recognition of the demise
of cheques and the rise of electronic banking was passed, and a
new committee was approved (Since the number of nominations for
committee and ordinary committee member positions equalled the number
of positions, all were 'elected''. For details see the minutes,
wherever they might be.
Cycling Metrics Software - Phil Sheppard
In addition to being the MD of Creqtive Analytices Phil is a cycling
enthusiast, read amateur racer, and he takes a scientific approach
to monitoring and managing his training. This involves a power meter,
various sensors and a computer on his bike, and uploading from the
bike computer to his desktop for analysis. Phil demonstrated software
he's created to help him with the task of recording and assessing
progress and performance.

August-
Bulding Design Software- Mike Connell,
Pryda
Pryda manufactures timber trusses and the various components thereof..
Mike demonstrated the software they give away to their clients.
This was the most impressive software demonstration I've ever seen.
It designs the roof and floor trusses for multi floor buildings,
showing a complete 3D view and everything down fromthere, including
hardware requirements and material cutting requirements. It was
fast, elegant, robust and apparently complete. Mike is an engineer
who has presided over the evolution of this software over 30 years,
starting with some basic calculations. Much of the work is still
done by Fortran routines, with current GUI requirements done using
Visual Studio. Database is Access, with Firebird due to replace
it.

July-
Under the hood, Part 2 - Tony Bryer
Tony adds to his presentation of last January with more detail
on his newest application, Eurobeam, discussing some of the third
party tools used, eg from TMS, eDoc PDF generation and MadExcept.
Pascal Analyser: Tony demonstrated the use of this tool from Peganza

.
June-
RTTI Past and Present - Lachlan Gemmell
Lachlan gave a clear and methodical presentation of RTTI, comparing
the syntactically obtuse older version with the new and improved
model introduced with D2010.

May-
Smart Comboboxes etc- Don Macrae, Roger
Connell
Don demonstrated and code reviewed a module which took a dataset
with names as an argument and used a listbox and an edit on a frame
to allow selection by typing (auto completion) or clicking.
Roger's code was more involved but the details escape me. I must
talk to him about that. Watch this space!

April-
Reading data from Delphi code using C#
- Brian Watson
Brian took us through the process of implementing a Collection
in a COM server. This allows us to expose the data contained in
something such as an object list to the outside world. He then demonstrated
how to access the this data from C#, and touched on the contortions
involved in implementing an event in a Delphi COM server

March-
Delphi Demos - JSON Viewer - Peter Postmus
Peter gave us a very clear description of JSON - 'the fat-free
alternative to XML', and to the way it is supported in Delphi, since
D2010 and XE, and demonstrated the JSON viewer, included in the
Codegear demos folder in the DataSnap directory. Peter's presentation
may be downloaded

from here.
February-
Delphi Demos: Inter Process Communication
- Don Macrae
Don's previous presentation on this topic, in November, reviewed
the demo 'IPCDemo', as distributed by Borland. IPCDemo implemented
an approach they called 'shared memory', based on Windows File Mapping
objects. This time, Don demonstrated how the same demo could be
implemented using what he suggests is the more straightforward approach,
using Windows Pipes. Demo project page is here.
Using the Google Translate API from Delphi - Richard King
Richard demonstrated the use of this API from Delphi, making JSON
requests and processing responses.

January-
Under the Hood- Tony Bryer
Greentram Software, Tony's business, derives its revenue from an
application which allows engineers to establish the correct size
of steel beam for a span and load. Tony told us the story of this
business, from 1979 when, as a London Council building inspector,
he took out a loan to buy a Commodore PET, through to today, based
in Melbourne, with the program running on Delphi XE and still selling.

December-
Delphi in an Emergency - Gary Ayton
Gary is an emergency medicine doctor at a group of Melbourne hospitals
- Sunshine, Footscray and williamstown - and self taught Delphi
programmer. He has written, commissioned and supports a full featured
patient management system. The system replaces a commercial vendor
supplied system, and is preferred by users because it better addresses
current needs. Features include
RFID logon, LAN paging and patient photographs to avoid misidentification.
May be ready for commercialization. Related informatiion is on Gary's
blog - which could be inspiring for professional programmers.
Sidenote: Gary has created a knowledge
base for doctors..

November-
Windows Cipboard Functions- Brian Watson
Brian took us through how he added clipboard functionality nvolving
vector graphics to an application, and walked us through the code
in a demonstration project..
Delphi Demos - Don Macrae
In the process of reviewing IPCDemo, a project included with D7
but no (yet) up on SourceForge, Don presented his findings as summarized
in a word document, and led a discussion on the format of a review.
This project, the word document and the latest on this exercise
are here..

October-
Windows Clusters - Grahame Grieve
A Windows cluster is a group of several windows server computers,
with one only being active at a time, but being presented to the
client network with one virtual identity. The point of it is failover
- if the active one fails the cluster facilitiates the transfer
of load to another computer in the cluster, iwith clients continuing
to see service from the same virtual box. Grahame has implemented
this feature using Windows Server 2008. His presentation and sample
code are here. Arcane,
but right on the money if you are in the market for high availability,
especially in an unattended facility.
Delphi Demos - Richard King on behalf of the local committee.
Richard launched our new project. Embarcadero has put all of the
Demo projects from all versions of Delphi up on Source Forge. Our
project will involve interested members selecting a demo to explore,
with a view to learning the topic and optionally improving the code.

September-
The meeting kicked off with the AGM, conducted as usual
with dispatch. There being exactly the right number of nomination
for both office bearers and ordinary committee members, and all
nominations having been received in good time, all nominees were
declared elected. Mathias was welcomed as the new president.
The Use of Delphi by a German Bank - Mathias Burbach
Mathias commenced working for this bank as a student, and continued
to work full time subsequently. After moving to Australia the Mathias
continued to travel to Germany regularly to undertake further work.
This bank is a boutique bank servicing high net worth individuals
with investment advice and portfolio management. It has been in
existence for over 300 years (!). It uses Delphi exclusively to
support its customers and its distributed network of staff consultants.
A dream client!

August-
VirtualBox and Amazon EC2 - Peter Postmus
Peter has been using Oracle (nee Sun!) VirtualBox at Creative Analytics.
He gave us an outline of the product and its features, followed
by a demo in which he created a virtual machine. Interesting to
note that unlike VMWare the full power of this product is available
as a binary at no charge, and a lesser version of the source is
in fact open source
In part 2, peter talked us through how a Creative Analytics client
issue (involving a date bug with Windows 7) was resolved by the
use of cloud computing, in the form of Amazon's EC2. A nice little
case study.
Presentation bullets are here.

July-
Apollo 11 - Richard King
Grahame Grieve was unfortunately unable to present on the planned
topic this evening, but fortunately for us Richard had a long established
interest in the moon landing, including of course in the computer
control aspects. But he did have a plastic model of the rocket!
It was fascinating to focus on the hardware and software elements,
and contemplate the responsibility of programmers developing fixes
in very real time for problems being experienced by in-flight astronauts!

June-
Code Healer - Jim Duff
Jim demonstrated this product, which reports on issues with your
source code - many of which are actually also reported by the IDE,
but nevertheless there were some potentially useful extras.
Subversion Document Management System - Brian Watson
At the request of a client Brian has extended an electronic parts
development tracking system to use subversion as repository for
successive revisions of all documents and bills of assembly. He
uses a module which employs Windows pipes to control the subversion
client via its command line.

May-
Real World DUnit Testing - Jarrod Hollingworth, Luke Carter-Key
and Paul Spain
A substantial presentation by Jarrod and some of the Nemmco team
on the actual and extensive use of DUnit at a significant corporate
site. Jarrod introduced DUnit and described its use in some detail.
He also addressed the issue of GUI testing with DUnit, introducing
his own coming contribution of a recording facility to DUnit 2!
Luke explained how AQTime was used to evaluate test coverage, and
Paul presented some interesting history and context

Apr-
GUI Testing Demo - Phil Sheppard and Richard King (Creative
Analytics)
Following Richards earlier demonstration of Test Complete, Phil
and Richard shared more of the test environment in use at Creative
Analytics, which includes not only Test Complete but also a system
of their own which predates but is now used in conjunction with
Test Complete called Test Assistant. It compared results produced
by their main target application with a comprehensive set of test
data contained in Excel spreadsheets.
Put Recording in Your Application - John McDonald
John showed us how his real world application implements recording
and undo/redo. The aplication is a warehouse floor system which
guides the user in filling packs with parts. The architecture involved
using the command pattern to implement user requests and the memento
pattern to remember them. This facilitates undo/redo, and also allows
recording to XML. With recording switched on the xml logs become
an accurate source of exactly what the user was doing when the problem
event occurred!
John also demonstrated an earlier generation of the same functionality,
using a demo system he'd written especially for the presentation.
This one used a class behind the gui through which all user requests
were funnelled. This class maintains a list of user actions used
to support both undo/redo and logging.

March-
How we do GUI Testing at Creative Analytics - Phil Sheppard
and Richard King
Test Complete is an automated testing tool from AutomatedQA which
allows tests of Windows apps to be created and run. It is being
used successfully at Creative Analytics for 'black box' testing.
Some notes of the presentation are here.

February-
Developing Applications with the CSI Framework - Misha Charrett
All ADUG members are aware of Misha's framework, so it was good
to have Misha make the trip to Melbourne to put us more comprehensively
in the picture. Even if the majority of us won't be developing the
sort of multi-tiered, multi threaded, distributed apps that the
framework supports, Misha has made the code including a wide range
of utilities available for plunder. The framework and the associated
doco is clearly a major work, and we thank Misha for sharing it.
The framework and its related doco is on the ADUG site from its
own
page.

January-
ADUG, Web And OO - Roger Connell
Roger's presentation was dual purpose: it shared the work Roger
and Andrea have been doing in redeveloping the ADUG systems, and
it contributed to our ongoing 'OO v RAD' discussion.
The new system involves a Web interface for members and a client
server application for office bearers. The system is working, and
in fact prior to the meeting we were asked to use it by registering
intention to attend this very meeting. Worked well, though John
MacDonald helpfully identified a bug involving two MacDonalds!
Roger also asked for volunteers to assist with ongoing development
and support. This request is ongoing also.
There's a reference to the ADUG system on Roger's
site, and his power point slides are here.

December-
Basic Database Architecture - Jim Duff
The latest instalment. Following Don Macrae's presentation in
October, Jim presented the case for RAD. His presentation is in
a chm file which you can download from here.
Rapid AJAX Development - with the Ext JS library - Glenn
Lawrence
Ext JS is a Javascript library which simplifies AJAX interaction,
provides a powerful abstraction of the DOM, sophisticated layout
managers and lots of UI widgets. Glenn demonstrated it's use in
the form of a Web front end to the Cumulus asset management system.
His very clear explanation is here.

November-
Controlling a Milk Pasteurizer - David Rosenbaum
David's requirement was to control a milk pasteurizer from a pc.
This involved controlling some valves and logging and charting system
state.The starting point was a project from the magazine Elektor
Nov 2007 called USB Data Aquisition Card. The card has 8 digital
inputs, 8 digital outputs, 8 analog inputs and 2 analog outputs.
It is based on Microchip PIC18F4550 which has been pre programmed
to allow commands to read from or write to the chip from a pc via
the usb port. Problems with the C++ code that came with the project,
including the use of Spanish terminology, motivated David to rewrite
it in Delphi.
The presentation included a demonstration, which was particularly
appreciated since David was presenting on short notice.

October -
Basic Database Architecture - Don Macrae
Don attempted to categorize the pure OO approach to coding an
application in comparison to the Delphi/RAD approach using data
aware components. His notes, including a tabular comparison are
here. It
is hoped that the table will provide a reference for Jim Duff when
he does the corresponding analysis for Delphi/RAD.
Audio Handling in Windows - Alex Moss
Based on his experience and additional investigation for this presentation
Alex gave a comprehensive overview of handling audio signals using
Delphi. Topics covered included the PC sound system, pcm encoding
and the Wav file format, VCL and third party audio components, the
Delphi Multimedia unit (MMSystem), some audio applications and a
demonstration app in Delphi.
Alex's notes and code are in this
zip file. Notes are htm pages. Open Title.htm and move forward
from there.

September -
AGM
The reports were presented and approved, and the unopposed 'election'
was acknowledged. No other business. Roger has uploaded the minutes
(amazing!).
Basic Database Architecture - John McDonald
A different slant on our architecture issue. John had developed
a demo persistence framework in prism, meaning he was writing in
Pascal but on the .Net platform. Of particular note was his use
of reflection and attributes. Also made use of object aware controls
within Visual Studio. Kudos to John for putting in the effort to
develop an opf just for us! Instructive and interesting, and will
be the basis of further and ongoing reference as we continue our
architectural conversation.
John's code may be downloaded from here.
Note that to compile it you'll need prism, but you can look at the
code with 'your favourite text editor', as they say.

August -
Basic Database Architecture - Don Macrae
This was the first phase of an exercise to compare various approaches
to architecting an application involving pc desktop guis connecting
to a relational database. An open invitation was issued to code
a sample application according to a chosen architecture. The sample
app was a simple 'To do' list. Requirements and an introduction
to the exercise are here.
In this meeting two offerings were presented:
- Don Macrae presented a object-oriented, layered architecture
- Zipped code is here.
- Jim Duff presented a RAD offering - using data aware controls.
His zipped up code is here.
To be continued...

July -
Grep in Delphi -Richard King - Creative Analytics
Richard gave a short tutorial on how to
use the "Grep" facility provided with Delphi. Richard has provided
his brief notes - http://www.adug.org.au/meetings/melb/GrepNotes.txt
Evolution of an Automated Build System -Brian Watson - Desktop
EDA
Desktop EDA develops a number of small CAD "Add-in" applications
that interface with multiple versions of multiple CAD products.
As a result of making too many errors in creating application builds
when making product changes, Desktop EDA decided to automate its
product build process. After abandoning a couple of custom developed
solutions, Final Builder was implemented.
The presentation took us on Brian's journey through the custom
solutions and why they were rejected and showed how Final Builder
is being used for EDA applications.

June -
The Latest News from Embarcadero -Malcolm Groves
Malcolm has been involved in Delphi and ADUG forever and he is
always prepared to give it to us straight. In his joint marketing
and technical roles at Embarcadero he really is a man on the inside.
The main message members took from the meeting is that Delphi is
a main stream product within Embarcabero and now has access to much
more resources than in recent years. The future indeed looks a lot
brighter.
Malcolm was able to tell us about the cross-platform abilities
of native Delphi features present in the new Beta and demonstrate
the "Fish" database with touch/gesturing.
He was also able to give us an insight into the future in broad
terms. 64 bit is coming but still a way off and Indy will be considered
differently in future releases but it is essentially a third party
product and this restricts what can be done.

May-
Micro ISV - From Idea to Commercial Product -Jarrod Hollingworth
- Backslash
Have you ever developed a small tool because you couldn't find
an existing application that suited your needs? Do you have an idea
for an application that you think would be successful? Turning a
tool or idea into a commercial product can be rewarding and profitable.
You can do it alone, with little cost, if you're prepared to learn
a few new skills and master a few new tools.
Jarrod's presentation covered the entire life-cycle of a commercial
product from idea to sales and support, using Jarrod's latest product
idea, created from scratch, as a case study.
If you are thinking of or in the process of bringing a product
to market then here are a few of Jarrod's tips:
- Have a clear plan. List all of the main tasks that need to be
done (use the presentation materials as a guide).
- Set a realistic deadline. Estimate the time required, factor
in the number of hours you have available per week to focus on
the product and plan a completion date. Be conservative.
- Release early. Cut features for version 1 to deliver only those
that are core to the product. Then see what interest, feedback
and sales you get.
- Don't expect sales in the short term. It can take 6+ months
to start seeing steady sales. Market it without spending too much
up front with Google Adwords, BitsDuJour deal of the day site,
find some bloggers related to your app and ask if they'd like
to post about your product (offering them a free license to try
it out fully), and announce in relevant forums (provided such
announcements are acceptable).

April
Extreme Succession Planning Teaching Children to Program
-Peter Hinrichsen - Techinsite
Peter believes he has the tremendous privilege of being involved
in the selection of Computer Science graduates for hire. One of
his favorite interview questions is ‘Tell me about something you
built when you where a kid that you where especially proud of’.
Some candidates look at him as if he is mad. Others lean forward
in their chair and start telling him about how they remote-controlled
their sisters doll’s house using an old computer from their Dad’s
work. These are the people he likes to work with because they have
a passion for building and inventing that has its beginning in their
childhood.
This recruitment idea has been borrowed from Joel Spolsky’s paper
‘Finding Great Developers’ where he writes:
‘The good news about our field is that the really great programmers
often started programming when they were 10 years old. And while
everyone else their age was running around playing “soccer” (this
is a game that many kids who can’t program computers play that involves
kicking a spherical object called a “ball” with their feet (I know,
it sounds weird)), they were in their dad’s home office trying to
get the Linux kernel to compile.’
With Joel’s idea in the front of his mind (great programmers started
programming when they where 10) he approached his children’s primary
school with the idea of setting up an afterschool club where tech-savvy
children could learn to program computers.
They started with seed funding from the school’s Parents’ association,
two Lego robotics kits and four children. Two years later they have
15 children in the program.
Peter shared his experience setting up a robotics club and teaching
children to program. He enthusiastically covered three general topics:
- The benefits of teaching children to program;
- How to setup an afterschool club for tech savvy children at
your school;
- The Lego Mindstorms NXT hardware and software they are using,
as well as other resources.
Peter hopes more Engineers (And ADUG members?) will take up the
challenge. More information is available from
http://WWW.ClubEngineer.Org

March
Generics in Delphi 2009 -Richard King
Richard has moved to Delphi 2009 and had already given us some
significant "Heads Up". In this session he explained how Generics
work and the opportunities they provide. Richard's example source
is at
http://vikingcomputers.com.au/adug/Drawing.zip and
http://vikingcomputers.com.au/adug/IniFiles.zip

February
Indy and Unicode: Open source FAIL? - Grahame Grieve, Kestral
Computing
The introduction of Unicode into Delphi 2009 was a major challenge
for third party developers. Indy is such a product. It is also an
Open Source Development yet it is delivered shrink wrapped with
Delphi. Grahame was a major contributor to the Soap extensions to
Indy and remains connected to (part of) the Indy Pit Crew. Graham
gave us an insiders view on the issues presented to Indy by D2009
and how we can best contribute to resolving problems we discover.
Software Rules and Myths - Phil Sheppard
Good coding practice abounds with "rules" but when did these rules
originate and on what justification? Do they apply to the modern
development environment? In November 2008 and January 2009 we went
quickly though many of the "Rules" submitted by various members.
In February we finally completed the original list by reviewing
Phil Sheppard's contribution.
- Contain Rather Than Inherit
- Declare an Item Class and a List Class
- A Manager Class Contains all Top Level Lists.
- Separate DB Control from Business Classes

January - .
Software Rules and Myths - The Assembly
A continuation of the November 2008 discussion. A little less combative
with contributions from John MacDonald and Alex Moss

December
Embarcadero Technologies - Peter Joint
For many of us Borland has been the name synonymous with Turbo
Pascal, Delphi and great programming tools, but the world has changed.
While the products and personnel we are used to dealing with are
still there in CodeGear the corporate ownership now resides with
Embarcadero Technologies.
"First contact" has been made and the Embarcadero guys are friendly,
informative, and technical. They gave us some idea of where they
started, where they have been and why they see the CodeGear products
and Delphi in particular making a contribution to where they hope
to go. They did not try to sell us their non CodeGear product range
but there was considerable interest from many of our members who
clearly understood the potential opportunities in using them
Here are contact details, and we've been assured that feedback
is welcome. peter.joint@embarcadero.com
Please make the Embarcadero guys feel welcome in our community.

November
Software Rules an Historic Background - Jim Duff - UCars
Jim put general software rules in an historic context. Jim's ancient
but enlightening research can be obtained here.
It includes a plethora of references.
Software Rules and Myths - The Assembly
Good coding practice abounds with "rules" - One object per file,
Variable naming conventions, Close coupling is universally bad,
etc. But when did these rules originate and on what justification,
and do they apply to the modern development environment? Members
are asked for their contributions. The plan was to have a wide ranging
discussion around these facets. Phil, John, Don and Roger put together
some points for discussion
- Each class should be in its own unit.
- Only the main form should be auto created.
- The public interface should not contain data members.
- Avoid the use of initialization and finalization sections.
- No Globals.
- Avoid Back Pointers, that is the situation when a class has
a reference to its container.
- If an object needs a resource to function, pass it in on construction.
- No more than two local (nested) methods in a routine.
- Close coupling between objects is universally bad.
- Try to make classes that are black boxes.
- Use Assertions.
- Don’t fix problems you don't understand.
- Contain Rather Than Inherit.
- Declare an Item Class and a List Class.
- A Manager Class Contains all Top Level Lists.
- Separate DB Control from Business Classes.
For more details on these topics Click
here. By the close of business we had only considered Don's
submission. We plan to revisit the issue early in the New Year.

October-
Making Indexof Faster. - Roger Connell - Innova Solutions
Roger had an application which took 20 or 30 seconds to close in
some situations. The cause was a Tlist object that was accessed
using IndexOf in the database close process. Roger looked at the
Tlist code for the first time. It was a surprisingly simple matter
to add a better search/sort implementation to make Tlists perform
even better when loaded with a large number of objects.
Click here to get
a zip of the presentation and the full demo code
Using Delphi 2009. - Richard King - Creative Analytics
Richard had been upgrading a major project to 2009. He discussed
his experiences as an early adapter.

September Annual General Meeting
Application for Modeling Circuit Boards in a 3D CAD Environment
- Brian Watson - Desktop EDA
Desktop EDA develops "add-ins" for electronics CAD applications.
The presentation described the development of an application that
runs inside a circuit board design product called Altium (also developed
in Delphi). This "add-in" application launches another CAD application
and builds a 3D model of a circuit board opened in Altium. It also
has interactive bi-directional functionality.
Also topics such as using Delphi's COM tools and using object
lists to keep track of parts and shapes were discussed. Brian sought
opinions on his future development directions and how current obstacles
might be overcome.

August -
Software Archeology - Malcolm Groves - Code Gear
It was great to catch up with Malcolm again in Melbourne to do
his "Software Archeology" presentation deferred from the Symposium.
He was also able to give us a preview of Tiburon (Delphi 2009),
and more insights about the Embarcadero Technologies acquisition.
In this session Malcolm took us through a slightly different way
of using the features already available within Delphi (UML, Metrics,
etc.) to "crack" the structure, workings and potential problems
within a large code base which needs maintaining and/or extending
but which was developed by people who have moved on either physically
or mentally.

July -
Do String Grid Components have a Place in a "Good" Application
- Open Discussion
We had a spirited discussion of the merits and demerits of the
TStringGrid and its many descendants. Brian, Andrea and Graham demonstrated
their use of string grids and we looked at a couple of others based
on screen shots and developer's explanations.
While I think it is fair to say that the overwhelming majority
expressed their view that string grids are a useful way of presenting
data, Don was able to make some telling suggestions aimed towards
improving some of the applications whose owners were prepared to
stand up and be counted. I hope all who attended enjoyed a constructive
discussion and a bit of fun while looking at what is being done
in this area and debating views on the users perspective. Pity the
users were not there to state their case.
Regardless of any string grid views I think all were impressed
by aspects of the applications presented.

June -
Dev Express Grids- Phil Shepard
Phil reviewed Dev Express grids from a .Net and Visual Studio perspective
demonstrating the capabilies of the component and how he manages
the large number of properties it has.
SQL Generation Using Method Chaining- Richard King
Richard demonstrated generating SQL in an application offering
many user selectable queries and optional conditions which can be
applied to the selected queries. A technique known as "method chaining"
was used to write the code which is very readable (even if it is
not Queen's English), is easy to write, extend and maintain.
Richards Presenetation:: Notes
of the presentation as RTF

May-
A Deployment Case Study- Don Macrae and Richard King
An application with a user base of some thousands, the appearance
of different versions, and a requirement for silent compulsory updating.
Recently the updating was modified so that the users did not need
to be have administrator privileges. The techniques considered were
(1) Windows Installer technology, and (2) the use of a previously
installed service.
This presentation outlined the investigation and the solution,
and also covered other deployment aspects.
Tools used or explored: Installaware, Installshield, WIX, Orca,
InnoSetup, FinalBuilder.

April
C# Presentation- John McDonald
John gave an overview of some of the interesting features of C#,
and how it compares with Delphi. Points discussed:
- static classes, sets, enums (very briefly)
- generic classes and methods
- enumerators and iterators
- anonymous methods and closures.
Even those who do not plan to write in C# found the presentation
interesting because a lot of these features will be introduced to
Delphi. John's code samples can be downloaded at AdugCSharpDemo.zip

March
Networking Question and Answer- Roger Connell
A General open forum discussing Network questions

February
Blackfish SQL- Tim Jarvis
Tim has provided a number of ADUG presentations and again offered
an interesting technical and insider insight into CodeGear in general
and the Blackfish SQL offering in particular. As usual the presentation
included worked examples on how to best use Blackfish SQL.
Tim actually left CodeGear early in February to become the Software
Architect at Quest Software. This was his last CodeGear interaction
with Melbourne ADUG and we wish him luck in his new role. We hope
to still hear from Tim because Delphi development has a has significant
part at Quest.

January - .
Networking 101 Part Two - Roger Connell - Innova Solutions
The presentation was an attempt to give a very quick overview of
the key aspects involved in setting up and managing a small business
network using Windows computers. Roger provides PowerPoint notes
which hopefully record the key information required. Items discussed
are
- TCP/IP
- Private Address Space
- Small Office Network
- TCP/IP Tools
- Symbolic Name Translation
- Windows Resource Sharing
- Router/Firewall Settings
- Network Analysers
Time ran out in December so the second half of the discussion
continued in January
Powerpoint Notes:: Notes as Powerpoint
Presentation

December
Networking 101 Part One - Roger Connell - Innova Solutions
The presentation was an attempt to give a very quick overview of
the key aspects involved in setting up and managing a small business
network using Windows computers. Roger provides PowerPoint notes
which hopefully record the key information required.
Time ran out in December so the second half of the discussion
continued in January
Powerpoint Notes:: Notes
as Powerpoint Presentation

November
A TProcessObject Takes OO to a New Level - Bryan Dayton
For some time Bryan has been on a personal crusade to discover
how to write pure OO applications - this is complete applications
based exclusively on objects (using classes such TCustomer, TProduct,
TInvoice, etc).
Persistence framework went a long way towards this goal, but still
left gaps.
Bryan proposed using TProcessObject which ensure every aspect
of the application program is based on classes with properties and
methods. There are no globally visible processes outside the OO
hierarchy - in other words no Utils units.
An Introduction to Networking - Roger Connell - Innova Solutions
Roger took a few minutes to try and scope out a proposed discussion
on Networking for December when we will be sharing our group knowledge
on this very broad but essential topic.

October .
An Insight into Delphi at Code Gear- Nick Hodges - Code
Gear
The Code Gear Delphi Product Manager Nick Hodges dropped into
our Melbourne meeting. It gave everyone the opportunity to hear
all about Code Gear's plans for Delphi and to provide some direct
feedback on any concerns or issues.

September Annual General Meeting
Creating a Delphi Plug-in Framework- Tim Jarvis - Code Gear
Tim discussed ways of creating a plug-in framework in Delphi.Win32
and Delphi.NET, highlighting differences and similarities. A common
need in modern applications is to be able to add functionality without
re-deploying the entire application, in other words plugging in
new functionality. Delphi itself allows developers to “plug-in”
to the IDE. In this session we explored a commonly used pattern
to achieve this aim using Delphi.Win32. We also looked at the slightly
different mechanism for doing the same thing in Delphi.NET, the
non-deterministic nature of the .Net framework means that we need
to use a “pull” mechanism rather than a “push” one. Tim touched
on topics such as Factory Patterns, Interfaces, Class Methods, Attributes
and Reflection.

August -
The New Firebird Versions - Richard King
Richard had been trialing Firebird 2.0 and 2.1 beta . He told
us what was new and what worked.
Data Scrubbing - Roger Connell
Most of the data that needs to be loaded into a new database often
already exists but is contained in ad hoc spreadsheets and often
in less than ideal formats. Roger demonstrated and explained his
current approach to this problem and looked at some of the formats
encountered.

July -
PHP and "Delphi for PHP"- Alex Moss
Alex skimed over CodeGear's introduction to "Delphi for PHP" slides
from that presentation and then told us what he has discovered about
Delphi for PHP behind the scenes. Tim Jarvis from CodeGear also
came along and was able to provide some insight into the development
of this product.

June -
Code Generation- John McDonald
Why write code if you can get your computer to do it for you?
John gave us a look at a Delphi program that can generate source
code for DUnit tests and discussed advantages and disadvantages
of this technique. We also looked at a couple of tools that can
be used for code generation and discuss other areas where code generation
might be useful.
Code Generation won't write all of your programs, but it can help
write some bits of repetitive code and it can do it more consistently
and reliably than coding by hand.

May-
Here is the Problem. Lets look for a solution- Jim Eadie
Jim had some involvement in an old pardox application developed
for Windows 3.1. The time has finally come to look at bringing it
up to date. Jim has provided the original specification here.
Jim demonstated the application to the meetiing and discussed how
it worked. Jim had already come to the conclusion that new database
searche functionality made such complex mechanisms redundant and
he will use a standard database in the new application. It was still
interesting to be reminded of the hoops we used to have to jump
though.

April
BDS 2006 Pros and Cons-Richard King, Roger Connell and others
Many of our members have bought BDS 2006 but are still using Delphi
7 for their main line development. There is a definite learning
curve to BDS from Delphi 7 and the question is do the benefits justify
the pain. Richard and Roger had started to do some level of development
in BDS and shared their experience. Following the Delphi 2007 roll
out seems to have encouraged interest in the new format and much
experience was shared. Every one seemed to have a useful tip. More
tips available at http://dn.codegear.com/article/33805

March
A Beginner's Look at VMWare Workstation-Jim Duff
An industry pundit recently declared virtualisation to be the
big thing this decade.
Many Delphi developers use VMWare from VMWare Inc for a variety
of reasons, and many have heard of it from List Postings or had
occasional peeks during previous ADUG meeting presentations.
Jim will gave a demonstration of a Virtual Machine, plus cloning
and using multiple Virtual Machines and elicited additional information
from the other members in an informal discussion. The formal part
of Jim's presentation can be obtained
here
Keeping Your Application Current-Don Macrae
Don conducted a "peer review" of the code used to update his application
with the latest data and executables from an Internet Webservice.
Don explained how his code improved the user experience by doing
some download functions while the user is busy with other things.
The Webservice component was generated from the target site's
Web Service Definition Language using Delphi's WSDL Import Wizard.
If an update of the actual running executable was required, the
Webservice would be used to obtain a new install file. The application
then launches the install file and closes. The Inno Setup install
file does a blind install before re-launching the original application
with its new executable.
We're thinking of making the '20 Minute Code Review' a regular
or perhaps occasional feature of Melbourne meetings - so bear that
in mind.

February
Using C#, ASP.NET 2.0 and MySQL to create a data-driven website-Steve
Forbes
ASP.NET 2.0 provides a rich environment for creating web-based
applications that Delphi developers will readily relate to. Steve
provided a step by step tutorial for creating a simple web-site,
including how to use business objects to separate business logic
from the presentation layer, and discussed some of the techniques
and pitfalls newby ASP.NET developers need to be aware of.
Steve has provided the documentation and tutorial code at http://www.ozmosys.net.au/download/adug/adug_aspdotnet.zip

January
More on PDF -Jim Eadie
Jim started with PDF very early on when tools were limited but
he persevered and using WPPDF provided a series of wrappers to achieve
his reports. WPPDF comes as a DLL and provides the developer with
a TCanvas object which is the PDF page.
AJAX -Alex Moss
We'd all heard of Ajax on the Web but what is it and how does it
work? Alex researched it and explained that it is the use of the
HTTP Request Object now provided with browsers to enable Java Script
code functions to communicate with the server and transfer data.
This means that you no longer need to download a whole new page
to update your pages with live data.
Click here to get
the presentation or get the full demo code here

December
FogBugz -Don Macrae
FogBugz is a bug report management tool from Joel Spolsky. Don
has been using it and gave us a rundown on bug reporting, explaining
how FogBugz meets his requirements.
Solving a Problem -
The group looked at the predefined problem and those who had attempted
the problem explained their approach. The outstanding solution came
from John McDonald, our resident mathematician who likes to get
his head around these things. The problem and John's approach can
be viewed at http://www.adug.org.au/meetings/melb/FixtureProblem.htm

November
Third Party Grid Components - Phil Sheppard, Jim Duff, Jim
Eadie, Roger Connell
Four members shared their knowledge on some of the third party
grid components available for developers using Delphi. The products
reviewed were DevExpress Grid
- (http://www.devexpress.com/), SMDBGrid
- (http://www.scalabium.com/smdbgrid.htm), Woll2Woll
Grid - (http://www.woll2woll.com/) and TMS's
Advanced String Grid - (http://www.tmssoftware.com/).

October .
Creating PDFs - Graham Pitson and Richard King
Richard and Graham both output their Delphi reports in PDF. They
gave us some hints and told us the relative merits of the tools
they use. Graham started on PDFs first using "PDF Tool Kit" from
http://www.ActivePDF.com
while Richard started later and uses "Quick PDF". Graham was aware
of the merits of both products but persisted with the earlier "Active
PDF" product as it supports serialization.
With Quick PDF it seems the supplier only collects the money and
you need to rely on the very active Fan Club at http://www.QuickPdf.org
for support.
The meeting then degenerated in to an interesting discussion on
PDF features and Don's FogBugz presentation was deferred to a later
date.

September -
Annual General Meeting
The new office bearers are:- President - Glenn Crouch; Vice President
- Graham Pitson; Treasurer - Mathias Burbach; Secretary - Andrea
Coffey.
Turbo is Back- Glenn Crouch
Turbo Delphi was just released in September but Glenn had had it
for a while and gave us some insights into the Turbo Suite.

August -
The New Ribbon Menu- Phil Sheppard, Richard King and Jim
Duff
Phil, Richard and Jim have been individually examining the new
“Ribbon Menu” which we will be exposed to with the next release
of Office. Using the TMS components they have all progressed to
the point where they were able to show us their efforts. The consensus
seems to be that Ribbon Menus will require much more thought in
the planning stage. Richard has provided the sample ribbon application
at www.vikingcomputers.com.au/ribbon.htm
Navigating the Harbour- Colin Kemp, Kemputer
Some time ago Colin posted to our list questions about tracking
boats traveling around Sydney. The list did not provide the solution
but did help in finding it. Colin explained the method he used,
discussed some of the issues and showed a demonstration of the solution.
The actual project deals with 209 distinct locations around Sydney
Harbour and every location needs a path to every other location
(outward and return). The final application can retrieve and draw
any path in under one second on a 2GHz PC. For the demonstration
we were traveling around the New Hebrides . The zip file containing
the slides and Delphi demo code is available at www.adug.org.au/meetings/melb/downloads/BoathPath.zip

July -
Secure Remote Support- Jim Duff and Roger Connell
Have you ever had to travel 30 minutes to find that all you needed
to do was change a minor setting. Jim and Roger make use of two
“freeware”packages to interact with their Customer's business application
over the Internet from a remote location.
Jim discussed his experience in deploying and using the packages
and demonstrated the use of the solution. Jim's notes are available
at http://www.ucars.com.au/delphi
Roger looked at some of the issues in establishing and securing
the communication channel.
IP Addressing
Firewall Settings
Secure Tunnel Configuration
Databases with Secure Tunnels
Process Control
Roger's notes are available at http://www.innovasolutions.com.au/delphistuf/ADUGJuly2006.htm

June -
Timers-Alex Moss
A tutorial on the types and use of timers in Delphi. The zip file
containing the slides and Delphi demo code is available at www.adug.org.au/meetings/melb/downloads/June2006AlexTimers.zip
Remote Debug-Paul Klink - Paritech
Paul is one of the few who have used the remote debugging functionality
available in Delphi. He told us what it is, how to do it and why
we might need to do it.

May
Copernic -Paul Spain
A tutorial on Copernic desktop search engine (Grep on steroids).
How to Deal with Date Time - Don Macrae and Richard King
Richard wrote a date entry component and Don improved on it. After
Don and Richard explained the aims and issues the group all joined
the debate.

March - April
Introduction to open source components for Delphi - Richard
King
Richard King continued his discussion on third party components
by looking at Instant Objects and introduced our Wiki on Components
as suggested at the previous meeting.
Advanced Break Points in the Delphi IDE - Roger Connell
Roger recently discovered advanced break points in the Delphi
IDE. Many others seemed to have also missed them so we did a quick
overview.

February
Introduction to open source components for Delphi - Richard
King
Richard explained that he has been reviewing open source components
available for Delphi. He presented some of his findings then discushion
centered on how to best harness the collective knowledge of ADUG
members. Other sessions will offer you the opportunity to talk about
your favorite open source component.
Evolving Delphi Applications - Tony Rietwyk
Years ago Tony wrote a Delphi 2 application which displays Midi
music files. To become more familiar in designing with interfaces,
Tony:
Rewrote as D7 objects using inheritance
Rewrote as D7 using interfaces
Brought it to D2006 Win32
Changed to D2006 .Net
Tony discussed:
The different mind-set required for modeling based on inheritance
compared with interfaces.
The ease of bringing code up to the different versions.
The zip file containing the viewer exe and delphi units is available
at "www.adug.org.au/meetings/melb/downloads/Feb20060220.zip'

January
Detecting Memory Leaks via DUnit Extensions - Peter McNab
Peter demonstrated proposed changes to DUnit which automatically
and swiftly identifies unit tests which leak memory or fail to call
Checkxxx(). In the past leak testing was a very manual process involving
running Memproof or Codewatch type tools. Occasional application
leak testing may never encounter the conditions which give rise
to troublesome leaks in deployed code. Tests that don't call check
give a false sense of security, particularly ones where the call(s)
to Checkxxx() are controlled by if statements that fail to fire.
The DUnit modification code is available via
http://members.optusnet.com.au/mcnabp
Multithreadding Delphi Applications -Roger Connell - INNOVA
Solutions
Delphi makes multi threaded applications relatively easy. Roger
discussed when you should consider adding multithreading to your
application and went through some simple thread models. Powerpionts
and code samples are available at http://www.innovasolutions.com.au/delphistuf/ADUGJanuary2006.htm

December What is Useability -
Steve Roberts, NAB.
Steve Roberts manages the Usability Lab at the National Australia
Bank. He talked about some of the issues he has observed in the
20+ years of studying users and demonstrated the assistive technologies
of JAWS and MAGic

November Taming The Beast - Refactoring
RAD Code - Paul Spain.
Rapid development is usually at the expense of design, and many
RAD projects have difficulty moving to version 2.0 or incorporating
new requirements or features - an example of design
debt.

October Code Name Dexter - Tim
Jarvis.
Delphi 2006, ECO III, Delphi Compact Framework compiler and other
cool features...

September Annual General Meeting
followed by DUnit on DataModules - Mathias Burbach
We saw how we can separate our business logic from the user interface
and how to apply unit testing on the business logic contained in
TDataModule.

August Subversion - one of many
Version Control System - Peter McNab
Subversion in depth followed by short comparisons of Perforce (Richard
King); Team Coherence (Graham Pitson); CVS (Don Macrae) and Star
Team (?).

July Working with Excel from Delphi
- John McDonald.
John covered the basics of connecting to Excel using the ExcelApplication
component, writing data to a spreadsheet, and formatting the spreadsheet.
Speeding up the data transfer was then discussed. These techniques
can be extrapolated to other interactions with Excel.

June Compiler Writing for Dummies
- Darren Snodgrass
This presentation provided an introduction to the steps involved
with writing a simple Pascal compiler and interpreter, including
language definition, parsing, syntactic analysis, semantic analysis,
error recovery, assembly and the operation of a stack based machine.

May A Sample Code Review -
Tim Jarvis
Tim walked through a unit of code kindly provided by Don Macrae
or was it more the case of Tim kindly walked through a unit of code
provided by Don Macrae? Tim's emphasis was on checking conformance
to a coding standard.

April
Recursion and Linked Lists - Roger Connell.
Early Pascal texts dealt extensively with managing dynamically
allocated data via linked lists and with recursion in procedures.
With Delphi the dynamic data tends to be allocated as objects and
these objects are typically managed in containers such as TObjectList.
In this presentation Roger looked at what can happen if you manage
these objects as a linked list and how recursion can really make
it rock. Slides and code here
Organizing Program Constant Data - Don Macrae
You can set it in components at design time, which results in
a game of hunt the thimble if you need to change it, or you can
embed it in your code, with similar effect. Most programs embody
constant values, and where it resides makes a difference to maintainability
and readability. Record consts are the answer. Don shared several
examples, and invited judgements.
Full Text Searching from within your Delphi Application - Graham
Pitson
Lots of applications have free text data stored in files or databases.
Internet search engines are pretty good at helping us find information
on the web. But how can we do that in our own application and what
sort of data can we find?
Graham looked at some of the more common options available, how
they work and how you might make use of them in your own applications.

March Optimizing your code: Paul
Spain. Paul presented an overview of the issues and then went
through a thought provoking list of coding tips and techniques to
improve efficiency
Windows scaling: Jarrod Hollingworth's tute attacked the
issue of controlling how windows presents our forms when the screen
resolution is different from the design resolution. Jarrod's presentation
is here.
February Graham Grieve: Grahame
presented his replacement for the VCL's Printers.pas, with
structural improvements and more of the WinAPI features exposed.
Grahame's actual production source code and demo project is here.
Phil Sheppard: : Phil recently employed Joel Spolsky's guerilla
guide to interviewing in selecting a new employee. .

January Phil Sheppard: Phil.
has redeveloped 3 Delphi apps in C#. He presented an overview
of his C# app, architecture and code. Slides here.
Class Factories: Don Macrae's tute talked about class references
and demonstrated a basic factory. Demo here.

December Technology Considerations
for better Web Sites from Glenn Lawerence.
November Something Different.
Inspired by Joel's 'Guerilla
Guide to Interviewing', the meeting split into groups and attacked
some bite sized problems. Problems, pics and solutions here.
OctoberGenerating Objects from
Existing Databases - Bryan Dayton
Bryan has approached the persistance layer fron a different angle.
His work involves existing databases and the challange was to use
OO techniques within this existing data structure.
Use of extensions to Inno Setup - Paul Spain Inno Setup
is the installer of choice of many of our members. Paul looked at
some of the more complex capabilities of the product and shared
his knowledge
SeptemberRoll your own Persistence
Layer III - Roger Connell
Delphi as a product provides easy integration with various relational
databases for storing your data but there are other alternatives.
In the early years when the now infamous BDE had to be distribute
with all such database applications Roger chose not to use a standard
database for one application which required a simple installation.
Instead the application database was persisted as objects in a single
file. This led to development of an "Object" database implementation.
Roger presented a case study of how the availability of such software
assisted in the development of another OO project which required
persistence. Code and Database DCUs here.
August: Roll your own persistence
layer. Don Macrae and Natalie Vincent each
reported on their implementations of a persistence layer
July Richard King: Does XML
replace CSV?
Geoff Harris: An inside look at the Nexus database (ex FlashFiler)
June Steve Moller:
an overview of PasDoc's capabilities and his experience using this
on a large project for the CSIRO.
Nadia Natoka: a very entertaining presentation on her experience
in providing and improving user help
May Phil Sheppard and others: Another
look at GUI design
April Jim Duff:
A quick introduction to Rave
Natalie Vincent and Jim Duff: database application
architectures
March Melbourne committee: Melbourne GUI fest - 6
short presentations on various aspects of GUI design and implementation
Feb Jim Duff: The VE part
of RAVE. Jim will go into more depth at a future meeting.
Peter Gummer: C#: It looks like Java, but feels like Delphi.
Peter's notes are here.
Jan Richard King: A quick
look at rich text using TRichView
Natalie Vincent: Environment Changes migrating from Win 98
-> NT/2000 -> XP.

December Graeme Grieve: Porting Indy to .NET.
November Bryan Dayton: Tricks With TEdit
Commitee members: Programming competition results followed
by general discussion
The Competition Requirements and Results can be found here
Sub String Searching - Competion Rules'
And
Sub String Searching - Results'
October Don MacRae: A presentation on one way to
do Properties dialogs followed by discussion and
synthesis of all points of view
September Annual AGM followed by Peter Hinrichsen and
Ian Krigsman: TechInsite Object Persistence Framework. Get more
information and download the framework from the tiOPF
site.
August Paul Spain: Lockbox
Phil Sheppard: TChart
July Don Macrae: One approach
to Maintenance Dialogs. Food for thought and a future discussion.
Jarrod Hollingsworth C# Builder. Jarrod did an excellent walk
through of the new Borland C# product covering topics from the new
IDE (which we expect to see in Delphi 8) to aspects of the language
itself. Jarrod explained what parts of the IDE were generic (ie
Microsoft's) and what parts were Borland's.
June Roger Connell: Kernel,
User and Elapsed times under NT/XP. This is leading to a new
ADUG programming competition. Watch this space...
Richard King: Genetic Programming, a generation beyond Genetic
Algorithms. This presentation briefly introduced GA and then
moved on to Genetic Programming (GP). Richard demoed some home grown
Delphi code that uses GP to find mathematical functions given a
number of data points.
May Vince Parrett: The Guts
on FinalBuilder. Well known guru and Canberra ADUG member Vince
Parrett gave an impressive demo of his very capable Final Builder
product.
Paul Spain: An overview of the TurboPower tools. Paul gave
a brief run down of the 16 products (one with only 13 components
and another with over 120 components, right Don?) that have recently
been open sourced on SourceForge.
April Mark Brooks: JavaScript,
the Language. Mark described the JavaScript language focussing
on how to implement inheritance.
Natalie Vincent: Messaging in Delphi. Natalie gave a talk
on the Windows message loop. This was a follow up to an earlier
talk on the way Delphi handles windows messages.
March Richard King: Action
Manager in Action! Richard gave a talk on the D6/7 Action Manager
components, how they extend Action Lists (introduced in D5), and
how they can make building menu bars and toolbars easier, if you
avoid the buggy bits.
George Tasker: Exceptions in Threads. George described what
happens when an exception is raised in a thread. Download
George's code.
February: Paul Spain: Transactioned
Ini Files. Paul explored a lightweight mechanism for persisting
data that supports transactions.
Glenn Lawrence: Back to basics - Components and Controls.
Glenn represented his Delphi Magazine article on the basics of components
and VCL controls.
January: Andy Bulka: OOP Principles.
Andy led a discussion on OO programming principles.
Natalie Vincent: A Message in Bottle? Natalie discussed the
basics of windows messages, including how to dispatch a message
to a window, message loops and window procedures - and how Delphi
hides this complexity from us.

December Grahame Grieve:
Faxing with ASyncPro. Grahame shared the fruits of his labours
in getting the fax component of this useful package from TurboPower
working.
Paul Spain: A DUnit Expert. Paul presented an OpenTools API
plug-in for Delphi 5-7 to assist with DUnit testing.
November Roger Connell:
How does IP work with Delphi? Roger explained IP packets and
Port 80, and how they interface with Delphi and also described issues
with Blocking and Non Blocking Ports.
Mathias Burbach: How does Interbase rate as a SQL Server? Mathias
compared the features of Interbase such as views, stored procedures,
triggers, security etc, with alternatives such as Oracle.
October Phil Sheppard:
Implementing Linear Programming. Phil's tutorial provided
an introduction to linear programming, a simple example using a
third party API and a demonstration of a recent application.
Steve Hayes: Canoo WebTest. Steve gave a simple demonstration
of how to use Canoo to test a web application. Canoo provides an
XML-based wrapper for HttpUnit that lets programmers use the power
of HttpUnit without requiring Java expertise.
September Annual General
Meeting followed by
Paul Spain: Using Delphi IDE Macros. Paul provided a
practical introduction to the under-used Delphi IDE keyboard macro
facility.
Graham Pitson: The ADUG Events System. Graham described how
he successfully implemented the Delphi/Kylix system used with good
effect for the Autumn Symposium and the Agile methods workshop.
August Robert Williams:
Active Modelling: from Mess to Success. Robert, from Almond
Computing in the UK, told us about a simple technique for defining
requirements.
Andrea Coffey: A few programming tips and tricks. That says
it all.
July Don Macrae: Printing
routine documents to the canvas.
Jim Duff: Product of the month: Help & Manual
Natalie Vincent: I The NonModal Modal Dialog!
Natalie Vincent: II File Lock Regions: Overlooked no longer
June Glenn Stephens: Beyond
Events: Using The Command Pattern with Delphi. Glenn described
how to implement multiple level undo in applications with particular
reference to the Command Design Pattern.
May Roger Connell: The Pros
and Cons of Object Databases. Roger discussed why he chose not
to use a relational database for an application and how this has
led to an "Object" database implementation.
April Graeme Chandler: A
Backroom View of Ectoset.
Natalie Vincent: A Glimpse of RTTI
March Jim Duff: A User's
View of Inno Setup
Natalie Vincent: Named Pipes
February: Ian Krigsman: Coding
at the Speed of Thought!
Paul Fraser: Developing Web Apps in Delphi with IntraWeb
January: Paul Spain: Yet another
Singleton?
Natalie Vincent: Tray Icons simply
Robbert Weigmink: Intro to UML, Conclusion.

December: Meet Andrew Munro.
Andrew (the new head of Borland Australia), gave us an update
on Borland Oz.
Automated Unit Testing. Peter Hinrichsen gave a brief
introductory presentation on the value of DUnit. Tim Knipe gave
a rundown on his use of DUnit and other tools and techniques to
test his Shell Control Pack version 2. DUnit is open source. It
is downloadable from SourceForge.net.
November: Steve Hayes: Extreme
Programming Explained. Steve described "Extreme Programming",
"Programming in Pairs" and explained Kent Beck's book.
Robbert Wiegmink: Encountering UML. Robbert continued his
UML series.
October: Peter Hinrichsen:
How a Visitor Changed my Life. Peter led us through another
GOF pattern. Click here
for Peter's doco.
Robbert Wiegmink: Encountering Use Cases. Robbert described
another aspect of UML - Use Cases. These are especially useful if
you are describing the external/requirements aspects of a system.
September: The Annual General
Meeting was followed by
Paul Klink: Techniques for managing software complexity
Paul described some techniques for managing complexity based
on those found in Engineering Real Time Systems by Rolv Braek
and Oystein Haugen.
Robbert Wiegmink: Encountering UML. Robbert continued his UML
series.
August: Andy Bulka: Python
and Delphi. Continued from last month.
Grahame Grieve: How to get the most out of Exceptions. Continued
from last month.
Robbert Wiegmink: The Class Diagram
July: Andy Bulka: Python
and Delphi. Andy described the Python language and how it can
be embedded in Delphi applications using the Python for Delphi components.
Grahame Grieve and Matt Vincent: How Exceptions Work. Matt
described the working of exceptions at a code and CPU level.
Grahame illustrated how to get the most out of them by example.
June: Peter Hinrichsen: How the
Adaptor Pattern Changed My Life.
Peter continued where he left off from last month.
Don Macrae: How the Iterator Pattern Changed My Life. And
possibly the Template pattern was also discussed.
May: Peter Hinrichsen: How the
Adaptor Pattern Changed My Life. Adaptor is a GOF pattern. GOF
as in Gang of Four, meaning 'Design Patterns: Elements of ReUsable
Object Oriented Software' by Gamma, Helm, Johnson and Vlissides
( the GOF ).
Tony Rietwyk: Developing a Programming Style. Tony presented
some ideas based on his experience with various languages, including
Delphi of course. Issues included module and subroutine size, variable
naming and ( gasp ) code layout.
April: This month we were given
a thought provoking look at C++ Builder by ADUG member Jarrod Hollingworth
- editor of the recent published "C++ Builder 5 Developers
Guide". The latter part of the evening was a well thought out
expose from Paul Spain of a generic technique to multicast component
events, such that several event handlers can be associated with
a given event.
- Jarrod's PPT slides and notes are here.
- Paul's PPT slides and source code are here.
March: This month we were treated
to a very stimulating expose of TField by Graham Pitson, followed
by the dramatic conclusion to Mark Brooks' "Introduction to
Threads" presentation.
- Mark's sample source code can be found here.
- Watch this space for further info on Graham's talk.
February: Following the success
of last month's "mini symposium" format we applied the
same formula again this month with the following first class presentations:
- "Frames" by Don Macrae
- "DHTML
Exposed" by Sarah Maguire
- "Introduction to Threads" by Mark Brooks
January: This meeting was a mini
symposium featuring excellent presentations by various ADUG members:
- "Understanding HTTP" by Matthew Vincent
- "PChars and Pascal strings" by Paul Spain
- "Decorator Pattern - how not to use" by
Graham Grieve

December: In the 10 minute tute
Andy Bulka demonstrated the "Data Diagram View" in the
Delphi 5 IDE and suggested alternative uses. The main presentation
was by Peter Hinrichsen of Techinsite
who gave us the low down on his open source object oriented persistence
mechanism. Thanks guys.
November: This meeting started
with a sneak preview of new features in Kylix and Delphi 6 by Borland's
John Kaster. Well, alright it was a video of John from the recent
BorCon Asia Pacific conference.
Following John we had well known and much loved ADUG member Glenn
Crouch of ESB Consultancy
who gave a very informative and well received presentation entitled
"Automating the Installation of Design Time Packages".
Glenn has been working on this process to automate the installation
of his own ESBPCS component suite. The information was of interest
even for those who don't plan to publish their components as the
techniques presented could also be used to automate the building
of applications.
Glenn's Powerpoint presentation can be downloaded from
here, and Glenn has promised to make the relevant sections of
source code available here soon. Many thanks Glenn.
Glenn came all the way from Kalgoorlie WA to make this presentation.
Well alright, he was on his way back from BorCon anyway.
October: ADUG president Glenn
Lawrence gave a test run of his upcoming Borcon 2000 presentation
"Dead Easy Web Development with CGI Expert". Glenn is
the founder of AIMTec, a
local company who among other things offers Delphi-aware Web hosting
solutions.
September: Pierre Semaan of
PEG Technologies came down from Sydney to give us a valuable sneak
preview of his Borcon 2000 presentation on SOAP and XML. Thanks
Pierre.
August Com Automation
Clients with Delphi 5:
Presentation from Brian Watson of Desktop EDA. The presentation
was announced on this site as follows:
Desktop EDA has had a product in the field for a year which was
an OLE Client developed using the
OLE Automation tools in Delphi 3. A 2000 version of the server application
rendered the Desktop EDA application unreliable due to not well
understood demand on resources. Rewriting the application using
the Delphi 5 COM features has resulted in a usable product with
more features, faster execution and better control.
Brian is an ADUG member, and this was his first use of COM. This
means the material will be accessible to any of us who are new or
relative beginners with COM. Plus of course experienced COM users
should come to contribute to the discussion.
The presentation was followed by a useful discussion on COM issues,
from basic to more advanced.
July: Client DataSet Support
using Microsoft Remote Data Service (RDS). This was the title of
the presentation by Mark Weston, member and Principal of Real Solutions.
Follow this link
to the PowerPoint presentation. Ten minute tute was from Bryan Dayton
on Console Applications.
June: How long is a piece
of string. This was the title of Michael Stringer's presentation
on Project Metrics. Based upon significant personal experience of
delivering software projects on time and on budget for commercial
clients, Michael presented the evidence and the principles to follow.
The essential principle is that you must maintain your project metrics,
meaning some measure of your productivity. This means having a basis
for measuring output, whether it be use cases, function points,
forms or lines of code, and then making sure that all projects are
measured in terms of the output unit and resources consumed, so
that they can deliver updates to the productivity index. Of course,
an estimate cannot be given until you have an estimate of the size
of the task in terms of a relevant unit, eg use cases.
The ten minute tute was delivered by Grahame Grieve, on the subject
of herding cats, sorry, make that managing programmers. This was
based upon a book "Managing Technical People" by Watts
S. Humphrey, the originator of PSP, the Personal Software Process.
This book was an eye opener for Grahame, and Grahame's thoughts
on the subject were well received.
May: The main presentation
was from Glenn Stephens, fresh from presenting at the Autumn Symposium
the previous Friday. His subject: "State and its Natural Enemy:
HTTP". You ring for a taxi to take you to the airport. You
leave it at the airport and hop on your commuter plane. Upon your
return, there the taxi is, where you left it. No? This story was
actually from Malcolm Groves, but it got a mention in Glenn's presentation.
Ten minute tute was replaced by a sort, performed on the assembled
company by Peter Hinrichsen, with the aid of a rubber ball.
April: The main item this
month was a talk by Darius Zakrzewski entitled "The Pattern
Movement: A New Culture". Darius is the founder of the Melbourne
Patterns Group and Conference Chair for the first Australian Patterns
conference. He is also the lead of the architectural board
responsible for setting and overseeing software directions at Cybergraphic
Systems, a Melbourne company with some 140 in-house developers.
Darius's talk was something of a commercial for the patterns approach,
suggesting that patterns were a way to transform software development
such that mature, sophisticated and proven techniques for solving
design problems became communicable and learnable, to coin a word.
The talk was well received, and subsequent discussion revealed that
it was a useful contribution to many. At present we do not have
a copy of Darius's paper, but we will post it when we do.
Instead of a ten minute tute the main item was preceded by a reading
of a dramatization of the Visitor pattern. Follow this link
to read the script.
March: The topic this month was
Delphi's 'Open Tools API'. Part I was a comprehensive introductory
coverage by Paul Spain, which included a refresher on interfaces,
a feature of the Open Tools API since D4, and ended with a demonstration
'Hello World' expert. Part II was delivered by Paul Gilbert, and
consisted of a demonstration and explanation of two experts. Altogether
the two Pauls were effective in giving us access to the insides
of the IDE we work in every day. Follow this
link for presentation material and this
link for the demos.
February: This month we were
treated to an excellent "Ten Minute Tute" on "Object
tracking" by ADUG member Ian Krigsman, followed by an enthusically
received key note presentation by Graham Grieve of Kestral Computing
on the subject of Web Development - benefits and pitfalls. Many
thanks guys.
January: The theme of our first
meeting for the new year was "Version Control". Grahame
Grieve from Kestral Computing presented an enlightening talk on
version control practices used at Kestral and demonstrated a custom
made version control system that they use. Paul Spain then presented
a first class demo of the open-source version control system CVS.
Follow this link
for Paul's presentation.

December: This our last meeting
before Y2k began with a first class 10 minute tutorial on UML by
ADUG member and La Trobe University associate lecturer Arniban Bhattacharya.
Arnie did a great job of introducing a complex topic in a very short
time - thanks Arnie. Our keynote presenter was ADUG member Andy
Bulka who gave a very well prepared and well received demonstration
of the Delphi OO design tool ModelMaker - thanks Andy. At the end
of the meeting we held a draw for the door prizes. Winners were:
Peter Evans - ModelMaker
generously donated by the author; Fred Orford - Simply Objects for
Delphi generously donated by Adaptive
Arts; Paul Klink - $20 book voucher generously donated by Dymocks
Greensborough. After the meeting about 20 people stayed back
for a very convivial session of curries and drinks organised by
Don Macrae and Peter Hinrichsen, thanks guys.
November: This meeting began
with a 10 minute tutorial on "Using IInterface" by Don
Macrae. Thanks Don. Our keynote presenter was Tony Alan of Fulcrum
Consulting who gave an excellent presentation on XML. His very informative
powerpoint slides han be found here. Many
thanks Tony. After the meeting some people stayed back to see Glenn's
video of this year's Borland Conference that happened the week before.
October: This meeting began with
a 10 minute tutorial on Dynamic Arrays by Don Macrae. Thanks Don.
Our keynote presenter was ADUG committee member and international
author Peter Hinrichsen who gave a well received presentation based
on his latest article for the Delphi
Magazine. The topic was on "Using the Observer Design Pattern
in Delphi" and generated much interest and discussion. Peter
has promised to publish his slides here. Watch this space. Many
thanks Peter.
September: This meeting began
a 10 minute tutorial on Binary Search techniques by Paul Spain.
Thanks Paul. Our keynote presenter was ADUG member Graeme Chandler
who spoke on the topic of the Win32 API. Thanks Graeme A copy of
his presentation can be found at his web site here.
The GST was a hot topic in the Q&A session so I have compiled
some relevant links here.
August: This meeting incorporated
the ADUG AGM official minutes of which will be available from the
ADUG Secretary. The following members of the D5 beta test team received
a special thank you and were presented with T-shirts: Paul Gilbert,
Jason King, Glenn Crouch, Peter Evans, Robert Zolkos, Roger Connell,
Laurie Shipp, Henry Yong, Andrea Coffey. Borland generously donated
some "door" prizes. Winners were: $2000 training voucher
- Tony Rietwyk; D5 Pro - Colin Kemp; Team Source for D5 - Stewart
Dobrzynski, BorCon tutorials - Peter Hinrichsen, Paul Klink, Paul
Gilbert. After the break we were then treated to a first class presentation
entitled "Client Server - Counting the Cost" by ADUG member
and Inprise consultant Mark Richards in which Mark treated us to
the benefit of his experience in moving from a desktop database
environment to full-on client-server.
July: Timed to coincide with the
world-wide announcement of Delphi 5 at the Borland Conference in
Philadelphia, ADUG member and D5 beta tester Paul Gilbert presented
a candid, thorough and very well received demonstration of Delphi
5. We were also treated to a very professional presentation on the
Personal Software Process method by ADUG member Nick Argall.
June: Instead of a 10 minute tutorial
and a main presentation, ADUG members were treated to two generous
presentations by ADUG members Paul Spain and Tony Reitwyk. Paul
spoke on the subject of Class References in Delphi, and Tony presented
an example of using Class References to implement the Factory Method
design pattern.
May: Our first meeting at our new
home at the venerable Royal Society's Hall in Melbourne.
This month's 10 Minute tutorial was by Ms Cher Page, who spoke on
the subject of Exception Handling. The main presentation was by
ADUG member Iris Radalescu. Iris presented a well received paper
written by Peter Szymiczek and himself in the subject of BDE
Networking.
April: This month's main meeting
began with a Special General Meeting at which proposals to re form
the ADUG as an incorporated body were all unanimously carried. This
was followed by announcements and our usual Q&A session. Andrea
was unable to give the planned 10 minute tutorial on her bar code
component but has promised material to be posted on the web, so
watch this space. Steven Healey, member of the UK-BUG,
who was currently visiting Melbourne, told us about his very successful
Delphi Prefix Registry
and his ComDesk product. The main speaker of the evening was ADUG
member Andy Bulka who gave a well received presentation on using
Delphi's component-based streaming mechanisms, and in particular
using the TreeView components as the basis for a hierarchical object
persistent storage mechanism. Here are Andy's excellent presentation
notes as well as a demo
project.
March: "10 Minute Tutorial"
this month was by ADUG member Peter McNab of Aviation Data Systems
on the topic of "Rebooting NT from within your application".
A "10 minute demo" of an RPN calculator application was
given by ADUG member Jason King of AdvaTel. The main presentation
was then given by ADUG president Glenn Lawrence
and covered issues relating to date-time conversion and Y2k compliance.
Notes, source code and other material is being prepared. Watch this
space, or tune into the mailing list.
February: Back in RMIT (although
now on level 17) we were treated to a "10 Minute Tutorial"
on writing OLE Automation Clients by ADUG member Brian Watson of
Desktop EDA. Follow
this link for his powerpoint slides. The main presentation was
then given by ADUG member Graham Pitson on the topic of creating
your own TDataset derivatives. Follow this
link for notes and source code.
January: This month the meeting
venue was temporarily moved to salubrious surroundings of the R&D
Technology Park at La Trobe University. Following the tradition
of past year's it was a relaxed meeting focussing on round-table
discussion. There were short presentations by Mark Brooks and Don
Macrae, with pizzas and beer afterwards. Mark gave a very informative
"10 minute tutorial" on the subject of Object Pascal Variants.
Don presented a nifty report writing unit/component that he is working
on.
December: ADUG member John McDonald
gave a "10 minute tutorial" on "When to create your
own components". This was followed with a presentation by Graham
Grieve on the topic "Trials and tribulations
of C/S development: Server programs in Delphi". For pictures
and more information please follow
this link.
November: ADUG member Don Macrae
gave a "10 minute tutorial" on records and memory allocation.
This had the desired effect of sparking an interesting discussion
on the "evils" of pointers. This was followed with a presentation
by Peter Collas of Collas Consulting on the topic of Form Inheritance.
Peter has promised some material for us to post here, but in the
meantime you read the informative introduction
to his talk.
October: ADUG president Glenn Lawrence and
ADUG member Peter Hinrichsen gave a report on the recent ICON '98
Inprise Asia-Pacific conference that they recently attended. This
was followed with a presentation by ADUG member Peter Evans of CocolSoft who demonstrated his
new Cogencee parsing engine
for Delphi.
September: Presentation: Matthew
Boyce and Adam Satori of Soft Gen, distributors of Interbase, generously
gave their time to demonstrate the latest version of Interbase and
a number of third part support products.
August: Presentation: Glenn Stephens
of Code Rage came down from Sydney to present DBOvernet, a simple
third party Midas replacement for connecting a remote client to
a server-based database over the net. Glenn generously presented
a copy of DBOvernet which was won by Richard Czerwonka in WA. This
month was also the ADUG AGM, minutes of which are available from
the secretary. Inprise generously donated some "door"
prizes which went to ADUG members as follows: Jason King (Vic) T-shirt,
Glenn Crouch (WA) T-Shirt, Wally Ripper (Vic) J-Builder Pro.
July: Presentation: Andrew Rutherford
and David Gorton principals of Classworks
Australia came down from Newcastle to present a "technical
preview" of their DCOM Development Infrastructure and Knowledge
Manager products. Once again, two great Aussie products that deserve
to succeed. Andrew has kindly placed a copy of their powerpoint
slides on their web-site that can be reached through this link
and the handout (in RTF format) can be accessed via this link.
June: Presentation: Derek Renouf,
lead developer of Adaptive Arts came down from Sydney
to present the Australian modelling and design tool Simply
Objects. This looks like a great Aussie product for object
modelling and reverse engineering. He also gave away a couple of
free copies - thanks Derek!
May: Presentation: "Comparison
of Intrabuilder and CGI-Expert" by Wally Ripper see Wally's speaker
notes.
April: Presentation: "Windows
95 Registry with Delphi" by Mark Brooks of AIMTec
download Mark's paper.
March: Presentation: "Controls
Demystified" by Glenn
Lawrence see Glenn's
paper.
February: Presentation: "Writing
Server-side Web Applications in Delphi with CGI Expert" by
Glenn Lawrence
see Glenn's
paper.
January: Round table discussion
on various subjects raised by the group.
December: Presentation on "Mapping
OO models onto Relational Databases" by James Thorpe of CSAA.
November: Discussion forum on
software design issues hosted by Don Macrae. See Glenn's
notes on this meeting.
October: Presentation "Software
Configuration Management" by Steve Forbes. See Steve's
handout material and Glenn's
notes on this meeting.
September: Special meeting open
to the general public at the Hotel Sofitel, featuring Graham Porter
and Randall Sell of Borland Australia demonstrating
Delphi 3, Intrabuilder and JBuilder. See Don's
notes on this meeting. See also Leon's
pictures.
August: ADUG AGM and presentation
on "Drag and Drop in Delphi" by Paul Spain. See Paul's
presentation and Glenn's notes
on this meeting.
July: Presentation: "COM in
Delphi" by Mark Weston. See Mark's
presentation and Glenn's
notes on this meeting.
June: "The view from the top"
from Ray Bradbery - CEO Borland Australia. See Glenn's
notes on this meeting.
May: Presentations on "Team development
support tools" by Steve Forbes and "The object browser
(and other things)" by Davyd Norris. See Steve's
paper and Glenn's notes
on this meeting.
April: Demos of Borland C++ Builder
and Delphi 3 by Randall Sell of Borland
Australia. See Glenn's notes on this meeting.
March: Summary of Microsoft Developers
Conference by Peter Szymiczek and a case-study moderated by Don
Macrae. See Glenn's notes on this meeting. See
also Leon's pictures.
February: Presentation on TeeChart,
IncCombo and Apollo by Grant Dunoon. See Glenn's
notes on this meeting.
January: Round table discussion.
See Glenn's notes on this meeting.
December: Presentation on "A
Visual Component Builder" by Steve Moller. See Steve's
preview summary and presentation
for more information. Glenn Lawrence
also presented his new "scaler panel" component and explained
how it worked.
November: Demo of IntraBuilder
by Randall Sell of Borland Australia. See Glenn's
notes on this meeting.
October: Presentation on drawing
to the TPrinter canvas by Don Macrae. See Don's
paper on this topic. Glenn Lawrence
also presented a short
demo of Michael Kochiashvili's TRunLabel
component.
September: Presentation of Per
Larsen's MemMonD and Memory Sleuth by Mark
Weston of Real Solutions.
August: Demo by David Szkylnik
of Jan Strube's DBScroll component.
July: Presentation on "Using
text files with Delphi" by Glenn Lawrence see Glenn's
paper on this topic.
Prehistory: ADUG has been meeting
regularly since 1994, but notes of early meetings are no longer
available.
|