SlideShare ist ein Scribd-Unternehmen logo
1 von 20
Downloaden Sie, um offline zu lesen
Embracing
                                    Concurrency
                     for Fun, Utility & Simpler Code




Michael Sparks
BBC R&D, http://www.kamaelia.org/Home    Ignite Leeds, Jan 2009
Embracing
                                     Concurrency
                     for Fun, Utility & Simpler Code
                                    Or “what we've learnt as a part of the
                                     Kamaelia project about making concurrency
                                  something that's fun and useful, and usable by
                                     novice and advanced developers alike...
                                     ...rather than a pain in the neck”




Michael Sparks
BBC R&D, http://www.kamaelia.org/Home                     Ignite Leeds, Jan 2009
Why?                             Hardware finally going
              Opportunity!
                                  massively concurrent                                       ...
                                  .... PS3, high end servers, trickling down to desktops, laptops)



“many hands make light
work” but Viewed as Hard
... do we just have crap tools?


                         “And one language to in
    Problems
                         the darkness bind them”
                         ... can just we REALLY abandon 50 years of code for Erlang, Haskell
                         and occam?

Michael Sparks
BBC R&D, http://www.kamaelia.org/Home
We're Taught Wrong
 Fundamental Control Structures
 ... in imperative languages number greater than 3!

      Control Structure         Traditional Abstraction      Biggest Pain Points

       Sequence                       Function                 Global Var
       Selection                      Function                 Global Var
        Iteration                     Function                 Global Var
         Parallel                      Thread                 Shared Data
             Usually Skipped                          Lost or duplicate update
                                                      are most common bugs

Michael Sparks
BBC R&D, http://www.kamaelia.org/Home
Desktop            gsoc


                Media                      Novice
                                APPS                trainee




                        Network            3rd Party




Michael Sparks
BBC R&D, http://www.kamaelia.org/Home
Speak 'n Write
Think backend               P2P Whiteboard Programming
needed for                                                     Simple
                        ER DB Modeller        (logo)                               P2P Radio
                                                       Kids    Games
youtube/flickr                                                                     Torrent
                                                                                   3D Systems
type systems                Compose                                                Realtime Music
          UGC                                Desktop                     gsoc      Paint App
        Backend                                                                    P2P Web Server
                                                                                   Secure “phone”
       Transcoder                                                                  Social Net Vis
                      Media                                 Novice                 ...
Shot Change
Detection                                   APPS                     trainee
                                                                                     MiniAxon
                                                                                     ScriptReader
    Mobile        DVB                                                                MediaPreview
    Reframing                                                                        on Mobile
                                                                                     Reliable

     Macro
                 Podcasts
                                  Network                  3rd Party                 Multicast
                                                                                       Sedna
    “record
  everything”                                                                    XMPP XMLDB
                        Email &                           AWS                   pubsub
                        Spam                   Web      (Amazon)
      SMTP                            IRC                                 Qt
                                              Serving              Gtk
  Greylisting
          Pop3Proxy     ClientSide          AIM                                  microblogging
                        Spam Tools

Michael Sparks
BBC R&D, http://www.kamaelia.org/Home
Core Approach:
   Concurrent things with comms points
   Generally send messages
   Keep data private, don't share



                           outbox       inbox     outbox
   inbox
                           signal       control   signal
  control

                             ...          ...       ...
    ...



Michael Sparks
BBC R&D, http://www.kamaelia.org/Home
But I must share data?
Use Software Transactional Memory
ie version control for variables.
                        1. Check out the collection
                           of values you wish to
                           work on
                        2. Change them
                        3. Check them back in
                        4. If conflict/clash, go
                           back to 1



Michael Sparks
BBC R&D, http://www.kamaelia.org/Home
Perspectives in APIs! (1/2)
   st    nd     rd
 1 , 2 , 3 Person
                                        1st Person - I change my state



2nd Person – YOU                                       3rd Person –
want to me to do                                       Bla should
something                                              do something
(you send                                    outbox    (I send a message)
                      inbox
me a message)
                     control                  signal

                       ...                     ...




Michael Sparks
BBC R&D, http://www.kamaelia.org/Home
Perspectives in APIs! (2/2)
   st    nd     rd
 1 , 2 , 3 Person
                                           private real methods



 Messages                                        Messages sent
 from public                                     to public outboxes
 inboxes
                      inbox             outbox

                     control            signal

Also, think            ...                ...        Also, think
about stdin                                          about stdout

