SlideShare une entreprise Scribd logo
1  sur  159
Télécharger pour lire hors ligne
Time TravelTime Travel
for Game Developmentfor Game Development
with Elmwith Elm
byby @doppioslash@doppioslash
20th of November 2015 - Codemotion - Milan
+ClaudiaDoppioslash+ClaudiaDoppioslash
@doppioslash@doppioslash
blog.doppioslash.comblog.doppioslash.com
About meAbout me
Game Developer &Game Developer &
Functional ProgrammerFunctional Programmer
Table of ContentsTable of Contents
GameDev workflow = hell
Time Travelling Debugger?
Meet Elm
Structuring programs in Elm
Time Travelling Demo
Gotchas
What is the single mostWhat is the single most
soul destroying thing insoul destroying thing in
game development?game development?
What is the single most soulWhat is the single most soul
destroying thing in gamedestroying thing in game
development?development?
C++?C++?
What is the single most soulWhat is the single most soul
destroying thing in gamedestroying thing in game
development?development?
Having to redo a 10Having to redo a 10
moves combo everymoves combo every
time you check iftime you check if
the bug is gone?the bug is gone?
What is the single most soulWhat is the single most soul
destroying thing in gamedestroying thing in game
development?development?
Projects gettingProjects getting
canned?canned?
Slow Iteration timesSlow Iteration times
What is the single most soulWhat is the single most soul
destroying thing in gamedestroying thing in game
development?development?
Example CommonExample Common
Game DevelopmentGame Development
WorkflowWorkflow
(starring Unity)(starring Unity)
1. Write some code1. Write some code
Example CommonExample Common
Game Development WorkflowGame Development Workflow
2. Playtest it2. Playtest it
(in the Unity Editor)(in the Unity Editor)
Example CommonExample Common
Game Development WorkflowGame Development Workflow
Now to test thatNow to test that
same change onsame change on
mobile devices:mobile devices:
Example Common Game DevelopmentExample Common Game Development
Workflow (starring Unity)Workflow (starring Unity)
Make a change and test onMake a change and test on
DeviceDevice
1. Start build1. Start build
Make a change and test onMake a change and test on
DeviceDevice
3. load the ipa/apk3. load the ipa/apk
on deviceon device
Make a change and test onMake a change and test on
DeviceDevice
4. playtest until your4. playtest until your
code runscode runs
Make a change and test onMake a change and test on
DeviceDevice
5. Find new and5. Find new and
exciting bugsexciting bugs
(only on device)(only on device)
Slow Iteration timesSlow Iteration times
Say bye to FlowSay bye to Flow
Slow Iteration timesSlow Iteration times
Error prone forest ofError prone forest of
build settingsbuild settings
Slow Iteration timesSlow Iteration times
Deadline panic 10xDeadline panic 10x
increaseincrease
(suffering together at late hours might be team-building
but surely we don't need this :P)
What can fix this?What can fix this?
What can help?What can help?
Jenkins churning buildsJenkins churning builds
out in backgroundout in background
What can help?What can help?
Type system to catchType system to catch
bugs before runningbugs before running
What can help?What can help?
Unit testingUnit testing
What is the idealWhat is the ideal
workflow?workflow?
InventingInventing
onon
PrinciplePrinciple
As seen on :LambdaCat
Inventing on PrincipleInventing on Principle
Hot reloadHot reload::
reload changes to thereload changes to the
code without stoppingcode without stopping
the gamethe game
Inventing on PrincipleInventing on Principle
Time TravelTime Travel::
being able to scrubbeing able to scrub
to any point in theto any point in the
sessionsession
Inventing on PrincipleInventing on Principle
OmniscienceOmniscience::
see all the statesee all the state
in the sessionin the session
Is that even possible?Is that even possible?
Racket,VR andRacket,VR and
John CarmackJohn Carmack
(watch it)(watch it)
John CarmackJohn Carmack
John CarmackJohn Carmack LISP (Racket)LISP (Racket)
Which language makes itWhich language makes it
all possible RIGHT NOW?all possible RIGHT NOW?
ElmElm
(I'm sure no one saw this coming)(I'm sure no one saw this coming)
((
Mario demo)Mario demo)
debug.elm-lang.orgdebug.elm-lang.org
What sort ofWhat sort of
language is Elm?language is Elm?
What sort of language is Elm?What sort of language is Elm?
PurelyPurely
FunctionalFunctional
FunctionalFunctional
ReactiveReactive
(FRP)(FRP)
What sort of language is Elm?What sort of language is Elm?
EagerEager
What sort of language is Elm?What sort of language is Elm?
Static TypeStatic Type
SystemSystem
What sort of language is Elm?What sort of language is Elm?
Compiles toCompiles to
Javascript,Javascript,
HTML, CSSHTML, CSS
What sort of language is Elm?What sort of language is Elm?
Interoperates withInteroperates with
Javascript while stillJavascript while still
being type safebeing type safe
What sort of language is Elm?What sort of language is Elm?
SmallSmall
What sort of language is Elm?What sort of language is Elm?
Invented byInvented by
Evan CzaplickiEvan Czaplicki
for his thesisfor his thesis
What sort of language is Elm?What sort of language is Elm?
Meant to beMeant to be
approachableapproachable
and practicaland practical
What sort of language is Elm?What sort of language is Elm?
Meant to be approachableMeant to be approachable
and practicaland practical
No 'scary' terms likeNo 'scary' terms like
MonadMonad
In Production atIn Production at
Elm ReactorElm Reactor
(the Time Travelling Debugger)(the Time Travelling Debugger)
Elm ReactorElm Reactor
Inspired byInspired by
Inventing onInventing on
PrinciplePrinciple
Elm ReactorElm Reactor
FundamentalsFundamentals
made in a fewmade in a few
days by Laszlodays by Laszlo
Elm ReactorElm Reactor
Elm's languageElm's language
design isdesign is
accidentallyaccidentally
'compatible''compatible'
Elm ReactorElm Reactor
You can "stepYou can "step
through" whilethrough" while
moving the mousemoving the mouse
How do youHow do you
structurestructure
programs inprograms in
Elm?Elm?
The Functional TriforceThe Functional Triforce
MaybeMaybe
UnionUnion
TypesTypes
PatternPattern
MatchingMatching
The Functional TriforceThe Functional Triforce
Union TypesUnion Types
define the Model:define the Model:
type Tile
= Door Size
| Column
| BackGround BackGroundTile
| Shadow ShadowTile
The Functional TriforceThe Functional Triforce
MaybeMaybe
gets rid of NULL errorsgets rid of NULL errors
type Maybe a
= Just a
| Nothing
The Functional TriforceThe Functional Triforce
Pattern MatchingPattern Matching
String.toInt : String -> Maybe Int
toMonth : String -> Maybe Int toMont
h rawString =
case String.toInt rawString of
Nothing ->
Nothing
Just n ->
if n > 0 && n <= 12 then Ju
st n else Nothing
Elm ArchitectureElm Architecture
Elm isElm is
opinionatedopinionated
Elm ArchitectureElm Architecture
Use theUse the
"" ""Elm ArchitectureElm Architecture
Elm ArchitectureElm Architecture
ModelModel
ViewView
UpdateUpdate
OverviewOverview
Elm ArchitectureElm Architecture
ModelModel ==
the Data Structurethe Data Structure
we pass aroundwe pass around
ModelModel
type alias UserInput = {}
userInput : Signal UserInput
userInput = Signal.constant {}
type alias Input =
{ timeDelta : Float
​ , userInput : UserInput
}
ModelModel
type alias UserInput = {}
userInput : Signal UserInput
userInput = Signal.constant {}
type alias Input =
{ timeDelta : Float
​ , userInput : UserInput
}
TypeType
signaturesignature
ModelModel
type alias UserInput = {}
userInput : Signal UserInput
userInput = Signal.constant {}
type alias Input =
{ timeDelta : Float
​ , userInput : UserInput
}
A recordA record
Type aliasType alias
SignalSignal
ModelModel
Record =Record =
set of key value pairsset of key value pairs
ModelModel
Type alias =Type alias =
give name to a set of fieldsgive name to a set of fields
in a recordin a record
ModelModel
Signal =Signal =
updates every time variableupdates every time variable
changeschanges
ModelModel
type alias GameState = {}
defaultGame : GameState
defaultGame = {}
Elm ArchitectureElm Architecture
ViewView ==
the code thatthe code that
renders from therenders from the
ModelModel
DisplayDisplay
display : (Int,Int) -> GameState ->
Element
display (w,h) gameState = show
gameState
DisplayDisplay
display : (Int,Int) -> GameState ->
Element
display (w,h) gameState = show
gameState
TypeType
signaturesignature
Elm ArchitectureElm Architecture
UpdateUpdate ==
the function thatthe function that
does the change ofdoes the change of
statestate
UpdateUpdate
stepGame : Input -> GameState ->
GameState
stepGame {timeDelta,userInput}
gameState =
gameState
UpdateUpdate
stepGamestepGame uses theuses the
currentcurrent InputInput
(which is(which is UserInputUserInput and aand a
timeDeltatimeDelta))
to make a newto make a new GameStateGameState
Elm ArchitectureElm Architecture
SignalsSignals
SignalsSignals
delta : Signal Float
delta = Time.fps 30
input : Signal Input
input = Signal.sampleOn delta
(Signal.map2 Input delta userInput)
sampleOnsampleOn
SignalsSignals
delta : Signal Float
delta = Time.fps 30
input : Signal Input
input = Signal.sampleOn delta
(Signal.map2 Input delta userInput)
map2map2
SignalsSignals
gameState : Signal GameState
gameState = Signal.foldp stepGame
defaultGame input
SignalsSignals
gameState : Signal GameState
gameState = Signal.foldp stepGame
defaultGame input foldpfoldp
SignalsSignals
Signal.map2 =Signal.map2 =
applies a function thatapplies a function that
takes 2 argumentstakes 2 arguments
to a signalto a signal
SignalsSignals
Signal.sampleOn =Signal.sampleOn =
samples from 2ndsamples from 2nd
input anytime aninput anytime an
event occurs in the 1stevent occurs in the 1st
SignalsSignals
Signal.foldp =Signal.foldp =
a signal dependent ona signal dependent on
the pastthe past
MainMain
(where you wire(where you wire
everything up)everything up)
Elm ArchitectureElm Architecture
MainMain
main : Signal Element
main = Signal.map2 display
Window.dimensions gameState
MainMain
main : Signal Element
main = Signal.map2 display
Window.dimensions gameState
Signal ofSignal of
ElementElement
valuesvalues
Overview (again)Overview (again)
What are Signals?What are Signals?
Stream of valuesStream of values
What are Signals?What are Signals?
What are Signals?What are Signals?
What are Signals?What are Signals?
a different way ofa different way of
thinking aboutthinking about
variablesvariables
What are Signals?What are Signals?
an explicit model ofan explicit model of
variable mutation invariable mutation in
timetime
What are Signals?What are Signals?
non-awkward way ofnon-awkward way of
structuring callbacksstructuring callbacks
What are Signals?What are Signals?
they are wired inthey are wired in
signal graphssignal graphs
(directed acyclic(directed acyclic
graphs)graphs)
What are Signals?What are Signals?
What kind ofWhat kind of
functions can wefunctions can we
apply on signals?apply on signals?
What kind of functions canWhat kind of functions can
we apply on signals?we apply on signals?
: Signal a ->
Signal a -Signal a ->> Signal aSignal a
merge
What kind of functions canWhat kind of functions can
we apply on signals?we apply on signals?
:: (a(a ->-> Bool)Bool) ->-> aa ->->
Signal aSignal a ->-> Signal aSignal a
filterfilter
What kind of functions canWhat kind of functions can
we apply on signals?we apply on signals?
:: (a(a ->-> result)result) ->-> Signal aSignal a --
>> Signal resultSignal result
mapmap
applies a function on a signalapplies a function on a signal
returns another, transformed, signalreturns another, transformed, signal
What kind of functions canWhat kind of functions can
we apply on signals?we apply on signals?
:: (a(a ->-> bb ->-> result)result) ->->
Signal aSignal a ->-> Signal bSignal b ->->
Signal resultSignal result
map2map2
applies a function on two signalsapplies a function on two signals
What kind of functions canWhat kind of functions can
we apply on signals?we apply on signals?
makes a signal that depends on themakes a signal that depends on the
past values of a signalpast values of a signal
: (a -> state -> state) -
> state -> Signal a ->
Signal state
foldp
What is aWhat is a foldpfoldp??
Fold from the pastFold from the pastFold from the pastFold from the pastFoldFold from thefrom the pastpast
What is a foldp?What is a foldp?
takes (a -> state -> state)foldp
a function
What is a foldp?What is a foldp?
... -> state -> ...
a default state
What is a foldp?What is a foldp?
... -> Signal a -> ...
an input signal
What is this foldp thing?What is this foldp thing?
... -> Signal state
returns a signal
(= next state of the program,
after applying update)
How Elm ReactorHow Elm Reactor
worksworks
Record InputsRecord Inputs
How Elm Reactor worksHow Elm Reactor works
ReappliesReapplies
functions tofunctions to
inputsinputs
How Elm Reactor worksHow Elm Reactor works
previous stateprevious state
++
previous inputsprevious inputs
==
next statenext state
How Elm Reactor worksHow Elm Reactor works
snapshottingsnapshotting
forfor
performanceperformance
How Elm Reactor worksHow Elm Reactor works
How Elm Reactor worksHow Elm Reactor works
changes to typeschanges to types
will break hotwill break hot
swappingswapping
also if a changealso if a change
doesn't compiledoesn't compile
How Elm Reactor worksHow Elm Reactor works
Why is Elm goodWhy is Elm good
for Time Travelling?for Time Travelling?
Why Elm Reactor worksWhy Elm Reactor works
Applying the sameApplying the same
inputs will return theinputs will return the
same outputsame output
(referential transparency)(referential transparency)
Why Elm Reactor worksWhy Elm Reactor works
No side effectsNo side effects ==
can replay codecan replay code
Why Elm Reactor worksWhy Elm Reactor works
All mutable state isAll mutable state is
stored in the foldpstored in the foldp
Static signalStatic signal
graphgraph
Why Elm Reactor worksWhy Elm Reactor works
But, can itBut, can it
scale?scale?
Castle of ElmCastle of Elm
But, can it scale?But, can it scale?
Game Jam gameGame Jam game
Castle of ElmCastle of Elm
Somewhat RoguelikeSomewhat Roguelike
In 2 daysIn 2 days
From scratchFrom scratch
Flexible tile systemFlexible tile system
Castle of ElmCastle of Elm
CollisionsCollisions
(let's break the(let's break the
collisions system)collisions system)
Castle of ElmCastle of Elm
GotchasGotchas
Out of memoryOut of memory
GotchasGotchas
SchroedingerSchroedinger
Hot SwappingHot Swapping
GotchasGotchas
But you can help!But you can help!
It's OSSIt's OSS
<- CODE HERE<- CODE HERE
Why use staticallyWhy use statically
typed pure Functionaltyped pure Functional
languages in Gamelanguages in Game
Development?Development?
Why it's worth to use new language researchWhy it's worth to use new language research
in Game Developmentin Game Development
No runtimeNo runtime
exceptionsexceptions
Why it's worth to use new language researchWhy it's worth to use new language research
in Game Developmentin Game Development
No raceNo race
conditionsconditions
Why it's worth to use new language researchWhy it's worth to use new language research
in Game Developmentin Game Development
Better toolsBetter tools
Why it's worth to use new language researchWhy it's worth to use new language research
in Game Developmentin Game Development
Less codeLess code
Why it's worth to use new language researchWhy it's worth to use new language research
in Game Developmentin Game Development
Ease ofEase of
parallelisationparallelisation
elm-lang.org/docselm-lang.org/docs
@elmlang@elmlang
#elmlang#elmlang
Where to learn Elm?Where to learn Elm?
#haskell.it @ freenode#haskell.it @ freenode
haskell-ita.ithaskell-ita.it
@Haskell_ITA@Haskell_ITA
Maybe join Haskell ITAMaybe join Haskell ITA
@lambda_cat@lambda_cat
lambdacat.comlambdacat.com
ReadRead LambdaCatLambdaCat!!
Claudia Doppioslash - Time Travel for game development with Elm

