SlideShare a Scribd company logo
1 of 31
Killer Engine for Remixing Games

Jesse Himmelstein
CRI-Paris


New game engine, with different goals



Made for remixing games and mashups



Electronics-inspired visual programming



Excellent debugging and live coding tools



All done in the browser


Interdisciplinary science and engineering

Higher education

School and after-school programs


Education technology

Knownodes

CoIdea


Scientific and Educational Games

Archimedes' Escape

Leap
Weizmann Institute


Citizen Science Games

FoldIt
Univ of Washington

Fraxinus
The Sainsbury Laboratory
A scientist should just be able to take part
of one game, mix it with another one, and
then modify it to make a new one

That’s impossible

MY BOSS

ME

Why?


We have:
Functions
Classes
Metaclasses

Blocks

Entity Component Systems
Unit tests

End to end tests
Distributed Version Control
Virtual machines

A million programming languages
A billion game engines
A kabillion libraries
What remixing should be
What refactoring is like


Interleaving -> incomprehension



Lessons
 Avoid tangling
 Leave data alone
 Sane abstractions for state and time
Rich Hickey
"Simple made Easy"


Breadboard
 Connect anything
 Measure anywhere
 Replace everything


Been done before…

Data flow

flowhub
Unreal Kismet
Chip
<pin>
in

Memory

out

<pin>

<data>

1. Memory -> Chips

<data>

2. Chips compute
Chip

<data>

3. Chips -> Memory
<pin>
constant

<pin>
Memory
<data>

<data>
<data>

IO
mouse
keyboard
graphics

Chip
<pin>

1. IO & Memory -> Chips

<pin>

2. Chips compute
3. Chips -> IO & Memory
Memory
speed

position

Move
speed
position

IO

Draw

mouse

position

keyboard

shape

graphics
Emitter

Splitter

Processor

Switch
Switch
<pin>
<pin>

Chip

Chip

Chip

<pin>

<pin>

<pin>

<pin>

<pin>

<pin>


“What would have happened”



“Mute” chips



Find chips from memory or IO



Test each chip in isolation
Brett Victor
”Inventing on Principle”


User code is dangerous



Contain within iframe
with sandbox attribute

Parent page - Editor

Sandbox - Game exuecution



Messages replace
function calls

iFrame
sandbox="allow-scripts"


Two chips modifying the same array/object?



Like version control
1. Create patches from a common ancestor
2. Merge patches



Some merges are hard
 LCS (Longest Common Subsequence)
 Operational transforms




Track all past state

Cloning data takes space!

Full
Patch

Patch



Better solutions
 Store mostly patches

Patch
Full

Patch


Persistant data structures
 Applies to lists, trees, hash maps, etc.

List A
[1, 2, 3, 4]

1

List B
[5, 2, 3, 4]

5

2

3

4


Treat IO as a buffer instead of a set of methods



Input
 Mouse (getMousePos() -> mouse.position)
 Keyboard (isKeyDown() -> keyboard.keysDown)



Output
 Canvas

ctx.fillStyle = ”black”;
ctx.fillRect(0, 0, 100, 100);

canvas.shapes = [{
fillStyle:
“black”,
position:
[0, 0],
size: [100, 100]
}];


Input/Output
 HTML using Rivets.js
▪ Template + values
▪ 2-way data binding
 HTTP
▪ Data replaces events and callbacks!


Looking for new and different games



Developers and designers always welcome!
 Lots of new features to work on
Paris Game Club - Making, playing, learning



Invited speakers
Micro-game jams



Videos + agenda at



gamelier.org
github.com/CyberCRI/RedWire
@RedWireIO
jesse.himmelstein@parisdescartes.fr
+JesseHimmelstein
@himmelattack

More Related Content

Similar to RedWire - Killer Engine for Remixing Games (at FOSDEM 2014)

Haskell for data science
Haskell for data scienceHaskell for data science
Haskell for data scienceJohn Cant
 
Casual Engines 2009
Casual Engines 2009Casual Engines 2009
Casual Engines 2009David Fox
 
Threading Successes 05 Smoke
Threading Successes 05   SmokeThreading Successes 05   Smoke
Threading Successes 05 Smokeguest40fc7cd
 
DotNetFest - Let’s refresh our memory! Memory management in .NET
DotNetFest - Let’s refresh our memory! Memory management in .NETDotNetFest - Let’s refresh our memory! Memory management in .NET
DotNetFest - Let’s refresh our memory! Memory management in .NETMaarten Balliauw
 