Michael Sparks
BBC R&D, http://www.kamaelia.org/Home
Actor Systems
         Distinction can be unclear,
         potential source of ambiguity*   private real methods



 Messages
 from public                               No outbox concept
 inboxes                                   Possible issues with
                      inbox                rate limiting*
                     control
                                           Hardcodes recipient
                       ...
                                           in the sender
*system dependent issue
Michael Sparks
BBC R&D, http://www.kamaelia.org/Home
Advantages of outboxes
                                    No hardcoding of recipient
                                    allows:
                                      - Late Binding
                                      - Dynamic rewiring

  inbox                   outbox
                                    Concurrency Patterns as
  control                  signal   Reusable Code
    ...                     ...     ... a concurrency DSL


Michael Sparks
BBC R&D, http://www.kamaelia.org/Home
A Core Concurrency DSL
    Pipeline(A,B,C)
    Graphline(A=A,B=B, C=C, linkages = {})
    Tpipe(cond, C)
    Seq(A,B,C), PAR(), ALT()
    Backplane(“name”), PublishTo(“name”), SubscribeTo(“name”)
    Carousel(...)
    PureTransformer(...)
    StatefulTransformer(...)
    PureServer(...)
    MessageDemuxer(...)
    Source(*messages)
    NullSink
                                        Some of these are work in progress
                                        – they've been identified as useful,
                                        but not implemented as chassis, yet
Michael Sparks
BBC R&D, http://www.kamaelia.org/Home
Pipeline Example
    Pipeline(
        MyGamesEventsComponent(up="p", down="l", left="a", right="s"),
        BasicSprite("cat.png", name = "cat", border=40),
    ).activate()                                            MyGames
                                                             Events
                                                           Component




                                                             Basic
                                                             Sprite




Michael Sparks
BBC R&D, http://www.kamaelia.org/Home
Graphline Example
    Graphline(
      NEXT = Button(...),
      PREVIOUS = Button(...),                  PREVIOUS       NEXT
      FIRST = Button(...),                      (button)     (button)
      LAST = Button(...),
      CHOOSER = Chooser(...),
      IMAGE = Image(...),                FIRST                            LAST
                                        (button)                        (button)
      ...
    ).run()

                                                       Chooser




                                                                    Image
Michael Sparks
BBC R&D, http://www.kamaelia.org/Home
Server Example

                              data
                              from
                              user                      data
         Main                        Socket handler
      Server Core                                        to
                                                        user

                                                      Created at runtime
                                                      to handle the
   Protocol Handler Factory                           connection           Remote
                                 Protocol handler                           User


Michael Sparks
BBC R&D, http://www.kamaelia.org/Home
Server Example

                                        You therefore
                                        need to provide
         Main                           this bit.
      Server Core




   Protocol Handler Factory



Michael Sparks
BBC R&D, http://www.kamaelia.org/Home
Server Example
    from Kamaelia.Chassis.ConnectedServer import ServerCore
    from Kamaelia.Util.PureTransformer import PureTransformer

    def greeter(*argv, **argd):
        return PureTransformer(lambda x: "hello" +x)

    class GreeterServer(ServerCore):
        protocol=greeter
        port=1601

    GreeterServer().run()




Michael Sparks
BBC R&D, http://www.kamaelia.org/Home
Backplane Example
    # Streaming Server for raw DVB of Radio 1
    Backplane(“Radio”).activate()

    Pipeline(
       DVB_Multiplex(850.16, [6210], feparams), # RADIO ONE
       PublishTo("RADIO"),
    ).activate()

    def radio(*argv,**argd):
         return SubscribeTo(“RADIO”)

    ServerCore(protocol=radio, port=1600).run()




Michael Sparks
BBC R&D, http://www.kamaelia.org/Home
Thank you for listening!

            If you have questions, grab me later :-)




Michael Sparks
BBC R&D, http://www.kamaelia.org/Home

Weitere ähnliche Inhalte

Andere mochten auch

Life Online: Curating the history of the Internet (Tom Woolley)
Life Online: Curating the history of the Internet (Tom Woolley)Life Online: Curating the history of the Internet (Tom Woolley)
Life Online: Curating the history of the Internet (Tom Woolley)LSx Festival of Technology
 
A Digital Will Needs A Digital Way (Ian Pringle)
A Digital Will Needs A Digital Way (Ian Pringle)A Digital Will Needs A Digital Way (Ian Pringle)
A Digital Will Needs A Digital Way (Ian Pringle)LSx Festival of Technology
 
Don't Forget Voice! Telephony Hacks for Web 2.0 hackers (Tim Panton)
Don't Forget Voice! Telephony Hacks for Web 2.0 hackers (Tim Panton)Don't Forget Voice! Telephony Hacks for Web 2.0 hackers (Tim Panton)
Don't Forget Voice! Telephony Hacks for Web 2.0 hackers (Tim Panton)LSx Festival of Technology
 
