SlideShare a Scribd company logo
1 of 129
Download to read offline
Pharo: Live objects for
complex projects
http://stephane.ducasse.free.fr
http://www.pharo.org
I did my PhD in Lisp and
Scheme :)
Talk Roadmap
• Pharo: an open-source project
• Get the feel
• Model/Syntax
• Coding with the audience
• Web Development in Pharo
• Ongoing works
• Wrap-up
http://www.pharo.org
Pure object language
Great community of active doers
Powerful and full access
Elegant and fun to program
Living system under your fingers
100% MIT inside
Mac, Linuxes, Windows, iOS
A powerful engine
to invent (y)our future
Some projects
Web frameworks - Seaside, iliad, HTTP2, Tide, Aida, Mustache, Oauth,
WebSocket CSS styling Format parsers - XML, HTML, NeoJSON, NeoCSV.
Application Security, Graphics frameworks - Roassal, Mondrian, EyeSee, GraphET,
Tool builders - Glamour, Spec, XUL, MacNative, Databases - DBXTalk, Mongo,
Riak, CouchDB, MySql, PunQLite. Object-Oriented databases - Magma, Goods.
Database abstraction - Voyage, ROE MetaCompiler - Petit Parser, SmaCC - Proxy,
Logging - SystemLogger, Toothpick, SimpleLogger Units: Aconcagua, Units Time -
Chronos Calendars, Timezones Productivity Tools - Codecritics, Refactorings,
Cherry picking merge tools: merge tool, Komitter Versionner, Mock frameworks
(baby mock), PDFgeneration - Artefact, Testing frameworks - PhExample, SUnit
Assembly generation: ASMJIT, Integration Tools: Hudson, Alternate window
manager, Games: Tetris, Sokoban, Miner, Chess, CrossWords MetaModeling
Frameworks - Magritte, Platypus, Cloud deployement - cloudfork cloudPharo, 3D:
Roassal3d, NBOpenGL, JVM connection Bio informatics, ODE solvers, Interactive
Geometry - DrGeo…
Some projects
Web frameworks - Seaside, iliad, HTTP2, Tide, Aida, Mustache, Oauth,
WebSocket CSS styling Format parsers - XML, HTML, NeoJSON, NeoCSV.
Application Security, Graphics frameworks - Roassal, Mondrian, EyeSee, GraphET,
Tool builders - Glamour, Spec, XUL, MacNative, Databases - DBXTalk, Mongo,
Riak, CouchDB, MySql, PunQLite. Object-Oriented databases - Magma, Goods.
Database abstraction - Voyage, ROE MetaCompiler - Petit Parser, SmaCC - Proxy,
Logging - SystemLogger, Toothpick, SimpleLogger Units: Aconcagua, Units Time -
Chronos Calendars, Timezones Productivity Tools - Codecritics, Refactorings,
Cherry picking merge tools: merge tool, Komitter Versionner, Mock frameworks
(baby mock), PDFgeneration - Artefact, Testing frameworks - PhExample, SUnit
Assembly generation: ASMJIT, Integration Tools: Hudson, Alternate window
manager, Games: Tetris, Sokoban, Miner, Chess, CrossWords MetaModeling
Frameworks - Magritte, Platypus, Cloud deployement - cloudfork cloudPharo, 3D:
Roassal3d, NBOpenGL, JVM connection Bio informatics, ODE solvers, Interactive
Geometry - DrGeo…
AND MUCH
MORE
Our goal...
An ecosystem where
innovation/business bloom
We want that **you** can make
money with Pharo. We want to be
able to invent solutions to existing
problems.
!
We want a powerful innovative
dynamic language where we can build
our future.
We are a cool community
Tweets, blogs, buzz
Pharo 3,303 tweets / 1092 followers
S. Ducasse tweets 669 / 804 followers
S. Stinckwich 8712 / 1006 followers
Moose 502 tweets / 255 followers
Youtube Pharo smalltalk: about 1540
videos!
• Uni. of Buenos Aires • Uni. of Bern • Uni. of
Maroua • Uni. of Brussels • Ecole des Mines de
Douai • Uni. de Savoie • Ivan Franko Nat. Uni. of
Lviv • Czech Technical Uni. • CULS Prague

• Uni. of Quilmes • Uni. of La Plata • Northern
Michigan Uni. • Uni. Technologica Nacional
(UTN) • Uni. Catholic of Argentina • Uni. of Chile
• Uni. Policnica de Catalunya • Uni. de Bretagne
Occidentale • Uni. of Tomsk • Uni. of Fernhagen
• IT University of Copenhagen • Uni. Cat del
Sacro Cuore of Brescia
Pharo's Teachers
Lafhis (AR)

Software Composition Group (CH)

CAR (FR)

