The document discusses object graphs in object-oriented programming and the problem of referenced but unused objects consuming memory. It proposes "swapping" unused objects to disk rather than removing them, to avoid memory issues. This is done by grouping unused objects into "subgraphs" and replacing the roots with proxies. When an object is needed again, it can be loaded back from disk. The key aspects involve identifying used/unused objects at runtime, using proxies to represent swapped objects, and grouping objects intelligently into subgraphs to swap.
This document discusses the state of various Smalltalk dialects and versions of SUnit that are available across those dialects. It also summarizes new features in SUnit 4.0, including the addition of TestResources to allow sharing of test fixtures, and pluggable exceptions to customize test failure handling. The document raises questions about future enhancements to SUnit including removing compatibility methods no longer needed and ideas for the relationship between the SUnit core and variant implementations.
Automatic Strategies for Decision Support in TriageTelephone ESUG
This document describes an automated framework for decision support in telephone triage. It presents ExpertCare, a software application that simulates telephone triages by gathering initial data, asking questions, and providing presumptive diagnoses. The framework represents medical concepts and sessions logically and tests different question-asking strategies through simulation. The best-performing strategies are based on the notion of "support", which scores how well symptoms support potential diagnoses. These strategies achieved the project's goal of diagnosing patients in 3-6 questions on average. The framework was developed in Smalltalk, which facilitated knowledge representation, strategy testing, and refining approaches based on results. Future work could include integrating the framework with the real ExpertCare system and adapting it to other
The document announces an awards competition hosted by ESUG in 2009 to encourage innovation and development of Smalltalk software. The goal is to advertise Smalltalk and related VM software by releasing and making publicly available Smalltalk code submissions. Any Smalltalk code is eligible for the awards, including free, commercial, academic, or other types of code. Winners will be determined based on number of submissions by country, dialect, and whether from academia or companies. Prizes totaling 1000 Euros will be awarded to the top submissions, with 500, 300, and 200 Euros for first, second, and third place respectively.
This document presents a dynamically defined state model called CxStates that is not based on the state pattern. CxStates allows for a user-configurable state model that allows easy communication with external systems. It includes basic classes like CxBaseState that defines a state, CxTransitionEntry that defines transitions between states, and CxActionSequence to execute methods in external systems during transitions. Transitions are executed by executing pre-transition and post-transition actions. The document demonstrates CxStates with an example of modeling the states of an automatic coffee machine.
Madeo - a CAD Tool for reconfigurable HardwareESUG
This document discusses Madeo, a CAD tool for programming reconfigurable hardware using an object-oriented methodology. Madeo was developed over 10 years and allows describing circuits as objects in a high-level language. It supports various reconfigurable architectures by modeling them and can generate configuration bitstreams. The tool aims to improve on existing solutions by providing retargetability, exploiting flexibility of reconfigurable hardware, and applying principles like code reuse and portability through a virtual machine-like approach. The document outlines key aspects of Madeo like its architecture modeling, compilation flow, and results demonstrating its capabilities on different targets. It also discusses lessons learned like using meta-modeling for evolution and interchange support.
The document describes a test server tool that coordinates automated testing across developers. The test server tracks test case results, code versions, and test case status. Developers can run tests from a client that reports results to the server. The server flags tests that are not up to date and allows developers to check out test suites for repair. It also facilitates parallel test execution across multiple clients. The tool currently supports Smalltalk test frameworks and the presenters are working on new implementations and additional features.
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 discusses the state of various Smalltalk dialects and versions of SUnit that are available across those dialects. It also summarizes new features in SUnit 4.0, including the addition of TestResources to allow sharing of test fixtures, and pluggable exceptions to customize test failure handling. The document raises questions about future enhancements to SUnit including removing compatibility methods no longer needed and ideas for the relationship between the SUnit core and variant implementations.
Automatic Strategies for Decision Support in TriageTelephone ESUG
This document describes an automated framework for decision support in telephone triage. It presents ExpertCare, a software application that simulates telephone triages by gathering initial data, asking questions, and providing presumptive diagnoses. The framework represents medical concepts and sessions logically and tests different question-asking strategies through simulation. The best-performing strategies are based on the notion of "support", which scores how well symptoms support potential diagnoses. These strategies achieved the project's goal of diagnosing patients in 3-6 questions on average. The framework was developed in Smalltalk, which facilitated knowledge representation, strategy testing, and refining approaches based on results. Future work could include integrating the framework with the real ExpertCare system and adapting it to other
The document announces an awards competition hosted by ESUG in 2009 to encourage innovation and development of Smalltalk software. The goal is to advertise Smalltalk and related VM software by releasing and making publicly available Smalltalk code submissions. Any Smalltalk code is eligible for the awards, including free, commercial, academic, or other types of code. Winners will be determined based on number of submissions by country, dialect, and whether from academia or companies. Prizes totaling 1000 Euros will be awarded to the top submissions, with 500, 300, and 200 Euros for first, second, and third place respectively.
This document presents a dynamically defined state model called CxStates that is not based on the state pattern. CxStates allows for a user-configurable state model that allows easy communication with external systems. It includes basic classes like CxBaseState that defines a state, CxTransitionEntry that defines transitions between states, and CxActionSequence to execute methods in external systems during transitions. Transitions are executed by executing pre-transition and post-transition actions. The document demonstrates CxStates with an example of modeling the states of an automatic coffee machine.
Madeo - a CAD Tool for reconfigurable HardwareESUG
This document discusses Madeo, a CAD tool for programming reconfigurable hardware using an object-oriented methodology. Madeo was developed over 10 years and allows describing circuits as objects in a high-level language. It supports various reconfigurable architectures by modeling them and can generate configuration bitstreams. The tool aims to improve on existing solutions by providing retargetability, exploiting flexibility of reconfigurable hardware, and applying principles like code reuse and portability through a virtual machine-like approach. The document outlines key aspects of Madeo like its architecture modeling, compilation flow, and results demonstrating its capabilities on different targets. It also discusses lessons learned like using meta-modeling for evolution and interchange support.
The document describes a test server tool that coordinates automated testing across developers. The test server tracks test case results, code versions, and test case status. Developers can run tests from a client that reports results to the server. The server flags tests that are not up to date and allows developers to check out test suites for repair. It also facilitates parallel test execution across multiple clients. The tool currently supports Smalltalk test frameworks and the presenters are working on new implementations and additional features.
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.
BioSmalltalk is a library for bioinformatics implemented in Pharo and part of the Open Bioinformatics Foundation. It provides basic operations on biological sequences like DNA, RNA, and proteins such as transcription, translation, complement, and reverse complement. It also includes utilities for sequence alignment, statistics, plotting, and accessing databases. The library is used in applications like analyzing positive selection in cattle breeds and using dog feces DNA profiling to solve a homicide case.
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.
BioSmalltalk is a library for bioinformatics implemented in Pharo and part of the Open Bioinformatics Foundation. It provides basic operations on biological sequences like DNA, RNA, and proteins such as transcription, translation, complement, and reverse complement. It also includes utilities for sequence alignment, statistics, plotting, and accessing databases. The library is used in applications like analyzing positive selection in cattle breeds and using dog feces DNA profiling to solve a homicide case.
For the full video of this presentation, please visit: https://www.edge-ai-vision.com/2024/06/temporal-event-neural-networks-a-more-efficient-alternative-to-the-transformer-a-presentation-from-brainchip/
Chris Jones, Director of Product Management at BrainChip , presents the “Temporal Event Neural Networks: A More Efficient Alternative to the Transformer” tutorial at the May 2024 Embedded Vision Summit.
The expansion of AI services necessitates enhanced computational capabilities on edge devices. Temporal Event Neural Networks (TENNs), developed by BrainChip, represent a novel and highly efficient state-space network. TENNs demonstrate exceptional proficiency in handling multi-dimensional streaming data, facilitating advancements in object detection, action recognition, speech enhancement and language model/sequence generation. Through the utilization of polynomial-based continuous convolutions, TENNs streamline models, expedite training processes and significantly diminish memory requirements, achieving notable reductions of up to 50x in parameters and 5,000x in energy consumption compared to prevailing methodologies like transformers.
Integration with BrainChip’s Akida neuromorphic hardware IP further enhances TENNs’ capabilities, enabling the realization of highly capable, portable and passively cooled edge devices. This presentation delves into the technical innovations underlying TENNs, presents real-world benchmarks, and elucidates how this cutting-edge approach is positioned to revolutionize edge AI across diverse applications.
Northern Engraving | Nameplate Manufacturing Process - 2024Northern Engraving
Manufacturing custom quality metal nameplates and badges involves several standard operations. Processes include sheet prep, lithography, screening, coating, punch press and inspection. All decoration is completed in the flat sheet with adhesive and tooling operations following. The possibilities for creating unique durable nameplates are endless. How will you create your brand identity? We can help!
"What does it really mean for your system to be available, or how to define w...Fwdays
We will talk about system monitoring from a few different angles. We will start by covering the basics, then discuss SLOs, how to define them, and why understanding the business well is crucial for success in this exercise.
What is an RPA CoE? Session 2 – CoE RolesDianaGray10
In this session, we will review the players involved in the CoE and how each role impacts opportunities.
Topics covered:
• What roles are essential?
• What place in the automation journey does each role play?
Speaker:
Chris Bolin, Senior Intelligent Automation Architect Anika Systems
How information systems are built or acquired puts information, which is what they should be about, in a secondary place. Our language adapted accordingly, and we no longer talk about information systems but applications. Applications evolved in a way to break data into diverse fragments, tightly coupled with applications and expensive to integrate. The result is technical debt, which is re-paid by taking even bigger "loans", resulting in an ever-increasing technical debt. Software engineering and procurement practices work in sync with market forces to maintain this trend. This talk demonstrates how natural this situation is. The question is: can something be done to reverse the trend?
In the realm of cybersecurity, offensive security practices act as a critical shield. By simulating real-world attacks in a controlled environment, these techniques expose vulnerabilities before malicious actors can exploit them. This proactive approach allows manufacturers to identify and fix weaknesses, significantly enhancing system security.
This presentation delves into the development of a system designed to mimic Galileo's Open Service signal using software-defined radio (SDR) technology. We'll begin with a foundational overview of both Global Navigation Satellite Systems (GNSS) and the intricacies of digital signal processing.
The presentation culminates in a live demonstration. We'll showcase the manipulation of Galileo's Open Service pilot signal, simulating an attack on various software and hardware systems. This practical demonstration serves to highlight the potential consequences of unaddressed vulnerabilities, emphasizing the importance of offensive security practices in safeguarding critical infrastructure.
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.
In our second session, we shall learn all about the main features and fundamentals of UiPath Studio that enable us to use the building blocks for any automation project.
📕 Detailed agenda:
Variables and Datatypes
Workflow Layouts
Arguments
Control Flows and Loops
Conditional Statements
💻 Extra training through UiPath Academy:
Variables, Constants, and Arguments in Studio
Control Flow in Studio
QA or the Highway - Component Testing: Bridging the gap between frontend appl...zjhamm304
These are the slides for the presentation, "Component Testing: Bridging the gap between frontend applications" that was presented at QA or the Highway 2024 in Columbus, OH by Zachary Hamm.
Session 1 - Intro to Robotic Process Automation.pdfUiPathCommunity
👉 Check out our full 'Africa Series - Automation Student Developers (EN)' page to register for the full program:
https://bit.ly/Automation_Student_Kickstart
In this session, we shall introduce you to the world of automation, the UiPath Platform, and guide you on how to install and setup UiPath Studio on your Windows PC.
📕 Detailed agenda:
What is RPA? Benefits of RPA?
RPA Applications
The UiPath End-to-End Automation Platform
UiPath Studio CE Installation and Setup
💻 Extra training through UiPath Academy:
Introduction to Automation
UiPath Business Automation Platform
Explore automation development with UiPath Studio
👉 Register here for our upcoming Session 2 on June 20: Introduction to UiPath Studio Fundamentals: https://community.uipath.com/events/details/uipath-lagos-presents-session-2-introduction-to-uipath-studio-fundamentals/
inQuba Webinar Mastering Customer Journey Management with Dr Graham HillLizaNolte
HERE IS YOUR WEBINAR CONTENT! 'Mastering Customer Journey Management with Dr. Graham Hill'. We hope you find the webinar recording both insightful and enjoyable.
In this webinar, we explored essential aspects of Customer Journey Management and personalization. Here’s a summary of the key insights and topics discussed:
Key Takeaways:
Understanding the Customer Journey: Dr. Hill emphasized the importance of mapping and understanding the complete customer journey to identify touchpoints and opportunities for improvement.
Personalization Strategies: We discussed how to leverage data and insights to create personalized experiences that resonate with customers.
Technology Integration: Insights were shared on how inQuba’s advanced technology can streamline customer interactions and drive operational efficiency.
Discover top-tier mobile app development services, offering innovative solutions for iOS and Android. Enhance your business with custom, user-friendly mobile applications.
Main news related to the CCS TSI 2023 (2023/1695)Jakub Marek
An English 🇬🇧 translation of a presentation to the speech I gave about the main changes brought by CCS TSI 2023 at the biggest Czech conference on Communications and signalling systems on Railways, which was held in Clarion Hotel Olomouc from 7th to 9th November 2023 (konferenceszt.cz). Attended by around 500 participants and 200 on-line followers.
The original Czech 🇨🇿 version of the presentation can be found here: https://www.slideshare.net/slideshow/hlavni-novinky-souvisejici-s-ccs-tsi-2023-2023-1695/269688092 .
The videorecording (in Czech) from the presentation is available here: https://youtu.be/WzjJWm4IyPk?si=SImb06tuXGb30BEH .
LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...DanBrown980551
This LF Energy webinar took place June 20, 2024. It featured:
-Alex Thornton, LF Energy
-Hallie Cramer, Google
-Daniel Roesler, UtilityAPI
-Henry Richardson, WattTime
In response to the urgency and scale required to effectively address climate change, open source solutions offer significant potential for driving innovation and progress. Currently, there is a growing demand for standardization and interoperability in energy data and modeling. Open source standards and specifications within the energy sector can also alleviate challenges associated with data fragmentation, transparency, and accessibility. At the same time, it is crucial to consider privacy and security concerns throughout the development of open source platforms.
This webinar will delve into the motivations behind establishing LF Energy’s Carbon Data Specification Consortium. It will provide an overview of the draft specifications and the ongoing progress made by the respective working groups.
Three primary specifications will be discussed:
-Discovery and client registration, emphasizing transparent processes and secure and private access
-Customer data, centering around customer tariffs, bills, energy usage, and full consumption disclosure
-Power systems data, focusing on grid data, inclusive of transmission and distribution networks, generation, intergrid power flows, and market settlement data
8. Problem
Use more memory than needed.
Make OOP languages unsuitable for memory
limited devices.
Existence of unused but referenced objects.
3
Wednesday, September 15, 2010
9. The context
In OOP primary memory is represented by an object graph
Z
X
Y
A B C
D E F G H
I J K L
4
Wednesday, September 15, 2010
10. Garbage Collector
Only collects objects that nobody else points to.
Z
X
Y
A B C
D E F G H
I J K L
5
Wednesday, September 15, 2010
11. Garbage Collector
Only collects objects that nobody else points to.
Z
X
Y
A B C
D E F G H
I J K L
5
Wednesday, September 15, 2010
12. Garbage Collector
Only collects objects that nobody else points to.
Z
X
Y
A B C
D E F G H
I J K L
5
Wednesday, September 15, 2010
13. Garbage Collector
Only collects objects that nobody else points to.
Z
X
Y
A B C
D E F G H
I J K L
5
Wednesday, September 15, 2010
14. But...what happens with referenced yet unused objects?
Z
X
Y
A B C
D E F G H
I J K L
6
Wednesday, September 15, 2010
15. Idea
Swap out (not remove) unused objects to
disk.
Automatically load them back when needed.
7
Wednesday, September 15, 2010
16. Related work
Large object oriented memory (LOOM).
Melt - Supporting memory leaks.
ImageSegments.
8
Wednesday, September 15, 2010
18. Main challenges
Not to use more memory than the one
released by swapping.
Low overhead penalty.
Group objects in an smart way.
10
Wednesday, September 15, 2010
19. Key aspects
Mark and trace unused/used objects at
runtime.
The usage of proxies.
Group unused objects (subgraphs).
11
Wednesday, September 15, 2010
20. Why we need to
group objects?
Because if we replace each object by a proxy,
we release little memory.
We want to replace a whole group by one or a
few proxies.
12
Wednesday, September 15, 2010
21. Why subgraphs?
Group of objects that are used (or not used)
together.
We need few proxies (for the roots) for
several objects.
13
Wednesday, September 15, 2010
22. Experiments done
Modify Smalltalk VM to mark and trace
objects usage.
Visualize objects and memory usage.
Take statistics from different scenarios.
14
Wednesday, September 15, 2010
23. deployed web
application example
Used Unused Used Unused
Amount of objects Amount of memory
4%
15%
85%
96%
15
Wednesday, September 15, 2010
24. Swapping steps and
challenges
1.Identify sets of objects and serialize them.
Problems: cycles, speed, etc.
2.Write the serialized objects into a file.
Problems: file format, encoding, speed, etc.
3. Load the objects from a file. Problems: class
reshape, avoid duplicates, speed, etc.
16
Wednesday, September 15, 2010
25. Subgraphs
Roots Inner Shared External
X Z
Y
Subgraph to process
A B C
(Root) (Root) (Root)
D E F G H
I J K L
17
Wednesday, September 15, 2010
26. More
problems
Should shared objects be
Roots Inner Shared External
included or not?
GC moves objects.
X Z
Y
Subgraph to process Pointers update.
A B C
(Root) (Root) (Root)
Class changes.
D E F G H Recreate and reinitialize
objects.
I J K L
Code executed after
18 loading.
Wednesday, September 15, 2010
28. ImageSegment basis
Only write/swap roots and inner objects.
Shared objects are NOT swapped.
Keep an array in memory for the shared
objects.
Update object pointers to point to a relative
address inside the arrays (offset).
Roots are replaced by proxies.
Uses GC facilities to detect shared objects.
Wednesday, September 15, 2010
29. Subgraph traverse
Serialized objects WordArray
Shared objects Array
A B C
D E F G H
I J K L
Wednesday, September 15, 2010
30. Subgraph traverse
A’ B’ C’
Serialized objects WordArray
Shared objects Array
A B C
D E F G H
I J K L
Wednesday, September 15, 2010
31. Subgraph traverse
A’ B’ C’
Serialized objects WordArray
Shared objects Array
A B C
D E F G H
I J K L
Wednesday, September 15, 2010
32. Subgraph traverse
A’ B’ C’
Serialized objects WordArray
Shared objects Array
A B C
D E F G H
I J K L
Wednesday, September 15, 2010
33. Subgraph traverse
A’ B’ C’
Serialized objects WordArray
Shared objects Array
A B C
D E F G H
I J K L
Wednesday, September 15, 2010
34. Subgraph traverse
A’ B’ C’
D
Serialized objects WordArray
Shared objects Array
A B C
D E F G H
I J K L
Wednesday, September 15, 2010
35. Subgraph traverse
A’ B’ C’
D
Serialized objects WordArray
Shared objects Array
A B C
D E F G H
I J K L
Wednesday, September 15, 2010
36. Subgraph traverse
A’ B’ C’
D
Serialized objects WordArray
offset Shared objects Array
A B C
D E F G H
I J K L
Wednesday, September 15, 2010
37. Subgraph traverse
A’ B’ C’ E’
D
Serialized objects WordArray
offset Shared objects Array
A B C
D E F G H
I J K L
Wednesday, September 15, 2010
38. Subgraph traverse
offset
A’ B’ C’ E’
D
Serialized objects WordArray
offset Shared objects Array
A B C
D E F G H
I J K L
Wednesday, September 15, 2010
39. Subgraph traverse
A’ B’ C’ E’
D
Serialized objects WordArray
Shared objects Array
A B C
D E F G H
I J K L
Wednesday, September 15, 2010
40. Subgraph traverse
A’ B’ C’ E’
D
Serialized objects WordArray
Shared objects Array
A B C
D E F G H
I J K L
Wednesday, September 15, 2010
41. Subgraph traverse
A’ B’ C’ E’ I’ H’ L’
D F G J
Serialized objects WordArray
Shared objects Array
A B C
D E F G H
I J K L
Wednesday, September 15, 2010
42. Offset Memory address
A’ B’ C’ E’ I’ H’ L’
D F G J
Serialized objects WordArray
Shared objects Array
A B C
D E F G H
I J K L
Wednesday, September 15, 2010
43. anImageSegment
A’ B’ C’ E’ I’ H’ L’ D F G J
Serialized objects WordArray Shared objects Array
A B C
D E F G H
I J K L
Wednesday, September 15, 2010
44. anImageSegment
A’ B’ C’ E’ I’ H’ L’ D F G J
Serialized objects WordArray Shared objects Array
P1 P2 P3
D E F G H
I J K L
Wednesday, September 15, 2010
45. anImageSegment
A’ B’ C’ E’ I’ H’ L’ D F G J
Serialized objects WordArray Shared objects Array
P1 P2 P3
D E F G H
I J K L
Wednesday, September 15, 2010
46. anImageSegment
A’ B’ C’ E’ I’ H’ L’ D F G J
Serialized objects WordArray Shared objects Array
P1 P2 P3
D F G
J K
Wednesday, September 15, 2010
47. anImageSegment
D F G J
A’ B’ C’ E’ I’ H’ L’
Serialized objects WordArray Shared objects Array
Binary file
P1 P2
B P3
C
D F G
J K
Wednesday, September 15, 2010
48. anImageSegment
D F G J
Shared objects Array
Binary file
A’ B’ C’ E’ I’ H’ L’ P1 P2
B P3
C
D F G
J K
Wednesday, September 15, 2010
49. anImageSegment
NIL D F G J
Shared objects Array
Binary file
A’ B’ C’ E’ I’ H’ L’ P1 P2
B P3
C
D F G
J K
Wednesday, September 15, 2010
50. ImageSegment
conclusions
Good speed.
Graph traverse is done in VM side.
Good use of GC facilities.
You have to be aware of shared objects.
Bad granularity level.
Implicit needed information in object graphs.
Wednesday, September 15, 2010
51. Thanks!
Mariano Martinez Peck
marianopeck@gmail.com
Wednesday, September 15, 2010