Could Hardware Hacking Save Us? (Alexandra Dechamps-Sonsino)
Could Hardware Hacking Save Us? (Alexandra Dechamps-Sonsino)Could Hardware Hacking Save Us? (Alexandra Dechamps-Sonsino)
Could Hardware Hacking Save Us? (Alexandra Dechamps-Sonsino)LSx Festival of Technology
 
Bringing Social to Coffee on iPhone (Katie Lips)
Bringing Social to Coffee on iPhone (Katie Lips)Bringing Social to Coffee on iPhone (Katie Lips)
Bringing Social to Coffee on iPhone (Katie Lips)LSx Festival of Technology
 

Andere mochten auch (8)

Life Online: Curating the history of the Internet (Tom Woolley)
Life Online: Curating the history of the Internet (Tom Woolley)Life Online: Curating the history of the Internet (Tom Woolley)
Life Online: Curating the history of the Internet (Tom Woolley)
 
Smart People, Dumb Objects
Smart People, Dumb ObjectsSmart People, Dumb Objects
Smart People, Dumb Objects
 
A Digital Will Needs A Digital Way (Ian Pringle)
A Digital Will Needs A Digital Way (Ian Pringle)A Digital Will Needs A Digital Way (Ian Pringle)
A Digital Will Needs A Digital Way (Ian Pringle)
 
Introducing Ignite UK North (Craig Smith)
Introducing Ignite UK North (Craig Smith)Introducing Ignite UK North (Craig Smith)
Introducing Ignite UK North (Craig Smith)
 
Don't Forget Voice! Telephony Hacks for Web 2.0 hackers (Tim Panton)
Don't Forget Voice! Telephony Hacks for Web 2.0 hackers (Tim Panton)Don't Forget Voice! Telephony Hacks for Web 2.0 hackers (Tim Panton)
Don't Forget Voice! Telephony Hacks for Web 2.0 hackers (Tim Panton)
 
Could Hardware Hacking Save Us? (Alexandra Dechamps-Sonsino)
Could Hardware Hacking Save Us? (Alexandra Dechamps-Sonsino)Could Hardware Hacking Save Us? (Alexandra Dechamps-Sonsino)
Could Hardware Hacking Save Us? (Alexandra Dechamps-Sonsino)
 
Aid 2.0: IT In Africa (Jeff Allen)
Aid 2.0: IT In Africa (Jeff Allen)Aid 2.0: IT In Africa (Jeff Allen)
Aid 2.0: IT In Africa (Jeff Allen)
 
Bringing Social to Coffee on iPhone (Katie Lips)
Bringing Social to Coffee on iPhone (Katie Lips)Bringing Social to Coffee on iPhone (Katie Lips)
Bringing Social to Coffee on iPhone (Katie Lips)
 

Ähnlich wie Embracing Concurrency: For Fun, Utility & Simpler Code (Michael Sparks)

4: Embracing Concurrency (Michael Sparks)
4: Embracing Concurrency (Michael Sparks)4: Embracing Concurrency (Michael Sparks)
4: Embracing Concurrency (Michael Sparks)Imran Ali
 
Smalltalk In a Nutshell
Smalltalk In a NutshellSmalltalk In a Nutshell
Smalltalk In a NutshellMichele Lanza
 
Mark Logic Digital Publishing Summit, Kellogg
Mark Logic Digital Publishing Summit, KelloggMark Logic Digital Publishing Summit, Kellogg
Mark Logic Digital Publishing Summit, KelloggDave Kellogg
 
Champ Pitch Celtic-Plus Event 2011
Champ Pitch Celtic-Plus Event 2011Champ Pitch Celtic-Plus Event 2011
Champ Pitch Celtic-Plus Event 2011vrt-medialab
 
JSUG - Cocoon3 Student Project Idea by Reinhard Poetz and Steven Dolg
JSUG - Cocoon3 Student Project Idea by Reinhard Poetz and Steven DolgJSUG - Cocoon3 Student Project Idea by Reinhard Poetz and Steven Dolg
JSUG - Cocoon3 Student Project Idea by Reinhard Poetz and Steven DolgChristoph Pickl
 
Data First - The Next Mobile Wave
Data First - The Next Mobile WaveData First - The Next Mobile Wave
Data First - The Next Mobile WavePaul Golding
 
Future of technical innovation 3 trends that impact enterprise users
Future of technical innovation   3 trends that impact enterprise usersFuture of technical innovation   3 trends that impact enterprise users
Future of technical innovation 3 trends that impact enterprise usersJohn Gibbon
 