.NET Fest 2018. Maarten Balliauw. Let’s refresh our memory! Memory management...
.NET Fest 2018. Maarten Balliauw. Let’s refresh our memory! Memory management....NET Fest 2018. Maarten Balliauw. Let’s refresh our memory! Memory management...
.NET Fest 2018. Maarten Balliauw. Let’s refresh our memory! Memory management...NETFest
 
MEIS 2015 : A Multilayered Model for Artificial Intelligence of Game Characte...
MEIS 2015 : A Multilayered Model for Artificial Intelligence of Game Characte...MEIS 2015 : A Multilayered Model for Artificial Intelligence of Game Characte...
MEIS 2015 : A Multilayered Model for Artificial Intelligence of Game Characte...Youichiro Miyake
 
Coding for multiple cores
Coding for multiple coresCoding for multiple cores
Coding for multiple coresLee Hanxue
 
Alex Smola at AI Frontiers: Scalable Deep Learning Using MXNet
Alex Smola at AI Frontiers: Scalable Deep Learning Using MXNetAlex Smola at AI Frontiers: Scalable Deep Learning Using MXNet
Alex Smola at AI Frontiers: Scalable Deep Learning Using MXNetAI Frontiers
 
the productive programer: mechanics
the productive programer: mechanicsthe productive programer: mechanics
the productive programer: mechanicselliando dias
 
Fermín J. Serna - Exploits & Mitigations: EMET [RootedCON 2010]
Fermín J. Serna - Exploits & Mitigations: EMET [RootedCON 2010]Fermín J. Serna - Exploits & Mitigations: EMET [RootedCON 2010]
Fermín J. Serna - Exploits & Mitigations: EMET [RootedCON 2010]RootedCON
 
A Development of Log-based Game AI using Deep Learning
A Development of Log-based Game AI using Deep LearningA Development of Log-based Game AI using Deep Learning
A Development of Log-based Game AI using Deep LearningSuntae Kim
 
Albion Online - Software Architecture of an MMO (talk at Quo Vadis 2016, Berlin)
Albion Online - Software Architecture of an MMO (talk at Quo Vadis 2016, Berlin)Albion Online - Software Architecture of an MMO (talk at Quo Vadis 2016, Berlin)
Albion Online - Software Architecture of an MMO (talk at Quo Vadis 2016, Berlin)David Salz
 
Exploring .NET memory management - JetBrains webinar
Exploring .NET memory management - JetBrains webinarExploring .NET memory management - JetBrains webinar
Exploring .NET memory management - JetBrains webinarMaarten Balliauw
 
Unmanaged Parallelization via P/Invoke
Unmanaged Parallelization via P/InvokeUnmanaged Parallelization via P/Invoke
Unmanaged Parallelization via P/InvokeDmitri Nesteruk
 
Parallelizing Conqueror's Blade
Parallelizing Conqueror's BladeParallelizing Conqueror's Blade
Parallelizing Conqueror's BladeIntel® Software
 
JetBrains Day Seoul - Exploring .NET’s memory management – a trip down memory...
JetBrains Day Seoul - Exploring .NET’s memory management – a trip down memory...JetBrains Day Seoul - Exploring .NET’s memory management – a trip down memory...
JetBrains Day Seoul - Exploring .NET’s memory management – a trip down memory...Maarten Balliauw
 
Swug July 2010 - windows debugging by sainath
Swug July 2010 - windows debugging by sainathSwug July 2010 - windows debugging by sainath
Swug July 2010 - windows debugging by sainathDennis Chung
 
Sedna XML Database: Executor Internals
Sedna XML Database: Executor InternalsSedna XML Database: Executor Internals
Sedna XML Database: Executor InternalsIvan Shcheklein
 
Introduction to Xamarin Mobile Platform
Introduction to Xamarin Mobile PlatformIntroduction to Xamarin Mobile Platform
Introduction to Xamarin Mobile PlatformDominik Minta
 
Sql server engine cpu cache as the new ram
Sql server engine cpu cache as the new ramSql server engine cpu cache as the new ram
Sql server engine cpu cache as the new ramChris Adkin
 

Similar to RedWire - Killer Engine for Remixing Games (at FOSDEM 2014) (20)

Haskell for data science
Haskell for data scienceHaskell for data science
Haskell for data science
 
Casual Engines 2009
Casual Engines 2009Casual Engines 2009
Casual Engines 2009
 
Threading Successes 05 Smoke
Threading Successes 05   SmokeThreading Successes 05   Smoke
Threading Successes 05 Smoke
 
