SlideShare ist ein Scribd-Unternehmen logo
1 von 30
Downloaden Sie, um offline zu lesen
WHAT	IS	ELM	AND	WHY
SHOULD	I	CARE?
twitter	&	github:	@tgroshon
http://tgroshon.github.io/elm-pandamonium-pres
DIRECT	COMPLAINTS
AS	FOLLOWS
GOALS
1.	 Apply	Elm's	good	ideas	to	our	daily	work
2.	 Promote	Elm	as	a	development	tool
AGENDA
1.	 Introduction	to	Elm
2.	 Details	of	How	it	Works
1.	 Type	Analysis	Advantages
2.	 Signals	->	Values	over	Time
3.	 Abstracting	Away	Side-Effects
3.	 Sum-up
FORMAT
Some	persuasion	followed	by	an	Immediate	Action	(IA)
INTRO:	SYNTAX
Haskell-like	syntax
Statically	Typed
Declarative
Compile-to-JavaScript
import Graphics.Element exposing (..)
import Window
main : Signal Element
main =
Signal.map resizeablePaint Window.dimensions
resizeablePaint : (Int,Int) -> Element
resizeablePaint (w,h) =
fittedImage w h "/imgs/paint.jpg"
-- Types can be ommitted/inferred in most cases but are nice for Doc
INTRO:	TOOL-CHAIN
Written	in	Haskell
elm-make # Compiles Elm to JS
elm-package # Package Manager
elm-repl # A Read-Eval-Print-Loop
elm-reactor # Quick-start Watcher/Builder
elm # Wrapper around all the tools
OTHER	TOOLS
Webpack	Loader:	
elm-make	JS	Bindings:
https://github.com/rtfeldman/elm-
webpack-loader
https://github.com/rtfeldman/node-elm-compiler
THE	TYPE	ANALYSIS
ADVANTAGE
THIS	JUST	IN:	DYNAMIC	TYPES	ARE	OUT,
STATIC	TYPES	ARE	IN!
Advantages	of	Elm's	Type	System
Catch	Simple	Errors
Banish	Nulls
Enforce	Semantic	Versioning
IA:	Flow
THE	SIMPLE	ERRORS
Goodbye	spelling	mistakes	and	refactoring	lapses:
BANISH	NULL
I	call	it	my	billion-dollar	mistake.	It	was	the
invention	of	the	null	reference	in	1965.	-
Tony	Hoare	(Builder	of	Algol	W)
No	nulls	in	Elm,	Just	Maybes:
type Maybe a = Just a | Nothing
Allows	the	compiler	to	enforce	"null-checks"	when	needed.
ENFORCING	SEMANTIC
VERSIONING
elm-package	will	bump	versions	for	you,	automatically
enforcing	these	rules:
PATCH	-	the	API	is	the	same,	no	risk	of	breaking	code
MINOR	-	values	have	been	added,	existing	values	are
unchanged
MAJOR	-	existing	values	have	been	changed	or	removed
Even	Rust-lang	is	talking	about	adding	similar	checks:
https://users.rust-lang.org/t/signature-based-api-
comparison/2377
IA:	FLOW
flowtype.org
/* @flow */
function foo(x) {
return x * 10;
}
foo('Hello, world!'); // Error: This type is incompatible with ...: string
/* @flow */
function foo(x: string, y: number): string {
return x.length * y;
}
foo('Hello', 42); // Error: number ... type is incompatible with ... string
Babel	will	strip	it	out	for	you:
http://babeljs.io/docs/plugins/transform-flow-strip-types/
ONE	BEEF	WITH	FLOW
In	JavaScript,	null	implicitly	converts	to	all
the	primitive	types;	it	is	also	a	valid
inhabitant	of	any	object	type.
In	contrast,	Flow	considers	null	to	be	a
distinct	value	that	is	not	part	of	any	other
type.
Let's	be	Honest:	In	JavaScript,	all	types	are	nullable!
Requires	programmer	discipline	to	be	honest	about	which
vars	are	not	Maybe	(fewer	than	we	think)
Not	a	great	decision	for	a	gradually-typed	system	over	a
language	with	nullable	types
RECOMMENDATION
As	a	habit	in	flow,	mark	things	as	Maybe
SIGNALS	->	VALUES
OVER	TIME
Discrete	values	over	time
Signal	Graphs
IA:	RxJS,	Most.js,	Flyd
DISCRETE	VALUES
OVER	TIME
type Signal a
A	value	that	changes	over	time.	Every
signal	is	updated	at	discrete	moments	in
response	to	events	in	the	world.
So	like	an	EventEmitter?	Almost,	and	not	quite.
The	Reactive	in	Elm	Functional-Reactive	Programming
SIGNAL
CHARACTERISTICS
Synchronous:	FIFO
Infinite	&	Static:	You	cannot	delete,	create,	or	unsubscribe
from	signals	at	runtime.
SIGNAL	GRAPH
Your	program	ends	up	being	a	graph	of	signals.
Think	of	pipes	(streams):	(a)	sources,	(b)	branches,	and	(c)
sinks.
SIGNAL	GRAPH
(CONT'D)
An	Application's	signal	graph	can	have	multiple	sources,
branches,	and	sinks.
Sources:
position : Signal (Int, Int) -- Mouse
clicks : Signal () --
dimensions : Signal (Int, Int) -- Window
Branches	(Transforms):
map : (a -> b) -> Signal a -> Signal b
filter : (a -> Bool) -> a -> Signal a -> Signal a
merge : Signal a -> Signal a -> Signal a
foldp : (a -> s -> s) -> s -> Signal a -> Signal s
Sinks:
main : Signal Element -- element to be rendered to screen
port someJavaScriptFn : Signal String -- Send strings to JavaScript
BUT	WHY	SIGNALS?
1.	 Naturally	handles	asynchrony
2.	 Naturally	model	data	over	time	while	avoiding	shared
mutable	state
IA:	FRP	STREAMS	IN	JS
Contenders:
RxJS	(Biggest)
Bacon.js	(Slowest)
Kefir.js	(Middle)
Most.js	(Fastest)
Flyd	(Smallest)
I'll	discuss	RxJS,	Most,	and	Flyd
IA:	RXJS
RxJS	implements	Observables
/* Get stock data somehow */
var source = getAsyncStockData() // Source is an observable
source
.filter(function (quote) { // Branches
return quote.price > 30
})
.map(function (quote) {
return quote.price
})
.subscribe(function (price) { // Sink
console.log('Prices higher ' +
'than $30: $' +
price)
})
Most	popular	but	also	the	largest	file	size	(around	200kb
minified)
Can	choose	asynchrony	between	setImmediate,
setTimeout,	requestAnimationFrame
IA:	MOST.JS
Monadic	Streams
most.from([1, 2, 3, 4])
.delay(1000)
.filter(function(i) {
return i % 2 === 0
})
.reduce(function(result, y) {
return result + y
}, 0)
.then(function(result) {
console.log(result)
})
Super	fast	and	around	50kb	minified,	uncompressed
Consuming	functions	(reduce,	forEach,	observe)
return	Promises.
IA:	FLYD
Pronounced	flu	(it's	Dutch)
var x = flyd.stream(10) // Create stream with initial value
var y = flyd.stream(20)
var sum = flyd.combine(function(x, y) {
return x() + y() // Calling stream without argument returns last value
}, [x, y])
flyd.on(function(s) {
console.log(s)
}, sum)
Very	Simple.	Modeled	after	Elm	Signals.
Mostly	just	gives	low-level	composition	constructs	e.g.
combine,	merge,	transduce
ABSTRACTING	AWAY
SIDE-EFFECTS
Tasks
Effects
IA:	Promises
TASKS
type Task x a
Represents	asynchronous	effects	that
return	value	of	type	a	but	may	fail	with
value	of	type	x.
Sound	like	Promises?	They	are	even	chainable	with
andThen:
logCurrentTime : Task x ()
logCurrentTime =
getCurrentTimeTask `andThen` consoleLogTask
EFFECTS
type Effects a
The	Effects	type	is	essentially	a	data
structure	holding	a	bunch	of	independent
tasks	that	will	get	run	at	some	later	point.
Example	making	an	HTTP	request	for	jsonData:
getData : String -> Effects Action
getData url =
Http.get decodeJsonData url
|> Task.toMaybe
|> Task.map NewGif
|> Effects.task
EXPLAINED
type Action = NewGif (Maybe String) | ... -- some other action
getData : String -> Effects Action
getData url =
Http.get decodeJsonData url
|> Task.toMaybe
|> Task.map NewGif
|> Effects.task
Task.toMaybe	drops	the	error	message	and	returns	a
Maybe String	type.
Task.map NewGif	wraps	the	Maybe String	in	a
NewGif	action.
Effects.task	turn	this	task	into	an	Effects	type.
TASK,	MAYBE,	EFFECTS
OH	MY!
Effects	wrap	Tasks	that	are	guaranteed	to	"not	fail"	...
meaning	they	have	an	error	handler.
Task.toMaybe	and	Task.toResult	are	convenience
functions	to	move	errors	into	the	success	handler	by
returning	a	new	task.
toMaybe : Task x a -> Task y (Maybe a)
toMaybe task =
map Just task `onError` (_ -> succeed Nothing)
toResult : Task x a -> Task y (Result x a)
toResult task =
map Ok task `onError` (msg -> succeed (Err msg))
WHY	ARE	EFFECTS
USEFUL?
Thoughts?
WHY	ARE	EFFECTS
USEFUL?
My	theory:	to	make	the	start-app	package	better!
If	you	can	collect	the	tasks	for	all	your	components	that	will
be	rendered,	you	can	run	them	in	a	batch	but	only	if	they
never	fail.
IA:	PROMISES
var p = new Promise(function(resolve, reject) {
// something async happens
});
p.then(successHandlerFn, failureHandlerFn);
What	can	we	learn	from	Elm?
Don't	reject	promises	needlessly
var p = new Promise(function (resolve, reject) {
doAsync(function (err, result) {
if (err) {
return resolve({status: 'failed', data: err})
}
resolve({status: 'success', data: result})
})
})
SUM-UP
Try	out	Elm
Or:
Use	flow	for	static	type	analysis
Use	a	JavaScript	FRP	Library
Use	Promises	that	"never	fail"
More	realistically,	use	some	combination	of	the	above	;)

Weitere ähnliche Inhalte

Was ist angesagt?

From object oriented to functional domain modeling
From object oriented to functional domain modelingFrom object oriented to functional domain modeling
From object oriented to functional domain modelingCodemotion
 
EcmaScript 6 - The future is here
EcmaScript 6 - The future is hereEcmaScript 6 - The future is here
EcmaScript 6 - The future is hereSebastiano Armeli
 
Advanced functional programing in Swift
Advanced functional programing in SwiftAdvanced functional programing in Swift
Advanced functional programing in SwiftVincent Pradeilles
 
Functional Programming Patterns for the Pragmatic Programmer
Functional Programming Patterns for the Pragmatic ProgrammerFunctional Programming Patterns for the Pragmatic Programmer
Functional Programming Patterns for the Pragmatic ProgrammerRaúl Raja Martínez
 
friends functionToshu
friends functionToshufriends functionToshu
friends functionToshuSidd Singh
 
JavaScript in 2016
JavaScript in 2016JavaScript in 2016
JavaScript in 2016Codemotion
 
Reactive Access to MongoDB from Scala
Reactive Access to MongoDB from ScalaReactive Access to MongoDB from Scala
Reactive Access to MongoDB from ScalaHermann Hueck
 
ES2015 (ES6) Overview
ES2015 (ES6) OverviewES2015 (ES6) Overview
ES2015 (ES6) Overviewhesher
 
Functional Programming in JavaScript by Luis Atencio
Functional Programming in JavaScript by Luis AtencioFunctional Programming in JavaScript by Luis Atencio
Functional Programming in JavaScript by Luis AtencioLuis Atencio
 
Operator Overloading
Operator OverloadingOperator Overloading
Operator OverloadingDustin Chase
 
Things about Functional JavaScript
Things about Functional JavaScriptThings about Functional JavaScript
Things about Functional JavaScriptChengHui Weng
 

Was ist angesagt? (20)

From object oriented to functional domain modeling
From object oriented to functional domain modelingFrom object oriented to functional domain modeling
From object oriented to functional domain modeling
 
Unary operator overloading
Unary operator overloadingUnary operator overloading
Unary operator overloading
 
Monads in Swift
Monads in SwiftMonads in Swift
Monads in Swift
 
EcmaScript 6 - The future is here
EcmaScript 6 - The future is hereEcmaScript 6 - The future is here
EcmaScript 6 - The future is here
 
Advanced functional programing in Swift
Advanced functional programing in SwiftAdvanced functional programing in Swift
Advanced functional programing in Swift
 
Functional Programming Patterns for the Pragmatic Programmer
Functional Programming Patterns for the Pragmatic ProgrammerFunctional Programming Patterns for the Pragmatic Programmer
Functional Programming Patterns for the Pragmatic Programmer
 
friends functionToshu
friends functionToshufriends functionToshu
friends functionToshu
 
14 operator overloading
14 operator overloading14 operator overloading
14 operator overloading
 
JavaScript in 2016
JavaScript in 2016JavaScript in 2016
JavaScript in 2016
 
Reactive Access to MongoDB from Scala
Reactive Access to MongoDB from ScalaReactive Access to MongoDB from Scala
Reactive Access to MongoDB from Scala
 
Sneaking inside Kotlin features
Sneaking inside Kotlin featuresSneaking inside Kotlin features
Sneaking inside Kotlin features
 
ES2015 (ES6) Overview
ES2015 (ES6) OverviewES2015 (ES6) Overview
ES2015 (ES6) Overview
 
Overloading
OverloadingOverloading
Overloading
 
Functional Programming in JavaScript by Luis Atencio
Functional Programming in JavaScript by Luis AtencioFunctional Programming in JavaScript by Luis Atencio
Functional Programming in JavaScript by Luis Atencio
 
Operator Overloading
Operator OverloadingOperator Overloading
Operator Overloading
 
Operator overloading
Operator overloading Operator overloading
Operator overloading
 
Things about Functional JavaScript
Things about Functional JavaScriptThings about Functional JavaScript
Things about Functional JavaScript
 
Cocoa heads 09112017
Cocoa heads 09112017Cocoa heads 09112017
Cocoa heads 09112017
 
C++ functions
C++ functionsC++ functions
C++ functions
 
Time for Functions
Time for FunctionsTime for Functions
Time for Functions
 

Andere mochten auch

B2C Analytics by CleverTap for Hackers and Founders
B2C Analytics by CleverTap for Hackers and FoundersB2C Analytics by CleverTap for Hackers and Founders
B2C Analytics by CleverTap for Hackers and FoundersAnand Jain
 
Internet Safety For Parents v3
Internet Safety For Parents v3Internet Safety For Parents v3
Internet Safety For Parents v3MrAColley
 
The Php Life Cycle
The Php Life CycleThe Php Life Cycle
The Php Life CycleXinchen Hui
 
You've Made It - Pitching to TechCrunch & Using AngelList
You've Made It - Pitching to TechCrunch & Using AngelListYou've Made It - Pitching to TechCrunch & Using AngelList
You've Made It - Pitching to TechCrunch & Using AngelListRandy Ksar
 
Методологии верстки
Методологии версткиМетодологии верстки
Методологии версткиElizaveta Selivanova
 
How To Find Information On Your Own
How To Find Information On Your OwnHow To Find Information On Your Own
How To Find Information On Your OwnDave Haeffner
 
The #1 Skill Every Marketer Needs to Have!
The  #1 Skill Every Marketer Needs to Have!The  #1 Skill Every Marketer Needs to Have!
The #1 Skill Every Marketer Needs to Have!Manpreet Jassal
 
DRY CSS A don’t-repeat-yourself methodology for creating efficient, unified a...
DRY CSS A don’t-repeat-yourself methodology for creating efficient, unified a...DRY CSS A don’t-repeat-yourself methodology for creating efficient, unified a...
DRY CSS A don’t-repeat-yourself methodology for creating efficient, unified a...Jer Clarke
 
Procurement and labour objectives: some thoughts on regulatory substitution a...
Procurement and labour objectives: some thoughts on regulatory substitution a...Procurement and labour objectives: some thoughts on regulatory substitution a...
Procurement and labour objectives: some thoughts on regulatory substitution a...Albert Sanchez Graells
 
Общая концепция системы развёртывания серверного окружения на базе SaltStack ...
Общая концепция системы развёртывания серверного окружения на базе SaltStack ...Общая концепция системы развёртывания серверного окружения на базе SaltStack ...
Общая концепция системы развёртывания серверного окружения на базе SaltStack ...Positive Hack Days
 
From NASA to Startups to Big Commerce
From NASA to Startups to Big CommerceFrom NASA to Startups to Big Commerce
From NASA to Startups to Big CommerceDaniel Greenfeld
 
「HOME'Sデータセット」を活用した不動産物件画像への深層学習の適用の取り組み
「HOME'Sデータセット」を活用した不動産物件画像への深層学習の適用の取り組み「HOME'Sデータセット」を活用した不動産物件画像への深層学習の適用の取り組み
「HOME'Sデータセット」を活用した不動産物件画像への深層学習の適用の取り組みYoji Kiyota
 
Atomic Design powered by React @ AbemaTV
Atomic Design powered by React @ AbemaTVAtomic Design powered by React @ AbemaTV
Atomic Design powered by React @ AbemaTVYusuke Goto
 
The Future of Security Architecture Certification
The Future of Security Architecture CertificationThe Future of Security Architecture Certification
The Future of Security Architecture Certificationdanb02
 
The 3 Secrets of Highly Successful Graduates
The 3 Secrets of Highly Successful GraduatesThe 3 Secrets of Highly Successful Graduates
The 3 Secrets of Highly Successful GraduatesReid Hoffman
 

Andere mochten auch (17)

B2C Analytics by CleverTap for Hackers and Founders
B2C Analytics by CleverTap for Hackers and FoundersB2C Analytics by CleverTap for Hackers and Founders
B2C Analytics by CleverTap for Hackers and Founders
 
Internet Safety For Parents v3
Internet Safety For Parents v3Internet Safety For Parents v3
Internet Safety For Parents v3
 
The Php Life Cycle
The Php Life CycleThe Php Life Cycle
The Php Life Cycle
 
You've Made It - Pitching to TechCrunch & Using AngelList
You've Made It - Pitching to TechCrunch & Using AngelListYou've Made It - Pitching to TechCrunch & Using AngelList
You've Made It - Pitching to TechCrunch & Using AngelList
 
Методологии верстки
Методологии версткиМетодологии верстки
Методологии верстки
 
How To Find Information On Your Own
How To Find Information On Your OwnHow To Find Information On Your Own
How To Find Information On Your Own
 
The #1 Skill Every Marketer Needs to Have!
The  #1 Skill Every Marketer Needs to Have!The  #1 Skill Every Marketer Needs to Have!
The #1 Skill Every Marketer Needs to Have!
 
DRY CSS A don’t-repeat-yourself methodology for creating efficient, unified a...
DRY CSS A don’t-repeat-yourself methodology for creating efficient, unified a...DRY CSS A don’t-repeat-yourself methodology for creating efficient, unified a...
DRY CSS A don’t-repeat-yourself methodology for creating efficient, unified a...
 
Procurement and labour objectives: some thoughts on regulatory substitution a...
Procurement and labour objectives: some thoughts on regulatory substitution a...Procurement and labour objectives: some thoughts on regulatory substitution a...
Procurement and labour objectives: some thoughts on regulatory substitution a...
 
Herramienta de palabras clave
Herramienta de palabras claveHerramienta de palabras clave
Herramienta de palabras clave
 
Общая концепция системы развёртывания серверного окружения на базе SaltStack ...
Общая концепция системы развёртывания серверного окружения на базе SaltStack ...Общая концепция системы развёртывания серверного окружения на базе SaltStack ...
Общая концепция системы развёртывания серверного окружения на базе SaltStack ...
 
From NASA to Startups to Big Commerce
From NASA to Startups to Big CommerceFrom NASA to Startups to Big Commerce
From NASA to Startups to Big Commerce
 
「HOME'Sデータセット」を活用した不動産物件画像への深層学習の適用の取り組み
「HOME'Sデータセット」を活用した不動産物件画像への深層学習の適用の取り組み「HOME'Sデータセット」を活用した不動産物件画像への深層学習の適用の取り組み
「HOME'Sデータセット」を活用した不動産物件画像への深層学習の適用の取り組み
 
The Dangers of Cucumber
The Dangers of CucumberThe Dangers of Cucumber
The Dangers of Cucumber
 
Atomic Design powered by React @ AbemaTV
Atomic Design powered by React @ AbemaTVAtomic Design powered by React @ AbemaTV
Atomic Design powered by React @ AbemaTV
 
The Future of Security Architecture Certification
The Future of Security Architecture CertificationThe Future of Security Architecture Certification
The Future of Security Architecture Certification
 
The 3 Secrets of Highly Successful Graduates
The 3 Secrets of Highly Successful GraduatesThe 3 Secrets of Highly Successful Graduates
The 3 Secrets of Highly Successful Graduates
 

Ähnlich wie What is Elm and Why Should I care?

Is java8a truefunctionallanguage
Is java8a truefunctionallanguageIs java8a truefunctionallanguage
Is java8a truefunctionallanguageSamir Chekkal
 
Is java8 a true functional programming language
Is java8 a true functional programming languageIs java8 a true functional programming language
Is java8 a true functional programming languageSQLI
 
Столпы функционального программирования для адептов ООП, Николай Мозговой
Столпы функционального программирования для адептов ООП, Николай МозговойСтолпы функционального программирования для адептов ООП, Николай Мозговой
Столпы функционального программирования для адептов ООП, Николай МозговойSigma Software
 
Talk - Query monad
Talk - Query monad Talk - Query monad
Talk - Query monad Fabernovel
 
Zope component architechture
Zope component architechtureZope component architechture
Zope component architechtureAnatoly Bubenkov
 
documents.pub_new-features-in-java-8-it-jpoialjavanaitedwien15java8pdf-java-8...
documents.pub_new-features-in-java-8-it-jpoialjavanaitedwien15java8pdf-java-8...documents.pub_new-features-in-java-8-it-jpoialjavanaitedwien15java8pdf-java-8...
documents.pub_new-features-in-java-8-it-jpoialjavanaitedwien15java8pdf-java-8...Akaks
 
CJPCCS BCA VISNAGAR functions in C language
CJPCCS BCA VISNAGAR  functions in C languageCJPCCS BCA VISNAGAR  functions in C language
CJPCCS BCA VISNAGAR functions in C languageFCSCJCS
 
Angular Optimization Web Performance Meetup
Angular Optimization Web Performance MeetupAngular Optimization Web Performance Meetup
Angular Optimization Web Performance MeetupDavid Barreto
 
Matlab Functions
Matlab FunctionsMatlab Functions
Matlab FunctionsUmer Azeem
 
The Trailblazer Ride from the If Jungle into a Civilised Railway Station - Or...
The Trailblazer Ride from the If Jungle into a Civilised Railway Station - Or...The Trailblazer Ride from the If Jungle into a Civilised Railway Station - Or...
The Trailblazer Ride from the If Jungle into a Civilised Railway Station - Or...Ruby Meditation
 
Introduction to functional programming using Ocaml
Introduction to functional programming using OcamlIntroduction to functional programming using Ocaml
Introduction to functional programming using Ocamlpramode_ce
 
Intro to Reactive Thinking and RxJava 2
Intro to Reactive Thinking and RxJava 2Intro to Reactive Thinking and RxJava 2
Intro to Reactive Thinking and RxJava 2JollyRogers5
 
From object oriented to functional domain modeling
From object oriented to functional domain modelingFrom object oriented to functional domain modeling
From object oriented to functional domain modelingMario Fusco
 

Ähnlich wie What is Elm and Why Should I care? (20)

Functions in C++
Functions in C++Functions in C++
Functions in C++
 
Wien15 java8
Wien15 java8Wien15 java8
Wien15 java8
 
Is java8a truefunctionallanguage
Is java8a truefunctionallanguageIs java8a truefunctionallanguage
Is java8a truefunctionallanguage
 
Is java8 a true functional programming language
Is java8 a true functional programming languageIs java8 a true functional programming language
Is java8 a true functional programming language
 
Столпы функционального программирования для адептов ООП, Николай Мозговой
Столпы функционального программирования для адептов ООП, Николай МозговойСтолпы функционального программирования для адептов ООП, Николай Мозговой
Столпы функционального программирования для адептов ООП, Николай Мозговой
 
Talk - Query monad
Talk - Query monad Talk - Query monad
Talk - Query monad
 
Zope component architechture
Zope component architechtureZope component architechture
Zope component architechture
 
documents.pub_new-features-in-java-8-it-jpoialjavanaitedwien15java8pdf-java-8...
documents.pub_new-features-in-java-8-it-jpoialjavanaitedwien15java8pdf-java-8...documents.pub_new-features-in-java-8-it-jpoialjavanaitedwien15java8pdf-java-8...
documents.pub_new-features-in-java-8-it-jpoialjavanaitedwien15java8pdf-java-8...
 
JavaScript for real men
JavaScript for real menJavaScript for real men
JavaScript for real men
 
CJPCCS BCA VISNAGAR functions in C language
CJPCCS BCA VISNAGAR  functions in C languageCJPCCS BCA VISNAGAR  functions in C language
CJPCCS BCA VISNAGAR functions in C language
 
Angular Optimization Web Performance Meetup
Angular Optimization Web Performance MeetupAngular Optimization Web Performance Meetup
Angular Optimization Web Performance Meetup
 
Matlab Functions
Matlab FunctionsMatlab Functions
Matlab Functions
 
[2015/2016] JavaScript
[2015/2016] JavaScript[2015/2016] JavaScript
[2015/2016] JavaScript
 
The Trailblazer Ride from the If Jungle into a Civilised Railway Station - Or...
The Trailblazer Ride from the If Jungle into a Civilised Railway Station - Or...The Trailblazer Ride from the If Jungle into a Civilised Railway Station - Or...
The Trailblazer Ride from the If Jungle into a Civilised Railway Station - Or...
 
Dnipro conf
Dnipro confDnipro conf
Dnipro conf
 
Tech talk
Tech talkTech talk
Tech talk
 
Introduction to functional programming using Ocaml
Introduction to functional programming using OcamlIntroduction to functional programming using Ocaml
Introduction to functional programming using Ocaml
 
Cpp tutorial
Cpp tutorialCpp tutorial
Cpp tutorial
 
Intro to Reactive Thinking and RxJava 2
Intro to Reactive Thinking and RxJava 2Intro to Reactive Thinking and RxJava 2
Intro to Reactive Thinking and RxJava 2
 
From object oriented to functional domain modeling
From object oriented to functional domain modelingFrom object oriented to functional domain modeling
From object oriented to functional domain modeling
 

Kürzlich hochgeladen

Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesBoston Institute of Analytics
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 

Kürzlich hochgeladen (20)

Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 

What is Elm and Why Should I care?