Multimedia Broadcasting Platform
Multimedia Broadcasting PlatformMultimedia Broadcasting Platform
Multimedia Broadcasting PlatformFrancois Lefebvre
 
A Mobile Centric View of Silicon Valley - January 2011
A Mobile Centric View of Silicon Valley - January 2011A Mobile Centric View of Silicon Valley - January 2011
A Mobile Centric View of Silicon Valley - January 2011Lars Kamp
 
Internet Programming With Python Presentation
Internet Programming With Python PresentationInternet Programming With Python Presentation
Internet Programming With Python PresentationAkramWaseem
 
Http Jaoo.Com.Au Sydney 2008 File Path= Jaoo Aus2008 Slides Dave Thomas Lif...
Http   Jaoo.Com.Au Sydney 2008 File Path= Jaoo Aus2008 Slides Dave Thomas Lif...Http   Jaoo.Com.Au Sydney 2008 File Path= Jaoo Aus2008 Slides Dave Thomas Lif...
Http Jaoo.Com.Au Sydney 2008 File Path= Jaoo Aus2008 Slides Dave Thomas Lif...qedanne
 
MTC Spring 2013 - crossplatform woes - robert virkus - 2013-03-13
MTC Spring 2013 -  crossplatform woes - robert virkus - 2013-03-13MTC Spring 2013 -  crossplatform woes - robert virkus - 2013-03-13
MTC Spring 2013 - crossplatform woes - robert virkus - 2013-03-13Enough Software
 
respond_to :voice - the convergence of voice and web interfaces with Rails an...
respond_to :voice - the convergence of voice and web interfaces with Rails an...respond_to :voice - the convergence of voice and web interfaces with Rails an...
respond_to :voice - the convergence of voice and web interfaces with Rails an...jpalley
 
Alfresco Day Madrid - John Newton - Keynote
Alfresco Day Madrid - John Newton - KeynoteAlfresco Day Madrid - John Newton - Keynote
Alfresco Day Madrid - John Newton - KeynoteToni de la Fuente
 
Alfresco day madrid john newton - key note
Alfresco day madrid   john newton - key noteAlfresco day madrid   john newton - key note
Alfresco day madrid john newton - key noteAlfresco Software
 
What's New in IBM Connections 4.0
What's New in IBM Connections 4.0What's New in IBM Connections 4.0
What's New in IBM Connections 4.0Luis Benitez
 
MODERN MALWARE THREAT: HANDLING OBFUSCATED CODE -- CONFIDENCE CONFERENCE (2019)
MODERN MALWARE THREAT: HANDLING OBFUSCATED CODE -- CONFIDENCE CONFERENCE (2019)MODERN MALWARE THREAT: HANDLING OBFUSCATED CODE -- CONFIDENCE CONFERENCE (2019)
MODERN MALWARE THREAT: HANDLING OBFUSCATED CODE -- CONFIDENCE CONFERENCE (2019)Alexandre Borges
 
Dagstuhl 2010 - Kalman Graffi - Alternative, more promising IT Paradigms for ...
Dagstuhl 2010 - Kalman Graffi - Alternative, more promising IT Paradigms for ...Dagstuhl 2010 - Kalman Graffi - Alternative, more promising IT Paradigms for ...
Dagstuhl 2010 - Kalman Graffi - Alternative, more promising IT Paradigms for ...Kalman Graffi
 
Battle of Music: SDK from iPhone, Nokia, BlackBerry, Android, Palm
Battle of Music: SDK from iPhone, Nokia, BlackBerry, Android, PalmBattle of Music: SDK from iPhone, Nokia, BlackBerry, Android, Palm
Battle of Music: SDK from iPhone, Nokia, BlackBerry, Android, PalmBess Ho
 
Embedding Intelligence in Everyday Objects with TJBot
Embedding Intelligence in Everyday Objects with TJBotEmbedding Intelligence in Everyday Objects with TJBot
Embedding Intelligence in Everyday Objects with TJBotVictor Dibia
 

Ähnlich wie Embracing Concurrency: For Fun, Utility & Simpler Code (Michael Sparks) (20)

4: Embracing Concurrency (Michael Sparks)
4: Embracing Concurrency (Michael Sparks)4: Embracing Concurrency (Michael Sparks)
4: Embracing Concurrency (Michael Sparks)
 
Smalltalk In a Nutshell
Smalltalk In a NutshellSmalltalk In a Nutshell
Smalltalk In a Nutshell
 
Mark Logic Digital Publishing Summit, Kellogg
Mark Logic Digital Publishing Summit, KelloggMark Logic Digital Publishing Summit, Kellogg
Mark Logic Digital Publishing Summit, Kellogg
 
