SlideShare ist ein Scribd-Unternehmen logo
1 von 29
1
World Headquarters
Cincinnati, Ohio
Cincom® ObjectStudio®
New Native GUI
Implementation Preview:
A Technical Overview
Overview
• Intention and Goals
• Some Windows™ Definitions
• Architectural Overview
• Announcements
• Sample Code
3
Intention and Goals
• Modernize the UI Controls / Widgets
• Eliminate Primitives and use DLLCC
• Easy to Maintain and Extend
“A user interface is well-designed when the program
behaves exactly how the user thought it would.”
4
Some Windows™ Definitions
• Window Classes
• Window Procedure
• Window Messages
5
Window Classes
A window class is a set of attributes that the system uses
as a template to create a window. Every window is a
member of a window class. All window classes are
process specific.
6
Window Procedure
Every window class has an associated window
procedure — a function that processes all messages
sent or posted to all windows of the class.
All aspects of a window's appearance and behavior
depend on the window procedure's response to these
messages.
7
Window Messages
Each window has a function, called a window procedure,
that the system calls whenever it has input for the
window.
Windows do not make explicit function calls to obtain
input. Instead, they wait for the system to pass input to
them.
The system passes all input for an application to the
various windows in the application.
8
Architectural Overview
• UIView
 UITransparentWindow
 UIChildWindow
 UIControl
• Windows GDI
• GDI+
9
UIView
• UIView class
 registerClass
 WndProc
 MessageMap
 Message Handling
• UIView
 privateCreate
10
UIView class>>registerClass
11
UIView class>>WndProc
12
UIView class>>MessageMap
13
UIView>>WM_CHAR:msg:wParam:lParam
14
UIView>>privateCreate
15
UIChildWindow
• Superclass for all child windows
• Subclasses are window classes
like
 UITabPage
 UIDrawPad
 UIImgDisplay
 (…)
16
UIControl
• Superclass for all Controls /
Widgets
• Subclasses are Controls / Widgets
like
 UITreeView
 UIListView
 UIEdit
• UIMultilineEdit
• UIRichEdit
 (…)
17
Windows GDI
The Microsoft Windows graphics device interface (GDI)
enables applications to use graphics and formatted text
on both the video display and the printer.
• Negatives
 No support for modern image formats (JPG/PNG)
 No anti-aliasing
• Positive
 fast
18
Windows GDI
With the introduction of Windows XP, GDI was
deprecated in favor of its successor, the C++ based
GDI+ subsystem.
19
GDI+
―GDI+ adds anti-aliased 2D graphics, floating point
coordinates, gradient shading, more complex path
management, intrinsic support for modern graphics-file
formats like JPEG and PNG, and support for composition
of affine transformations in the 2D view pipeline.‖
20
GDI+
Windows GDI+ exposes a flat API
that consists of about 600
functions
The functions are mapped into
Smalltalk classes, that reflect the
C++ hierarchy
21
Used In
• UIBitmapDisplay
• UIImgDisplay
• UIDrawPad
• UIChart
 UILineGraph
 UIBarChart
 UIPieChart
22
Announcements
Announcement is the core of
class-based event notification
framework superseding the older
symbol-based trigger-event
framework and the
changed/update mechanism.
23
Class TestUI
• Singleton
• Implements a test for every
UI class implemented
• Controlled by class side
methods
 Each line in the class method
contain a single operation
 Execute line by line to see
the effect
24
Sample Code
• TestUI
• TestGdipClock
• TestPathGradient
• (…)
25
Some Controls / Widgets
26
27
If you want to know more, get your hands on the
code and tell us what you think, please register for
our OST-DEV program.
See our Product Manager Arden Thomas
(athomas@cincom.com) for more information
Contact Information
Star Team (Smalltalk Strategic Resources)
– Suzanne Fortman (sfortman@cincom.com)
Cincom Smalltalk Program Director
– Arden Thomas (athomas@cincom.com)
Cincom Smalltalk Product Manager
– Jeremy Jordan (jjordan@cincom.com)
Cincom Smalltalk Marketing Manager
http://www.cincomsmalltalk.com
Thanks for listening

Weitere ähnliche Inhalte

Ă„hnlich wie UI Unlimited

DotNet Introduction
DotNet IntroductionDotNet Introduction
DotNet Introduction
nandhu8124
 
Visual programming lab
Visual programming labVisual programming lab
Visual programming lab
Soumya Behera
 
VB.Net GUI Unit_01
VB.Net GUI Unit_01VB.Net GUI Unit_01
VB.Net GUI Unit_01
Prashanth Shivakumar
 