Contenu connexe

En vedette

Elm: frontend code without runtime exceptions
Elm: frontend code without runtime exceptionsElm: frontend code without runtime exceptions
Elm: frontend code without runtime exceptionsPietro Grandi
 
Elm a possible future for web frontend
Elm   a possible future for web frontendElm   a possible future for web frontend
Elm a possible future for web frontendGaetano Contaldi
 
Elixir and elm - the perfect couple
Elixir and elm - the perfect coupleElixir and elm - the perfect couple
Elixir and elm - the perfect coupleTomasz Kowal
 
Very basic functional design patterns
Very basic functional design patternsVery basic functional design patterns
Very basic functional design patternsTomasz Kowal
 
Elm: delightful web development
Elm: delightful web developmentElm: delightful web development
Elm: delightful web developmentAmir Barylko
 
Rethink Frontend Development With Elm
Rethink Frontend Development With ElmRethink Frontend Development With Elm
Rethink Frontend Development With ElmBrian Hogan
 
A recommendation engine for your applications - M.Orselli - Codemotion Rome 17
A recommendation engine for your applications - M.Orselli - Codemotion Rome 17A recommendation engine for your applications - M.Orselli - Codemotion Rome 17
A recommendation engine for your applications - M.Orselli - Codemotion Rome 17Codemotion
 