Champ Pitch Celtic-Plus Event 2011
Champ Pitch Celtic-Plus Event 2011Champ Pitch Celtic-Plus Event 2011
Champ Pitch Celtic-Plus Event 2011
 
JSUG - Cocoon3 Student Project Idea by Reinhard Poetz and Steven Dolg
JSUG - Cocoon3 Student Project Idea by Reinhard Poetz and Steven DolgJSUG - Cocoon3 Student Project Idea by Reinhard Poetz and Steven Dolg
JSUG - Cocoon3 Student Project Idea by Reinhard Poetz and Steven Dolg
 
Data First - The Next Mobile Wave
Data First - The Next Mobile WaveData First - The Next Mobile Wave
Data First - The Next Mobile Wave
 
Future of technical innovation 3 trends that impact enterprise users
Future of technical innovation   3 trends that impact enterprise usersFuture of technical innovation   3 trends that impact enterprise users
Future of technical innovation 3 trends that impact enterprise users
 
Multimedia Broadcasting Platform
Multimedia Broadcasting PlatformMultimedia Broadcasting Platform
Multimedia Broadcasting Platform
 
A Mobile Centric View of Silicon Valley - January 2011
A Mobile Centric View of Silicon Valley - January 2011A Mobile Centric View of Silicon Valley - January 2011
A Mobile Centric View of Silicon Valley - January 2011
 
Internet Programming With Python Presentation
Internet Programming With Python PresentationInternet Programming With Python Presentation
Internet Programming With Python Presentation
 
Http Jaoo.Com.Au Sydney 2008 File Path= Jaoo Aus2008 Slides Dave Thomas Lif...
Http   Jaoo.Com.Au Sydney 2008 File Path= Jaoo Aus2008 Slides Dave Thomas Lif...Http   Jaoo.Com.Au Sydney 2008 File Path= Jaoo Aus2008 Slides Dave Thomas Lif...
Http Jaoo.Com.Au Sydney 2008 File Path= Jaoo Aus2008 Slides Dave Thomas Lif...
 
MTC Spring 2013 - crossplatform woes - robert virkus - 2013-03-13
MTC Spring 2013 -  crossplatform woes - robert virkus - 2013-03-13MTC Spring 2013 -  crossplatform woes - robert virkus - 2013-03-13
MTC Spring 2013 - crossplatform woes - robert virkus - 2013-03-13
 
respond_to :voice - the convergence of voice and web interfaces with Rails an...
respond_to :voice - the convergence of voice and web interfaces with Rails an...respond_to :voice - the convergence of voice and web interfaces with Rails an...
respond_to :voice - the convergence of voice and web interfaces with Rails an...
 
Alfresco Day Madrid - John Newton - Keynote
Alfresco Day Madrid - John Newton - KeynoteAlfresco Day Madrid - John Newton - Keynote
Alfresco Day Madrid - John Newton - Keynote
 
Alfresco day madrid john newton - key note
Alfresco day madrid   john newton - key noteAlfresco day madrid   john newton - key note
Alfresco day madrid john newton - key note
 
What's New in IBM Connections 4.0
What's New in IBM Connections 4.0What's New in IBM Connections 4.0
What's New in IBM Connections 4.0
 
MODERN MALWARE THREAT: HANDLING OBFUSCATED CODE -- CONFIDENCE CONFERENCE (2019)
MODERN MALWARE THREAT: HANDLING OBFUSCATED CODE -- CONFIDENCE CONFERENCE (2019)MODERN MALWARE THREAT: HANDLING OBFUSCATED CODE -- CONFIDENCE CONFERENCE (2019)
MODERN MALWARE THREAT: HANDLING OBFUSCATED CODE -- CONFIDENCE CONFERENCE (2019)
 
Dagstuhl 2010 - Kalman Graffi - Alternative, more promising IT Paradigms for ...
Dagstuhl 2010 - Kalman Graffi - Alternative, more promising IT Paradigms for ...Dagstuhl 2010 - Kalman Graffi - Alternative, more promising IT Paradigms for ...
Dagstuhl 2010 - Kalman Graffi - Alternative, more promising IT Paradigms for ...
 
Battle of Music: SDK from iPhone, Nokia, BlackBerry, Android, Palm
Battle of Music: SDK from iPhone, Nokia, BlackBerry, Android, PalmBattle of Music: SDK from iPhone, Nokia, BlackBerry, Android, Palm
Battle of Music: SDK from iPhone, Nokia, BlackBerry, Android, Palm
 
