Variables in Pharo can now be represented as objects in a class hierarchy. This allows defining custom variable types like lazy initialized instance variables. Classes can also be defined fluidly using a cascade syntax that supports specifying variable types. The new variable system is compatible with existing Smalltalk code while enabling new capabilities and a more reflective programming model. Further work includes improving debugging and development tools to leverage the new variable abstractions.
In this session you will learn:
Understand Spring framework overview & its salient features
Spring concepts (IoC container / DI)
Spring-AOP basics
Spring ORM / Spring DAO overview
Spring Web / MVC overview
For more information, visit: https://www.mindsmapped.com/courses/software-development/java-developer-training-for-beginners/
In this session you will learn:
Understand Spring framework overview & its salient features
Spring concepts (IoC container / DI)
Spring-AOP basics
Spring ORM / Spring DAO overview
Spring Web / MVC overview
For more information, visit: https://www.mindsmapped.com/courses/software-development/java-developer-training-for-beginners/
Stormpath .NET Developer Evangelist, Nate Barbettini, presents Token Authentication with ASP.NET Core. Nate will explain how Token Authentication can be used to secure web applications built with ASP.NET Core, REST APIs, and 'unsafe' clients while supporting security best practices and even improving performance and scale.
In this core java training session, you will learn Handling Strings in Java. Topics covered in this session are:
• Memory Allocation & Garbage Collection
• Strings in Java
For more information about this course visit on this link: https://www.mindsmapped.com/courses/software-development/learn-java-fundamentals-hands-on-training-on-core-java-concepts/
The most massive crime of identity theft in history was perpetrated in 2007 by exploiting an SQL Injection vulnerability. This issue is one of the most common and most serious threats to web application security. In this presentation, you'll see some common myths busted and you'll get a better understanding of defending against SQL injection.
We like the architecture of our applications to revolve around the business logic, not around technical details (and especially not around the database).
In my team at Sky Network Services we use the Clean Architecture and it has given us a great deal of benefits: the business logic is explicit, we are free to change our technical decisions, the app is easy to test, working on it is faster and scalable, it’s hard to do the wrong thing, and many more.
But it comes at a cost, of course. In this talk I’ll tell you the story of our experience with Clean Architecture and give you some tips to get the most out of it.
Example Project
https://github.com/mattia-battiston/clean-architecture-example
Downloads
Online: https://goo.gl/DTxftJ
PDF: https://goo.gl/ZAtdBN
Powerpoint: https://goo.gl/D54wdZ (but you need to install these fonts to see it properly: https://goo.gl/iH8SO5)
Object Oriented Concept Static vs. Non StaticOXUS 20
Static is not the true intend of Object Oriented Design and Concept.
For instance, we turn a LAMP "off" it does not suppose to turn the LAMPS of the entire world goes "off".
This is a basic tutorial on Spring core.
Best viewed when animations and transitions are supported, e.g., view in MS Powerpoint. So, please try to view it with animation else the main purpose of this presentation will be defeated.
Welcome to presentation on Spring boot which is really great and relatively a new project from Spring.io. Its aim is to simplify creating new spring framework based projects and unify their configurations by applying some conventions. This convention over configuration is already successfully applied in so called modern web based frameworks like Grails, Django, Play framework, Rails etc.
Frameworks are large prewritten code to which you add your own code to solve a problem in a specific domain.
You make use of a framework by calling its methods,inheritance,and supplying “call-backs” listeners.
Spring is the most popular application development framework for enterprise Java™.
Millions of developers use Spring to create high performing, easily testable, reusable code without any lock-in.
Here I discuss about Java programming language and easiest way to solve programming problem. Java basic syntax and their uses are described briefly so that anyone can easily understand within very short time. If anyone follow the slide with proper way,I assure that he or she will find java programming interesting.
This session is all about - the mechanism provided by Java Virtual Machine to reclaim heap space from objects which are eligible for Garbage collection.
Stormpath .NET Developer Evangelist, Nate Barbettini, presents Token Authentication with ASP.NET Core. Nate will explain how Token Authentication can be used to secure web applications built with ASP.NET Core, REST APIs, and 'unsafe' clients while supporting security best practices and even improving performance and scale.
In this core java training session, you will learn Handling Strings in Java. Topics covered in this session are:
• Memory Allocation & Garbage Collection
• Strings in Java
For more information about this course visit on this link: https://www.mindsmapped.com/courses/software-development/learn-java-fundamentals-hands-on-training-on-core-java-concepts/
The most massive crime of identity theft in history was perpetrated in 2007 by exploiting an SQL Injection vulnerability. This issue is one of the most common and most serious threats to web application security. In this presentation, you'll see some common myths busted and you'll get a better understanding of defending against SQL injection.
We like the architecture of our applications to revolve around the business logic, not around technical details (and especially not around the database).
In my team at Sky Network Services we use the Clean Architecture and it has given us a great deal of benefits: the business logic is explicit, we are free to change our technical decisions, the app is easy to test, working on it is faster and scalable, it’s hard to do the wrong thing, and many more.
But it comes at a cost, of course. In this talk I’ll tell you the story of our experience with Clean Architecture and give you some tips to get the most out of it.
Example Project
https://github.com/mattia-battiston/clean-architecture-example
Downloads
Online: https://goo.gl/DTxftJ
PDF: https://goo.gl/ZAtdBN
Powerpoint: https://goo.gl/D54wdZ (but you need to install these fonts to see it properly: https://goo.gl/iH8SO5)
Object Oriented Concept Static vs. Non StaticOXUS 20
Static is not the true intend of Object Oriented Design and Concept.
For instance, we turn a LAMP "off" it does not suppose to turn the LAMPS of the entire world goes "off".
This is a basic tutorial on Spring core.
Best viewed when animations and transitions are supported, e.g., view in MS Powerpoint. So, please try to view it with animation else the main purpose of this presentation will be defeated.
Welcome to presentation on Spring boot which is really great and relatively a new project from Spring.io. Its aim is to simplify creating new spring framework based projects and unify their configurations by applying some conventions. This convention over configuration is already successfully applied in so called modern web based frameworks like Grails, Django, Play framework, Rails etc.
Frameworks are large prewritten code to which you add your own code to solve a problem in a specific domain.
You make use of a framework by calling its methods,inheritance,and supplying “call-backs” listeners.
Spring is the most popular application development framework for enterprise Java™.
Millions of developers use Spring to create high performing, easily testable, reusable code without any lock-in.
Here I discuss about Java programming language and easiest way to solve programming problem. Java basic syntax and their uses are described briefly so that anyone can easily understand within very short time. If anyone follow the slide with proper way,I assure that he or she will find java programming interesting.
This session is all about - the mechanism provided by Java Virtual Machine to reclaim heap space from objects which are eligible for Garbage collection.
Java is a general-purpose computer-programming language that is concurrent, class-based, object-oriented, and specifically designed to have as few implementation dependencies as possible
Java is a high level, an object oriented and mostly used programming language. It has several applications as in web development, app development, android development etc. This is a ppt that will give a basic idea about java its uses and its applications.
Updated version of the Lecture. VUB Brussels, Ocotber 2018
Smalltalk provides many reflective features, yet behavioral reflection is limited. Pharo provides reflective features that go beyond standard Smalltalk.
The lecture will present Reflectivity, a framework for fine-grained behavioral reflection. It allows to annotate the AST with MetaLinks, alowing meta-objects to change behavior down to a single operation.
After a overview of the framework, we show how MetaLinks are used in Pharo to realize IDE tools such as BreakPoints and Code Coverage.
Smalltalk provides many reflective features, yet behavioral reflection is limited. Pharo provides reflective features that go beyond standard Smalltalk.
The lecture will present Reflectivity, a framework for fine-grained behavioral reflection. It allows to annotate the AST with MetaLinks, alowing meta-objects to change behavior down to a single operation.
After a overview of the framework, we show how MetaLinks are used in Pharo to realize IDE tools such as BreakPoints and Code Coverage.
Topic: Contributing to Pharo 7
Youtube: https://www.youtube.com/watch?v=VW7XrFjnbyw
We will show:
- How to submit issue tracker entries to the Pharo Issue Tracker
- How to do a Pull Request if you want to do a fix or enhancment
- How to review and comment other peoples fixes.
Dynamically Composing Collection Operations through Collection PromisesMarcus Denker
Dynamically Composing Collection Operations through Collection Promises.
Juan Pablo Sandoval Alcocer, Marcus Denker,
Alexandre Bergel, Yasett Acuran
Presented at IWST 2016
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:
GridMate - End to end testing is a critical piece to ensure quality and avoid...ThomasParaiso2
End to end testing is a critical piece to ensure quality and avoid regressions. In this session, we share our journey building an E2E testing pipeline for GridMate components (LWC and Aura) using Cypress, JSForce, FakerJS…
In his public lecture, Christian Timmerer provides insights into the fascinating history of video streaming, starting from its humble beginnings before YouTube to the groundbreaking technologies that now dominate platforms like Netflix and ORF ON. Timmerer also presents provocative contributions of his own that have significantly influenced the industry. He concludes by looking at future challenges and invites the audience to join in a discussion.
Communications Mining Series - Zero to Hero - Session 1DianaGray10
This session provides introduction to UiPath Communication Mining, importance and platform overview. You will acquire a good understand of the phases in Communication Mining as we go over the platform with you. Topics covered:
• Communication Mining Overview
• Why is it important?
• How can it help today’s business and the benefits
• Phases in Communication Mining
• Demo on Platform overview
• Q/A
Dr. Sean Tan, Head of Data Science, Changi Airport Group
Discover how Changi Airport Group (CAG) leverages graph technologies and generative AI to revolutionize their search capabilities. This session delves into the unique search needs of CAG’s diverse passengers and customers, showcasing how graph data structures enhance the accuracy and relevance of AI-generated search results, mitigating the risk of “hallucinations” and improving the overall customer journey.
Unlocking Productivity: Leveraging the Potential of Copilot in Microsoft 365, a presentation by Christoforos Vlachos, Senior Solutions Manager – Modern Workplace, Uni Systems
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.
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.
Sudheer Mechineni, Head of Application Frameworks, Standard Chartered Bank
Discover how Standard Chartered Bank harnessed the power of Neo4j to transform complex data access challenges into a dynamic, scalable graph database solution. This keynote will cover their journey from initial adoption to deploying a fully automated, enterprise-grade causal cluster, highlighting key strategies for modelling organisational changes and ensuring robust disaster recovery. Learn how these innovations have not only enhanced Standard Chartered Bank’s data infrastructure but also positioned them as pioneers in the banking sector’s adoption of graph technology.
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.
UiPath Test Automation using UiPath Test Suite series, part 5DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 5. In this session, we will cover CI/CD with devops.
Topics covered:
CI/CD with in UiPath
End-to-end overview of CI/CD pipeline with Azure devops
Speaker:
Lyndsey Byblow, Test Suite Sales Engineer @ UiPath, Inc.
DevOps and Testing slides at DASA ConnectKari Kakkonen
My and Rik Marselis slides at 30.5.2024 DASA Connect conference. We discuss about what is testing, then what is agile testing and finally what is Testing in DevOps. Finally we had lovely workshop with the participants trying to find out different ways to think about quality and testing in different parts of the DevOps infinity loop.
2. Plan for an interactive
Exploration
• These Slides where done as an outline / plan for an
interactive exploration
• They might therefore be not exactly the same as the
content of the Demo
3. Variables in ST80
• Temporary Variable
• Instance Variable, Class Instance Variable
• Class Variable (and Pool Variable)
• Globals
• Pseudo Variables: self, super, thisContext
4. Instance Variables
• De
fi
ned by the Class (or Trait)
• Can be read via the object:
• instVarNamed:(put:), #instVarAt:(put:
)
• Instance Variables have an o
ff
set in the Object
• De
fi
ned by the order of the de
fi
ned vars in the Hierarchy
1@2 instVarNamed: 'x'
5. Temporary Variable
• De
fi
ned by a method or Block
• Arguments are temps, too
• Can be read via the context
• #tempNamed:, tempNamed:put
:
• With Closures this is more complex than you ever want to
know!
[| temp | temp := 1. thisContext tempNamed: 'temp' ] value
6. Globals
• Entries in the “Smalltalk globals” Dictionary
• Contain the value
• Can be read via the global Dictionary
• Access via #value / value: on the Association
• Class Vars and Pool Vars are just Associations from other
Dictionaries
Smalltalk globals at: #Object.
Object binding value.
8. Globals/Class Vars
• Here we have at least the Association (#binding):
• But there is no “GlobalVariable” class
• No API other than #value:/#value
• Classes de
fi
ne just names of variables
Object binding
9. Instance Variables
• The class just knows the names
• There is no Object representing instance variables
• Classes de
fi
ne just names of variables
• Bytecode accesses by o
ff
set
Point allInstVarNames
10. Temporary Variables
• The methods know nothing. Even to know the variable
name we need the compiler (and the source)
• There is no object representing temp Variables
• Re
fl
ective read and write is *hard* -> compiler needs to
create extensive meta-data
11. Why Not Do Better?
• Of course memory was a concern in 1980, but today we
should be able to do better!
• Why not have objects (and a class Hierarchy) that
describes all Variables in the system?
12. Variables
• Every de
fi
ned Variable is described a meta object
• Class Hierarchy: Variable
• GlobalVariable
• ClassVariable
• Temporary Variables
• Instance Variables (aka Slots)
14. Example: vars of a class
• Get all Variables of a class
• Inspect it
• #usingMethods
Point instanceVariables
15. Instance Variable
• Read x in a Point
• Write
• read/write without sending a message to the object
(Point instanceVariables
fi
rst) read: (5@4)
point := 5@4.
(Point instanceVariables
fi
rst) write: 100 to: point.
16. Globals
• Object binding class
• Object binding read
• We keep the Association API so the Global Variables can
play the role of associations in the global dictionary.
Object binding usingMethods
17. Temporary Variables
• There are too many to allocate them all
• They are created on demand (with the AST)
((LinkedList>>#do:) temporaryVariableNamed: 'aLink')
18. #lookupVar:
• Every variable knows the scope is was de
fi
ned in
• Every scope know the outer scope
• #lookupVar: looks up names along the scope
[ | temp |thisContext lookupVar: 'temp' ] value.
[ | temp |thisContext lookupVar: ‘Object' ] value
(Point slotNamed: #x ) scope outerScope
19. Debugger: Read Vars
• In the Debugger we to be able to read Variables from a
DoIt.
• lookupVar, then readInContext works for all Variables!
• DoItIn: uses this:
[ | temp | temp :=1 . (thisContext lookupVar: 'temp')
readInContext: thisContext] value
Context>>readVariableNamed: aName
^ (self lookupVar: aName) readInContext: self
20. Variables as AST
Annotations
• Pharo uses the RB AST
• RBVariableNode instance for every use of a Variable
• Annotated with subclasses of Variables:
(Point>>#x) ast variableNodes
fi
rst variable == (Point slotNamed: #x)
21. OCASTSemanticAnalyzer
• OCASTSemanticAnalyzer is the visitor that does the name
analysis
• Adds a scope for each block/the method
• Adds de
fi
ned variables to the scope
• Every RBVariableNode use will get annotated with the
variable that #lookUpVar:
fi
nds
22. Variables and Bytecode
• Compiler just delegates to the Variable
• InstanceVariableSlot>>#emitStore:
• emitStore/emitValue:
emitStore: methodBuilder
"generate store bytecode"
methodBuilder storeInstVar: index
23. Does that mean…
• If variables are de
fi
ned by a class, could we not make a
subclass?
• And even override the code generation methods ?!
25. Lazy Variables
• Two ways to initialize instance state in ST80
• implement #initialize method (#new calls it)
• use accessors and lazy init pattern
• Can we not do better? Can the Variable not initialize
itself?
26. Lazy Variables
InstanceVariableSlot subclass: #LazyInitializedInstanceVariabl
e
instanceVariableNames: 'default
'
classVariableNames: '
'
package: ‘CompilerTalk
'
printOn: aStrea
m
aStream
store: self name
;
nextPutAll: ' => '
;
nextPutAll: self class name
;
nextPutAll: ' default: '
.
default printOn: aStrea
m
27. Lazy Variables
read: anObjec
t
"if the value is nil, we write the default value
"
^ (super read: anObject) ifNil: [
self write: default to: anObject
]
emitValue: aMethodBuilde
r
"generate bytecode for '<varname> ifNil: [<varname> := default]'
"
aMethodBuilde
r
pushInstVar: index
;
pushDup
;
pushLiteral: nil
;
send: #==
;
jumpAheadTo: #target if: false
;
popTop
;
pushLiteral: default
;
storeInstVar: index
;
jumpAheadTarget: #targe
t
28. Let’s use it
Object subclass: #MyClas
s
instanceVariableNames: 'var
'
classVariableNames: '
'
package: ‘CompilerTalk'
?
How can we make ‘var’ to be a LazyInitializedInstanceVariable?
29. Class De
fi
nition
• We need a new way to de
fi
ne classes: Fluid Class
De
fi
nition
• uses cascade for extensibility
• no string, but {} arrays for variables
31. Fluid Class De
fi
nition
• Pharo9: Default is the ST80 style class de
fi
nition
• Fluid can be enabled
• It is used automatically when needed (when using a self
de
fi
ned Variable, for example)
• Goal: Default for Pharo 10
32. Let’s use it
Object << #MyClas
s
slots: { #var }
;
package: ‘CompilerTalk'
#notation for normal instance Variables
33. Let’s use it
Object << #MyClas
s
slots: { #var => LazyInitializedInstanceVariable default: 5 }
;
package: ‘CompilerTalk'
For de
fi
ning other variables: use =>
MyClass new var
.
(MyClass new var: 8) var
Inspect method to see bytecode
put halt in read: method of Slot
34. thisProcess
• To get the current Process we use a message send to a
global variable. But we could use a variable like
thisProces
s
• This avoids a message send (and possible interrupt
check) as we can emit a bytecode
37. Compatibility
• Fully backward compatible: we can load ST80 style class
de
fi
nitions (and Pharo9 just shows this view by default)
• Re
fl
ective API is compatible: “instVarAt:”… still exist
• If you want to restrict yourself to ST80, a checker could
be easily created
38. Compatibility
• But if you start to use your own kind of Variables, you
code will not be “ST80” compatible anymore
• But you will be able to use the power of the new
abstraction provided
• Was this not the original idea behind Smalltalk? That a
Programming System is a Medium?
39. Where do we use it?
• We are careful! We use Pharo ourselves…
• We need a stable system to work with
• We need to learn about how to use Variables best
• Variables are used by the Compiler internally
• Every instance variable is an InstanceVariableSlot (Globals, class vars)
• Variables are used by the Debugging infrastructure to read/write
• replaced the DebuggerMethodMap
• The Spec UI Framework uses ObservableSlot
40. Next Steps Variables
• DoitVariable for nicer code in #DoItIn: methods
• Undeclared Variables
• programmer interaction in read/write, not compile!
• better behaviour for test-
fi
rst development
• Implement ThisProcessVariable in Pharo10
• Use WeakSlot to simplify some code
41. Next Steps Fluid Classes
• Finish the last problems (see issue tracker), make it the
default
• Experiments with Meta Data for Classes
• Tag abstract classes
• Experiment with Pragmas for classes
• Compiler, compiler plugging, compiler options
42. More..
• Extend the MetaLink Model to allow MetaLinks on
Variables (
fi
rst code is there already)
• More Experiments about Slot Composition
• Implement Default value once, use it on ClassVariable,
InstanceVariableSlot and WeakSlot
• First prototype, but it turned out to be too complex
43. Thanks…
• This is the work on *many* contributors from the Pharo
Community
• Thanks for lots of interesting discussions, ideas, and
code!
44. Help Wanted
• We are always interested in improvements!
• Pharo 10 is under active development
• 30-40 Pull Requests integrated per week
• Your Improvements are Welcome!
https://github.com/pharo-project/pharo