En vedette (11)

Elm: frontend code without runtime exceptions
Elm: frontend code without runtime exceptionsElm: frontend code without runtime exceptions
Elm: frontend code without runtime exceptions
 
Elm a possible future for web frontend
Elm   a possible future for web frontendElm   a possible future for web frontend
Elm a possible future for web frontend
 
Elixir and elm - the perfect couple
Elixir and elm - the perfect coupleElixir and elm - the perfect couple
Elixir and elm - the perfect couple
 
Very basic functional design patterns
Very basic functional design patternsVery basic functional design patterns
Very basic functional design patterns
 
Elm: delightful web development
Elm: delightful web developmentElm: delightful web development
Elm: delightful web development
 
Functional Web Development using Elm
Functional Web Development using ElmFunctional Web Development using Elm
Functional Web Development using Elm
 
Rethink Frontend Development With Elm
Rethink Frontend Development With ElmRethink Frontend Development With Elm
Rethink Frontend Development With Elm
 
A recommendation engine for your applications - M.Orselli - Codemotion Rome 17
A recommendation engine for your applications - M.Orselli - Codemotion Rome 17A recommendation engine for your applications - M.Orselli - Codemotion Rome 17
A recommendation engine for your applications - M.Orselli - Codemotion Rome 17
 
Self-testing Code
Self-testing CodeSelf-testing Code
Self-testing Code
 
