This document summarizes the development of ObjectStudio 8, which integrates the ObjectStudio and VisualWorks Smalltalk environments. It describes 4 main steps: 1) Implementing ObjectStudio primitives in VisualWorks, 2) Proving the concept works, 3) Completing the implementation, and 4) Ensuring compatibility. Key aspects included modeling ObjectStudio in VisualWorks Smalltalk, sharing code between the environments, and addressing differences in syntax, semantics, and file formats between the two systems. The goal was to allow both environments to run simultaneously and seamlessly within the same Smalltalk image.
This document provides an overview of test driven development (TDD). It defines TDD as first writing an initially failing test case that defines a requirement, then producing just enough code to pass that test, and refactoring the new code. The document outlines the basic TDD steps, what can be tested, advantages of TDD like improved design and reduced bugs, and provides an example of incrementally developing a method using TDD.
Review of old topic regarding dependency injection. Why it's still important and actual in the industry. Will look into more depth of this is handled in Episerver and related libraries.
Web Velocity is a tool for developing web applications entirely within a web browser. It uses VisualWorks Smalltalk, the Seaside framework, and object-relational mapping to allow users to build, test, and debug dynamic Ajax-enabled web applications directly in the browser. The document discusses where Cincom's Smalltalk products are currently and outlines priorities for future development, including internationalization support, 64-bit virtual machines, improved graphics capabilities, and leveraging multi-core processors. It also emphasizes the importance of advocacy for the Smalltalk language and community.
O autor expressa arrependimento por um relacionamento que terminou abruptamente no passado. Ele ouviu a música "I'm Sorry" de Brenda Lee, que o fez lembrar dos bons momentos vividos com a pessoa amada e o quanto perderam ao não terem mais chances de estarem juntos. Apesar da dor da separação, o autor afirma que valeu a pena viver aquele grande amor.
This document discusses the relationship between language, culture, and software. It covers several key points:
1) Language and culture are closely intertwined, with language representing the dominant sign of any given culture. Different languages reflect different worldviews.
2) Cultural variables like date formats, number formatting, and colors must be taken into account for software to be successfully localized for other cultures. Internationalization involves developing a cultural model and using international variables.
3) Localization requires adapting aspects of software like graphics, text directionality, and shortcuts to be appropriate for a given language and culture. This helps ensure software usability and understanding across cultures.
Newspeak: Evolving Smalltalk for the Age of the NetESUG
This document discusses Newspeak, an evolution of Smalltalk designed for the modern web. Newspeak aims to improve on Smalltalk's modularity, security, and interoperability using message-based programming and an object capability model without static state. It also aims to support cloud computing by enabling network-serviced applications that can run locally but sync seamlessly with server-hosted software and data.
The document discusses an English learning experience using various software programs. It identifies programs like Mr. Fixitup and Word Ace that were used for activities to improve writing accuracy to a goal of 80%. Class and lab activities utilized these programs, along with other resources like websites. The experience helped improve writing and the document recommends chat-based programs like Eliza that provide quick feedback.
Magritte is a tool that allows users to describe data once and have that description used across multiple contexts. It supports generating viewers, editors, reports, and queries for XML, relational databases, and object-oriented databases from a single data description. Magritte also enables customizing the description for initialization, adaptation to different formats like JSON, and validation for end users.
This document provides an overview of test driven development (TDD). It defines TDD as first writing an initially failing test case that defines a requirement, then producing just enough code to pass that test, and refactoring the new code. The document outlines the basic TDD steps, what can be tested, advantages of TDD like improved design and reduced bugs, and provides an example of incrementally developing a method using TDD.
Review of old topic regarding dependency injection. Why it's still important and actual in the industry. Will look into more depth of this is handled in Episerver and related libraries.
Web Velocity is a tool for developing web applications entirely within a web browser. It uses VisualWorks Smalltalk, the Seaside framework, and object-relational mapping to allow users to build, test, and debug dynamic Ajax-enabled web applications directly in the browser. The document discusses where Cincom's Smalltalk products are currently and outlines priorities for future development, including internationalization support, 64-bit virtual machines, improved graphics capabilities, and leveraging multi-core processors. It also emphasizes the importance of advocacy for the Smalltalk language and community.
O autor expressa arrependimento por um relacionamento que terminou abruptamente no passado. Ele ouviu a música "I'm Sorry" de Brenda Lee, que o fez lembrar dos bons momentos vividos com a pessoa amada e o quanto perderam ao não terem mais chances de estarem juntos. Apesar da dor da separação, o autor afirma que valeu a pena viver aquele grande amor.
This document discusses the relationship between language, culture, and software. It covers several key points:
1) Language and culture are closely intertwined, with language representing the dominant sign of any given culture. Different languages reflect different worldviews.
2) Cultural variables like date formats, number formatting, and colors must be taken into account for software to be successfully localized for other cultures. Internationalization involves developing a cultural model and using international variables.
3) Localization requires adapting aspects of software like graphics, text directionality, and shortcuts to be appropriate for a given language and culture. This helps ensure software usability and understanding across cultures.
Newspeak: Evolving Smalltalk for the Age of the NetESUG
This document discusses Newspeak, an evolution of Smalltalk designed for the modern web. Newspeak aims to improve on Smalltalk's modularity, security, and interoperability using message-based programming and an object capability model without static state. It also aims to support cloud computing by enabling network-serviced applications that can run locally but sync seamlessly with server-hosted software and data.
The document discusses an English learning experience using various software programs. It identifies programs like Mr. Fixitup and Word Ace that were used for activities to improve writing accuracy to a goal of 80%. Class and lab activities utilized these programs, along with other resources like websites. The experience helped improve writing and the document recommends chat-based programs like Eliza that provide quick feedback.
Magritte is a tool that allows users to describe data once and have that description used across multiple contexts. It supports generating viewers, editors, reports, and queries for XML, relational databases, and object-oriented databases from a single data description. Magritte also enables customizing the description for initialization, adaptation to different formats like JSON, and validation for end users.
This document provides an overview of Georg Heeg eK, a consulting and training company focused on Smalltalk. It discusses the history and current state of Smalltalk, opportunities for integrating Smalltalk and .NET technologies via an approach called DotNETConnect, and the future of Smalltalk platforms gaining mobility.
This document provides an overview of OpenFrameworks for Flash developers. It includes:
1. An introduction to OpenFrameworks and how it can be used to create C++ applications with less hassle than traditional methods.
2. A breakdown of the basic structure of an OpenFrameworks application including the main classes and functions.
3. Step-by-step explanations of three example OpenFrameworks projects that create circles, an animation, and particles.
4. Additional resources for learning more about OpenFrameworks, creative coding, and getting involved in the OpenFrameworks community.
First day of slides for @GAFFTA workshop http://www.gaffta.org/2012/07/24/hacking-the-kinect-with-openframeworks/
Part 1 of the live stream : http://www.youtube.com/watch?v=WXfy8Cuje-0&feature=plcp
Part 2 of the live stream :
http://www.youtube.com/watch?v=I80FsOlMPj8&feature=plcp
Oleksii Moskalenko "Continuous Delivery of ML Pipelines to Production"Fwdays
Here in DS team in WIX we want to help to create stunning sites by applying recent achievement of AI research to production. Since Data Science engineering practices are still not fully shaped we found out that it is crucial to bring the best practices from software engineering - give Data Scientist ability to deliver models fast without loss in quality and computation efficiency to stay competitive in this overhyped market. To achieve this we are developing our own infrastructure for creating pipelines and deploying them to production with minimum (to none) engineer involvement.
This talk will cover initial motivation, solved technical issues and lessons learned while building such ML delivery system.
Website: https://fwdays.com/en/event/data-science-fwdays-2019/review/continuous-delivery-of-ml-pipelines-to-production
This PDF serves as a practical guide to microprocessors and controllers for electrical engineering students at Sarvajanik College of Engineering and Technology (SCET GTU). It goes beyond theory, offering practical solutions and applications tailored to the SCET GTU curriculum.
This resource aims to equip students with the skills to implement and utilize microprocessors and controllers effectively in real-world electrical engineering projects.
The Ring programming language version 1.3 book - Part 8 of 88Mahmoud Samir Fayed
This document provides instructions for building Ring from source code on different platforms, including Windows, Linux, and macOS. It describes how to obtain the Ring source code from GitHub, install any required libraries, generate code for Ring extensions, and build the Ring compiler and virtual machine. The document also notes that Ring is open source under the MIT license and welcomes community contributions in areas like documentation, testing, samples, applications, editor support, libraries, and the compiler/VM code itself.
Using Clojure, NoSQL Databases and Functional-Style JavaScript to Write Gext-...Stefan Richter
The document is a presentation about building next-generation HTML5 apps using Clojure, NoSQL databases, and functional JavaScript. It discusses how the presenter built an HTML5 client for their software company's app using these technologies that runs on all modern browsers and mobile platforms like iPhone and Android, avoiding the need to build separate native apps. The presentation focuses on their use of functional programming principles in JavaScript to structure the client code.
Modelica-OpenModelica-slides para aprender.pdfCarlos Paredes
This document summarizes Peter Fritzson's presentation on modeling, simulation, and development of cyber-physical systems with OpenModelica and FMI. It discusses industrial challenges for complex cyber-physical systems and introduces OpenModelica as a free, open-source language and environment for modeling multi-domain systems. It provides examples of Modelica models for various applications like robotics, automotive, power plants, and more.
Model driven development promised faster development, increased quality, and better maintainability through automated code generation from models. In reality, modeling tools like UML were not domain-specific enough and could not bridge the gap between problem and solution domains. True model driven engineering requires domain-specific modeling languages that support building and executing theories of the system being developed.
Elements of DDD with ASP.NET MVC & Entity Framework Code FirstEnea Gabriel
The document discusses elements of Domain-Driven Design (DDD) when building applications with ASP.NET MVC and Entity Framework Code First. It emphasizes modeling the application around the business domain, using tools like EF Code First and dependency injection frameworks to decouple layers and enable unit testing. The presentation provides an overview of DDD concepts and techniques for applying them with ASP.NET MVC and EF Code First to build loosely coupled, testable architectures focused on the business domain.
This document provides an introduction to programming with C# and the .NET Framework. It discusses what computer programming is, defines the key phases of programming like problem definition, algorithm design, coding, testing and debugging. It then covers the basics of a "Hello World" C# program including code structure, formatting and execution. The document also introduces the .NET Framework, Visual Studio IDE and MSDN library as essential tools and resources for C# programming.
This document describes a presentation for a project called Game Studio. It includes sections on supervisors and members, agenda, objectives, problems in current game development, motivation, software currently in the market, system architecture including the IDE, event system, database, and more. It also describes features developed like graphics and texture designers. Future work, challenges, and a conclusion are provided.
The document discusses design patterns including the Gang of Four book, UML class diagrams, and categories of design patterns such as creational, structural, and behavioral patterns. It provides definitions and examples of specific design patterns including abstract factory, factory method, observer, and bridge patterns. Key aspects like intent, participants, collaborations, and implementations are covered for some of the patterns.
Takes the reader through the various components of windowing systems, and how to develop and benchmark various Graphics applications using OpenGL and other toolsets. Also includes a Cheatsheet that covers various terminologies used in the Graphics world.
Pragmatic Model Driven Development using openArchitectureWareMichael Vorburger
The document discusses Odyssey Financial Technologies' use of Pragmatic Model Driven Development (MDD) using the openArchitectureWare framework. It positions their approach within the broader MDD/MDA landscape and describes openArchitectureWare and how it is used to generate code from models. Their Eclipse-based modeling tools are demonstrated, which utilize domain-specific languages to model different artifact types through a graphical interface.
This document provides an overview of an Eclipse e4 tutorial, including the theory and labs covered. The theory section will discuss the e4 programming model, workbench model, and styling in e4. The labs will involve programming the model, creating an RCP application from scratch, and restyling the Contacts demo with CSS. Instructions are provided for installing the necessary files and examples.
Testing is fundamental in software development. Quality gates demand high coverage levels, pull requests need sufficient tests, leading to teams spending considerable time writing and maintaining them. But are we using our tests to their full potential?
'If code is hard to test, the design can be improved'. Starting from this mantra, this deep-dive session unveils hints to simplify code, break-down complexity, and effectively use functional programming. We'll delve into topics like fixture creep, partial mocks, onion architecture, and pure functions, providing numerous best practices and practical tips for your testing.
Be warned: This session may significantly disrupt your work routine and will likely change how you see testing. Attend at your own risk.
Workshop: Identifying concept inventories in agile programmingESUG
This document discusses the development of a concept inventory to identify common misconceptions in agile programming and object-oriented development. The project aims to strengthen collaboration between INRIA/Lille and ÉTS/UQAM by creating a concept inventory that can be used to improve teaching of agile development with object-oriented languages like TypeScript, JavaScript, and Pharo. The methodology involves identifying misconceptions, proposing a concept inventory, and validating it in courses by measuring understanding before and after instruction. A workshop will help identify initial misconceptions in Smalltalk/Pharo by capturing them in a collaborative tool.
This document proposes integrating documentation into the Pharo language metamodel and environment to improve documentation support. It suggests making documentation first-class citizens in Pharo by providing built-in support and a minimal API, which would allow tight integration with development tools and future extensions without requiring grammar changes or large efforts. This could improve documentation quality by enabling direct references between code and documentation and automatic logging of documentation usage.
More Related Content
Similar to Integration of Cincom Smalltalk Systems
This document provides an overview of Georg Heeg eK, a consulting and training company focused on Smalltalk. It discusses the history and current state of Smalltalk, opportunities for integrating Smalltalk and .NET technologies via an approach called DotNETConnect, and the future of Smalltalk platforms gaining mobility.
This document provides an overview of OpenFrameworks for Flash developers. It includes:
1. An introduction to OpenFrameworks and how it can be used to create C++ applications with less hassle than traditional methods.
2. A breakdown of the basic structure of an OpenFrameworks application including the main classes and functions.
3. Step-by-step explanations of three example OpenFrameworks projects that create circles, an animation, and particles.
4. Additional resources for learning more about OpenFrameworks, creative coding, and getting involved in the OpenFrameworks community.
First day of slides for @GAFFTA workshop http://www.gaffta.org/2012/07/24/hacking-the-kinect-with-openframeworks/
Part 1 of the live stream : http://www.youtube.com/watch?v=WXfy8Cuje-0&feature=plcp
Part 2 of the live stream :
http://www.youtube.com/watch?v=I80FsOlMPj8&feature=plcp
Oleksii Moskalenko "Continuous Delivery of ML Pipelines to Production"Fwdays
Here in DS team in WIX we want to help to create stunning sites by applying recent achievement of AI research to production. Since Data Science engineering practices are still not fully shaped we found out that it is crucial to bring the best practices from software engineering - give Data Scientist ability to deliver models fast without loss in quality and computation efficiency to stay competitive in this overhyped market. To achieve this we are developing our own infrastructure for creating pipelines and deploying them to production with minimum (to none) engineer involvement.
This talk will cover initial motivation, solved technical issues and lessons learned while building such ML delivery system.
Website: https://fwdays.com/en/event/data-science-fwdays-2019/review/continuous-delivery-of-ml-pipelines-to-production
This PDF serves as a practical guide to microprocessors and controllers for electrical engineering students at Sarvajanik College of Engineering and Technology (SCET GTU). It goes beyond theory, offering practical solutions and applications tailored to the SCET GTU curriculum.
This resource aims to equip students with the skills to implement and utilize microprocessors and controllers effectively in real-world electrical engineering projects.
The Ring programming language version 1.3 book - Part 8 of 88Mahmoud Samir Fayed
This document provides instructions for building Ring from source code on different platforms, including Windows, Linux, and macOS. It describes how to obtain the Ring source code from GitHub, install any required libraries, generate code for Ring extensions, and build the Ring compiler and virtual machine. The document also notes that Ring is open source under the MIT license and welcomes community contributions in areas like documentation, testing, samples, applications, editor support, libraries, and the compiler/VM code itself.
Using Clojure, NoSQL Databases and Functional-Style JavaScript to Write Gext-...Stefan Richter
The document is a presentation about building next-generation HTML5 apps using Clojure, NoSQL databases, and functional JavaScript. It discusses how the presenter built an HTML5 client for their software company's app using these technologies that runs on all modern browsers and mobile platforms like iPhone and Android, avoiding the need to build separate native apps. The presentation focuses on their use of functional programming principles in JavaScript to structure the client code.
Modelica-OpenModelica-slides para aprender.pdfCarlos Paredes
This document summarizes Peter Fritzson's presentation on modeling, simulation, and development of cyber-physical systems with OpenModelica and FMI. It discusses industrial challenges for complex cyber-physical systems and introduces OpenModelica as a free, open-source language and environment for modeling multi-domain systems. It provides examples of Modelica models for various applications like robotics, automotive, power plants, and more.
Model driven development promised faster development, increased quality, and better maintainability through automated code generation from models. In reality, modeling tools like UML were not domain-specific enough and could not bridge the gap between problem and solution domains. True model driven engineering requires domain-specific modeling languages that support building and executing theories of the system being developed.
Elements of DDD with ASP.NET MVC & Entity Framework Code FirstEnea Gabriel
The document discusses elements of Domain-Driven Design (DDD) when building applications with ASP.NET MVC and Entity Framework Code First. It emphasizes modeling the application around the business domain, using tools like EF Code First and dependency injection frameworks to decouple layers and enable unit testing. The presentation provides an overview of DDD concepts and techniques for applying them with ASP.NET MVC and EF Code First to build loosely coupled, testable architectures focused on the business domain.
This document provides an introduction to programming with C# and the .NET Framework. It discusses what computer programming is, defines the key phases of programming like problem definition, algorithm design, coding, testing and debugging. It then covers the basics of a "Hello World" C# program including code structure, formatting and execution. The document also introduces the .NET Framework, Visual Studio IDE and MSDN library as essential tools and resources for C# programming.
This document describes a presentation for a project called Game Studio. It includes sections on supervisors and members, agenda, objectives, problems in current game development, motivation, software currently in the market, system architecture including the IDE, event system, database, and more. It also describes features developed like graphics and texture designers. Future work, challenges, and a conclusion are provided.
The document discusses design patterns including the Gang of Four book, UML class diagrams, and categories of design patterns such as creational, structural, and behavioral patterns. It provides definitions and examples of specific design patterns including abstract factory, factory method, observer, and bridge patterns. Key aspects like intent, participants, collaborations, and implementations are covered for some of the patterns.
Takes the reader through the various components of windowing systems, and how to develop and benchmark various Graphics applications using OpenGL and other toolsets. Also includes a Cheatsheet that covers various terminologies used in the Graphics world.
Pragmatic Model Driven Development using openArchitectureWareMichael Vorburger
The document discusses Odyssey Financial Technologies' use of Pragmatic Model Driven Development (MDD) using the openArchitectureWare framework. It positions their approach within the broader MDD/MDA landscape and describes openArchitectureWare and how it is used to generate code from models. Their Eclipse-based modeling tools are demonstrated, which utilize domain-specific languages to model different artifact types through a graphical interface.
This document provides an overview of an Eclipse e4 tutorial, including the theory and labs covered. The theory section will discuss the e4 programming model, workbench model, and styling in e4. The labs will involve programming the model, creating an RCP application from scratch, and restyling the Contacts demo with CSS. Instructions are provided for installing the necessary files and examples.
Testing is fundamental in software development. Quality gates demand high coverage levels, pull requests need sufficient tests, leading to teams spending considerable time writing and maintaining them. But are we using our tests to their full potential?
'If code is hard to test, the design can be improved'. Starting from this mantra, this deep-dive session unveils hints to simplify code, break-down complexity, and effectively use functional programming. We'll delve into topics like fixture creep, partial mocks, onion architecture, and pure functions, providing numerous best practices and practical tips for your testing.
Be warned: This session may significantly disrupt your work routine and will likely change how you see testing. Attend at your own risk.
Similar to Integration of Cincom Smalltalk Systems (20)
Workshop: Identifying concept inventories in agile programmingESUG
This document discusses the development of a concept inventory to identify common misconceptions in agile programming and object-oriented development. The project aims to strengthen collaboration between INRIA/Lille and ÉTS/UQAM by creating a concept inventory that can be used to improve teaching of agile development with object-oriented languages like TypeScript, JavaScript, and Pharo. The methodology involves identifying misconceptions, proposing a concept inventory, and validating it in courses by measuring understanding before and after instruction. A workshop will help identify initial misconceptions in Smalltalk/Pharo by capturing them in a collaborative tool.
This document proposes integrating documentation into the Pharo language metamodel and environment to improve documentation support. It suggests making documentation first-class citizens in Pharo by providing built-in support and a minimal API, which would allow tight integration with development tools and future extensions without requiring grammar changes or large efforts. This could improve documentation quality by enabling direct references between code and documentation and automatic logging of documentation usage.
The Pharo Debugger and Debugging tools: Advances and RoadmapESUG
This document outlines advances and the roadmap for debugging tools in Pharo. It discusses recent improvements to the debugging infrastructure, including architectural changes and new debugging commands. It also describes upcoming work, such as additional infrastructure improvements, an emergency debugger, support for meta-object protocols, a redesigned user experience, a remote debugger, and improved documentation. The document concludes by inviting participants to help evaluate new debugging experiments.
The document describes Sequence, a pipeline modeling and discrete event simulation framework developed in Pharo Smalltalk. Sequence allows describing system resources, building blocks that use those resources, assembling scenarios from blocks, collecting information during simulated runs, and interactively exploring system traces. The framework implements a discrete event simulation engine with event streams that model periodic processes and resources. Sequence provides tools for evaluating system performance through simulation before complete hardware is available.
Migration process from monolithic to micro frontend architecture in mobile ap...ESUG
This document discusses migrating a monolithic mobile application called CARL Touch to a micro frontend architecture. It presents a migration process involving three steps: 1) analysis of the monolithic codebase, 2) identification of potential micro frontends, and 3) transformation of the codebase to implement the identified micro frontends. Previous experiments at Berger-Levrault involving two teams migrating CARL Touch provided insights. The proposed process uses static and dynamic analysis, code visualization and clustering techniques to help identify optimal micro frontends and transform the codebase in a semi-automated manner.
Analyzing Dart Language with Pharo: Report and early resultsESUG
This document summarizes an analysis of the Dart programming language using tools in the Pharo environment. It describes generating a parser for Dart using SmaCC, which produces an AST. It also details defining a Famix meta-model for Dart and the Chartreuse-D importer that creates a FamixDart model from the AST. Future work is outlined, including improving SmaCCDart, continuing to develop the FamixDart meta-model, and handling dynamic types when importing associations. The goal is to analyze Dart and explore modeling Flutter applications.
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6ESUG
This document summarizes research on transpiling Pharo classes to JavaScript using ECMAScript 5 versus ECMAScript 6. It finds that transpiling to ES6 provides benefits like significantly faster load times, improved benchmark performance up to 43%, and more idiomatic code compared to ES5. However, fully emulating Smalltalk semantics like metaclass inheritance remains challenging when targeting JavaScript.
The document presents an approach for automated test generation from software models and execution traces. Key aspects of the approach include using metamodels to represent the codebase, values, and desired unit test structure. Models are built from the codebase and traces, then transformations are applied to generate unit tests conforming to the test metamodel. Abstract syntax trees are used to export the generated tests to code. The approach aims to generate tests that are relevant, readable and maintainable without relying on existing tests. An example demonstrates generating a JUnit test from an application class.
Genetic programming is used to generate unit tests by evolving test code via genetic algorithms to maximize coverage. Tests are represented as chromosomes of object and message statements. The genetic algorithm selects tests based on coverage, combines tests through crossover, and replaces tests in the population over generations to find optimal test sequences. Future work includes improving path exploration and comparing with other test generation tools.
Threaded-Execution and CPS Provide Smooth Switching Between Execution ModesESUG
Threaded execution and continuation-passing style (CPS) allow for smooth switching between execution modes in Zag Smalltalk. Threaded execution interprets code as a sequence of addresses like bytecode but is 2.3-4.7 times faster, while CPS passes continuations explicitly like in functional languages and is 3-5 times faster than bytecode. Both approaches allow fallback to debugging. The implementation shares context and stack between modes to easily switch with proper object structures.
Exploring GitHub Actions through EGAD: An Experience ReportESUG
This document summarizes an experience report on exploring GitHub Actions through EGAD, a tool for GitHub Action analysis. It discusses three key lessons learned: 1) Composing a story by documenting tasks and linking documentation to code, 2) Navigating custom views to conduct research, and 3) Supporting onboarding of researchers by assigning mentors, scheduling meetings, and encouraging use of resources. EGAD takes workflow YAML files, wraps them in a domain model to provide context, and allows inspecting examples to fully explore the GitHub Actions domain model.
Pharo: a reflective language A first systematic analysis of reflective APIsESUG
This document analyzes the reflective features and APIs in Pharo, a reflective programming language. It presents a catalog of Pharo's reflective APIs and analyzes how they relate to metaobjects. The analysis highlights areas for potential improvement, such as providing solutions for intercession on state reads/writes and addressing constraints when changing an object's class. The document contributes to understanding Pharo's reflective design and its evolution over time.
The document discusses garbage collector tuning for applications with pathological allocation patterns. It begins by explaining the motivation and issues caused by pathological patterns, such as applications taking over an hour and a half to run. It then provides an overview of garbage collection and how allocation patterns can impact performance. The document dives into two specific tuning techniques - increasing the full GC threshold to prevent premature full GCs from being triggered, and increasing the tenuring threshold to avoid large objects residing in the remembered set and slowing down scavenges. These tunings resulted in significant performance improvements for the sample DataFrame application, reducing the run time from over an hour and a half to around seven minutes.
Improving Performance Through Object Lifetime Profiling: the DataFrame CaseESUG
This document discusses improving garbage collection performance in Pharo through object lifetime profiling. It presents Illimani, a lifetime profiler developed for Pharo. Illimani was used to profile the lifetimes of objects created when loading a large DataFrame. The profiling revealed that most objects had short lifetimes, suggesting the garbage collector could be tuned. Tuning the garbage collector parameters based on the lifetime profiles improved the performance of loading the DataFrame.
This document discusses the past, present, and future of Pharo DataFrames. It began as a student project but has evolved into a mature project with dedicated engineers, improving performance and adding functionality. Future plans include further performance enhancements, adding more functionality, better integration with other Pharo projects, and support for big data. Evaluation of DataFrames is also planned.
This document discusses issues with thisContext in the Pharo debugger not correctly representing the execution context and being the DoIt context instead. This was fixed in Pharo12 by making thisContext a variable object that is wrapped in a DoItVariable, so the debugger context is used. When inspecting or doing DoIt, the doIt Variable is pushed and read to provide the proper execution context.
This document proposes using websockets to display fencing scores and a chronometer from an arena server to mobile phones over the internet in real-time. It includes links to video examples of a chronometer display and photos from fencing competitions.
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScriptESUG
This document discusses PharoJS, which allows developers to develop applications in Pharo and then export them to run as JavaScript applications. PharoJS enables 100% of Pharo code to be executed during development, and then 100% of that same code is exported to JavaScript to be executed in production. The document also briefly mentions deployment options for exported PharoJS applications like GitHub Pages and GitHub Actions.
The document contains testimonials from participants of the Pharo MOOC praising its effectiveness at teaching object-oriented design. It also announces an upcoming advanced design MOOC that will have over 60 lectures, slides, videos and an exercise booklet. Finally, it provides links to the course websites and encourages people to stay tuned for the new MOOC.
A New Architecture Reconciling Refactorings and TransformationsESUG
This document discusses reconciling refactorings and transformations in software engineering. It proposes a new architecture where refactorings decorate transformations by checking preconditions and composing multiple transformations. Refactorings ensure transformations are applied safely while transformations focus on model changes. Open questions remain around precondition handling and composition semantics. The goals are to reduce duplication, support custom refactorings/transformations, and provide a modern driver-based user interface.
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUpanagenda
Webinar Recording: https://www.panagenda.com/webinars/hcl-notes-und-domino-lizenzkostenreduzierung-in-der-welt-von-dlau/
DLAU und die Lizenzen nach dem CCB- und CCX-Modell sind für viele in der HCL-Community seit letztem Jahr ein heißes Thema. Als Notes- oder Domino-Kunde haben Sie vielleicht mit unerwartet hohen Benutzerzahlen und Lizenzgebühren zu kämpfen. Sie fragen sich vielleicht, wie diese neue Art der Lizenzierung funktioniert und welchen Nutzen sie Ihnen bringt. Vor allem wollen Sie sicherlich Ihr Budget einhalten und Kosten sparen, wo immer möglich. Das verstehen wir und wir möchten Ihnen dabei helfen!
Wir erklären Ihnen, wie Sie häufige Konfigurationsprobleme lösen können, die dazu führen können, dass mehr Benutzer gezählt werden als nötig, und wie Sie überflüssige oder ungenutzte Konten identifizieren und entfernen können, um Geld zu sparen. Es gibt auch einige Ansätze, die zu unnötigen Ausgaben führen können, z. B. wenn ein Personendokument anstelle eines Mail-Ins für geteilte Mailboxen verwendet wird. Wir zeigen Ihnen solche Fälle und deren Lösungen. Und natürlich erklären wir Ihnen das neue Lizenzmodell.
Nehmen Sie an diesem Webinar teil, bei dem HCL-Ambassador Marc Thomas und Gastredner Franz Walder Ihnen diese neue Welt näherbringen. Es vermittelt Ihnen die Tools und das Know-how, um den Überblick zu bewahren. Sie werden in der Lage sein, Ihre Kosten durch eine optimierte Domino-Konfiguration zu reduzieren und auch in Zukunft gering zu halten.
Diese Themen werden behandelt
- Reduzierung der Lizenzkosten durch Auffinden und Beheben von Fehlkonfigurationen und überflüssigen Konten
- Wie funktionieren CCB- und CCX-Lizenzen wirklich?
- Verstehen des DLAU-Tools und wie man es am besten nutzt
- Tipps für häufige Problembereiche, wie z. B. Team-Postfächer, Funktions-/Testbenutzer usw.
- Praxisbeispiele und Best Practices zum sofortigen Umsetzen
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdfChart Kalyan
A Mix Chart displays historical data of numbers in a graphical or tabular form. The Kalyan Rajdhani Mix Chart specifically shows the results of a sequence of numbers over different periods.
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfMalak Abu Hammad
Discover how MongoDB Atlas and vector search technology can revolutionize your application's search capabilities. This comprehensive presentation covers:
* What is Vector Search?
* Importance and benefits of vector search
* Practical use cases across various industries
* Step-by-step implementation guide
* Live demos with code snippets
* Enhancing LLM capabilities with vector search
* Best practices and optimization strategies
Perfect for developers, AI enthusiasts, and tech leaders. Learn how to leverage MongoDB Atlas to deliver highly relevant, context-aware search results, transforming your data retrieval process. Stay ahead in tech innovation and maximize the potential of your applications.
#MongoDB #VectorSearch #AI #SemanticSearch #TechInnovation #DataScience #LLM #MachineLearning #SearchTechnology
Generating privacy-protected synthetic data using Secludy and MilvusZilliz
During this demo, the founders of Secludy will demonstrate how their system utilizes Milvus to store and manipulate embeddings for generating privacy-protected synthetic data. Their approach not only maintains the confidentiality of the original data but also enhances the utility and scalability of LLMs under privacy constraints. Attendees, including machine learning engineers, data scientists, and data managers, will witness first-hand how Secludy's integration with Milvus empowers organizations to harness the power of LLMs securely and efficiently.
Skybuffer SAM4U tool for SAP license adoptionTatiana Kojar
Manage and optimize your license adoption and consumption with SAM4U, an SAP free customer software asset management tool.
SAM4U, an SAP complimentary software asset management tool for customers, delivers a detailed and well-structured overview of license inventory and usage with a user-friendly interface. We offer a hosted, cost-effective, and performance-optimized SAM4U setup in the Skybuffer Cloud environment. You retain ownership of the system and data, while we manage the ABAP 7.58 infrastructure, ensuring fixed Total Cost of Ownership (TCO) and exceptional services through the SAP Fiori interface.
Introduction of Cybersecurity with OSS at Code Europe 2024Hiroshi SHIBATA
I develop the Ruby programming language, RubyGems, and Bundler, which are package managers for Ruby. Today, I will introduce how to enhance the security of your application using open-source software (OSS) examples from Ruby and RubyGems.
The first topic is CVE (Common Vulnerabilities and Exposures). I have published CVEs many times. But what exactly is a CVE? I'll provide a basic understanding of CVEs and explain how to detect and handle vulnerabilities in OSS.
Next, let's discuss package managers. Package managers play a critical role in the OSS ecosystem. I'll explain how to manage library dependencies in your application.
I'll share insights into how the Ruby and RubyGems core team works to keep our ecosystem safe. By the end of this talk, you'll have a better understanding of how to safeguard your code.
Fueling AI with Great Data with Airbyte WebinarZilliz
This talk will focus on how to collect data from a variety of sources, leveraging this data for RAG and other GenAI use cases, and finally charting your course to productionalization.
Letter and Document Automation for Bonterra Impact Management (fka Social Sol...Jeffrey Haguewood
Sidekick Solutions uses Bonterra Impact Management (fka Social Solutions Apricot) and automation solutions to integrate data for business workflows.
We believe integration and automation are essential to user experience and the promise of efficient work through technology. Automation is the critical ingredient to realizing that full vision. We develop integration products and services for Bonterra Case Management software to support the deployment of automations for a variety of use cases.
This video focuses on automated letter generation for Bonterra Impact Management using Google Workspace or Microsoft 365.
Interested in deploying letter generation automations for Bonterra Impact Management? Contact us at sales@sidekicksolutionsllc.com to discuss next steps.
HCL Notes and Domino License Cost Reduction in the World of DLAUpanagenda
Webinar Recording: https://www.panagenda.com/webinars/hcl-notes-and-domino-license-cost-reduction-in-the-world-of-dlau/
The introduction of DLAU and the CCB & CCX licensing model caused quite a stir in the HCL community. As a Notes and Domino customer, you may have faced challenges with unexpected user counts and license costs. You probably have questions on how this new licensing approach works and how to benefit from it. Most importantly, you likely have budget constraints and want to save money where possible. Don’t worry, we can help with all of this!
We’ll show you how to fix common misconfigurations that cause higher-than-expected user counts, and how to identify accounts which you can deactivate to save money. There are also frequent patterns that can cause unnecessary cost, like using a person document instead of a mail-in for shared mailboxes. We’ll provide examples and solutions for those as well. And naturally we’ll explain the new licensing model.
Join HCL Ambassador Marc Thomas in this webinar with a special guest appearance from Franz Walder. It will give you the tools and know-how to stay on top of what is going on with Domino licensing. You will be able lower your cost through an optimized configuration and keep it low going forward.
These topics will be covered
- Reducing license cost by finding and fixing misconfigurations and superfluous accounts
- How do CCB and CCX licenses really work?
- Understanding the DLAU tool and how to best utilize it
- Tips for common problem areas, like team mailboxes, functional/test users, etc
- Practical examples and best practices to implement right away
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slackshyamraj55
Discover the seamless integration of RPA (Robotic Process Automation), COMPOSER, and APM with AWS IDP enhanced with Slack notifications. Explore how these technologies converge to streamline workflows, optimize performance, and ensure secure access, all while leveraging the power of AWS IDP and real-time communication via Slack notifications.
This presentation provides valuable insights into effective cost-saving techniques on AWS. Learn how to optimize your AWS resources by rightsizing, increasing elasticity, picking the right storage class, and choosing the best pricing model. Additionally, discover essential governance mechanisms to ensure continuous cost efficiency. Whether you are new to AWS or an experienced user, this presentation provides clear and practical tips to help you reduce your cloud costs and get the most out of your budget.
Best 20 SEO Techniques To Improve Website Visibility In SERPPixlogix Infotech
Boost your website's visibility with proven SEO techniques! Our latest blog dives into essential strategies to enhance your online presence, increase traffic, and rank higher on search engines. From keyword optimization to quality content creation, learn how to make your site stand out in the crowded digital landscape. Discover actionable tips and expert insights to elevate your SEO game.
GraphRAG for Life Science to increase LLM accuracyTomaz Bratanic
GraphRAG for life science domain, where you retriever information from biomedical knowledge graphs using LLMs to increase the accuracy and performance of generated answers
Building Production Ready Search Pipelines with Spark and MilvusZilliz
Spark is the widely used ETL tool for processing, indexing and ingesting data to serving stack for search. Milvus is the production-ready open-source vector database. In this talk we will show how to use Spark to process unstructured data to extract vector representations, and push the vectors to Milvus vector database for search serving.
Ocean lotus Threat actors project by John Sitima 2024 (1).pptxSitimaJohn
Ocean Lotus cyber threat actors represent a sophisticated, persistent, and politically motivated group that poses a significant risk to organizations and individuals in the Southeast Asian region. Their continuous evolution and adaptability underscore the need for robust cybersecurity measures and international cooperation to identify and mitigate the threats posed by such advanced persistent threat groups.
3. 3
About Georg Heeg eK
Founded 1987, headquarter in Dortmund,
since 1996 in Zurich, since 1999 in Koethen/ Anhalt
Consulting- and training company in Smalltalk
Hotline support, maintenance, bug-fixes for
ObjectStudio, VisualWorks and Visual Smalltalk
VM-laboratory for VisualWorks and ObjectStudio
Porting service of old VisualWorks applications to 5i/ 7
Technology-partner of
Corporate Mission: Make Sophisticated Projects
a Success for the Customer!
4. 4
Som e Background
1994/ 96 Cincom bought ObjectStudio
1999 Cincom bought VisualWorks
ObjectStudio customers keep asking for
VisualWorks features
ObjectStudio 8 integrates VisualWorks
and ObjectStudio
5. 5
ObjectStudio and VisualW orks
Both ObjectStudio and VisualWorks
are Smalltalk systems.
Both
are owned by the same company Cincom
VisualWorks
like Squeak goes back to the original Smalltalk-76/-78/-80
developments at Xerox PARC.
Originally called Smalltalk-80, ObjectWorks later
ObjectStudio
was developed as Enterprise Object-Oriented Development
Environment
Originally called Enfin.
6. 6
Key Features
Enfin/ ObjectStudio
Ease of Use
Enterprise Integration
Smalltalk-80/ ObjectWorks/ VisualWorks
Execution speed
Sophisticated meta-modelling features
Customers want both
Speed: always
Ease of use: to get started
Enterprise integration: mostly
meta-modeling: seldom
but if they need it, they outperform having it.
7. 7
From Forbes.COM
A press conference is called.
The media is alerted.
The top executives gather for much
backslapping and multisyllabic descriptions of
the synergistic opportunities abounding in this,
a fresh new partnership.
There's a champagne toast
and then the most extraordinary thing
happens
...nothing! Nothing at all.
http: / / www.forbes.com/ 2002/ 07/ 01/ 0701alliances.html
8. 8
Synergy doesn t W ork
VisualWorks VM for ObjectStudio
HPOS
Was started and
was not completed
Ideas to integrate ObjectStudio into .NET
didn t make it
9. 9
Theory: Sm alltalk is Different
In Smalltalk programming is modeling.
Thus every theory can be modeled well.
Thus every computer technology can be
modeled well
Thus every other Smalltalk system can
be modeled well.
11. 11
The Goal
Both ObjectStudio and VisualWorks live in the
same image the same time
Both Environments share the same Smalltalk
kernel and base classes to provide identical
functionality
Mixing and matching is seamlessly possible
Both ObjectStudio and VisualWorks application
Smalltalk code works unchanged
There will always be exceptions to this rule
12. 12
The Team
Suzanne Fortman (Program Director, Cincom Smalltalk)
Andreas Hiltner (ObjectStudio 8 Lead Engineer)
Mark Grinnell (ObjectStudio Lead Engineer)
Eduard Maydanik (GUI Engineer)
Kim Thomas (Testing, Packaging, Support)
Eliot Miranda (VisualWorks Lead Engineer)
Alan Knight (Store Consultant)
Jörg Belger (VisualWorks Wrapper)
James Robertson (Product Manager)
Georg Heeg (Idea)
Helge Nowak (Sales Engineer)
Monika Laurent (Marketing)
15. 15
End of First Step
Smalltalk works
UI does not work
Primitives don t work
16. 16
The Second Step: Prim itives
Jörg Belger starts working at Georg Heeg eK
Köthen October 1, 2004
Coauthor of the original Ce VM as intern (100 days)
Coauthor of computer games
Background in C+ +
ObjectStudio MFC DLL functions are
implemented
One per one at a time
17. 17
The First W indow Opens
User Conference in Frankfurt
December 2004
First customers see it and are impressed
18. 18
Second Step: Proof of Concept
One primitive at a time
One day per primitive
But
There are alone 450 MFC primitives
Second step is stopped in January 2005
19. 19
Third Step: Do it Com pletely
Take the entire ObjectStudio C/ C+ + -
Code
Make it a VisualWorks callable DLL
Started in February 2005
20. 20
June 2 0 0 5
Alpha1 Version made
First time complete
But not tested or bug-free
21. 21
Forth step: Check for Com patibility
Run all components of the system
If they work differently
Add compatibility
Decide for incompatibility
seldom and easy to understand
E.g.: BOSS instead of BinaryObjectStreams
Run real Customer Applications
Details: see later
22. 22
Septem ber 2 0 0 6
Ready for Beta1 at the end of the month
24. 24
I m plem entation Strategy
KISS
Keep modifications of ObjectStudio source
code to a minimum
In Smalltalk and C/ C+ +
Do not modify VisualWorks VM unnecessarily
Fix bugs
Additional features in VW 7.4.1/ 7.5
Use LoadLibraryEx() instead of LoadLibrary()
Event handling in the image
25. 25
General Concepts
Model ObjectStudio by VisualWorks Smalltalk
Preserve syntax and semantics
ObjectStudioCompiler
Embed in a NameSpace
Share code
Collections
Magnitude
Semaphore
Boolean
Undefined Object
26. 26
VisualW orks Nam espaces
Goal
(In-)visibility of global names
Successor to
GlobalDictionary
PoolDictionary
ClassPools
27. 27
System , the GlobalDictionary
In Classic ObjectStudio all global names
live in the Globaldictionary called System
In ObjectStudio 8
Classes live in Namespace ObjectStudio
Globals live in Namespace
ObjectStudio.Globals
Non Identifier entries are Stored in an
IdentityDictionary
28. 28
PoolDictionaries
In Classic ObjectStudio
PoolDictionaries are globals which are IdentityDictionaries
OLEConstants := IdentyDictionary new.
OLEConstants at: # ADVF_DATAONSTOP put: 64.
In ObjectStudio 8
Extra declaration is needed (manually)
ObjectStudio.Globals defineNameSpace: #OLEConstants
Entries in these Dictionaries become SharedVariables with initializers
(automatically)
ObjectStudio.Globals.OLEConstants
defineSharedVariable: #ADVF_DATAONSTOP
private: false
constant: false
category: 'As yet unclassified'
initializer: '64'
30. 30
Special Renam ing
ObjectStudio defineSharedVariable: # Float
private: false
constant: true
category: 'ObjectStudio Compatibility 2'
initializer: Core.Double'
31. 31
Source Differences
ObjectStudio cls files
One class per file
With class definition: primary files
Class extension: secondary file
Different chunk file format
Method syntax differences
Semantic differences
32. 32
Parsing ObjectStudio Source Code
ObjectStudioCompiler
Calls ObjectStudioParser
ObjectStudioParser
Accepts ObjectStudio Syntax
Creates ObjectStudio Syntax compliant Syntax tree
Specifying to use ObjectStudio Syntax
classCompilerClass
compilerClass
Automatic source transformation of methods of
VisualWorks classes in cls files
33. 33
Syntax differences: Arrays and cond
f: n
^ { { [ n < = 1] [ 1] }
{ [ true] [ (self f: n - 1) * n] } } cond
f: n
^ n < 1
ifTrue: [ 1]
ifFalse: [ true
ifTrue: [ (self f: n - 1) * n]
ifFalse: [ ObjectStudio.Message
newValue: 'No condition satisfied'] ]
34. 34
Syntax differences: param eters
inc: n
n isNil ifTrue: [ n : = 0] .
^ n + 1
inc: _ _ n
| n |
n : = __n.
n isNil ifTrue: [ n : = 0] .
^ n + 1
35. 35
Som e Sem antic Differences
# (7)7(Array new: 1)
at: 1 put: 7
# (1)< Error>Array new add: 1
nil1[ : n | ] value: 1
Falsenil1 = 0 ifTrue: [ 1]
ObjectStudioVisualW orks
36. 36
Modifying ObjectStudio Parse Tree
ProgramNodeEnumerator subclass
OStudioTreeTransformer modifies parse tree
< osprim >
Blocks in literal arrays
Assignments to arguments
Enabling inner returns
Condition results
Substitutions
All this allows for VisualWorks Code generation
39. 39
Different file structure, first version
Reader for .txt and .cls files to get
ObjectStudio code into VisualWorks
ClassReader
Reads txt files and calls
ObjectStudioChangeScanner
ObjectStudioChangeScanner
Reads cls files
40. 40
Second Version: Source Code I ntegration
ObjectStudio.ApplicationDefintionStream
Original Classic ObjectStudio class
Reads .txt files
OStudioChunkSourceFileFormat
Lives in VisualWorks SourceFileFormat class
hierarchy
Reads and writes .cls files
Controls that .cls files
41. 41
ObjectStudio Sm alltalk and C
Strong interconnection between C and Smalltalk
They call each other all the time
There are five ways to call C
Direct primitives
PrimSpecRec
Numbered Primitives
<primitive: 123>
Named Primitives
< osprim: MFC openWindow>
< osprim: #myDll myfunc>
Module/ENFINModule
Programmatic creation of interface methods using osprim
ExternalProcedures
Programmatic creation of interface methods with C datatypes
43. 43
OPTR and _ oop
In ObjectStudio object pointers OPTR never move
In VisualWorks object pointer _oop are moved by the
garbage collector
ObjectStudio C code relies on not non moving OPTR
Solution:
Define class OPTR with wraps VisualWorks Oops for
ObjectStudio including C+ + reference counting
The real object pointers _oop are stored in a Smalltalk array
which is registered in the Visualworks registry
the index to this array is stored in class OPTR as variable
Reference counts are stored in a normal C array.
44. 44
OPTR class ( extract)
class __declspec(dllexport) OPTR;
typedef OPTR* POPTR;
class OPTR
{
public:
static OPTR& cpp_S2O(LONG value);
[ ]
private:
[ ]
enum Types { TYPE_NIL = 0, TYPE_NORMALOBJECT,
TYPE_NOTNORMALOBJECT, TYPE_UNKNOWN} ;
INT m_IndexOrOop; // index in objecttable or not normal
object
INT m_Type; // type of object
static INT s_NumObjects; // number of registered objects
static INT s_NextFreeObject; // index of next free object
in objecttable
static INT s_ObjectTable; // index of objecttable array in
visualworks registry
static INT* s_LinkTable; // array with linked registry slots
45. 45
Direct Prim itives
Look at definition
Re-implement
mostly in Smalltalk using existing
VisualWorks functionality
In rare cases replace by osprim
46. 46
Num bered Prim itives
< Primitive: 45>
Some are replaced by
VisualWorks Primitive
E.g. Object> > = =
< vwprimitive: 110>
VisualWorks implementation
For most
Auto-generate calling code
54. 54
Module/ EnfinModule
Autogenerate osprim
privateQueryVolum eNam e: aSmallInteger
< osprim: FILES PRIVATEQUERYDRIVENAME>
":Section Reference
privateQueryVolumeName: aSmallInteger
Description: Returns the name of a drive.
Assumptions: The drive number passed in is a small integer
starting with 1 for drive A: . This function returns
allways an empty strings on operating systems, which
do not support a drive concept.
[ ]
56. 56
ObjectStudio Unicode
In ObjectStudio 7
Two installations
Two Virtual Machines
Incompatible Images
Compatible Source Code
In ObjectStudio 8
One installation
One Virtual Machine
Two sets of DLLs
One image
Decision at start-up
58. 58
Calling Sm alltalk from C
PSend is implemented using
OESendMessageMany()
ASend is implemented using
OESendMessageMany()
whenIdleSend: aSelector to: aReceiver withArguments: anArray
"inserts the asend into the queue "
ASendSemaphore critical:
[ASendQueue addLast: (Core.MessageSend
receiver: aReceiver
selector: aSelector
arguments: (anArrayOrObject isArray
ifTrue: [anArrayOrObj
59. 59
The Process Model
VisualWorks process model
Many Smalltalk processes are running in different
priority.
Windows events are handled (almost) any time
Shared queues move the events to target processes
This is emplemented in C
ObjectStudio process model
The caller of all execution is the Windows Event
Loop
All Message Sends in the ASendQueue are executed
when the Windows Event is empty
This is implemented in C+ +
60. 60
Decision of July 2 0 0 6
Move EventLoop to Smalltalk
Available in vw-dev since August 29, 2006
Initialzing in class EventProcessingManager:
prim CallbackEventI nstall: aMethodSelector
"Inform the VM of the callback class (the receiver) and the callback
invocation
method selector for event processing."
| regNames |
regNames := ObjectMemory registrationNames.
((regNames includes: 'callbackEventClass')
and: [regNames includes: 'callbackEventSelector'])
ifTrue:
[ ObjectMemory registerObject: self
withEngineFor: 'callbackEventClass'.
ObjectMemory registerObject: aMethodSelector
withEngineFor: 'callbackEventSelector']
61. 61
Eventloop in Sm alltalk
Class EventProcessingManager
runs the loop
delegates all actions to the handler
Implemented in EventHandler class hierarchy
processEvents
| eventRecord |
handler canHandleMultipleEvents
ifFalse: [self blockEvents ifTrue: [^self]].
[ eventRecord := handler eventRecord.
[ handler nextEvent: eventRecord]
whileTrue: [ handler handleEvent: eventRecord].
handler postHandleEvents]
ensure: [self allowEvents]
65. 65
User I nterrupts
< ctrl> Y and < ctrl> < shift> Y work as in
VisualWorks
Implemented as Accelerator Keys
< ctrl> Y interrupts the running process
by sending self halt: in a callBack from C
66. 66
Class Proxies
Class Proxies work
They are shared variables in
Root.ObjectStudio.Global
Loading puts class in Root.ObjectStudio
68. 68
Perform ance I ssues
In Classic ObjectStudio
Smalltalk execution is slow
Calling C primitives cost nothing
In VisualWorks
Smalltalk execution is fast
Calling C is expensive
In Classic ObjectStudio
Performance critical methods are moved to C
In ObjectStudio 8
Performance critical primitives are moved back to
Smalltalk
69. 69
VisualW orks .st file-in is slow
Of 1000 seconds
900 are RB refresh
Of 100 seconds
90 are repeatedly relinking the system
Of 10 Seconds
9 are disk flush (Changes file)
1 second compiling
At the end of the optimizations:
Loading as alternative to file-in
Loading a .st is similar speed as parcel loading
Small .st/.cls files load faster than parcels
Large parcel files load faster than .st/.cls files
70. 70
New Concepts for ObjectStudio
Source Code Management
Store
Versioning system
Database based
Smalltalk Archives
File based
One file per application
Code purity
Undeclared
Code Critic
Overrides
71. 71
June 2005
Internal Alpha
October 2005
Internal Alpha2
March 2006
Cincom internal testing
April 2006
First Customer
August 2006
First independent Service Partner
May-September 2006
Solve incompatabilities, Refactoring, Performance issues
October 2006
Next few customers
December 2006
Preview
73. 73
Porting Process Practice
Look at base system modifications
Like any other porting this is a source of
many problems
Known incompatibilities
Immutability
Declare Pool Dictionaries
Export Modeling Tool definitions in ASCII
Binary format is incompatible
74. 74
Undeclareds
In Classic ObjectStudio
Each undeclared variable is always considered a
global
In VisualWorks and ObjectStudio 8
Each undeclared variable is considered undeclared
GHUndeclaredBrowser
Shows all Undeclareds and their references
It uncovered some very old ObjectStudio problems
due to typoes.
77. 77
W hat can ESUG Audience learn?
Integration of Smalltalk systems is possible
Which systems deserve to be integrated?
VW and Squeak
Very common systems
VSE
VA
Smalltalk-X
Dolphin
Ruby
Java
Frost
GemStone