RMOD (FR)
Ummisco (IRD)
Reveal (CH)
Lysic (FR)

Pleiad (CL)
CEA-List (FR)
Uqbar (AR)
CCMI-FIT(CZ)
Research Groups
www.2denker.de
www.agilitic.com
www.airflowing.com
www.anymorphic.com
www.ardishealth.com
www.beta9.be
www.bombardier.com
www.cmsbox.com
www.finworks.biz
seaside.gemstone.com
www.ibizlog.com
www.inceptive.be
www.jooshr.com
www.majcon.de
www.mindclue.ch
www.miriamtech.com
www.myneat.org
www.netstyle.ch
www.panasoft.com
www.pinesoft.co.uk
www.promedmedical.net
www.sharedlogic.ca
www.smallworks.com.ar
www.10pines.com
www.trantaria.com
www.yesplan.be
www.synectique.eu
www.sorabito.com
objectprofile.com
!
Companies
Books
Pharo by example http://www.pharobyexample.org
translated to french, merci!
translated to spanish, gracias!
translated to japanese, ありがとう!
Deep into Pharo http://www.deepintopharo.org
Numerical Methods
	 https://github.com/SquareBracketAssociates/NumericalMethods/
releases
New books in preparation
Updated Pharo by Example
Entreprise Pharo
Fun with Pharo
Some success stories…
Continuous API Testing
keep your services under control 24/7
Norbert Hartl norbert@2denker.de
www.2denker.de
eMCee is developed and deployed using pharo
- zinc
- seaside
- jquery
- magritte
- mongotalk
- magritte-mongo
- fuel
- metacello
mail@2denker.de
• Entry Level Track & Trace Product
• Complements T3 Full Product
• One Page Javascript HTML5 / Ajax Client
• REST Back End in Pharo Smalltalk
• Gateways to multiple data providers
WEBDRUCK.CH
Web-To-Print Solution
• Design and create
individual printed
matter
• eShop with credit
card payment
• High quality PDF
output with Printing
Process integration
• Thousands of orders
for seven Swiss
printing companies
NTed: disaster scenario
recovery
iBizLog - http://www.ibizlog.com
A product by Smallworks
Tuesday, May 15, 12
Pinesoft MBagger
Since may 2008
Pharo 4.0 - Apr/Jul 2015 (1271 issues closed…)
Pharo 3.0 - Apr 2013 (2364 issues closed)
Pharo 2.0 - Apr 2013 (1727 issues closed)
Pharo 1.4 - Apr 2012 (860 updates)
Pharo 1.3 (700 updates)
Pharo 1.2 - mar 2011 (500 updates)
Pharo 1.1 - jul 2010 (410 updates)
We are improving
the complete
system!
Of course
not
everything
is perfect :)
But it feels
like that:
Pharo
is
yours
with 20 min per
week you can
get an impact!
Getting the object feel
• Live interaction
• Using Inspectors
• Talk and interact with objects
• Programs are objects too
http://youtu.be/CuimMwuZiGA
Scripting live
https://www.youtube.com/watch?v=1Nze9tnwYxY
http://www.pharocasts.com/2010/08/see-how-to-get-
data-from-url-parse-xml.html
Simplicity and elegance
• Syntax fits on a postcard!
• Simple but complete object model
The complete syntax
exampleWithNumber: x
“A method that illustrates every part of Smalltalk method syntax”
<menu>
| y |
true & false not & (nil isNil) ifFalse: [self halt].
y := self size + super size.
#($a #a ‘a’ 1 1.0)
do: [ :each | Transcript
show: (each class name);
show: (each printString);
show: ‘ ‘].
^ x < y
…
The complete syntax
exampleWithNumber: x
“A method that illustrates every part of Smalltalk method syntax”
<menu>
| y |
true & false not & (nil isNil) ifFalse: [self halt].
y := self size + super size.
#($a #a ‘a’ 1 1.0)
do: [ :each | Transcript
show: (each class name);
show: (each printString);
show: ‘ ‘].
^ x < y
Less is more!
No constructors, no static methods, no operators
No type declaration, no primitive types,
No interfaces, no need for factory
No packages/private/protected modifiers
No parametrized types
No boxing/unboxing
Still powerful
A Pure OO World
Only objects!
mouse, booleans, arrays, numbers, strings, windows, scrollbars, canvas, files, trees, compilers, sound, url, socket, fonts, text,
collections, stack, shortcut, streams, …
Objects are instances of
Classes
Objects are instances of Classes
!
(10@200)
Objects are instances of Classes
!
(10@200) class
Objects are instances of Classes
!
(10@200) class
Point
Classes are objects too
!
!
Classes are objects too
!
Point selectors
!
!
!
Classes are objects too
!
Point selectors
!
an IdentitySet(#eightNeighbors #+ #isZero #sortsBefore: #degrees #printOn: #sideOf:
#fourNeighbors #hash #roundUpTo: #min: #min:max: #max #adaptToCollection:andSend:
#quadrantOf: #crossProduct: #= #nearestPointOnLineFrom:to: #bitShiftPoint: #* #guarded
#insideTriangle:with:with: #grid: #truncateTo: #y #setR:degrees: #normal #directionToLineFrom:to:
#truncated #nearestPointAlongLineFrom:to: #theta #scaleTo: #encodePostscriptOn: #> #asPoint
#extent: #r #roundTo: #max: #interpolateTo:at: #triangleArea:with: #angleWith: #dotProduct:
#isSelfEvaluating #'<=' #to:intersects:to: #'//' #isInsideCircle:with:with: #< #scaleFrom:to: #corner:
#to:sideOf: #x #'>=' #roundDownTo: #onLineFrom:to:within: #transposed #ceiling #angle
#basicType #translateBy: #asFloatPoint #'' #adaptToNumber:andSend: #abs #negated #octantOf:
#asIntegerPoint #flipBy:centerAt: #scaleBy: #floor #onLineFrom:to: #isPoint #reflectedAbout: #/
#dist: #asNonFractionalPoint #bearingToPoint: #reciprocal #rotateBy:centerAt: #rotateBy:about:
#rounded #setX:setY: #squaredDistanceTo: #normalized #veryDeepCopyWith: #- #storeOn: #rect:
#deepCopy #isIntegerPoint #min #adhereTo: #adaptToString:andSend:)
Classes are objects too
!
Point instVarNames
Classes are objects too
!
Point instVarNames
>#('x' 'y')
Methods are public
Methods are all late-bound
Instance variables are
protected
Single Inheritance
Summary
• Everything is an object
• Single inheritance, public methods, protected attributes
• One single model
• Classes are simply objects too
• A class is instance of another class
• One unique method lookup, look in the class of the
receiver
Messages + Objects
postman.send(mail,recipient);
postman.send(mail,recipient);
postman send mail recipient
postman send mail to recipient
postman send: mail to: recipient
2 + 5
2 + 5
> 7
Yes + is a message sent to 2
Unary
messages
Binary
messages
Keywords messages
5 factorial!
Transcript cr
3 + 4
3 between: 10 and: 5!
!
Transcript show: 'hello world'
Blocks: Closures all the way
• Anonymous method
• Passed as method argument or stored
• Functions
	 	 fct(x)= x*x+3, fct(2).
!
	 	 fct :=[:x| x * x + 3].
fct value: 2
!
Every control structure is a message
4 timesRepeat: [Beeper beep]
max: aNumber!
! ^ self < aNumber !
! ! ifTrue: [aNumber] !
! ! ifFalse: [self]
<= aPoint !
! "Answer whether the receiver is neither!
! below nor to the right of aPoint."!
!
! ^ x <= aPoint x and: [y <= aPoint y]
Method name Argument Comment
Return Binary message
Keyword messageInstance variable
Block
(2@3) <= (5@6) true
Object subclass: #Point!
! instanceVariableNames: 'x y'!
! classVariableNames: ''!
! category: 'Kernel-BasicObjects'
2 instance variables
subclass of Object
Fun with numbers
1 class
1 class
> SmallInteger
1 class maxVal
> 1073741823
(1 class maxVal + 1)
(1 class maxVal + 1)
> 1073741824
(1 class maxVal + 1) class
!
(1 class maxVal + 1) class
> LargePositiveInteger
1000 factorial
>
1000 factorial
>
4023872600770937735437024339230039857193748642107146325437999104299385123986290205920442084869694048004799886101
9719605863166687299480855890132382966994459099742450408707375991882362772718873251977950595099527612087497546249
7043601418278094646496291056393887437886487337119181045825783647849977012476632889835955735432513185323958463075
5574091142624174743493475534286465766116677973966688202912073791438537195882498081268678383745597317461360853795
3452422158659320192809087829730843139284440328123155861103697680135730421616874760967587134831202547858932076716
9132448426236131412508780208000261683151027341827977704784635868170164365024153691398281264810213092761244896359
9287051149649754199093422215668325720808213331861168115536158365469840467089756029009505376164758477284218896796
4624494516076535340819890138544248798495995331910172335555660213945039973628075013783761530712776192684903435262
5200015888535147331611702103968175921510907788019393178114194545257223865541461062892187960223838971476088506276
8629671466746975629112340824392081601537808898939645182632436716167621791689097799119037540312746222899880051954
4441428201218736174599264295658174662830295557029902432415318161721046583203678690611726015878352075151628422554
0265170483304226143974286933061690897968482590125458327168226458066526769958652682272807075781391858178889652208
1643483448259932660433676601769996128318607883861502794659551311565520360939881806121385586003014356945272242063
4463179746059468257310379008402443243846565724501440282188525247093519062092902313649327349756551395872055965422
8749774011413346962715422845862377387538230483865688976461927383814900140767310446640259899490222221765904339901
8860185665264850617997023561938970178600408118897299183110211712298459016419210688843871218556461249607987229085
1929681937238864261483965738229112312502418664935314397013742853192664987533721894069428143411852015801412334482
8015051399694290153483077644569099073152433278288269864602789864321139083506217095002597389863554277196742822248
7575867657523442202075736305694988250879689281627538488633969099598262809561214509948717012445164612603790293091
2088908694202851064018215439945715680594187274899809425474217358240106367740459574178516082923013535808184009699
6372524230560855903700624271243416909004153690105933983835777939410970027753472000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1000 factorial / 999 factorial
1000
1000
Learning from the
system…
Check in the system
Let us hack something…
(3 D20 + 3 D4) roll
The Pharo Stack is
Gorgeous
Voyage/ DBXTalk / Mongo / (Gemstone :)
Magritte
Zinc, Zodiac(HTTPS), Oauth, ...
STON, JSON, LDAP...
Seaside, Rest, Zinc Rest, Illiad, Aida, Reef
Amber!
Dynamic Web Applications
with Seaside
!
http://seaside.st
Demo
1Natural Flow
Demo
<form action="result.html">
<input type="hidden" name="value1" value="<% value1 %>">
<input type="text" name="value2">
<input type="submit" value="OK">
</form>
<p>
<% value1 + value2 %>
</p>
<form action="second.html">
<input type="text" name="value1">
<input type="submit" value="OK">
</form>
<form action="result.html">
<input type="text" name="value2">
<input type="submit" value="OK">
</form>
Who cares about
HTTP anyway?
is different
Concentrate on
your application ...
... no manual
request parsing
... no XML
configuration files
3 user interactions
3 lines of code
value1 := self request: ‘First Number’.
value2 := self request: ‘Second Number’.
self inform: value1 + value2.
AB
call:A Bx :=
AB
answer:B
A
x :=
We don’t think in
pages ...
..., but in stateful
components
Valid
Source:stock.xchng,AlNakib
Did you notice?
Web applications
No URL fiddling
No request parsing
Development tools
Control flow at ease
On going work
• Working bootstrap for pharo reflective core
• Customized images (11k)
• First class variables for real
• associations
• data flow model
Glimpse on going work
• Package catalog
• Git (the right subset)
• OSWindow (SDL)
• Multi touch support
• Full vector graphics
VM
• Spur: new memory manager (got *4 speed up)
• ephemerons, pinned object, fragmented memory, 64
bits
• Sista: next level JIT
• inliner, constant propagation…
• Unified FFI + threaded
• one syntax several back-ends
Fun, simple
Pure & elegant
Productive
Empowering
Addictive
Full access
Creating good energy, 	

software quality,	

learning and having fun	

!
http://pharo.org
Join

More Related Content

Viewers also liked

PharoDAYS 2015: Pillar - One format to rule them all by Damien Cassou and Ste...
PharoDAYS 2015: Pillar - One format to rule them all by Damien Cassou and Ste...PharoDAYS 2015: Pillar - One format to rule them all by Damien Cassou and Ste...
PharoDAYS 2015: Pillar - One format to rule them all by Damien Cassou and Ste...Pharo
 
PharoDAYS 2015: Graphics and Visualization by Yuriy Tymchuk
PharoDAYS 2015: Graphics and Visualization by Yuriy TymchukPharoDAYS 2015: Graphics and Visualization by Yuriy Tymchuk
PharoDAYS 2015: Graphics and Visualization by Yuriy TymchukPharo
 
Pharo Hands-On: 04 image-runtime
Pharo Hands-On: 04 image-runtimePharo Hands-On: 04 image-runtime
Pharo Hands-On: 04 image-runtimePharo
 
PharoDAYS 2015: Connecting to Databases by Norbert Hartl
PharoDAYS 2015: Connecting to Databases by Norbert HartlPharoDAYS 2015: Connecting to Databases by Norbert Hartl
PharoDAYS 2015: Connecting to Databases by Norbert HartlPharo
 
PharoDAYS 2015: Web 2.0 by Esteban Lorenzano
PharoDAYS 2015: Web 2.0 by Esteban LorenzanoPharoDAYS 2015: Web 2.0 by Esteban Lorenzano
PharoDAYS 2015: Web 2.0 by Esteban LorenzanoPharo
 
Pharo Status (Fosdem 2015)
Pharo Status (Fosdem 2015)Pharo Status (Fosdem 2015)
Pharo Status (Fosdem 2015)Pharo
 
PharoDAYS 2015: FFI - The good, the bad and the ugly by Esteban Lorenzano
PharoDAYS 2015: FFI - The good, the bad and the ugly by Esteban LorenzanoPharoDAYS 2015: FFI - The good, the bad and the ugly by Esteban Lorenzano
PharoDAYS 2015: FFI - The good, the bad and the ugly by Esteban LorenzanoPharo
 
PharoDAYS 2015: Seaside in 10 minutes by Johan Brichau
PharoDAYS 2015: Seaside in 10 minutes by Johan BrichauPharoDAYS 2015: Seaside in 10 minutes by Johan Brichau
PharoDAYS 2015: Seaside in 10 minutes by Johan BrichauPharo
 
PharoDAYS 2015: Using Spec to Build a UI by Johan Fabry
PharoDAYS 2015: Using Spec to Build a UI by Johan FabryPharoDAYS 2015: Using Spec to Build a UI by Johan Fabry
PharoDAYS 2015: Using Spec to Build a UI by Johan FabryPharo
 
Pharo Hands-on: 05 object model
Pharo Hands-on: 05 object modelPharo Hands-on: 05 object model
Pharo Hands-on: 05 object modelPharo
 
Pharo Hands-On: 02 syntax
Pharo Hands-On: 02 syntaxPharo Hands-On: 02 syntax
Pharo Hands-On: 02 syntaxPharo
 
Pharo Hand-Ons: 06 finding information
Pharo Hand-Ons: 06 finding informationPharo Hand-Ons: 06 finding information
Pharo Hand-Ons: 06 finding informationPharo
 
PharoDAYS 2015: On Relational Databases by Guille Polito
PharoDAYS 2015: On Relational Databases by Guille PolitoPharoDAYS 2015: On Relational Databases by Guille Polito
PharoDAYS 2015: On Relational Databases by Guille PolitoPharo
 

Viewers also liked (13)

PharoDAYS 2015: Pillar - One format to rule them all by Damien Cassou and Ste...
PharoDAYS 2015: Pillar - One format to rule them all by Damien Cassou and Ste...PharoDAYS 2015: Pillar - One format to rule them all by Damien Cassou and Ste...
PharoDAYS 2015: Pillar - One format to rule them all by Damien Cassou and Ste...
 
PharoDAYS 2015: Graphics and Visualization by Yuriy Tymchuk
PharoDAYS 2015: Graphics and Visualization by Yuriy TymchukPharoDAYS 2015: Graphics and Visualization by Yuriy Tymchuk
PharoDAYS 2015: Graphics and Visualization by Yuriy Tymchuk
 
Pharo Hands-On: 04 image-runtime
Pharo Hands-On: 04 image-runtimePharo Hands-On: 04 image-runtime
Pharo Hands-On: 04 image-runtime
 
PharoDAYS 2015: Connecting to Databases by Norbert Hartl
PharoDAYS 2015: Connecting to Databases by Norbert HartlPharoDAYS 2015: Connecting to Databases by Norbert Hartl
PharoDAYS 2015: Connecting to Databases by Norbert Hartl
 
PharoDAYS 2015: Web 2.0 by Esteban Lorenzano
PharoDAYS 2015: Web 2.0 by Esteban LorenzanoPharoDAYS 2015: Web 2.0 by Esteban Lorenzano
PharoDAYS 2015: Web 2.0 by Esteban Lorenzano
 
Pharo Status (Fosdem 2015)
Pharo Status (Fosdem 2015)Pharo Status (Fosdem 2015)
Pharo Status (Fosdem 2015)
 
PharoDAYS 2015: FFI - The good, the bad and the ugly by Esteban Lorenzano
PharoDAYS 2015: FFI - The good, the bad and the ugly by Esteban LorenzanoPharoDAYS 2015: FFI - The good, the bad and the ugly by Esteban Lorenzano
PharoDAYS 2015: FFI - The good, the bad and the ugly by Esteban Lorenzano
 
PharoDAYS 2015: Seaside in 10 minutes by Johan Brichau
PharoDAYS 2015: Seaside in 10 minutes by Johan BrichauPharoDAYS 2015: Seaside in 10 minutes by Johan Brichau
PharoDAYS 2015: Seaside in 10 minutes by Johan Brichau
 
PharoDAYS 2015: Using Spec to Build a UI by Johan Fabry
PharoDAYS 2015: Using Spec to Build a UI by Johan FabryPharoDAYS 2015: Using Spec to Build a UI by Johan Fabry
PharoDAYS 2015: Using Spec to Build a UI by Johan Fabry
 
Pharo Hands-on: 05 object model
Pharo Hands-on: 05 object modelPharo Hands-on: 05 object model
Pharo Hands-on: 05 object model
 
Pharo Hands-On: 02 syntax
Pharo Hands-On: 02 syntaxPharo Hands-On: 02 syntax
Pharo Hands-On: 02 syntax
 
Pharo Hand-Ons: 06 finding information
Pharo Hand-Ons: 06 finding informationPharo Hand-Ons: 06 finding information
Pharo Hand-Ons: 06 finding information
 
PharoDAYS 2015: On Relational Databases by Guille Polito
PharoDAYS 2015: On Relational Databases by Guille PolitoPharoDAYS 2015: On Relational Databases by Guille Polito
PharoDAYS 2015: On Relational Databases by Guille Polito
 

Similar to 2015 Pharo Prague Lambda Meetup

Inria Tech Talk - Programmation Pharo - Mercredi 26 septembre 2018
Inria Tech Talk - Programmation Pharo - Mercredi 26 septembre 2018Inria Tech Talk - Programmation Pharo - Mercredi 26 septembre 2018
Inria Tech Talk - Programmation Pharo - Mercredi 26 septembre 2018FrenchTechCentral
 
Why do *you* need a strong open-source Smalltalk!
Why do *you* need a strong open-source Smalltalk!Why do *you* need a strong open-source Smalltalk!
Why do *you* need a strong open-source Smalltalk!ESUG
 
The best system for object-oriented thinking
The best system for object-oriented thinkingThe best system for object-oriented thinking
The best system for object-oriented thinkingPharo
 
Get Involved, you can get an impact!
Get Involved, you can get an impact!Get Involved, you can get an impact!
Get Involved, you can get an impact!Marcus Denker
 
JavaScript: The Machine Language of the Ambient Computing Era
JavaScript: The Machine Language of the Ambient Computing EraJavaScript: The Machine Language of the Ambient Computing Era
JavaScript: The Machine Language of the Ambient Computing EraAllen Wirfs-Brock
 
Why do *you* need a strong open-source Smalltalk!
Why do *you* need a strong open-source Smalltalk!Why do *you* need a strong open-source Smalltalk!
Why do *you* need a strong open-source Smalltalk!Pharo
 
How to bake an app in Dart and Polymer
How to bake an app in Dart and PolymerHow to bake an app in Dart and Polymer
How to bake an app in Dart and PolymerJana Moudrá
 
2013 lecture-01-introduction
2013 lecture-01-introduction2013 lecture-01-introduction
2013 lecture-01-introductionPharo
 
Pharo Update
Pharo Update Pharo Update
Pharo Update ESUG
 
HoloLens.pdf
HoloLens.pdfHoloLens.pdf
HoloLens.pdfVishwas N
 
Pharo: Programming in an Immersive World (Stéphane Ducasse Technology Stream)
Pharo: Programming in an Immersive World (Stéphane Ducasse Technology Stream)Pharo: Programming in an Immersive World (Stéphane Ducasse Technology Stream)
Pharo: Programming in an Immersive World (Stéphane Ducasse Technology Stream)IT Arena
 
XML Amsterdam 2012 Keynote
XML Amsterdam 2012 KeynoteXML Amsterdam 2012 Keynote
XML Amsterdam 2012 Keynotejimfuller2009
 
1.6 米嘉 gobuildweb
1.6 米嘉 gobuildweb1.6 米嘉 gobuildweb
1.6 米嘉 gobuildwebLeo Zhou
 
Buildingplatforms
BuildingplatformsBuildingplatforms
Buildingplatformscodebits
 
Bruce Lawson Opera Indonesia
Bruce Lawson Opera IndonesiaBruce Lawson Opera Indonesia
Bruce Lawson Opera Indonesiabrucelawson
 
The Key to Machine Learning is Prepping the Right Data with Jean Georges Perrin
The Key to Machine Learning is Prepping the Right Data with Jean Georges Perrin The Key to Machine Learning is Prepping the Right Data with Jean Georges Perrin
The Key to Machine Learning is Prepping the Right Data with Jean Georges Perrin Databricks
 
Web_of_Things_2013
Web_of_Things_2013Web_of_Things_2013
Web_of_Things_2013Max Kleiner
 
I don't know what I'm Doing: A newbie guide for Golang for DevOps
I don't know what I'm Doing: A newbie guide for Golang for DevOpsI don't know what I'm Doing: A newbie guide for Golang for DevOps
I don't know what I'm Doing: A newbie guide for Golang for DevOpsPeter Souter
 

Similar to 2015 Pharo Prague Lambda Meetup (20)

Inria Tech Talk - Programmation Pharo - Mercredi 26 septembre 2018
Inria Tech Talk - Programmation Pharo - Mercredi 26 septembre 2018Inria Tech Talk - Programmation Pharo - Mercredi 26 septembre 2018
Inria Tech Talk - Programmation Pharo - Mercredi 26 septembre 2018
 
Pharo Status
Pharo StatusPharo Status
Pharo Status
 
Clojure at ardoq
Clojure at ardoqClojure at ardoq
Clojure at ardoq
 
Why do *you* need a strong open-source Smalltalk!
Why do *you* need a strong open-source Smalltalk!Why do *you* need a strong open-source Smalltalk!
Why do *you* need a strong open-source Smalltalk!
 
The best system for object-oriented thinking
The best system for object-oriented thinkingThe best system for object-oriented thinking
The best system for object-oriented thinking
 
Get Involved, you can get an impact!
Get Involved, you can get an impact!Get Involved, you can get an impact!
Get Involved, you can get an impact!
 
JavaScript: The Machine Language of the Ambient Computing Era
JavaScript: The Machine Language of the Ambient Computing EraJavaScript: The Machine Language of the Ambient Computing Era
JavaScript: The Machine Language of the Ambient Computing Era
 
Why do *you* need a strong open-source Smalltalk!
Why do *you* need a strong open-source Smalltalk!Why do *you* need a strong open-source Smalltalk!
Why do *you* need a strong open-source Smalltalk!
 
How to bake an app in Dart and Polymer
How to bake an app in Dart and PolymerHow to bake an app in Dart and Polymer
How to bake an app in Dart and Polymer
 
2013 lecture-01-introduction
2013 lecture-01-introduction2013 lecture-01-introduction
2013 lecture-01-introduction
 
Pharo Update
Pharo Update Pharo Update
Pharo Update
 
HoloLens.pdf
HoloLens.pdfHoloLens.pdf
HoloLens.pdf
 
Pharo: Programming in an Immersive World (Stéphane Ducasse Technology Stream)
Pharo: Programming in an Immersive World (Stéphane Ducasse Technology Stream)Pharo: Programming in an Immersive World (Stéphane Ducasse Technology Stream)
Pharo: Programming in an Immersive World (Stéphane Ducasse Technology Stream)
 
XML Amsterdam 2012 Keynote
XML Amsterdam 2012 KeynoteXML Amsterdam 2012 Keynote
XML Amsterdam 2012 Keynote
 
1.6 米嘉 gobuildweb
1.6 米嘉 gobuildweb1.6 米嘉 gobuildweb
1.6 米嘉 gobuildweb
 
Buildingplatforms
BuildingplatformsBuildingplatforms
Buildingplatforms
 
Bruce Lawson Opera Indonesia
Bruce Lawson Opera IndonesiaBruce Lawson Opera Indonesia
Bruce Lawson Opera Indonesia
 
The Key to Machine Learning is Prepping the Right Data with Jean Georges Perrin
The Key to Machine Learning is Prepping the Right Data with Jean Georges Perrin The Key to Machine Learning is Prepping the Right Data with Jean Georges Perrin
The Key to Machine Learning is Prepping the Right Data with Jean Georges Perrin
 
Web_of_Things_2013
Web_of_Things_2013Web_of_Things_2013
Web_of_Things_2013
 
I don't know what I'm Doing: A newbie guide for Golang for DevOps
I don't know what I'm Doing: A newbie guide for Golang for DevOpsI don't know what I'm Doing: A newbie guide for Golang for DevOps
I don't know what I'm Doing: A newbie guide for Golang for DevOps
 

More from Pharo

Yesplan: 10 Years later
Yesplan: 10 Years laterYesplan: 10 Years later
Yesplan: 10 Years laterPharo
 
Object-Centric Debugging: a preview
Object-Centric Debugging: a previewObject-Centric Debugging: a preview
Object-Centric Debugging: a previewPharo
 
The future of testing in Pharo
The future of testing in PharoThe future of testing in Pharo
The future of testing in PharoPharo
 
Spec 2.0: The next step on desktop UI
Spec 2.0: The next step on desktop UI Spec 2.0: The next step on desktop UI
Spec 2.0: The next step on desktop UI Pharo
 
UI Testing with Spec
 UI Testing with Spec UI Testing with Spec
UI Testing with SpecPharo
 
Pharo 7.0 and 8.0 alpha
Pharo 7.0 and 8.0 alphaPharo 7.0 and 8.0 alpha
Pharo 7.0 and 8.0 alphaPharo
 
PHARO IoT: Installation Improvements and Continuous Integration
PHARO IoT: Installation Improvements and Continuous IntegrationPHARO IoT: Installation Improvements and Continuous Integration
PHARO IoT: Installation Improvements and Continuous IntegrationPharo
 
Easy REST with OpenAPI
Easy REST with OpenAPIEasy REST with OpenAPI
Easy REST with OpenAPIPharo
 
Comment soup with a pinch of types, served in a leaky bowl
Comment soup with a pinch of types, served in a leaky bowlComment soup with a pinch of types, served in a leaky bowl
Comment soup with a pinch of types, served in a leaky bowlPharo
 
apart Framework: Porting from VisualWorks
apart Framework: Porting from VisualWorksapart Framework: Porting from VisualWorks
apart Framework: Porting from VisualWorksPharo
 
XmppTalk
XmppTalkXmppTalk
XmppTalkPharo
 
Raspberry and Pharo
Raspberry and PharoRaspberry and Pharo
Raspberry and PharoPharo
 
Welcome: PharoDays 2017
Welcome: PharoDays 2017Welcome: PharoDays 2017
Welcome: PharoDays 2017Pharo
 
Pharo 6
Pharo 6Pharo 6
Pharo 6Pharo
 
Robotic Exploration and Mapping with Pharo
Robotic Exploration and Mapping with PharoRobotic Exploration and Mapping with Pharo
Robotic Exploration and Mapping with PharoPharo
 
Pharo 64bits
Pharo 64bitsPharo 64bits
Pharo 64bitsPharo
 
Smack: Behind the Refactorings
Smack: Behind the RefactoringsSmack: Behind the Refactorings
Smack: Behind the RefactoringsPharo
 
Pharo VM Performance
Pharo VM PerformancePharo VM Performance
Pharo VM PerformancePharo
 
Git with Style
Git with StyleGit with Style
Git with StylePharo
 
Pharo JS
Pharo JSPharo JS
Pharo JSPharo
 

More from Pharo (20)

Yesplan: 10 Years later
Yesplan: 10 Years laterYesplan: 10 Years later
Yesplan: 10 Years later
 
Object-Centric Debugging: a preview
Object-Centric Debugging: a previewObject-Centric Debugging: a preview
Object-Centric Debugging: a preview
 
The future of testing in Pharo
The future of testing in PharoThe future of testing in Pharo
The future of testing in Pharo
 
Spec 2.0: The next step on desktop UI
Spec 2.0: The next step on desktop UI Spec 2.0: The next step on desktop UI
Spec 2.0: The next step on desktop UI
 
UI Testing with Spec
 UI Testing with Spec UI Testing with Spec
UI Testing with Spec
 
Pharo 7.0 and 8.0 alpha
Pharo 7.0 and 8.0 alphaPharo 7.0 and 8.0 alpha
Pharo 7.0 and 8.0 alpha
 
PHARO IoT: Installation Improvements and Continuous Integration
PHARO IoT: Installation Improvements and Continuous IntegrationPHARO IoT: Installation Improvements and Continuous Integration
PHARO IoT: Installation Improvements and Continuous Integration
 
Easy REST with OpenAPI
Easy REST with OpenAPIEasy REST with OpenAPI
Easy REST with OpenAPI
 
Comment soup with a pinch of types, served in a leaky bowl
Comment soup with a pinch of types, served in a leaky bowlComment soup with a pinch of types, served in a leaky bowl
Comment soup with a pinch of types, served in a leaky bowl
 
apart Framework: Porting from VisualWorks
apart Framework: Porting from VisualWorksapart Framework: Porting from VisualWorks
apart Framework: Porting from VisualWorks
 
XmppTalk
XmppTalkXmppTalk
XmppTalk
 
Raspberry and Pharo
Raspberry and PharoRaspberry and Pharo
Raspberry and Pharo
 
Welcome: PharoDays 2017
Welcome: PharoDays 2017Welcome: PharoDays 2017
Welcome: PharoDays 2017
 
Pharo 6
Pharo 6Pharo 6
Pharo 6
 
Robotic Exploration and Mapping with Pharo
Robotic Exploration and Mapping with PharoRobotic Exploration and Mapping with Pharo
Robotic Exploration and Mapping with Pharo
 
Pharo 64bits
Pharo 64bitsPharo 64bits
Pharo 64bits
 
Smack: Behind the Refactorings
Smack: Behind the RefactoringsSmack: Behind the Refactorings
Smack: Behind the Refactorings
 
Pharo VM Performance
Pharo VM PerformancePharo VM Performance
Pharo VM Performance
 
Git with Style
Git with StyleGit with Style
Git with Style
 
Pharo JS
Pharo JSPharo JS
Pharo JS
 

Recently uploaded

Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your BudgetHyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your BudgetEnjoy Anytime
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsSnow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsHyundai Motor Group
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptxLBM Solutions
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAndikSusilo4
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 

Recently uploaded (20)

Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping Elbows
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your BudgetHyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsSnow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptx
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & Application
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptxVulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 

2015 Pharo Prague Lambda Meetup