Introduction to Elm
Introduction to ElmIntroduction to Elm
Introduction to Elm
 
Elm intro
Elm introElm intro
Elm intro
 

Similaire à Claudia Doppioslash - Time Travel for game development with Elm

Spring, CDI, Jakarta EE good parts
Spring, CDI, Jakarta EE good partsSpring, CDI, Jakarta EE good parts
Spring, CDI, Jakarta EE good partsJarek Ratajski
 
Lambda The Extreme: Test-Driving a Functional Language
Lambda The Extreme: Test-Driving a Functional LanguageLambda The Extreme: Test-Driving a Functional Language
Lambda The Extreme: Test-Driving a Functional LanguageAccenture | SolutionsIQ
 
Concurrency and Parallelism with Scala
Concurrency and Parallelism with ScalaConcurrency and Parallelism with Scala
Concurrency and Parallelism with ScalaTimothy Perrett
 
Introduction to Java programming - Java tutorial for beginners to teach Java ...
Introduction to Java programming - Java tutorial for beginners to teach Java ...Introduction to Java programming - Java tutorial for beginners to teach Java ...
Introduction to Java programming - Java tutorial for beginners to teach Java ...Duckademy IT courses
 
F# Eye for the C# Guy
F# Eye for the C# GuyF# Eye for the C# Guy
F# Eye for the C# Guygueste3f83d
 