Embedding Intelligence in Everyday Objects with TJBot
Embedding Intelligence in Everyday Objects with TJBotEmbedding Intelligence in Everyday Objects with TJBot
Embedding Intelligence in Everyday Objects with TJBot
 

Mehr von LSx Festival of Technology

Psycho Teams & Theory Of Mind (Philip Hemsted)
Psycho Teams & Theory Of Mind (Philip Hemsted)Psycho Teams & Theory Of Mind (Philip Hemsted)
Psycho Teams & Theory Of Mind (Philip Hemsted)LSx Festival of Technology
 
Mass Customisation and the One-to-One Future (Glen Smith)
Mass Customisation and the One-to-One Future (Glen Smith)Mass Customisation and the One-to-One Future (Glen Smith)
Mass Customisation and the One-to-One Future (Glen Smith)LSx Festival of Technology
 
Practical Artificial Intelligence & Machine Learning (Arturo Servin)
Practical Artificial Intelligence & Machine Learning (Arturo Servin)Practical Artificial Intelligence & Machine Learning (Arturo Servin)
Practical Artificial Intelligence & Machine Learning (Arturo Servin)LSx Festival of Technology
 
Recovery 2.0: Digital Inclusion & Social Models Of Recovery (Katie Brown)
Recovery 2.0: Digital Inclusion & Social Models Of Recovery (Katie Brown)Recovery 2.0: Digital Inclusion & Social Models Of Recovery (Katie Brown)
Recovery 2.0: Digital Inclusion & Social Models Of Recovery (Katie Brown)LSx Festival of Technology
 
