SlideShare a Scribd company logo
1 of 22
Download to read offline
Chilinet 
Hee Jeong Kim 
aprilhjk@gmail.com 
Summer Intern 
CHILI, EPFL, 2014
Outline 
• What Chilinet is 
• Project Goals 
• How it works 
• Execution Flows 
• Result 
• Expectations 
• Future work
What is Chilinet? 
• A client module to support communication 
between machines 
• Zmq messaging library & CZMQ binding 
• C++
Project Goals 
- Add network module to Qimchi framework 
- Implement simple demo to show how it works
Project Goals 
I want Chilinet to be.. 
1. Simple 
2. General / Flexible 
3. Replaceable
Chilinet Elements 
• ChiliClient 
- svrIP, ports 
- subscribe, getInit, pubRequest, storeState 
• State 
- topic, default value, current state 
- Read/write state file from/to disk 
- Fire event (When state is updated)
How does it work? 
Client Server 
- Graphic user interface 
QML 
Event Generation / Handling 
Qimchi Framework 
- Command line interface 
- Sends initState 
- Propagates update 
- Store state 
Chilitags Chilinet
How does it work? - State 
• State can be saved to a file in the server.
How does it work? – Events handling 
ü Codes in the grey box are executed when a user clicks a button. 
ü Codes in the grey box are executed when a user’s tag is detected.
How does it work? - Sockets 
- Among patterns provided by ZMQ, I used PUB-SUB, 
REP-REQ, PUSH-PULL patterns. 
• PUB-SUB 
• REP-REQ 
• PULL-PUSH 
• REQ-ROUTER 
• DEALER-REP 
• DEALER-ROUTER 
• DEALER-DEALER 
• ROUTER-ROUTER 
• PAIR-PAIR
How does it work? - Sockets
Execution Flow 
• Signal 
• Function call 
• Inner flow
Execution Flow - getInit 
Client Server 
OnStateUpdated OnCompleted 
6 5 4 1 
1. Client.getInit(topic, defaultval) 
5. State.setState(newState) 
6. StateUpdated 
2 
3 
REQ REP 
QML 
State ChiliClient 
Initialization(topic, value) 
If there is a file containing 
previous state information, 
read it and 
return previous state. 
If there is no file, 
save a default value to a file 
and return default value got 
from client.
Execution Flow – pub/sub 
Client Server 
On 
Clicked 
2 
3 
4 
On 
Completed 
5 
. 
. 
1 
PUSH 
OnState 
Updated 
6 
QML 
State ChiliClient 
1. Client.subscribe(topic) 
2. Client.pubRequest(topic, value) 
5. Subscribed 
6. StateUpdated 
updateState ( ) 
PULL 
writeFile(topic, value, false) 
Overwrite a value (new state) 
to a file named topic.
Execution Flow – storeState 
Client Server 
QML 
1 2 
4 5 
OnClicked 
OnStateUpdated 
3 
PUSH 
ChiliClient 
State 
PULL 
1. State.updateState(value) 
2. StateUpdated 
3. Client.storeState(topic, value) 
5. Server.writeFile(fileName. Value, true) 
writeFile(topic, value, true) 
Write a value (new state) 
to a file named topic. 
You can consider this 
function as a function 
for logging.
Demo 
• One central server 
• Many clients 
• Three states 
• Input event from mouse
Project Goals – Simplicity
Project Goals – Flexibility 
• We can store any string as 
a state. 
• Application can have as 
many states as we want. 
• You can make a state to be 
shared or not. 
Possible msgs 
- Position of tangible object 
- Events 
Next step / Previous step / 
Help / Check solution / 
show axes / construction lines / 
freeze
Project Goals – Replaceablility 
In QML, No ZMQ code/elements needed. Good!
Result 
Anyone can get the codes from github. 
ChiliClient : https://github.com/heejeongkim/qimchi/tree/chilinet0820 
ChiliSvr : https://github.com/heejeongkim/ChiliSvr
Expectations 
• Orchestration 
– Freeze 
– Monitoring 
• Expansion domain of activity 
• Easy to collect user data
Future work 
• Can it be more simple? 
• Mask options for propagation 
• File Download (roll book, activity file etc..) 
• 1:1 communication 
Is it simple enough?

More Related Content

What's hot

Flink Forward SF 2017: Stephan Ewen - Convergence of real-time analytics and ...
Flink Forward SF 2017: Stephan Ewen - Convergence of real-time analytics and ...Flink Forward SF 2017: Stephan Ewen - Convergence of real-time analytics and ...
Flink Forward SF 2017: Stephan Ewen - Convergence of real-time analytics and ...
Flink Forward
 