Jariko - A JVM interpreter for RPG written in kotlin
Jariko - A JVM interpreter for RPG written in kotlinJariko - A JVM interpreter for RPG written in kotlin
Jariko - A JVM interpreter for RPG written in kotlinFederico Tomassetti
 
ITB2019 Real World Scenarios for Modern CFML - Nolan Erck
ITB2019 Real World Scenarios for Modern CFML - Nolan ErckITB2019 Real World Scenarios for Modern CFML - Nolan Erck
ITB2019 Real World Scenarios for Modern CFML - Nolan ErckOrtus Solutions, Corp
 
Mistakes I Made Building Netflix for the iPhone
Mistakes I Made Building Netflix for the iPhoneMistakes I Made Building Netflix for the iPhone
Mistakes I Made Building Netflix for the iPhonekentbrew
 
ميهين
ميهينميهين
ميهينAhmed
 
NUS iOS Swift Talk
NUS iOS Swift TalkNUS iOS Swift Talk
NUS iOS Swift TalkGabriel Lim
 
JS Fest 2018. Douglas Crockford. The Better Parts
JS Fest 2018. Douglas Crockford. The Better PartsJS Fest 2018. Douglas Crockford. The Better Parts
JS Fest 2018. Douglas Crockford. The Better PartsJSFestUA
 