DotNetFest - Let’s refresh our memory! Memory management in .NET
DotNetFest - Let’s refresh our memory! Memory management in .NETDotNetFest - Let’s refresh our memory! Memory management in .NET
DotNetFest - Let’s refresh our memory! Memory management in .NET
 
.NET Fest 2018. Maarten Balliauw. Let’s refresh our memory! Memory management...
.NET Fest 2018. Maarten Balliauw. Let’s refresh our memory! Memory management....NET Fest 2018. Maarten Balliauw. Let’s refresh our memory! Memory management...
.NET Fest 2018. Maarten Balliauw. Let’s refresh our memory! Memory management...
 
MEIS 2015 : A Multilayered Model for Artificial Intelligence of Game Characte...
MEIS 2015 : A Multilayered Model for Artificial Intelligence of Game Characte...MEIS 2015 : A Multilayered Model for Artificial Intelligence of Game Characte...
MEIS 2015 : A Multilayered Model for Artificial Intelligence of Game Characte...
 
Coding for multiple cores
Coding for multiple coresCoding for multiple cores
Coding for multiple cores
 
Alex Smola at AI Frontiers: Scalable Deep Learning Using MXNet
Alex Smola at AI Frontiers: Scalable Deep Learning Using MXNetAlex Smola at AI Frontiers: Scalable Deep Learning Using MXNet
Alex Smola at AI Frontiers: Scalable Deep Learning Using MXNet
 
the productive programer: mechanics
the productive programer: mechanicsthe productive programer: mechanics
the productive programer: mechanics
 
Fermín J. Serna - Exploits & Mitigations: EMET [RootedCON 2010]
Fermín J. Serna - Exploits & Mitigations: EMET [RootedCON 2010]Fermín J. Serna - Exploits & Mitigations: EMET [RootedCON 2010]
Fermín J. Serna - Exploits & Mitigations: EMET [RootedCON 2010]
 
A Development of Log-based Game AI using Deep Learning
A Development of Log-based Game AI using Deep LearningA Development of Log-based Game AI using Deep Learning
A Development of Log-based Game AI using Deep Learning
 
Albion Online - Software Architecture of an MMO (talk at Quo Vadis 2016, Berlin)
Albion Online - Software Architecture of an MMO (talk at Quo Vadis 2016, Berlin)Albion Online - Software Architecture of an MMO (talk at Quo Vadis 2016, Berlin)
Albion Online - Software Architecture of an MMO (talk at Quo Vadis 2016, Berlin)
 
Exploring .NET memory management - JetBrains webinar
Exploring .NET memory management - JetBrains webinarExploring .NET memory management - JetBrains webinar
Exploring .NET memory management - JetBrains webinar
 
Unmanaged Parallelization via P/Invoke
Unmanaged Parallelization via P/InvokeUnmanaged Parallelization via P/Invoke
Unmanaged Parallelization via P/Invoke
 
Parallelizing Conqueror's Blade
Parallelizing Conqueror's BladeParallelizing Conqueror's Blade
Parallelizing Conqueror's Blade
 
JetBrains Day Seoul - Exploring .NET’s memory management – a trip down memory...
JetBrains Day Seoul - Exploring .NET’s memory management – a trip down memory...JetBrains Day Seoul - Exploring .NET’s memory management – a trip down memory...
JetBrains Day Seoul - Exploring .NET’s memory management – a trip down memory...
 
Swug July 2010 - windows debugging by sainath
Swug July 2010 - windows debugging by sainathSwug July 2010 - windows debugging by sainath
Swug July 2010 - windows debugging by sainath
 
Sedna XML Database: Executor Internals
Sedna XML Database: Executor InternalsSedna XML Database: Executor Internals
Sedna XML Database: Executor Internals
 
Introduction to Xamarin Mobile Platform
Introduction to Xamarin Mobile PlatformIntroduction to Xamarin Mobile Platform
Introduction to Xamarin Mobile Platform
 
Sql server engine cpu cache as the new ram
Sql server engine cpu cache as the new ramSql server engine cpu cache as the new ram
Sql server engine cpu cache as the new ram
 

Recently uploaded

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
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxnull - The Open Security Community
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksSoftradix Technologies
 
Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraDeakin University
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
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
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDGMarianaLemus7
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
#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
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 

Recently uploaded (20)

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
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping Elbows
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
 
Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning era
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
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
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDG
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 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
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 

RedWire - Killer Engine for Remixing Games (at FOSDEM 2014)

