Talk from ESUG18
Pavel Krivanek (pavel.krivanek@gmail.com)
Abstract: In this talk, I will present and demonstrate the new infrastructure that Moose provides for building of custom meta-models of programming languages. I will describe the reasons why we replaced the FAMIX meta-model and show how we use the new Pharo features as stateful traits, slots and Ring meta-model to implement it.
Bio: Pavel Krivanek is a software engineer at Inria Nord Europe in (http://rmod.lille.inria.fr) RMoD team. He actively participates in the Pharo open source community with the primary focus on Pharo modularization, bootstrapping and cleaning. Currently, he works on the new meta-modelling infrastructure of the Moose platform.
ESUG 2017
youtube: https://youtu.be/RfalKwgvf0I
First Name: Pavel
Last Name: Krivanek
Title: Metamodeling of custom Pharo images
Type: Talk / Demonstration, 30 min
In this talk I will present a new improved implementation of the
Smalltalk metamodel named Ring. I will describe reasons why a new
implementation was required and I will show the basics of its
architecture and how to use it from the user perspective. Then I will present how the Ring models can be used for bootstrapping of small custom task-oriented Pharo images and how to use them in practice.
Bio:
Pavel Krivanek is a software engineer at Inria Nord Europe in
(http://rmod.lille.inria.fr ) RmoD team. He actively participates in the Pharo open source community with the main focus on Pharo modularization, boostrapping and cleaning. Currently he works on new metamodeling basics of the Moose platform.
Lambda: A Peek Under The Hood - Brian GoetzJAX London
This is a *highly technical* session on the details of how Lambda expressions are implemented in the Java language, presented by Java Language Architect Brian Goetz
Managing Binary Compatibility in Scala (Scala Lift Off 2011)mircodotta
Slides of my Scala Lift Off 2011 talk. The content of the presentation is mostly similar to the one presented at Scala Days 2011, with a few additions. Particularly, lazy values are discussed.
Introduction to functional idioms in Java 8, language-extending functional libraries and short overview of reasons for adoption of such programming style.
Examples and snippets available here: https://github.com/lbialy/functionaljava8
ESUG 2017
youtube: https://youtu.be/RfalKwgvf0I
First Name: Pavel
Last Name: Krivanek
Title: Metamodeling of custom Pharo images
Type: Talk / Demonstration, 30 min
In this talk I will present a new improved implementation of the
Smalltalk metamodel named Ring. I will describe reasons why a new
implementation was required and I will show the basics of its
architecture and how to use it from the user perspective. Then I will present how the Ring models can be used for bootstrapping of small custom task-oriented Pharo images and how to use them in practice.
Bio:
Pavel Krivanek is a software engineer at Inria Nord Europe in
(http://rmod.lille.inria.fr ) RmoD team. He actively participates in the Pharo open source community with the main focus on Pharo modularization, boostrapping and cleaning. Currently he works on new metamodeling basics of the Moose platform.
Lambda: A Peek Under The Hood - Brian GoetzJAX London
This is a *highly technical* session on the details of how Lambda expressions are implemented in the Java language, presented by Java Language Architect Brian Goetz
Managing Binary Compatibility in Scala (Scala Lift Off 2011)mircodotta
Slides of my Scala Lift Off 2011 talk. The content of the presentation is mostly similar to the one presented at Scala Days 2011, with a few additions. Particularly, lazy values are discussed.
Introduction to functional idioms in Java 8, language-extending functional libraries and short overview of reasons for adoption of such programming style.
Examples and snippets available here: https://github.com/lbialy/functionaljava8
Traits offer an alternative solution to inheritance that is particularly suited to class-less languages like Javascript. With this approach, the aspects of instance generation and units of reuse are clearly separated while providing methods of composition that are functionally similar to multiple inheritance. Troublesome multiple inheritance issues like the diamond problems are avoided by keeping traits stateless. Any state must be stored in the instance that inherits from the trait.
Exception handling - Fundamentals of exception handling, Exception types, Termination or resumptive models, Uncaught exceptions, using try and catch, multiple catch clauses, nested try statements, throw, throws and finally, built- in exceptions, creating own exception sub classes.
Multithreading- Differences between thread-based multitasking and process-based multitasking, Java thread model, creating threads, thread priorities, synchronizing threads, inter thread communication
In this Meetup Victor Perepelitsky - R&D Technical Leader at LivePerson leading the 'Real Time Event Processing Platform' team , will talk about Java 8', 'Stream API', 'Lambda', and 'Method reference'.
Victor will clarify what functional programming is and how can you use java 8 in order to create better software.
Victor will also cover some pain points that Java 8 did not solve regarding functionality and see how you can work around it.
Module Ninja is Dynamic Metaprogramming JavaScript Library, that I made in my free time.
I believe that it is a piece of code with a great potential to become something very big.
Traits offer an alternative solution to inheritance that is particularly suited to class-less languages like Javascript. With this approach, the aspects of instance generation and units of reuse are clearly separated while providing methods of composition that are functionally similar to multiple inheritance. Troublesome multiple inheritance issues like the diamond problems are avoided by keeping traits stateless. Any state must be stored in the instance that inherits from the trait.
Exception handling - Fundamentals of exception handling, Exception types, Termination or resumptive models, Uncaught exceptions, using try and catch, multiple catch clauses, nested try statements, throw, throws and finally, built- in exceptions, creating own exception sub classes.
Multithreading- Differences between thread-based multitasking and process-based multitasking, Java thread model, creating threads, thread priorities, synchronizing threads, inter thread communication
In this Meetup Victor Perepelitsky - R&D Technical Leader at LivePerson leading the 'Real Time Event Processing Platform' team , will talk about Java 8', 'Stream API', 'Lambda', and 'Method reference'.
Victor will clarify what functional programming is and how can you use java 8 in order to create better software.
Victor will also cover some pain points that Java 8 did not solve regarding functionality and see how you can work around it.
Module Ninja is Dynamic Metaprogramming JavaScript Library, that I made in my free time.
I believe that it is a piece of code with a great potential to become something very big.
Model-Driven Software Development - Strategies for Design & Implementation of...Eelco Visser
Lecture 5 of course on Model-Driven Software Development about Strategies for Design & Implementation of Domain-Specific Languages, discussing design and implementation of WebDSL
Working with XSLT, XPath and ECMA Scripts: Make It Simpler with Novell Identi...Novell
Using XPath, XSLT, ECMA scripts judiciously is vital to building complex policies easily in your identity management projects. This session will compare these techniques to achieve similar results and show exact benefits of using one over the other in specific use cases. It will also go through the lifecyle of Novell Identity Manager policy management: how the policies are developed, tested and deployed in Novell Identity Manager Designer. This is an advanced session, and assumes you have a significant level of experience with Identity Manager and Designer.
DUCAT offers exclusive JAVA Training & Certification program with live project by industry expert In Noida,Ghaziabad,Gurgaon,Faridabad,Greater Noida,Jaipur
For further enquiry
DUCAT, NOIDA
A - 43 & A - 52 Sector - 16, Noida (U.P) (Near McDonalds)
PHONE: 0120-4646464
MOBILE OR WHATSAPP: +91- 9871055180
Swift offers a compelling opportunity to build reliable, scalable and lightweight micro-services. This talk will discuss how I am investigating the use of Swift micro-services - running in ECS and potentially Lambda, fronted by API gateway - with AWS technologies such as managing data models with DynamoDb.
6 MONTHS JAVA TRAINING is very popular course at DUCAT. This course has the perfect mix of contents to prepare the participants to become a Java developer or programmer. Equipped with Java Training from DUCAT will open a flood gates of opportunities for the participants.
Java 9 is just around the corner, and yet many of us developers have yet to use Java 8 features in an application. The goal of this presentation is to move beyond slide-sized examples of streams and lambdas, and to show how to build a fully working end-to-end application using just the core libraries available in the latest version of Java.
In this session, Trisha will build a Java 8 application live. This application will consume a real-time feed of high velocity data, contain services that make sense of the data, and present it in a JavaFX dashboard. Along the way, we’ll encounter Java 8 streams, lambdas, new ways of working with collections, and probably bump into the new date and time API.
7.1 Identify which attribute scopes are thread-safe:
Local variables
Instance variables
Class variables
Request attributes
Session attributes
Context attributes
7.2 Identify correct statements about differences between the multithreaded and single-threaded servlet models.
7.3 Identify the interface used to declare that a servlet must use the single thread model.
UiPath Test Automation using UiPath Test Suite series, part 4DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 4. In this session, we will cover Test Manager overview along with SAP heatmap.
The UiPath Test Manager overview with SAP heatmap webinar offers a concise yet comprehensive exploration of the role of a Test Manager within SAP environments, coupled with the utilization of heatmaps for effective testing strategies.
Participants will gain insights into the responsibilities, challenges, and best practices associated with test management in SAP projects. Additionally, the webinar delves into the significance of heatmaps as a visual aid for identifying testing priorities, areas of risk, and resource allocation within SAP landscapes. Through this session, attendees can expect to enhance their understanding of test management principles while learning practical approaches to optimize testing processes in SAP environments using heatmap visualization techniques
What will you get from this session?
1. Insights into SAP testing best practices
2. Heatmap utilization for testing
3. Optimization of testing processes
4. Demo
Topics covered:
Execution from the test manager
Orchestrator execution result
Defect reporting
SAP heatmap example with demo
Speaker:
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...SOFTTECHHUB
The choice of an operating system plays a pivotal role in shaping our computing experience. For decades, Microsoft's Windows has dominated the market, offering a familiar and widely adopted platform for personal and professional use. However, as technological advancements continue to push the boundaries of innovation, alternative operating systems have emerged, challenging the status quo and offering users a fresh perspective on computing.
One such alternative that has garnered significant attention and acclaim is Nitrux Linux 3.5.0, a sleek, powerful, and user-friendly Linux distribution that promises to redefine the way we interact with our devices. With its focus on performance, security, and customization, Nitrux Linux presents a compelling case for those seeking to break free from the constraints of proprietary software and embrace the freedom and flexibility of open-source computing.
Securing your Kubernetes cluster_ a step-by-step guide to success !KatiaHIMEUR1
Today, after several years of existence, an extremely active community and an ultra-dynamic ecosystem, Kubernetes has established itself as the de facto standard in container orchestration. Thanks to a wide range of managed services, it has never been so easy to set up a ready-to-use Kubernetes cluster.
However, this ease of use means that the subject of security in Kubernetes is often left for later, or even neglected. This exposes companies to significant risks.
In this talk, I'll show you step-by-step how to secure your Kubernetes cluster for greater peace of mind and reliability.
GraphRAG is All You need? LLM & Knowledge GraphGuy Korland
Guy Korland, CEO and Co-founder of FalkorDB, will review two articles on the integration of language models with knowledge graphs.
1. Unifying Large Language Models and Knowledge Graphs: A Roadmap.
https://arxiv.org/abs/2306.08302
2. Microsoft Research's GraphRAG paper and a review paper on various uses of knowledge graphs:
https://www.microsoft.com/en-us/research/blog/graphrag-unlocking-llm-discovery-on-narrative-private-data/
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Albert Hoitingh
In this session I delve into the encryption technology used in Microsoft 365 and Microsoft Purview. Including the concepts of Customer Key and Double Key Encryption.
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdfPeter Spielvogel
Building better applications for business users with SAP Fiori.
• What is SAP Fiori and why it matters to you
• How a better user experience drives measurable business benefits
• How to get started with SAP Fiori today
• How SAP Fiori elements accelerates application development
• How SAP Build Code includes SAP Fiori tools and other generative artificial intelligence capabilities
• How SAP Fiori paves the way for using AI in SAP apps
Enhancing Performance with Globus and the Science DMZGlobus
ESnet has led the way in helping national facilities—and many other institutions in the research community—configure Science DMZs and troubleshoot network issues to maximize data transfer performance. In this talk we will present a summary of approaches and tips for getting the most out of your network infrastructure using Globus Connect Server.
The Metaverse and AI: how can decision-makers harness the Metaverse for their...Jen Stirrup
The Metaverse is popularized in science fiction, and now it is becoming closer to being a part of our daily lives through the use of social media and shopping companies. How can businesses survive in a world where Artificial Intelligence is becoming the present as well as the future of technology, and how does the Metaverse fit into business strategy when futurist ideas are developing into reality at accelerated rates? How do we do this when our data isn't up to scratch? How can we move towards success with our data so we are set up for the Metaverse when it arrives?
How can you help your company evolve, adapt, and succeed using Artificial Intelligence and the Metaverse to stay ahead of the competition? What are the potential issues, complications, and benefits that these technologies could bring to us and our organizations? In this session, Jen Stirrup will explain how to start thinking about these technologies as an organisation.
Accelerate your Kubernetes clusters with Varnish CachingThijs Feryn
A presentation about the usage and availability of Varnish on Kubernetes. This talk explores the capabilities of Varnish caching and shows how to use the Varnish Helm chart to deploy it to Kubernetes.
This presentation was delivered at K8SUG Singapore. See https://feryn.eu/presentations/accelerate-your-kubernetes-clusters-with-varnish-caching-k8sug-singapore-28-2024 for more details.
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfPaige Cruz
Monitoring and observability aren’t traditionally found in software curriculums and many of us cobble this knowledge together from whatever vendor or ecosystem we were first introduced to and whatever is a part of your current company’s observability stack.
While the dev and ops silo continues to crumble….many organizations still relegate monitoring & observability as the purview of ops, infra and SRE teams. This is a mistake - achieving a highly observable system requires collaboration up and down the stack.
I, a former op, would like to extend an invitation to all application developers to join the observability party will share these foundational concepts to build on:
Pushing the limits of ePRTC: 100ns holdover for 100 daysAdtran
At WSTS 2024, Alon Stern explored the topic of parametric holdover and explained how recent research findings can be implemented in real-world PNT networks to achieve 100 nanoseconds of accuracy for up to 100 days.
Climate Impact of Software Testing at Nordic Testing DaysKari Kakkonen
My slides at Nordic Testing Days 6.6.2024
Climate impact / sustainability of software testing discussed on the talk. ICT and testing must carry their part of global responsibility to help with the climat warming. We can minimize the carbon footprint but we can also have a carbon handprint, a positive impact on the climate. Quality characteristics can be added with sustainability, and then measured continuously. Test environments can be used less, and in smaller scale and on demand. Test techniques can be used in optimizing or minimizing number of tests. Test automation can be used to speed up testing.
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...DanBrown980551
Do you want to learn how to model and simulate an electrical network from scratch in under an hour?
Then welcome to this PowSyBl workshop, hosted by Rte, the French Transmission System Operator (TSO)!
During the webinar, you will discover the PowSyBl ecosystem as well as handle and study an electrical network through an interactive Python notebook.
PowSyBl is an open source project hosted by LF Energy, which offers a comprehensive set of features for electrical grid modelling and simulation. Among other advanced features, PowSyBl provides:
- A fully editable and extendable library for grid component modelling;
- Visualization tools to display your network;
- Grid simulation tools, such as power flows, security analyses (with or without remedial actions) and sensitivity analyses;
The framework is mostly written in Java, with a Python binding so that Python developers can access PowSyBl functionalities as well.
What you will learn during the webinar:
- For beginners: discover PowSyBl's functionalities through a quick general presentation and the notebook, without needing any expert coding skills;
- For advanced developers: master the skills to efficiently apply PowSyBl functionalities to your real-world scenarios.
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex ProofsAlex Pruden
This paper presents Reef, a system for generating publicly verifiable succinct non-interactive zero-knowledge proofs that a committed document matches or does not match a regular expression. We describe applications such as proving the strength of passwords, the provenance of email despite redactions, the validity of oblivious DNS queries, and the existence of mutations in DNA. Reef supports the Perl Compatible Regular Expression syntax, including wildcards, alternation, ranges, capture groups, Kleene star, negations, and lookarounds. Reef introduces a new type of automata, Skipping Alternating Finite Automata (SAFA), that skips irrelevant parts of a document when producing proofs without undermining soundness, and instantiates SAFA with a lookup argument. Our experimental evaluation confirms that Reef can generate proofs for documents with 32M characters; the proofs are small and cheap to verify (under a second).
Paper: https://eprint.iacr.org/2023/1886
2. Moose
● platform for software and data analysis
● language independent meta-modeling toolkit
A platform for the development of
exploratory environments
for any language
3. FAMIX
● the basic meta-model for Moose
● language independent
● needs to cover several programming paradigms
● uniforms representation of procedural
and object-oriented languages
4. FAMIX issues
● impossible to uniform all languages
● one language implementation can have different
meta-models
● SQL? DSLs? Structured data?
● AST-level meta-models?
● need of custom extensions
● multiple inheritance
5. new Famix
Standalone meta-models
Old Famix:
CppEntity
CppBehavioural
CppMethod CppFunction
CppClass
CEntity
CFunction
JavaEntity
JavaMethod JavaClass
FAMIXEntity
FAMIXBehavioural
FAMIXMethod FAMIXFunction
FAMIXClass
New Famix:
6. new Famix
Meta-model composition
● Famix = collection of trait groups
● relations
● useful messages, metrics, tools support...
Access
Accessible WithAccesses
* accesses
accessor
incomingAccesses *
variable
7. new Famix
Meta-model composition
● meta-model entities use common traits
TAccess
TAccessible TWithAccesses JavaAccess
JavaLocalVariable JavaMethod
**
9. new Famix
Stateful traits
● New feature of Pharo 7
● by Pablo Tesone
● separate ESUG 2018 talk – do not miss it!
● traits can provide instance variables
● image-side enhancement, no extra VM support
● loadable library (kernel without traits support)
● realized using custom Metaclasses
10. new Famix
How to create meta-models?
By hand?
FAMIXSourcedEntity subclass: #FAMIXNamedEntity
uses: FamixTInvocationsReceiver + FamixTNamed + FamixTPackageable +
FamixTPossibleStub + FamixTWithAnnotationInstances + FamixTWithModifiers +
TDependencyQueries + TEntityMetaLevelDependency...
● complex class definitions
● need to write some manual methods
● annotations for FAME
● accessors
● additional containment definitions for Moose-Query
● testing methods...
11. new Famix
Meta-model builder
● Smalltalk-based DSL for meta-models description
behaviouralEntity := builder newClassNamed: #BehaviouralEntity.
function := builder newClassNamed: #Function.
behaviouralEntity <|-- function.
function --|> #TFunction
(namedEntity property: #name type: #String)
comment: 'This is a comment'.
12. new Famix
Meta-model builder - relations
● new Famix meta-model is described using DSL
class -* method.
((tAccess property: #accessor)
comment: 'Behavioural entity making the access to the variable';
source)
*-
((tWithAccesses property: #accesses)
comment: 'Accesses to variables made by this behaviour').
13. new Famix
Meta-model generators
● Most meta-models share the same basic
infrastructure
● entity, namedEntity, sourceLanguage,
association, sourced entity, comment...
● own meta-model generator as subclass of
a predefined one
● FamixBasicInfrastructureGenerator
● FamixFileBasedLanguageGenerator
● + file, fileAnchor, folder…
20. new Famix
Ring 2
● Generators to not generate code directly but
create a Ring model
● this model is then applied on the image with
respect to its current content
● BONUS:
● fast and easy-to-write tests
● browse the model with Calypso
21. new Famix
Generated methods
tAccess withTesting.
● automatic testing methods (e.g. #isAccess)
in the root entities of the meta-model
● annotations...
● containment navigation utility methods
belongsTo / belongsTo:
● primary container
● used by (Moose-Query)
22. new Famix
Importing contex
● cherry picking on models during import
● dependencies aware
● automatic
builder generateImportingContext: true.
user: context importMethod
importer: context shouldImportMethod
customization: #requires:
23. new Famix
Extensions
Problem:Problem: We want provide some utility methods
or metrics that depend the meta-model structure
example:
numberOfPrivateMethods
● on entity that owns methods
TWithMethods
● methods must support modifiers
TWithModifiers
TMethod
TWithMethods
numberOfPrivateMethods
numberOfPublicMethods
TWithModifiers
JavaMethod
JavaClass
*
24. new Famix
Conditional traits
● traits that are automatically used by entities that
pass a condition
TMethod
TWithMethods
TWithModifiers
conditional trait
numberOfPrivateMethods
numberOfPublicMethods
JavaMethod
JavaClass
*
25. new Famix
Conditional traits
●
Advantage:Advantage: we can provide clean meta-models with rich
functionality and tools support without making meta-
model generation more complex for the user
●
Disadvantage:Disadvantage: more traits in the class definition, a lot of
small traits
What if we want to know number of private
methods for a package?
● more complex conditions (roots, common superclasses)
● Moose-Query
26. Git
● All Moose platform packages managed by Git
● Iceberg, Tonel
● Reproducible builds, CI
https://github.com/moosetechnology/Moose
https://github.com/pavel-krivanek/Moose
27. Summary
● Custom meta-models composition
● Groups of stateful traits
● Relations using slots
● DSL for meta-model description
● Basic language infrastructure generators
● Ring meta-model for code generation
● old FAMIX compatibility
● Importing contexts
● Conditional traits
● Git migration