FriiSpray: Digital Grafitti with IR tracking (Stuart Childs, Richard Garside,...
FriiSpray: Digital Grafitti with IR tracking (Stuart Childs, Richard Garside,...FriiSpray: Digital Grafitti with IR tracking (Stuart Childs, Richard Garside,...
FriiSpray: Digital Grafitti with IR tracking (Stuart Childs, Richard Garside,...LSx Festival of Technology
 
Art for Art's sake, or for Mankind's sake (Mohammed Ali)
Art for Art's sake, or for Mankind's sake (Mohammed Ali)Art for Art's sake, or for Mankind's sake (Mohammed Ali)
Art for Art's sake, or for Mankind's sake (Mohammed Ali)LSx Festival of Technology
 
For whom do we Build, Design, Make (Susan Williamson)
For whom do we Build, Design, Make (Susan Williamson)For whom do we Build, Design, Make (Susan Williamson)
For whom do we Build, Design, Make (Susan Williamson)LSx Festival of Technology
 
Creating a Smarter Planet, City by city (Rashik Parmar)
Creating a Smarter Planet, City by city (Rashik Parmar)Creating a Smarter Planet, City by city (Rashik Parmar)
Creating a Smarter Planet, City by city (Rashik Parmar)LSx Festival of Technology
 

Mehr von LSx Festival of Technology (17)

The Politics Of Patterns (James Boardwell)
The Politics Of Patterns (James Boardwell)The Politics Of Patterns (James Boardwell)
The Politics Of Patterns (James Boardwell)
 
Psycho Teams & Theory Of Mind (Philip Hemsted)
Psycho Teams & Theory Of Mind (Philip Hemsted)Psycho Teams & Theory Of Mind (Philip Hemsted)
Psycho Teams & Theory Of Mind (Philip Hemsted)
 
The Future Of Reading (Guy Dickinson)
The Future Of Reading (Guy Dickinson)The Future Of Reading (Guy Dickinson)
The Future Of Reading (Guy Dickinson)
 
Mass Customisation and the One-to-One Future (Glen Smith)
Mass Customisation and the One-to-One Future (Glen Smith)Mass Customisation and the One-to-One Future (Glen Smith)
Mass Customisation and the One-to-One Future (Glen Smith)
 
Practical Artificial Intelligence & Machine Learning (Arturo Servin)
Practical Artificial Intelligence & Machine Learning (Arturo Servin)Practical Artificial Intelligence & Machine Learning (Arturo Servin)
Practical Artificial Intelligence & Machine Learning (Arturo Servin)
 
Recovery 2.0: Digital Inclusion & Social Models Of Recovery (Katie Brown)
Recovery 2.0: Digital Inclusion & Social Models Of Recovery (Katie Brown)Recovery 2.0: Digital Inclusion & Social Models Of Recovery (Katie Brown)
Recovery 2.0: Digital Inclusion & Social Models Of Recovery (Katie Brown)
 
FriiSpray: Digital Grafitti with IR tracking (Stuart Childs, Richard Garside,...
FriiSpray: Digital Grafitti with IR tracking (Stuart Childs, Richard Garside,...FriiSpray: Digital Grafitti with IR tracking (Stuart Childs, Richard Garside,...
FriiSpray: Digital Grafitti with IR tracking (Stuart Childs, Richard Garside,...
 
My Life In Twenty Graphs (Tom Scott)
My Life In Twenty Graphs (Tom Scott)My Life In Twenty Graphs (Tom Scott)
My Life In Twenty Graphs (Tom Scott)
 
Tweetfoxxy (Ian Forrester)
Tweetfoxxy (Ian Forrester)Tweetfoxxy (Ian Forrester)
Tweetfoxxy (Ian Forrester)
 
Art for Art's sake, or for Mankind's sake (Mohammed Ali)
Art for Art's sake, or for Mankind's sake (Mohammed Ali)Art for Art's sake, or for Mankind's sake (Mohammed Ali)
Art for Art's sake, or for Mankind's sake (Mohammed Ali)
 
Turning Design On It’s Side (Paul Kerfoot)
Turning Design On It’s Side (Paul Kerfoot)Turning Design On It’s Side (Paul Kerfoot)
Turning Design On It’s Side (Paul Kerfoot)
 
We Are Sensors (Julian Tait)
We Are Sensors (Julian Tait)We Are Sensors (Julian Tait)
We Are Sensors (Julian Tait)
 
Grand Trunk Road (Irna Qureshi)
Grand Trunk Road (Irna Qureshi)Grand Trunk Road (Irna Qureshi)
Grand Trunk Road (Irna Qureshi)
 
60 Seconds (Stuart Childs)
60 Seconds (Stuart Childs)60 Seconds (Stuart Childs)
60 Seconds (Stuart Childs)
 
For whom do we Build, Design, Make (Susan Williamson)
For whom do we Build, Design, Make (Susan Williamson)For whom do we Build, Design, Make (Susan Williamson)
For whom do we Build, Design, Make (Susan Williamson)
 
Embedding Narrative (Megan Smith)
Embedding Narrative (Megan Smith)Embedding Narrative (Megan Smith)
Embedding Narrative (Megan Smith)
 
Creating a Smarter Planet, City by city (Rashik Parmar)
Creating a Smarter Planet, City by city (Rashik Parmar)Creating a Smarter Planet, City by city (Rashik Parmar)
Creating a Smarter Planet, City by city (Rashik Parmar)
 

Kürzlich hochgeladen

The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
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
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DaySri Ambati
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 

Kürzlich hochgeladen (20)

The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
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
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 

Embracing Concurrency: For Fun, Utility & Simpler Code (Michael Sparks)

  • 1. Embracing Concurrency for Fun, Utility & Simpler Code Michael Sparks BBC R&D, http://www.kamaelia.org/Home Ignite Leeds, Jan 2009
  • 2. Embracing Concurrency for Fun, Utility & Simpler Code Or “what we've learnt as a part of the Kamaelia project about making concurrency something that's fun and useful, and usable by novice and advanced developers alike... ...rather than a pain in the neck” Michael Sparks BBC R&D, http://www.kamaelia.org/Home Ignite Leeds, Jan 2009
  • 3. Why? Hardware finally going Opportunity! massively concurrent ... .... PS3, high end servers, trickling down to desktops, laptops) “many hands make light work” but Viewed as Hard ... do we just have crap tools? “And one language to in Problems the darkness bind them” ... can just we REALLY abandon 50 years of code for Erlang, Haskell and occam? Michael Sparks BBC R&D, http://www.kamaelia.org/Home
  • 4. We're Taught Wrong Fundamental Control Structures ... in imperative languages number greater than 3! Control Structure Traditional Abstraction Biggest Pain Points Sequence Function Global Var Selection Function Global Var Iteration Function Global Var Parallel Thread Shared Data Usually Skipped Lost or duplicate update are most common bugs Michael Sparks BBC R&D, http://www.kamaelia.org/Home
  • 5. Desktop gsoc Media Novice APPS trainee Network 3rd Party Michael Sparks BBC R&D, http://www.kamaelia.org/Home
  • 6. Speak 'n Write Think backend P2P Whiteboard Programming needed for Simple ER DB Modeller (logo) P2P Radio Kids Games youtube/flickr Torrent 3D Systems type systems Compose Realtime Music UGC Desktop gsoc Paint App Backend P2P Web Server Secure “phone” Transcoder Social Net Vis Media Novice ... Shot Change Detection APPS trainee MiniAxon ScriptReader Mobile DVB MediaPreview Reframing on Mobile Reliable Macro Podcasts Network 3rd Party Multicast Sedna “record everything” XMPP XMLDB Email & AWS pubsub Spam Web (Amazon) SMTP IRC Qt Serving Gtk Greylisting Pop3Proxy ClientSide AIM microblogging Spam Tools Michael Sparks BBC R&D, http://www.kamaelia.org/Home
  • 7. Core Approach: Concurrent things with comms points Generally send messages Keep data private, don't share outbox inbox outbox inbox signal control signal control ... ... ... ... Michael Sparks BBC R&D, http://www.kamaelia.org/Home
  • 8. But I must share data? Use Software Transactional Memory ie version control for variables. 1. Check out the collection of values you wish to work on 2. Change them 3. Check them back in 4. If conflict/clash, go back to 1 Michael Sparks BBC R&D, http://www.kamaelia.org/Home
  • 9. Perspectives in APIs! (1/2) st nd rd 1 , 2 , 3 Person 1st Person - I change my state 2nd Person – YOU 3rd Person – want to me to do Bla should something do something (you send outbox (I send a message) inbox me a message) control signal ... ... Michael Sparks BBC R&D, http://www.kamaelia.org/Home
  • 10. Perspectives in APIs! (2/2) st nd rd 1 , 2 , 3 Person private real methods Messages Messages sent from public to public outboxes inboxes inbox outbox control signal Also, think ... ... Also, think about stdin about stdout Michael Sparks BBC R&D, http://www.kamaelia.org/Home
  • 11. Actor Systems Distinction can be unclear, potential source of ambiguity* private real methods Messages from public No outbox concept inboxes Possible issues with inbox rate limiting* control Hardcodes recipient ... in the sender *system dependent issue Michael Sparks BBC R&D, http://www.kamaelia.org/Home
  • 12. Advantages of outboxes No hardcoding of recipient allows: - Late Binding - Dynamic rewiring inbox outbox Concurrency Patterns as control signal Reusable Code ... ... ... a concurrency DSL Michael Sparks BBC R&D, http://www.kamaelia.org/Home
  • 13. A Core Concurrency DSL Pipeline(A,B,C) Graphline(A=A,B=B, C=C, linkages = {}) Tpipe(cond, C) Seq(A,B,C), PAR(), ALT() Backplane(“name”), PublishTo(“name”), SubscribeTo(“name”) Carousel(...) PureTransformer(...) StatefulTransformer(...) PureServer(...) MessageDemuxer(...) Source(*messages) NullSink Some of these are work in progress – they've been identified as useful, but not implemented as chassis, yet Michael Sparks BBC R&D, http://www.kamaelia.org/Home
  • 14. Pipeline Example Pipeline( MyGamesEventsComponent(up="p", down="l", left="a", right="s"), BasicSprite("cat.png", name = "cat", border=40), ).activate() MyGames Events Component Basic Sprite Michael Sparks BBC R&D, http://www.kamaelia.org/Home
  • 15. Graphline Example Graphline( NEXT = Button(...), PREVIOUS = Button(...), PREVIOUS NEXT FIRST = Button(...), (button) (button) LAST = Button(...), CHOOSER = Chooser(...), IMAGE = Image(...), FIRST LAST (button) (button) ... ).run() Chooser Image Michael Sparks BBC R&D, http://www.kamaelia.org/Home
  • 16. Server Example data from user data Main Socket handler Server Core to user Created at runtime to handle the Protocol Handler Factory connection Remote Protocol handler User Michael Sparks BBC R&D, http://www.kamaelia.org/Home
  • 17. Server Example You therefore need to provide Main this bit. Server Core Protocol Handler Factory Michael Sparks BBC R&D, http://www.kamaelia.org/Home
  • 18. Server Example from Kamaelia.Chassis.ConnectedServer import ServerCore from Kamaelia.Util.PureTransformer import PureTransformer def greeter(*argv, **argd): return PureTransformer(lambda x: "hello" +x) class GreeterServer(ServerCore): protocol=greeter port=1601 GreeterServer().run() Michael Sparks BBC R&D, http://www.kamaelia.org/Home
  • 19. Backplane Example # Streaming Server for raw DVB of Radio 1 Backplane(“Radio”).activate() Pipeline( DVB_Multiplex(850.16, [6210], feparams), # RADIO ONE PublishTo("RADIO"), ).activate() def radio(*argv,**argd): return SubscribeTo(“RADIO”) ServerCore(protocol=radio, port=1600).run() Michael Sparks BBC R&D, http://www.kamaelia.org/Home
  • 20. Thank you for listening! If you have questions, grab me later :-) Michael Sparks BBC R&D, http://www.kamaelia.org/Home