Flink Forward San Francisco 2019: Massive Scale Data Processing at Netflix us...
Flink Forward San Francisco 2019: Massive Scale Data Processing at Netflix us...Flink Forward San Francisco 2019: Massive Scale Data Processing at Netflix us...
Flink Forward San Francisco 2019: Massive Scale Data Processing at Netflix us...
Flink Forward
 

What's hot (20)

Streaming your Lyft Ride Prices - Flink Forward SF 2019
Streaming your Lyft Ride Prices - Flink Forward SF 2019Streaming your Lyft Ride Prices - Flink Forward SF 2019
Streaming your Lyft Ride Prices - Flink Forward SF 2019
 
Event driven-arch
Event driven-archEvent driven-arch
Event driven-arch
 
Flink Forward Berlin 2017: Piotr Wawrzyniak - Extending Apache Flink stream p...
Flink Forward Berlin 2017: Piotr Wawrzyniak - Extending Apache Flink stream p...Flink Forward Berlin 2017: Piotr Wawrzyniak - Extending Apache Flink stream p...
Flink Forward Berlin 2017: Piotr Wawrzyniak - Extending Apache Flink stream p...
 
Spring batch
Spring batchSpring batch
Spring batch
 
Experiment for large-scale operation of LibreOffice Online, 2019 Edition
Experiment for large-scale operation of LibreOffice Online, 2019 EditionExperiment for large-scale operation of LibreOffice Online, 2019 Edition
Experiment for large-scale operation of LibreOffice Online, 2019 Edition
 
Reactive programming intro
Reactive programming introReactive programming intro
Reactive programming intro
 
Asynchronous AMQP
Asynchronous AMQPAsynchronous AMQP
Asynchronous AMQP
 
Grokking TechTalk #24: Kafka's principles and protocols
Grokking TechTalk #24: Kafka's principles and protocolsGrokking TechTalk #24: Kafka's principles and protocols
Grokking TechTalk #24: Kafka's principles and protocols
 
Ginsbourg.com presentation of open source performance validation
Ginsbourg.com presentation of open source performance validationGinsbourg.com presentation of open source performance validation
Ginsbourg.com presentation of open source performance validation
 
Virtual Flink Forward 2020: Autoscaling Flink at Netflix - Timothy Farkas
Virtual Flink Forward 2020: Autoscaling Flink at Netflix - Timothy FarkasVirtual Flink Forward 2020: Autoscaling Flink at Netflix - Timothy Farkas
Virtual Flink Forward 2020: Autoscaling Flink at Netflix - Timothy Farkas
 
Flink Forward SF 2017: Stephan Ewen - Convergence of real-time analytics and ...
Flink Forward SF 2017: Stephan Ewen - Convergence of real-time analytics and ...Flink Forward SF 2017: Stephan Ewen - Convergence of real-time analytics and ...
Flink Forward SF 2017: Stephan Ewen - Convergence of real-time analytics and ...
 
Akka Persistence
Akka PersistenceAkka Persistence
Akka Persistence
 
End to end testing a web application with Clojure
End to end testing a web application with ClojureEnd to end testing a web application with Clojure
End to end testing a web application with Clojure
 
Работаем с RabbitMQ в Python используя kombu + gevent. (Rinat khabibiev)
Работаем с RabbitMQ в Python используя kombu + gevent. (Rinat khabibiev)Работаем с RabbitMQ в Python используя kombu + gevent. (Rinat khabibiev)
Работаем с RabbitMQ в Python используя kombu + gevent. (Rinat khabibiev)
 
Flink Forward San Francisco 2019: Massive Scale Data Processing at Netflix us...
Flink Forward San Francisco 2019: Massive Scale Data Processing at Netflix us...Flink Forward San Francisco 2019: Massive Scale Data Processing at Netflix us...
Flink Forward San Francisco 2019: Massive Scale Data Processing at Netflix us...
 
Flink Forward Berlin 2017: Patrick Gunia - Migration of a realtime stats prod...
Flink Forward Berlin 2017: Patrick Gunia - Migration of a realtime stats prod...Flink Forward Berlin 2017: Patrick Gunia - Migration of a realtime stats prod...
Flink Forward Berlin 2017: Patrick Gunia - Migration of a realtime stats prod...
 
Java spring batch
Java spring batchJava spring batch
Java spring batch
 
Flink Connector Development Tips & Tricks
Flink Connector Development Tips & TricksFlink Connector Development Tips & Tricks
Flink Connector Development Tips & Tricks
 
Reactive programming
Reactive programmingReactive programming
Reactive programming
 
Flink Forward San Francisco 2019: Moving from Lambda and Kappa Architectures ...
Flink Forward San Francisco 2019: Moving from Lambda and Kappa Architectures ...Flink Forward San Francisco 2019: Moving from Lambda and Kappa Architectures ...
Flink Forward San Francisco 2019: Moving from Lambda and Kappa Architectures ...
 

