Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Managing the Object Soup in Ambient-Oriented Ap...
Search
Nick De Cooman
September 07, 2012
Programming
0
600
Managing the Object Soup in Ambient-Oriented Applications
This deck summarizes my master's thesis and was presented at the final defense in September 2012.
Nick De Cooman
September 07, 2012
Tweet
Share
More Decks by Nick De Cooman
See All by Nick De Cooman
Serverless Architecture
ndecooma
1
41
React Native: Modern web techniques for mobile
ndecooma
0
280
Sigfox — A cellular networks, just for things
ndecooma
0
410
An Introduction to Unclouded.io
ndecooma
0
320
AmbiScrabble Game for the iPhone
ndecooma
0
240
What My Master Thesis is About
ndecooma
1
190
Other Decks in Programming
See All in Programming
LLM Observabilityによる 対話型音声AIアプリケーションの安定運用
gekko0114
2
430
Grafana:建立系統全知視角的捷徑
blueswen
0
330
360° Signals in Angular: Signal Forms with SignalStore & Resources @ngLondon 01/2026
manfredsteyer
PRO
0
130
なるべく楽してバックエンドに型をつけたい!(楽とは言ってない)
hibiki_cube
0
140
AI時代の認知負荷との向き合い方
optfit
0
160
Smart Handoff/Pickup ガイド - Claude Code セッション管理
yukiigarashi
0
140
Package Management Learnings from Homebrew
mikemcquaid
0
230
CSC307 Lecture 08
javiergs
PRO
0
670
生成AIを使ったコードレビューで定性的に品質カバー
chiilog
1
270
登壇資料を作る時に意識していること #登壇資料_findy
konifar
4
1.4k
AI Agent の開発と運用を支える Durable Execution #AgentsInProd
izumin5210
7
2.3k
15年続くIoTサービスのSREエンジニアが挑む分散トレーシング導入
melonps
2
220
Featured
See All Featured
Game over? The fight for quality and originality in the time of robots
wayneb77
1
120
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2k
GraphQLの誤解/rethinking-graphql
sonatard
74
11k
The Curse of the Amulet
leimatthew05
1
8.7k
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
410
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
24k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
350
The Spectacular Lies of Maps
axbom
PRO
1
520
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
230
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.4k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
2.8k
Transcript
MANAGING THE OBJECT SOUP IN AMBIENT-ORIENTED APPLICATIONS NICK DE COOMAN
2 Life More and More Mobile Mobile ad hoc networks
No shared infrastructure Volatile connections Dynamic network topology
3 WeScribble
3 WeScribble
3 WeScribble
4 Functional Requirements for WeScribble 1 2 Remote drawers can
only read the properties of a shape, not change it. A shape can be temporary owned by one drawer at a time and this only for a limited duration.
5 In this Thesis... We propose software abstractions to organize
the object reference soup
5 In this Thesis... We propose software abstractions to organize
the object reference soup
6 Aliasing Behavioral Protocol actor actor
6 Aliasing Behavioral Protocol actor actor def a := object:
{ ... }
6 Aliasing Behavioral Protocol actor actor uponDefiningPrincipal Protocol def a
:= object: { ... }
6 Aliasing Behavioral Protocol actor actor uponDefiningPrincipal Protocol def a
:= object: { ... }
6 Aliasing Behavioral Protocol actor actor uponDefiningPrincipal Protocol A
6 Aliasing Behavioral Protocol actor actor uponDefiningPrincipal Protocol A def
b := a
6 Aliasing Behavioral Protocol actor actor uponBindingLocalAlias uponDefiningPrincipal Protocol A
def b := a
6 Aliasing Behavioral Protocol actor actor uponBindingLocalAlias uponDefiningPrincipal Protocol A
B
6 Aliasing Behavioral Protocol actor actor uponBindingLocalAlias uponDefiningPrincipal Protocol A
B def addShape(arg){...}; addShape(a)
6 Aliasing Behavioral Protocol actor actor uponBindingLocalAlias uponLocalAliasing uponDefiningPrincipal Protocol
A B def addShape(arg){...}; addShape(a)
6 Aliasing Behavioral Protocol actor actor uponBindingLocalAlias uponLocalAliasing uponDefiningPrincipal Protocol
A B ARG
7 Aliasing Behavioral Protocol actor actor uponBindingLocalAlias uponLocalAliasing uponDefiningPrincipal Protocol
A B ARG
7 Aliasing Behavioral Protocol actor actor uponBindingLocalAlias uponLocalAliasing uponDefiningPrincipal Protocol
A
7 Aliasing Behavioral Protocol actor actor uponBindingLocalAlias uponLocalAliasing uponDefiningPrincipal Protocol
A when: ServiceTag discovered: { |c| ... } remote reference acquired C
7 Aliasing Behavioral Protocol actor actor uponBindingLocalAlias uponLocalAliasing uponDefiningPrincipal Protocol
A when: ServiceTag discovered: { |c| ... } C
7 Aliasing Behavioral Protocol actor actor uponBindingLocalAlias uponLocalAliasing uponRemoteAliasing uponDefiningPrincipal
Protocol A when: ServiceTag discovered: { |c| ... } C
7 Aliasing Behavioral Protocol actor actor uponBindingLocalAlias uponLocalAliasing uponRemoteAliasing uponDefiningPrincipal
Protocol A when: ServiceTag discovered: { |c| ... } C
7 Aliasing Behavioral Protocol actor actor uponBindingLocalAlias uponLocalAliasing uponRemoteAliasing uponDefiningPrincipal
Protocol A C
7 Aliasing Behavioral Protocol actor actor uponBindingLocalAlias uponLocalAliasing uponRemoteAliasing uponDefiningPrincipal
Protocol A def d := c C D
7 Aliasing Behavioral Protocol actor actor uponBindingLocalAlias uponLocalAliasing uponRemoteAliasing uponBindingRemoteAlias
uponDefiningPrincipal Protocol A C D
7 Aliasing Behavioral Protocol actor actor uponBindingLocalAlias uponLocalAliasing uponRemoteAliasing uponBindingRemoteAlias
uponDefiningPrincipal Protocol A Receiving remote reference = acquiring remote reference + resolving remote reference C D
Aliasing Behavioral Protocol at Work 8 Distributed object graph inspector
Ownership Domains CASE STUDY 1 CASE STUDY 2
Typestate-oriented Programming 9 10 Aliasing behavioral protocol alone is insufficient
to organize the object soup
Chameleon Objects 10 Typestate-oriented programming for ambient-oriented applications remote reference
local reference transition()
Chameleon Objects 10 Typestate-oriented programming for ambient-oriented applications remote reference
local reference transition()
Chameleon Objects Typestate-oriented programming for ambient-oriented applications remote reference local
reference 11 transition()
Ownership Type Tags 12 Out of the box aliasing strategies
Aliasing behavioral protocol + Chameleon objects LOCAL READONLY UNIQUE
13 Local Ownership Type Tag Bob Alice local object ✕
messages disallowed remote client object def raiseError := { raise: XIllegalOperation.new("Cannot expose remote alias") }; def uponRemoteAliasing(localProxy, aliasReceiver, remoteAlias){ raiseError() }; def uponBindingRemoteAlias(localProxy, aliasReceiver, fieldObj, remoteAlias){ raiseError() }; LOCAL
14 ReadOnly Ownership Type Tag Bob Alice local object only
read messages remote client object READONLY
15 Unique Ownership Type Tag Waiting Released Expired Acquired Eve
Bob Alice UNIQUE remote client object acquired waiting expired
16 WeScribble def makeShape(color, position, size){ def shape := object:
{ def getShapeData(){ [position, color, size] }; def changeColor(newColor){ color := newColor }; def reposition(newPosition){ position := newPosition }; def becomeTemporaryOwner(){ temporaryOwned }; def remove(){ ... }; } taggedAs: [ReadOnly]; def temporaryOwned := object: { def changeColor(newColor){ shape.changeColor(newColor) }; def reposition(newPosition){ shape.reposition(newPosition); } } taggedAs: [Unique]; export: shape as: ShapeObj; shape } READONLY SHAPE shape temporaryOwned UNIQUE
17 Conclusion LOCAL READONLY UNIQUE Ownership Type Tags Chameleon Objects
Aliasing Behavioral Protocol
18 Research Training Promoter Prof. Dr. Wolfgang De Meuter Elisa
Gonzalez Boix - Christophe Scholliers Advisors
18 Research Training Promoter Prof. Dr. Wolfgang De Meuter Elisa
Gonzalez Boix - Christophe Scholliers Advisors http://sites.google.com/site/nickdecooman
19 Related Work
19 Related Work Alias Detection
19 Related Work Alias Advertisement
19 Related Work Alias Prevention
19 Related Work Alias Control
Typechecking Chameleon Objects 20 def obj := chameleonObject: { |
install | def state1 := object: { def change(){ toState2() }; def foo(){ n()+2 }; }; def state2 := object: { def change(a){ foobar(bar(a)) }; def bar(b){ 9 }; }; def foobar(z){ toState1(z) }; def toState1(a){ install(state1) }; def toState2(){ install(state2) }; def n(){ 22 }; toState1(n()) }; obj.foo(); obj.change(); obj.bar(7); obj.change(33); state2 state1 change change BODY toState2 foobar toState1
Dynamically Tagged Objects 21 Chameleon object should obtain type tags
of the current state def obj := dynamicallyTaggedObject: { ... }; tag: obj as: [TypeTag1, TypeTag2]; when: obj isTaggedAs: TypeTag1 do: { ... };
22 Conclusion LOCAL READONLY UNIQUE Ownership Type Tags Chameleon Objects
Aliasing Behavioral Protocol