Editor's Notes

  1. TODO: changepicture of server baywithsomethingwithcrazierwires (star wars?)Only possible if youspenddays, weeks of delicatesurgery to separatetwothings, and longer to plugthem back together in a differentway
  2. TODO: changepicture of server baywithsomethingwithcrazierwires (star wars?)Only possible if youspenddays, weeks of delicatesurgery to separatetwothings, and longer to plugthem back together in a differentway
  3. Inspiration came from excellent presentations by RichHickeyObserved how when parts of a system are interleaved, throughfunction calls or context or state, itisbecomestoocomplex to understand all the possible interactionsIf a programmer can’treason about a program, hecan’t change it for the betterThat’swhywespendsomuch time refactoring, just to have a system thatissane, thatwecanunderstand and reason about.Defined notion of simplicity, an objective, absolutemeasurement on how interleaved a program’s parts areGave some insights intowhatmakessystems « simple ». If youwant more information, pleaseseehis talk « Simple Made Easy » as well as others by him.
  4. Legos are a simple, but not dynamic. What about electronics as a metaphor?You canconnectany part to anyother one.You can stick a multi-meter or oscilloscope atany point in the circuit to understandwhat’sgoing on. You caneven place several of themat onceYou can pull out anypiece and replace itwithanother. The i »nterface » isjust a pin and a wire.
  5. Not the first to beinspired by electronics.Dat aflow has existedsince the earlydays of computing. The ideais to have a graph of nodes, thatperformoperations on their inputs, and sendtheir outputs onto othernodesfurther down the draph. It was first a computer architecureidea, considered on equal footing with the Van Neumann architecture thateventuallydominated. Onlylaterdidresearchersrelializethat the visual aspects weresocompelling. You cansee data actually move down the graph.This worksverywell for small graphs.
  6. But asyouaddlogic, thingsget more « complex ».Whenanynodecansend data to anyothernode, youget chaos.Each of thesenodes has itsown state, changing all the time.Visual spaghetti isstill spaghetti!Visual spaghetti isstill spaghetti
  7. Differencesfrommostprogrammingenvironments: Reading to memoryis happening simultanously - no race condiitions. Chips are executingconcurrently, can’teffectother. Chips are not directlylinked.Writing to memoryisalsodone in parallel – detectconflicts, mergeresults.ConnectanythingMeasureanywhereReplace everything
  8. Start with single chip thatwrites to ioThen have itwritesomethingbased on memory to ioThen have a different chip modifythatmemoryYou can examine either one in isolationHavingtwo chips writing to the same place is an errorHave itwrite in and out to memoryPut a second thatcoordinateswithitNowyoucan swap one out and put anotherit. Or take out the memoryalltogether
  9. Start with single chip thatwrites to ioThen have itwritesomethingbased on memory to ioThen have a different chip modifythatmemoryYou can examine either one in isolationHavingtwo chips writing to the same place is an errorHave itwrite in and out to memoryPut a second thatcoordinateswithitNowyoucan swap one out and put anotherit. Or take out the memoryalltogether
  10. Start with single chip thatwrites to ioThen have itwritesomethingbased on memory to ioThen have a different chip modifythatmemoryYou can examine either one in isolationHavingtwo chips writing to the same place is an errorHave itwrite in and out to memoryPut a second thatcoordinateswithitNowyoucan swap one out and put anotherit. Or take out the memoryalltogether
  11. By default, an iframecan « reach out » and alter the parent pageSiteslikejsfiddle or plunkr have to deal withthis.Solution: get the browser to enact a securitypolicy. Use a differentdomain or the new HTML5 « iframesandbox ».
  12. Like version control, creates patches from a commonancestor, and thenmergesthemSomemerges, such as onarrays, are difficult to do in a naiveway.Will move to libraryusing LCS Longest Common SubsequenceProblemalgorithm (JSONDiffPatchlibrary)
  13. Treating IO as a buffer (memory) instead of as a set of functionsFor input only, worksgreat (mouse, keyboard)Works well for APIs thatalways do new things (canvas)Can alsowork for persistant APIs, like HTMLHarder for APIs that do feedback
  14. Treating IO as a buffer (memory) instead of as a set of functionsFor input only, worksgreat (mouse, keyboard)Works well for APIs thatalways do new things (canvas)Can alsowork for persistant APIs, like HTMLHarder for APIs that do feedback
  15. Game platformonly as good as the games on it!Wewe help youbringyourgames over to the platform.Live tests in Paris. MicroGame