Similar to Chilinet

Cloud Operations with Streaming Analytics using Apache NiFi and Apache Flink
Cloud Operations with Streaming Analytics using Apache NiFi and Apache FlinkCloud Operations with Streaming Analytics using Apache NiFi and Apache Flink
Cloud Operations with Streaming Analytics using Apache NiFi and Apache Flink
DataWorks Summit
 
Tech talk specflow_bddx_hassa_nagy
Tech talk specflow_bddx_hassa_nagyTech talk specflow_bddx_hassa_nagy
Tech talk specflow_bddx_hassa_nagy
Skills Matter
 
Guidelhhghghine document final
Guidelhhghghine document finalGuidelhhghghine document final
Guidelhhghghine document final
nanirao686
 

Similar to Chilinet (20)

Treasure Data Summer Internship 2016
Treasure Data Summer Internship 2016Treasure Data Summer Internship 2016
Treasure Data Summer Internship 2016
 
Unix commands
Unix commandsUnix commands
Unix commands
 
(ATS6-PLAT07) Managing AEP in an enterprise environment
(ATS6-PLAT07) Managing AEP in an enterprise environment(ATS6-PLAT07) Managing AEP in an enterprise environment
(ATS6-PLAT07) Managing AEP in an enterprise environment
 
High Volume Payments using Mule
High Volume Payments using MuleHigh Volume Payments using Mule
High Volume Payments using Mule
 
Cloud Operations with Streaming Analytics using Apache NiFi and Apache Flink
Cloud Operations with Streaming Analytics using Apache NiFi and Apache FlinkCloud Operations with Streaming Analytics using Apache NiFi and Apache Flink
Cloud Operations with Streaming Analytics using Apache NiFi and Apache Flink
 
Tech talk specflow_bddx_hassa_nagy
Tech talk specflow_bddx_hassa_nagyTech talk specflow_bddx_hassa_nagy
Tech talk specflow_bddx_hassa_nagy
 
Flink powered stream processing platform at Pinterest
Flink powered stream processing platform at PinterestFlink powered stream processing platform at Pinterest
Flink powered stream processing platform at Pinterest
 
Ansible benelux meetup - Amsterdam 27-5-2015
Ansible benelux meetup - Amsterdam 27-5-2015Ansible benelux meetup - Amsterdam 27-5-2015
Ansible benelux meetup - Amsterdam 27-5-2015
 
Open Source LinkedIn Analytics Pipeline - BOSS 2016 (VLDB)
Open Source LinkedIn Analytics Pipeline - BOSS 2016 (VLDB)Open Source LinkedIn Analytics Pipeline - BOSS 2016 (VLDB)
Open Source LinkedIn Analytics Pipeline - BOSS 2016 (VLDB)
 
Performance Tuning Your Puppet Infrastructure - PuppetConf 2014
Performance Tuning Your Puppet Infrastructure - PuppetConf 2014Performance Tuning Your Puppet Infrastructure - PuppetConf 2014
Performance Tuning Your Puppet Infrastructure - PuppetConf 2014
 
Guidelhhghghine document final
Guidelhhghghine document finalGuidelhhghghine document final
Guidelhhghghine document final
 
Configuration management
Configuration managementConfiguration management
Configuration management
 
JBUG.be jBPM4
JBUG.be jBPM4JBUG.be jBPM4
JBUG.be jBPM4
 
OSDC 2018 | From Monolith to Microservices by Paul Puschmann_
OSDC 2018 | From Monolith to Microservices by Paul Puschmann_OSDC 2018 | From Monolith to Microservices by Paul Puschmann_
OSDC 2018 | From Monolith to Microservices by Paul Puschmann_
 
Cloud operations with streaming analytics using big data tools
Cloud operations with streaming analytics using big data toolsCloud operations with streaming analytics using big data tools
Cloud operations with streaming analytics using big data tools
 