Ă„hnlich wie UI Unlimited (20)

Unit 2
Unit 2Unit 2
Unit 2
 
Rapid2d C++ Windows8
Rapid2d C++ Windows8Rapid2d C++ Windows8
Rapid2d C++ Windows8
 
Android programming Assignment Help
Android programming Assignment HelpAndroid programming Assignment Help
Android programming Assignment Help
 
DotNet Introduction
DotNet IntroductionDotNet Introduction
DotNet Introduction
 
DOTNET
DOTNETDOTNET
DOTNET
 
Visual programming lab
Visual programming labVisual programming lab
Visual programming lab
 
Auto it - AnhPC
Auto it - AnhPCAuto it - AnhPC
Auto it - AnhPC
 
VB.Net GUI Unit_01
VB.Net GUI Unit_01VB.Net GUI Unit_01
VB.Net GUI Unit_01
 
How to modernise WPF and Windows Forms applications with Windows Apps SDK
How to modernise WPF and Windows Forms applications with Windows Apps SDKHow to modernise WPF and Windows Forms applications with Windows Apps SDK
How to modernise WPF and Windows Forms applications with Windows Apps SDK
 
Project
ProjectProject
Project
 
Griffon for the Enterprise
Griffon for the EnterpriseGriffon for the Enterprise
Griffon for the Enterprise
 
W1.pptx
W1.pptxW1.pptx
W1.pptx
 
Introduction to Android Development
Introduction to Android DevelopmentIntroduction to Android Development
Introduction to Android Development
 
A Developer's View of Windows 8
A Developer's View of Windows 8A Developer's View of Windows 8
A Developer's View of Windows 8
 
Android overview
Android overviewAndroid overview
Android overview
 
Android course (lecture1)
Android course (lecture1)Android course (lecture1)
Android course (lecture1)
 
Climberreport
ClimberreportClimberreport
Climberreport
 
DocDoku: Using web technologies in a desktop application. OW2con'15, November...
DocDoku: Using web technologies in a desktop application. OW2con'15, November...DocDoku: Using web technologies in a desktop application. OW2con'15, November...
DocDoku: Using web technologies in a desktop application. OW2con'15, November...
 
DocDokuPLM presentation - OW2Con 2015 Community Award winner
DocDokuPLM presentation - OW2Con 2015 Community Award winnerDocDokuPLM presentation - OW2Con 2015 Community Award winner
DocDokuPLM presentation - OW2Con 2015 Community Award winner
 
Introduction to dot net framework by vaishali sahare [katkar]
Introduction to dot net framework by vaishali sahare [katkar]Introduction to dot net framework by vaishali sahare [katkar]
Introduction to dot net framework by vaishali sahare [katkar]
 

Mehr von ESUG

Workshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programmingWorkshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programming
ESUG
 
The Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and RoadmapThe Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and Roadmap
ESUG
 
Sequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in PharoSequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in Pharo
ESUG
 
Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...
ESUG
 
Analyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early resultsAnalyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early results
ESUG
 
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
ESUG
 
A Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test GenerationA Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test Generation
ESUG
 
Creating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic ProgrammingCreating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic Programming
ESUG
 
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution ModesThreaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
ESUG
 
Exploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience ReportExploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience Report
ESUG
 
Pharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIsPharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIs
ESUG
 
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame CaseImproving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
ESUG
 
Pharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and FuturePharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and Future
ESUG
 
Advanced Object- Oriented Design Mooc
Advanced Object- Oriented Design MoocAdvanced Object- Oriented Design Mooc
Advanced Object- Oriented Design Mooc
ESUG
 
A New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and TransformationsA New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and Transformations
ESUG
 

Mehr von ESUG (20)

Workshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programmingWorkshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programming
 
Technical documentation support in Pharo
Technical documentation support in PharoTechnical documentation support in Pharo
Technical documentation support in Pharo
 
The Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and RoadmapThe Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and Roadmap
 
Sequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in PharoSequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in Pharo
 
Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...
 
Analyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early resultsAnalyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early results
 
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
 
A Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test GenerationA Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test Generation
 
Creating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic ProgrammingCreating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic Programming
 
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution ModesThreaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
 
Exploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience ReportExploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience Report
 
Pharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIsPharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIs
 
Garbage Collector Tuning
Garbage Collector TuningGarbage Collector Tuning
Garbage Collector Tuning
 
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame CaseImproving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
 
Pharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and FuturePharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and Future
 
thisContext in the Debugger
thisContext in the DebuggerthisContext in the Debugger
thisContext in the Debugger
 
Websockets for Fencing Score
Websockets for Fencing ScoreWebsockets for Fencing Score
Websockets for Fencing Score
 
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScriptShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
 
Advanced Object- Oriented Design Mooc
Advanced Object- Oriented Design MoocAdvanced Object- Oriented Design Mooc
Advanced Object- Oriented Design Mooc
 
A New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and TransformationsA New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and Transformations
 

KĂĽrzlich hochgeladen

Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 

KĂĽrzlich hochgeladen (20)

Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 

UI Unlimited

  • 1. 1 World Headquarters Cincinnati, Ohio Cincom® ObjectStudio® New Native GUI Implementation Preview: A Technical Overview
  • 2.
  • 3. Overview • Intention and Goals • Some Windows™ Definitions • Architectural Overview • Announcements • Sample Code 3
  • 4. Intention and Goals • Modernize the UI Controls / Widgets • Eliminate Primitives and use DLLCC • Easy to Maintain and Extend “A user interface is well-designed when the program behaves exactly how the user thought it would.” 4
  • 5. Some Windows™ Definitions • Window Classes • Window Procedure • Window Messages 5
  • 6. Window Classes A window class is a set of attributes that the system uses as a template to create a window. Every window is a member of a window class. All window classes are process specific. 6
  • 7. Window Procedure Every window class has an associated window procedure — a function that processes all messages sent or posted to all windows of the class. All aspects of a window's appearance and behavior depend on the window procedure's response to these messages. 7
  • 8. Window Messages Each window has a function, called a window procedure, that the system calls whenever it has input for the window. Windows do not make explicit function calls to obtain input. Instead, they wait for the system to pass input to them. The system passes all input for an application to the various windows in the application. 8
  • 9. Architectural Overview • UIView  UITransparentWindow  UIChildWindow  UIControl • Windows GDI • GDI+ 9
  • 10. UIView • UIView class  registerClass  WndProc  MessageMap  Message Handling • UIView  privateCreate 10
  • 16. UIChildWindow • Superclass for all child windows • Subclasses are window classes like  UITabPage  UIDrawPad  UIImgDisplay  (…) 16
  • 17. UIControl • Superclass for all Controls / Widgets • Subclasses are Controls / Widgets like  UITreeView  UIListView  UIEdit • UIMultilineEdit • UIRichEdit  (…) 17
  • 18. Windows GDI The Microsoft Windows graphics device interface (GDI) enables applications to use graphics and formatted text on both the video display and the printer. • Negatives  No support for modern image formats (JPG/PNG)  No anti-aliasing • Positive  fast 18
  • 19. Windows GDI With the introduction of Windows XP, GDI was deprecated in favor of its successor, the C++ based GDI+ subsystem. 19
  • 20. GDI+ ―GDI+ adds anti-aliased 2D graphics, floating point coordinates, gradient shading, more complex path management, intrinsic support for modern graphics-file formats like JPEG and PNG, and support for composition of affine transformations in the 2D view pipeline.‖ 20
  • 21. GDI+ Windows GDI+ exposes a flat API that consists of about 600 functions The functions are mapped into Smalltalk classes, that reflect the C++ hierarchy 21
  • 22. Used In • UIBitmapDisplay • UIImgDisplay • UIDrawPad • UIChart  UILineGraph  UIBarChart  UIPieChart 22
  • 23. Announcements Announcement is the core of class-based event notification framework superseding the older symbol-based trigger-event framework and the changed/update mechanism. 23
  • 24. Class TestUI • Singleton • Implements a test for every UI class implemented • Controlled by class side methods  Each line in the class method contain a single operation  Execute line by line to see the effect 24
  • 25. Sample Code • TestUI • TestGdipClock • TestPathGradient • (…) 25
  • 26. Some Controls / Widgets 26
  • 27. 27 If you want to know more, get your hands on the code and tell us what you think, please register for our OST-DEV program. See our Product Manager Arden Thomas (athomas@cincom.com) for more information
  • 28. Contact Information Star Team (Smalltalk Strategic Resources) – Suzanne Fortman (sfortman@cincom.com) Cincom Smalltalk Program Director – Arden Thomas (athomas@cincom.com) Cincom Smalltalk Product Manager – Jeremy Jordan (jjordan@cincom.com) Cincom Smalltalk Marketing Manager http://www.cincomsmalltalk.com