Carlo Sciolla - Above and beyond type systems with clojure.spec - Codemotion ...
Carlo Sciolla - Above and beyond type systems with clojure.spec - Codemotion ...Carlo Sciolla - Above and beyond type systems with clojure.spec - Codemotion ...
Carlo Sciolla - Above and beyond type systems with clojure.spec - Codemotion ...Codemotion
 
What makes AWS invincible? from JAWS Days 2014
What makes AWS invincible? from JAWS Days 2014What makes AWS invincible? from JAWS Days 2014
What makes AWS invincible? from JAWS Days 2014Emma Haruka Iwao
 
Intro to Functional Programming
Intro to Functional ProgrammingIntro to Functional Programming
Intro to Functional ProgrammingJordan Parmer
 
Device Emulation with OSGi and Flash
Device Emulation with OSGi and FlashDevice Emulation with OSGi and Flash
Device Emulation with OSGi and Flashgeorgemesesan
 
Voicecon - Mashups with Tropo.com
Voicecon - Mashups with Tropo.comVoicecon - Mashups with Tropo.com
Voicecon - Mashups with Tropo.comVoxeo Corp
 
Finding Monsters Adventure VR Experience
Finding Monsters Adventure VR ExperienceFinding Monsters Adventure VR Experience
Finding Monsters Adventure VR ExperienceRafael Ferrari
 

Similaire à Claudia Doppioslash - Time Travel for game development with Elm (20)

Spring, CDI, Jakarta EE good parts
Spring, CDI, Jakarta EE good partsSpring, CDI, Jakarta EE good parts
Spring, CDI, Jakarta EE good parts
 
Lambda The Extreme: Test-Driving a Functional Language
Lambda The Extreme: Test-Driving a Functional LanguageLambda The Extreme: Test-Driving a Functional Language
Lambda The Extreme: Test-Driving a Functional Language
 
Concurrency and Parallelism with Scala
Concurrency and Parallelism with ScalaConcurrency and Parallelism with Scala
Concurrency and Parallelism with Scala
 
Introduction to Java programming - Java tutorial for beginners to teach Java ...
Introduction to Java programming - Java tutorial for beginners to teach Java ...Introduction to Java programming - Java tutorial for beginners to teach Java ...
Introduction to Java programming - Java tutorial for beginners to teach Java ...
 
F# Eye for the C# Guy
F# Eye for the C# GuyF# Eye for the C# Guy
F# Eye for the C# Guy
 
Jariko - A JVM interpreter for RPG written in kotlin
Jariko - A JVM interpreter for RPG written in kotlinJariko - A JVM interpreter for RPG written in kotlin
Jariko - A JVM interpreter for RPG written in kotlin
 
ITB2019 Real World Scenarios for Modern CFML - Nolan Erck
ITB2019 Real World Scenarios for Modern CFML - Nolan ErckITB2019 Real World Scenarios for Modern CFML - Nolan Erck
ITB2019 Real World Scenarios for Modern CFML - Nolan Erck
 
Gamedev-grade debugging
Gamedev-grade debuggingGamedev-grade debugging
Gamedev-grade debugging
 
Mistakes I Made Building Netflix for the iPhone
Mistakes I Made Building Netflix for the iPhoneMistakes I Made Building Netflix for the iPhone
Mistakes I Made Building Netflix for the iPhone
 
ميهين
ميهينميهين
ميهين
 
NUS iOS Swift Talk
NUS iOS Swift TalkNUS iOS Swift Talk
NUS iOS Swift Talk
 
JS Fest 2018. Douglas Crockford. The Better Parts
JS Fest 2018. Douglas Crockford. The Better PartsJS Fest 2018. Douglas Crockford. The Better Parts
JS Fest 2018. Douglas Crockford. The Better Parts
 