Running a Scalable And Reliable Symfony2 Application in Cloud (Symfony Sweden...
Running a Scalable And Reliable Symfony2 Application in Cloud (Symfony Sweden...Running a Scalable And Reliable Symfony2 Application in Cloud (Symfony Sweden...
Running a Scalable And Reliable Symfony2 Application in Cloud (Symfony Sweden...
 
Building the Internet of Things with Thingsquare and Contiki - day 2 part 1
Building the Internet of Things with Thingsquare and Contiki - day 2 part 1Building the Internet of Things with Thingsquare and Contiki - day 2 part 1
Building the Internet of Things with Thingsquare and Contiki - day 2 part 1
 
SOFTWARE TESTING COURSE MODULES BY WWW.QATESTINGONLINETRAINING.COM
SOFTWARE TESTING COURSE MODULES BY WWW.QATESTINGONLINETRAINING.COMSOFTWARE TESTING COURSE MODULES BY WWW.QATESTINGONLINETRAINING.COM
SOFTWARE TESTING COURSE MODULES BY WWW.QATESTINGONLINETRAINING.COM
 
J unit
J unitJ unit
J unit
 
HHM-3540: The IBM MQ Light API: From Developer Laptop to Enterprise Data Cen...
 HHM-3540: The IBM MQ Light API: From Developer Laptop to Enterprise Data Cen... HHM-3540: The IBM MQ Light API: From Developer Laptop to Enterprise Data Cen...
HHM-3540: The IBM MQ Light API: From Developer Laptop to Enterprise Data Cen...
 

Recently uploaded

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
Victor Rentea
 

Recently uploaded (20)

Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
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
 
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)
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
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
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
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
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
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
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
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
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 

Chilinet

  • 1. Chilinet Hee Jeong Kim aprilhjk@gmail.com Summer Intern CHILI, EPFL, 2014
  • 2. Outline • What Chilinet is • Project Goals • How it works • Execution Flows • Result • Expectations • Future work
  • 3. What is Chilinet? • A client module to support communication between machines • Zmq messaging library & CZMQ binding • C++
  • 4. Project Goals - Add network module to Qimchi framework - Implement simple demo to show how it works
  • 5. Project Goals I want Chilinet to be.. 1. Simple 2. General / Flexible 3. Replaceable
  • 6. Chilinet Elements • ChiliClient - svrIP, ports - subscribe, getInit, pubRequest, storeState • State - topic, default value, current state - Read/write state file from/to disk - Fire event (When state is updated)
  • 7. How does it work? Client Server - Graphic user interface QML Event Generation / Handling Qimchi Framework - Command line interface - Sends initState - Propagates update - Store state Chilitags Chilinet
  • 8. How does it work? - State • State can be saved to a file in the server.
  • 9. How does it work? – Events handling ü Codes in the grey box are executed when a user clicks a button. ü Codes in the grey box are executed when a user’s tag is detected.
  • 10. How does it work? - Sockets - Among patterns provided by ZMQ, I used PUB-SUB, REP-REQ, PUSH-PULL patterns. • PUB-SUB • REP-REQ • PULL-PUSH • REQ-ROUTER • DEALER-REP • DEALER-ROUTER • DEALER-DEALER • ROUTER-ROUTER • PAIR-PAIR
  • 11. How does it work? - Sockets
  • 12. Execution Flow • Signal • Function call • Inner flow
  • 13. Execution Flow - getInit Client Server OnStateUpdated OnCompleted 6 5 4 1 1. Client.getInit(topic, defaultval) 5. State.setState(newState) 6. StateUpdated 2 3 REQ REP QML State ChiliClient Initialization(topic, value) If there is a file containing previous state information, read it and return previous state. If there is no file, save a default value to a file and return default value got from client.
  • 14. Execution Flow – pub/sub Client Server On Clicked 2 3 4 On Completed 5 . . 1 PUSH OnState Updated 6 QML State ChiliClient 1. Client.subscribe(topic) 2. Client.pubRequest(topic, value) 5. Subscribed 6. StateUpdated updateState ( ) PULL writeFile(topic, value, false) Overwrite a value (new state) to a file named topic.
  • 15. Execution Flow – storeState Client Server QML 1 2 4 5 OnClicked OnStateUpdated 3 PUSH ChiliClient State PULL 1. State.updateState(value) 2. StateUpdated 3. Client.storeState(topic, value) 5. Server.writeFile(fileName. Value, true) writeFile(topic, value, true) Write a value (new state) to a file named topic. You can consider this function as a function for logging.
  • 16. Demo • One central server • Many clients • Three states • Input event from mouse
  • 17. Project Goals – Simplicity
  • 18. Project Goals – Flexibility • We can store any string as a state. • Application can have as many states as we want. • You can make a state to be shared or not. Possible msgs - Position of tangible object - Events Next step / Previous step / Help / Check solution / show axes / construction lines / freeze
  • 19. Project Goals – Replaceablility In QML, No ZMQ code/elements needed. Good!
  • 20. Result Anyone can get the codes from github. ChiliClient : https://github.com/heejeongkim/qimchi/tree/chilinet0820 ChiliSvr : https://github.com/heejeongkim/ChiliSvr
  • 21. Expectations • Orchestration – Freeze – Monitoring • Expansion domain of activity • Easy to collect user data
  • 22. Future work • Can it be more simple? • Mask options for propagation • File Download (roll book, activity file etc..) • 1:1 communication Is it simple enough?