Carlo Sciolla - Above and beyond type systems with clojure.spec - Codemotion ...
Carlo Sciolla - Above and beyond type systems with clojure.spec - Codemotion ...Carlo Sciolla - Above and beyond type systems with clojure.spec - Codemotion ...
Carlo Sciolla - Above and beyond type systems with clojure.spec - Codemotion ...
 
What makes AWS invincible? from JAWS Days 2014
What makes AWS invincible? from JAWS Days 2014What makes AWS invincible? from JAWS Days 2014
What makes AWS invincible? from JAWS Days 2014
 
XRobots
XRobotsXRobots
XRobots
 
Intro to Functional Programming
Intro to Functional ProgrammingIntro to Functional Programming
Intro to Functional Programming
 
Device Emulation with OSGi and Flash
Device Emulation with OSGi and FlashDevice Emulation with OSGi and Flash
Device Emulation with OSGi and Flash
 
Voicecon - Mashups with Tropo.com
Voicecon - Mashups with Tropo.comVoicecon - Mashups with Tropo.com
Voicecon - Mashups with Tropo.com
 
Finding Monsters Adventure VR Experience
Finding Monsters Adventure VR ExperienceFinding Monsters Adventure VR Experience
Finding Monsters Adventure VR Experience
 
The Joy Of Ruby
The Joy Of RubyThe Joy Of Ruby
The Joy Of Ruby
 

Plus de Codemotion

Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...Codemotion
 
Pompili - From hero to_zero: The FatalNoise neverending story
Pompili - From hero to_zero: The FatalNoise neverending storyPompili - From hero to_zero: The FatalNoise neverending story
Pompili - From hero to_zero: The FatalNoise neverending storyCodemotion
 
Pastore - Commodore 65 - La storia
Pastore - Commodore 65 - La storiaPastore - Commodore 65 - La storia
Pastore - Commodore 65 - La storiaCodemotion
 
Pennisi - Essere Richard Altwasser
Pennisi - Essere Richard AltwasserPennisi - Essere Richard Altwasser
Pennisi - Essere Richard AltwasserCodemotion
 
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...Codemotion
 
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019Codemotion
 
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019Codemotion
 
Francesco Baldassarri - Deliver Data at Scale - Codemotion Amsterdam 2019 -
Francesco Baldassarri  - Deliver Data at Scale - Codemotion Amsterdam 2019 - Francesco Baldassarri  - Deliver Data at Scale - Codemotion Amsterdam 2019 -
Francesco Baldassarri - Deliver Data at Scale - Codemotion Amsterdam 2019 - Codemotion
 
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...Codemotion
 
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...Codemotion
 
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...Codemotion
 
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...Codemotion
 
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019Codemotion
 
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019Codemotion
 
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019Codemotion
 
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...Codemotion
 
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...Codemotion
 
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019Codemotion
 
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019Codemotion
 
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019Codemotion
 

Plus de Codemotion (20)

Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
 
Pompili - From hero to_zero: The FatalNoise neverending story
Pompili - From hero to_zero: The FatalNoise neverending storyPompili - From hero to_zero: The FatalNoise neverending story
Pompili - From hero to_zero: The FatalNoise neverending story
 
Pastore - Commodore 65 - La storia
Pastore - Commodore 65 - La storiaPastore - Commodore 65 - La storia
Pastore - Commodore 65 - La storia
 
Pennisi - Essere Richard Altwasser
Pennisi - Essere Richard AltwasserPennisi - Essere Richard Altwasser
Pennisi - Essere Richard Altwasser
 
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
 
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
 
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
 
Francesco Baldassarri - Deliver Data at Scale - Codemotion Amsterdam 2019 -
Francesco Baldassarri  - Deliver Data at Scale - Codemotion Amsterdam 2019 - Francesco Baldassarri  - Deliver Data at Scale - Codemotion Amsterdam 2019 -
Francesco Baldassarri - Deliver Data at Scale - Codemotion Amsterdam 2019 -
 
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
 
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
 
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
 
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
 
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
 
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
 
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
 
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
 
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
 
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
 
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
 
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
 

Dernier

Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityWSO2
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxRustici Software
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesrafiqahmad00786416
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businesspanagenda
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdfSandro Moreira
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Victor Rentea
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native ApplicationsWSO2
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Zilliz
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Victor Rentea
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
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
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Bhuvaneswari Subramani
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDropbox
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 

Dernier (20)

Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
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
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 

Claudia Doppioslash - Time Travel for game development with Elm