SlideShare a Scribd company logo
1 of 16
Download to read offline
Functional IoT: IntroductionFunctional IoT: IntroductionFunctional IoT: IntroductionFunctional IoT: IntroductionFunctional IoT: Introduction
Kiwamu OkabeKiwamu OkabeKiwamu OkabeKiwamu OkabeKiwamu Okabe
Who am I?Who am I?Who am I?Who am I?Who am I?
☆ http://masterq.metasepi-design.com/☆ http://masterq.metasepi-design.com/☆ http://masterq.metasepi-design.com/☆ http://masterq.metasepi-design.com/☆ http://masterq.metasepi-design.com/
☆ Name: Kiwamu Okabe☆ Name: Kiwamu Okabe☆ Name: Kiwamu Okabe☆ Name: Kiwamu Okabe☆ Name: Kiwamu Okabe
☆ Software engineer at Centillion☆ Software engineer at Centillion☆ Software engineer at Centillion☆ Software engineer at Centillion☆ Software engineer at Centillion
☆ Part-time researcher at RIKEN AICS☆ Part-time researcher at RIKEN AICS☆ Part-time researcher at RIKEN AICS☆ Part-time researcher at RIKEN AICS☆ Part-time researcher at RIKEN AICS
☆ Self-employed at METASEPI DESIGN☆ Self-employed at METASEPI DESIGN☆ Self-employed at METASEPI DESIGN☆ Self-employed at METASEPI DESIGN☆ Self-employed at METASEPI DESIGN
☆ A Debian Maintainer☆ A Debian Maintainer☆ A Debian Maintainer☆ A Debian Maintainer☆ A Debian Maintainer
What's IoT?What's IoT?What's IoT?What's IoT?What's IoT?
The Internet of Things (or IoT for short) refers to
uniquely identifiable objects and their virtual
representations in an Internet-like structure.
Imagine IoT devices are:
The Internet of Things (or IoT for short) refers to
uniquely identifiable objects and their virtual
representations in an Internet-like structure.
Imagine IoT devices are:
The Internet of Things (or IoT for short) refers to
uniquely identifiable objects and their virtual
representations in an Internet-like structure.
Imagine IoT devices are:
The Internet of Things (or IoT for short) refers to
uniquely identifiable objects and their virtual
representations in an Internet-like structure.
Imagine IoT devices are:
The Internet of Things (or IoT for short) refers to
uniquely identifiable objects and their virtual
representations in an Internet-like structure.
Imagine IoT devices are:
connected to the internet / developed in a short
time / storing personal data / secure / more
intelligence / inexpensive.
connected to the internet / developed in a short
time / storing personal data / secure / more
intelligence / inexpensive.
connected to the internet / developed in a short
time / storing personal data / secure / more
intelligence / inexpensive.
connected to the internet / developed in a short
time / storing personal data / secure / more
intelligence / inexpensive.
connected to the internet / developed in a short
time / storing personal data / secure / more
intelligence / inexpensive.
C language can easily design the IoT devices?C language can easily design the IoT devices?C language can easily design the IoT devices?C language can easily design the IoT devices?C language can easily design the IoT devices?
What's Functional IoT?What's Functional IoT?What's Functional IoT?What's Functional IoT?What's Functional IoT?
☆ http://fpiot.metasepi.org/☆ http://fpiot.metasepi.org/☆ http://fpiot.metasepi.org/☆ http://fpiot.metasepi.org/☆ http://fpiot.metasepi.org/
☆ is a wrestling mat that strongly typed languages
fight on, to become the champion of system
programming language.
☆ is a wrestling mat that strongly typed languages
fight on, to become the champion of system
programming language.
☆ is a wrestling mat that strongly typed languages
fight on, to become the champion of system
programming language.
☆ is a wrestling mat that strongly typed languages
fight on, to become the champion of system
programming language.
☆ is a wrestling mat that strongly typed languages
fight on, to become the champion of system
programming language.
☆ tries to write demo code running on tiny MCU
using the languages.
☆ tries to write demo code running on tiny MCU
using the languages.
☆ tries to write demo code running on tiny MCU
using the languages.
☆ tries to write demo code running on tiny MCU
using the languages.
☆ tries to write demo code running on tiny MCU
using the languages.
☆ summarizes knowledge of the languages as
catalog.
☆ summarizes knowledge of the languages as
catalog.
☆ summarizes knowledge of the languages as
catalog.
☆ summarizes knowledge of the languages as
catalog.
☆ summarizes knowledge of the languages as
catalog.
Why do Functional IoT?Why do Functional IoT?Why do Functional IoT?Why do Functional IoT?Why do Functional IoT?
☆ Today, we have many methodologies for system
design.
☆ Today, we have many methodologies for system
design.
☆ Today, we have many methodologies for system
design.
☆ Today, we have many methodologies for system
design.
☆ Today, we have many methodologies for system
design.
☆ For example, they are static typing, theorem
proving, formal method, design by contract, model
checking, static verification, SMT solver, etc.
☆ For example, they are static typing, theorem
proving, formal method, design by contract, model
checking, static verification, SMT solver, etc.
☆ For example, they are static typing, theorem
proving, formal method, design by contract, model
checking, static verification, SMT solver, etc.
☆ For example, they are static typing, theorem
proving, formal method, design by contract, model
checking, static verification, SMT solver, etc.
☆ For example, they are static typing, theorem
proving, formal method, design by contract, model
checking, static verification, SMT solver, etc.
☆ However, nobody have the exhaustive catalog of
them.
☆ However, nobody have the exhaustive catalog of
them.
☆ However, nobody have the exhaustive catalog of
them.
☆ However, nobody have the exhaustive catalog of
them.
☆ However, nobody have the exhaustive catalog of
them.
☆ Let's make the catalog!☆ Let's make the catalog!☆ Let's make the catalog!☆ Let's make the catalog!☆ Let's make the catalog!
Why need such methodologies?Why need such methodologies?Why need such methodologies?Why need such methodologies?Why need such methodologies?
Many people choose C/C++ languages to design IoT
device. However the languages lack following:
Many people choose C/C++ languages to design IoT
device. However the languages lack following:
Many people choose C/C++ languages to design IoT
device. However the languages lack following:
Many people choose C/C++ languages to design IoT
device. However the languages lack following:
Many people choose C/C++ languages to design IoT
device. However the languages lack following:
☆ Avoiding vulnerability☆ Avoiding vulnerability☆ Avoiding vulnerability☆ Avoiding vulnerability☆ Avoiding vulnerability
☆ Specification to be verified☆ Specification to be verified☆ Specification to be verified☆ Specification to be verified☆ Specification to be verified
☆ Keeping good quality☆ Keeping good quality☆ Keeping good quality☆ Keeping good quality☆ Keeping good quality
☆ Getting less man-hour☆ Getting less man-hour☆ Getting less man-hour☆ Getting less man-hour☆ Getting less man-hour
☆ Fun☆ Fun☆ Fun☆ Fun☆ Fun
Avoiding vulnerabilityAvoiding vulnerabilityAvoiding vulnerabilityAvoiding vulnerabilityAvoiding vulnerability
Vulnerability is caused by following errors:Vulnerability is caused by following errors:Vulnerability is caused by following errors:Vulnerability is caused by following errors:Vulnerability is caused by following errors:
☆ Array index out of range (Buffer overflow)☆ Array index out of range (Buffer overflow)☆ Array index out of range (Buffer overflow)☆ Array index out of range (Buffer overflow)☆ Array index out of range (Buffer overflow)
☆ Type range violation☆ Type range violation☆ Type range violation☆ Type range violation☆ Type range violation
☆ Division by zero☆ Division by zero☆ Division by zero☆ Division by zero☆ Division by zero
☆ Numerical overflow☆ Numerical overflow☆ Numerical overflow☆ Numerical overflow☆ Numerical overflow
Some methodologies can avoid these errors.Some methodologies can avoid these errors.Some methodologies can avoid these errors.Some methodologies can avoid these errors.Some methodologies can avoid these errors.
Specification to be verifiedSpecification to be verifiedSpecification to be verifiedSpecification to be verifiedSpecification to be verified
☆ Many people maintain specification as natural
language.
☆ Many people maintain specification as natural
language.
☆ Many people maintain specification as natural
language.
☆ Many people maintain specification as natural
language.
☆ Many people maintain specification as natural
language.
☆ Some methodologies can formally maintain
specification which is verified in computer.
☆ Some methodologies can formally maintain
specification which is verified in computer.
☆ Some methodologies can formally maintain
specification which is verified in computer.
☆ Some methodologies can formally maintain
specification which is verified in computer.
☆ Some methodologies can formally maintain
specification which is verified in computer.
Keeping good qualityKeeping good qualityKeeping good qualityKeeping good qualityKeeping good quality
☆ Original author can keep quality of the code,
however the other is hard to do it by lack of verify-
able specification. Sometimes, the original author
will become "the other" in future.
☆ Original author can keep quality of the code,
however the other is hard to do it by lack of verify-
able specification. Sometimes, the original author
will become "the other" in future.
☆ Original author can keep quality of the code,
however the other is hard to do it by lack of verify-
able specification. Sometimes, the original author
will become "the other" in future.
☆ Original author can keep quality of the code,
however the other is hard to do it by lack of verify-
able specification. Sometimes, the original author
will become "the other" in future.
☆ Original author can keep quality of the code,
however the other is hard to do it by lack of verify-
able specification. Sometimes, the original author
will become "the other" in future.
Getting less man-hourGetting less man-hourGetting less man-hourGetting less man-hourGetting less man-hour
☆ Easy to estimate compile time error, however
hard to do run time error, because finding latter
needs some testing.
☆ Easy to estimate compile time error, however
hard to do run time error, because finding latter
needs some testing.
☆ Easy to estimate compile time error, however
hard to do run time error, because finding latter
needs some testing.
☆ Easy to estimate compile time error, however
hard to do run time error, because finding latter
needs some testing.
☆ Easy to estimate compile time error, however
hard to do run time error, because finding latter
needs some testing.
FunFunFunFunFun
C language can't use following feature:C language can't use following feature:C language can't use following feature:C language can't use following feature:C language can't use following feature:
☆ Algebraic data type☆ Algebraic data type☆ Algebraic data type☆ Algebraic data type☆ Algebraic data type
☆ Higher-order function☆ Higher-order function☆ Higher-order function☆ Higher-order function☆ Higher-order function
☆ Namespace☆ Namespace☆ Namespace☆ Namespace☆ Namespace
☆ Pattern matching☆ Pattern matching☆ Pattern matching☆ Pattern matching☆ Pattern matching
☆ Type inference☆ Type inference☆ Type inference☆ Type inference☆ Type inference
☆ Garbage collection☆ Garbage collection☆ Garbage collection☆ Garbage collection☆ Garbage collection
How to do Functional IoT?How to do Functional IoT?How to do Functional IoT?How to do Functional IoT?How to do Functional IoT?
☆ Survey existing the methodologies as you like.☆ Survey existing the methodologies as you like.☆ Survey existing the methodologies as you like.☆ Survey existing the methodologies as you like.☆ Survey existing the methodologies as you like.
☆ Write some demo code running on tiny MCU.☆ Write some demo code running on tiny MCU.☆ Write some demo code running on tiny MCU.☆ Write some demo code running on tiny MCU.☆ Write some demo code running on tiny MCU.
☆ Monthly have meetup at Tokyo, Japan.☆ Monthly have meetup at Tokyo, Japan.☆ Monthly have meetup at Tokyo, Japan.☆ Monthly have meetup at Tokyo, Japan.☆ Monthly have meetup at Tokyo, Japan.
☆ Share your knowledge and demo at the meetup.☆ Share your knowledge and demo at the meetup.☆ Share your knowledge and demo at the meetup.☆ Share your knowledge and demo at the meetup.☆ Share your knowledge and demo at the meetup.
☆ Update our exhaustive catalog of the
methodologies.
☆ Update our exhaustive catalog of the
methodologies.
☆ Update our exhaustive catalog of the
methodologies.
☆ Update our exhaustive catalog of the
methodologies.
☆ Update our exhaustive catalog of the
methodologies.
Let's join the Functional IoT meetup!Let's join the Functional IoT meetup!Let's join the Functional IoT meetup!Let's join the Functional IoT meetup!Let's join the Functional IoT meetup!
https://fpiot.doorkeeper.jp/https://fpiot.doorkeeper.jp/https://fpiot.doorkeeper.jp/https://fpiot.doorkeeper.jp/https://fpiot.doorkeeper.jp/
License of photos #1License of photos #1License of photos #1License of photos #1License of photos #1
*�Nagoya�Port�panorama�│�Flickr�-�Photo�Sharing!
��https://www.flickr.com/photos/emrank/3074491752/
��Copyright:�Emran�Kassim�/�License:�CC�BY�2.0
*�bPart�industrial�IoT�device.�│�Flickr�-�Photo�Sharing!
��https://www.flickr.com/photos/138891539@N03/23908928999/
��Copyright:�KIT�TECO�/�License:�CC�BY�2.0
*�CEO�-�Tiare�-�Board�Meeting�-�Franklin�Canyon�│�Flickr�-�Photo�Sharing!
��https://www.flickr.com/photos/tiarescott/69821764/
��Copyright:�tiarescott�/�License:�CC�BY�2.0
*�Bergere�de�France�catalogue�│�Flickr�-�Photo�Sharing!
��https://www.flickr.com/photos/breibeest/404587519/
��Copyright:�Breibeest�/�License:�CC�BY�2.0
*�File:BjarneStroustrup.jpg�-�Wikimedia�Commons
��https://commons.wikimedia.org/wiki/File:BjarneStroustrup.jpg
��Copyright:�---�/�License:�GNU�Free�Documentation�License
*�Nagoya�Port�panorama�│�Flickr�-�Photo�Sharing!
��https://www.flickr.com/photos/emrank/3074491752/
��Copyright:�Emran�Kassim�/�License:�CC�BY�2.0
*�bPart�industrial�IoT�device.�│�Flickr�-�Photo�Sharing!
��https://www.flickr.com/photos/138891539@N03/23908928999/
��Copyright:�KIT�TECO�/�License:�CC�BY�2.0
*�CEO�-�Tiare�-�Board�Meeting�-�Franklin�Canyon�│�Flickr�-�Photo�Sharing!
��https://www.flickr.com/photos/tiarescott/69821764/
��Copyright:�tiarescott�/�License:�CC�BY�2.0
*�Bergere�de�France�catalogue�│�Flickr�-�Photo�Sharing!
��https://www.flickr.com/photos/breibeest/404587519/
��Copyright:�Breibeest�/�License:�CC�BY�2.0
*�File:BjarneStroustrup.jpg�-�Wikimedia�Commons
��https://commons.wikimedia.org/wiki/File:BjarneStroustrup.jpg
��Copyright:�---�/�License:�GNU�Free�Documentation�License
*�Nagoya�Port�panorama�│�Flickr�-�Photo�Sharing!
��https://www.flickr.com/photos/emrank/3074491752/
��Copyright:�Emran�Kassim�/�License:�CC�BY�2.0
*�bPart�industrial�IoT�device.�│�Flickr�-�Photo�Sharing!
��https://www.flickr.com/photos/138891539@N03/23908928999/
��Copyright:�KIT�TECO�/�License:�CC�BY�2.0
*�CEO�-�Tiare�-�Board�Meeting�-�Franklin�Canyon�│�Flickr�-�Photo�Sharing!
��https://www.flickr.com/photos/tiarescott/69821764/
��Copyright:�tiarescott�/�License:�CC�BY�2.0
*�Bergere�de�France�catalogue�│�Flickr�-�Photo�Sharing!
��https://www.flickr.com/photos/breibeest/404587519/
��Copyright:�Breibeest�/�License:�CC�BY�2.0
*�File:BjarneStroustrup.jpg�-�Wikimedia�Commons
��https://commons.wikimedia.org/wiki/File:BjarneStroustrup.jpg
��Copyright:�---�/�License:�GNU�Free�Documentation�License
*�Nagoya�Port�panorama�│�Flickr�-�Photo�Sharing!
��https://www.flickr.com/photos/emrank/3074491752/
��Copyright:�Emran�Kassim�/�License:�CC�BY�2.0
*�bPart�industrial�IoT�device.�│�Flickr�-�Photo�Sharing!
��https://www.flickr.com/photos/138891539@N03/23908928999/
��Copyright:�KIT�TECO�/�License:�CC�BY�2.0
*�CEO�-�Tiare�-�Board�Meeting�-�Franklin�Canyon�│�Flickr�-�Photo�Sharing!
��https://www.flickr.com/photos/tiarescott/69821764/
��Copyright:�tiarescott�/�License:�CC�BY�2.0
*�Bergere�de�France�catalogue�│�Flickr�-�Photo�Sharing!
��https://www.flickr.com/photos/breibeest/404587519/
��Copyright:�Breibeest�/�License:�CC�BY�2.0
*�File:BjarneStroustrup.jpg�-�Wikimedia�Commons
��https://commons.wikimedia.org/wiki/File:BjarneStroustrup.jpg
��Copyright:�---�/�License:�GNU�Free�Documentation�License
*�Nagoya�Port�panorama�│�Flickr�-�Photo�Sharing!
��https://www.flickr.com/photos/emrank/3074491752/
��Copyright:�Emran�Kassim�/�License:�CC�BY�2.0
*�bPart�industrial�IoT�device.�│�Flickr�-�Photo�Sharing!
��https://www.flickr.com/photos/138891539@N03/23908928999/
��Copyright:�KIT�TECO�/�License:�CC�BY�2.0
*�CEO�-�Tiare�-�Board�Meeting�-�Franklin�Canyon�│�Flickr�-�Photo�Sharing!
��https://www.flickr.com/photos/tiarescott/69821764/
��Copyright:�tiarescott�/�License:�CC�BY�2.0
*�Bergere�de�France�catalogue�│�Flickr�-�Photo�Sharing!
��https://www.flickr.com/photos/breibeest/404587519/
��Copyright:�Breibeest�/�License:�CC�BY�2.0
*�File:BjarneStroustrup.jpg�-�Wikimedia�Commons
��https://commons.wikimedia.org/wiki/File:BjarneStroustrup.jpg
��Copyright:�---�/�License:�GNU�Free�Documentation�License
License of photos #2License of photos #2License of photos #2License of photos #2License of photos #2
*�Volkswagen�Beetle�crashed�through�a�brick�wall�│�Flickr�-�Photo�Sharing!
��https://www.flickr.com/photos/simpleinsomnia/23882140795/
��Copyright:�simpleinsomnia�/�License:�CC�BY�2.0
*�Physical�Inventory�of�Fuel�Assemblies�(03210024)�│�Flickr�-�Photo�Sharing!
��https://www.flickr.com/photos/iaea_imagebank/8366285569/
��Copyright:�IAEA�Imagebank�/�License:�CC�BY-SA�2.0
*�Old�Car�Festival,�2015�│�Flickr�-�Photo�Sharing!
��https://www.flickr.com/photos/50697352@N00/21210898408/
��Copyright:�F.�D.�Richards�/�License:�CC�BY-SA�2.0
*�Iceberg�│�Flickr�-�Photo�Sharing!
��https://www.flickr.com/photos/usoceangov/8290528771/
��Copyright:�NOAA's�National�Ocean�Service�/�License:�CC�BY�2.0
*�PDCA-Do�│�Flickr�-�Photo�Sharing!
��https://www.flickr.com/photos/jurgenappelo/6797304300/
��Copyright:�Jurgen�Appelo�/�License:�CC�BY�2.0
*�Volkswagen�Beetle�crashed�through�a�brick�wall�│�Flickr�-�Photo�Sharing!
��https://www.flickr.com/photos/simpleinsomnia/23882140795/
��Copyright:�simpleinsomnia�/�License:�CC�BY�2.0
*�Physical�Inventory�of�Fuel�Assemblies�(03210024)�│�Flickr�-�Photo�Sharing!
��https://www.flickr.com/photos/iaea_imagebank/8366285569/
��Copyright:�IAEA�Imagebank�/�License:�CC�BY-SA�2.0
*�Old�Car�Festival,�2015�│�Flickr�-�Photo�Sharing!
��https://www.flickr.com/photos/50697352@N00/21210898408/
��Copyright:�F.�D.�Richards�/�License:�CC�BY-SA�2.0
*�Iceberg�│�Flickr�-�Photo�Sharing!
��https://www.flickr.com/photos/usoceangov/8290528771/
��Copyright:�NOAA's�National�Ocean�Service�/�License:�CC�BY�2.0
*�PDCA-Do�│�Flickr�-�Photo�Sharing!
��https://www.flickr.com/photos/jurgenappelo/6797304300/
��Copyright:�Jurgen�Appelo�/�License:�CC�BY�2.0
*�Volkswagen�Beetle�crashed�through�a�brick�wall�│�Flickr�-�Photo�Sharing!
��https://www.flickr.com/photos/simpleinsomnia/23882140795/
��Copyright:�simpleinsomnia�/�License:�CC�BY�2.0
*�Physical�Inventory�of�Fuel�Assemblies�(03210024)�│�Flickr�-�Photo�Sharing!
��https://www.flickr.com/photos/iaea_imagebank/8366285569/
��Copyright:�IAEA�Imagebank�/�License:�CC�BY-SA�2.0
*�Old�Car�Festival,�2015�│�Flickr�-�Photo�Sharing!
��https://www.flickr.com/photos/50697352@N00/21210898408/
��Copyright:�F.�D.�Richards�/�License:�CC�BY-SA�2.0
*�Iceberg�│�Flickr�-�Photo�Sharing!
��https://www.flickr.com/photos/usoceangov/8290528771/
��Copyright:�NOAA's�National�Ocean�Service�/�License:�CC�BY�2.0
*�PDCA-Do�│�Flickr�-�Photo�Sharing!
��https://www.flickr.com/photos/jurgenappelo/6797304300/
��Copyright:�Jurgen�Appelo�/�License:�CC�BY�2.0
*�Volkswagen�Beetle�crashed�through�a�brick�wall�│�Flickr�-�Photo�Sharing!
��https://www.flickr.com/photos/simpleinsomnia/23882140795/
��Copyright:�simpleinsomnia�/�License:�CC�BY�2.0
*�Physical�Inventory�of�Fuel�Assemblies�(03210024)�│�Flickr�-�Photo�Sharing!
��https://www.flickr.com/photos/iaea_imagebank/8366285569/
��Copyright:�IAEA�Imagebank�/�License:�CC�BY-SA�2.0
*�Old�Car�Festival,�2015�│�Flickr�-�Photo�Sharing!
��https://www.flickr.com/photos/50697352@N00/21210898408/
��Copyright:�F.�D.�Richards�/�License:�CC�BY-SA�2.0
*�Iceberg�│�Flickr�-�Photo�Sharing!
��https://www.flickr.com/photos/usoceangov/8290528771/
��Copyright:�NOAA's�National�Ocean�Service�/�License:�CC�BY�2.0
*�PDCA-Do�│�Flickr�-�Photo�Sharing!
��https://www.flickr.com/photos/jurgenappelo/6797304300/
��Copyright:�Jurgen�Appelo�/�License:�CC�BY�2.0
*�Volkswagen�Beetle�crashed�through�a�brick�wall�│�Flickr�-�Photo�Sharing!
��https://www.flickr.com/photos/simpleinsomnia/23882140795/
��Copyright:�simpleinsomnia�/�License:�CC�BY�2.0
*�Physical�Inventory�of�Fuel�Assemblies�(03210024)�│�Flickr�-�Photo�Sharing!
��https://www.flickr.com/photos/iaea_imagebank/8366285569/
��Copyright:�IAEA�Imagebank�/�License:�CC�BY-SA�2.0
*�Old�Car�Festival,�2015�│�Flickr�-�Photo�Sharing!
��https://www.flickr.com/photos/50697352@N00/21210898408/
��Copyright:�F.�D.�Richards�/�License:�CC�BY-SA�2.0
*�Iceberg�│�Flickr�-�Photo�Sharing!
��https://www.flickr.com/photos/usoceangov/8290528771/
��Copyright:�NOAA's�National�Ocean�Service�/�License:�CC�BY�2.0
*�PDCA-Do�│�Flickr�-�Photo�Sharing!
��https://www.flickr.com/photos/jurgenappelo/6797304300/
��Copyright:�Jurgen�Appelo�/�License:�CC�BY�2.0
License of photos #3License of photos #3License of photos #3License of photos #3License of photos #3
*�Creative�Commons�BBB�│�Flickr�-�Photo�Sharing!
��https://www.flickr.com/photos/steren/2732488224/
��Copyright:�Steren�Giannini�/�License:�CC�BY�2.0
*�Creative�Commons�BBB�│�Flickr�-�Photo�Sharing!
��https://www.flickr.com/photos/steren/2732488224/
��Copyright:�Steren�Giannini�/�License:�CC�BY�2.0
*�Creative�Commons�BBB�│�Flickr�-�Photo�Sharing!
��https://www.flickr.com/photos/steren/2732488224/
��Copyright:�Steren�Giannini�/�License:�CC�BY�2.0
*�Creative�Commons�BBB�│�Flickr�-�Photo�Sharing!
��https://www.flickr.com/photos/steren/2732488224/
��Copyright:�Steren�Giannini�/�License:�CC�BY�2.0
*�Creative�Commons�BBB�│�Flickr�-�Photo�Sharing!
��https://www.flickr.com/photos/steren/2732488224/
��Copyright:�Steren�Giannini�/�License:�CC�BY�2.0

More Related Content

What's hot

Real-time OS system state captured by ATS language
Real-time OS system state captured by ATS languageReal-time OS system state captured by ATS language
Real-time OS system state captured by ATS languageKiwamu Okabe
 
ATS programming on ESP8266
ATS programming on ESP8266ATS programming on ESP8266
ATS programming on ESP8266Kiwamu Okabe
 
ATS language overview'
ATS language overview'ATS language overview'
ATS language overview'Kiwamu Okabe
 
Metasepi team meeting #20: Start! ATS programming on MCU
Metasepi team meeting #20: Start! ATS programming on MCUMetasepi team meeting #20: Start! ATS programming on MCU
Metasepi team meeting #20: Start! ATS programming on MCUKiwamu Okabe
 
Embedded application designed by ATS language
Embedded application designed by ATS languageEmbedded application designed by ATS language
Embedded application designed by ATS languageKiwamu Okabe
 
ATS/LF for Coq users
ATS/LF for Coq usersATS/LF for Coq users
ATS/LF for Coq usersKiwamu Okabe
 
Metasepi team meeting #19: ATS application on Arduino
Metasepi team meeting #19: ATS application on ArduinoMetasepi team meeting #19: ATS application on Arduino
Metasepi team meeting #19: ATS application on ArduinoKiwamu Okabe
 
Past and today of Metasepi project
Past and today of Metasepi projectPast and today of Metasepi project
Past and today of Metasepi projectKiwamu Okabe
 
Emacs verilog-mode is coming to Debian, again
Emacs verilog-mode is coming to Debian, againEmacs verilog-mode is coming to Debian, again
Emacs verilog-mode is coming to Debian, againKiwamu Okabe
 
Ajhc Haskell Compiler with Reentrant GC
Ajhc Haskell Compiler with Reentrant GCAjhc Haskell Compiler with Reentrant GC
Ajhc Haskell Compiler with Reentrant GCKiwamu Okabe
 
Gareth Rushgrove (Puppet) - Ubiquity at #DOXLON
Gareth Rushgrove (Puppet) - Ubiquity at #DOXLONGareth Rushgrove (Puppet) - Ubiquity at #DOXLON
Gareth Rushgrove (Puppet) - Ubiquity at #DOXLONOutlyer
 
Building REST APIs with Django
Building REST APIs with DjangoBuilding REST APIs with Django
Building REST APIs with DjangoByron Dover
 
No more dead kittens - Clean Code
No more dead kittens - Clean CodeNo more dead kittens - Clean Code
No more dead kittens - Clean CodeYves Hoppe
 
Metasepi team meeting: Ajhc Project Overview
Metasepi team meeting: Ajhc Project OverviewMetasepi team meeting: Ajhc Project Overview
Metasepi team meeting: Ajhc Project OverviewKiwamu Okabe
 
Monkey-patching in Python: a magic trick or a powerful tool?
Monkey-patching in Python: a magic trick or a powerful tool?Monkey-patching in Python: a magic trick or a powerful tool?
Monkey-patching in Python: a magic trick or a powerful tool?Elizaveta Shashkova
 

What's hot (17)

Real-time OS system state captured by ATS language
Real-time OS system state captured by ATS languageReal-time OS system state captured by ATS language
Real-time OS system state captured by ATS language
 
ATS programming on ESP8266
ATS programming on ESP8266ATS programming on ESP8266
ATS programming on ESP8266
 
ATS language overview'
ATS language overview'ATS language overview'
ATS language overview'
 
Metasepi team meeting #20: Start! ATS programming on MCU
Metasepi team meeting #20: Start! ATS programming on MCUMetasepi team meeting #20: Start! ATS programming on MCU
Metasepi team meeting #20: Start! ATS programming on MCU
 
Embedded application designed by ATS language
Embedded application designed by ATS languageEmbedded application designed by ATS language
Embedded application designed by ATS language
 
ATS2 updates 2017
ATS2 updates 2017ATS2 updates 2017
ATS2 updates 2017
 
ATS/LF for Coq users
ATS/LF for Coq usersATS/LF for Coq users
ATS/LF for Coq users
 
Metasepi team meeting #19: ATS application on Arduino
Metasepi team meeting #19: ATS application on ArduinoMetasepi team meeting #19: ATS application on Arduino
Metasepi team meeting #19: ATS application on Arduino
 
Past and today of Metasepi project
Past and today of Metasepi projectPast and today of Metasepi project
Past and today of Metasepi project
 
Emacs verilog-mode is coming to Debian, again
Emacs verilog-mode is coming to Debian, againEmacs verilog-mode is coming to Debian, again
Emacs verilog-mode is coming to Debian, again
 
Ajhc Haskell Compiler with Reentrant GC
Ajhc Haskell Compiler with Reentrant GCAjhc Haskell Compiler with Reentrant GC
Ajhc Haskell Compiler with Reentrant GC
 
Gareth Rushgrove (Puppet) - Ubiquity at #DOXLON
Gareth Rushgrove (Puppet) - Ubiquity at #DOXLONGareth Rushgrove (Puppet) - Ubiquity at #DOXLON
Gareth Rushgrove (Puppet) - Ubiquity at #DOXLON
 
Sensible scaling
Sensible scalingSensible scaling
Sensible scaling
 
Building REST APIs with Django
Building REST APIs with DjangoBuilding REST APIs with Django
Building REST APIs with Django
 
No more dead kittens - Clean Code
No more dead kittens - Clean CodeNo more dead kittens - Clean Code
No more dead kittens - Clean Code
 
Metasepi team meeting: Ajhc Project Overview
Metasepi team meeting: Ajhc Project OverviewMetasepi team meeting: Ajhc Project Overview
Metasepi team meeting: Ajhc Project Overview
 
Monkey-patching in Python: a magic trick or a powerful tool?
Monkey-patching in Python: a magic trick or a powerful tool?Monkey-patching in Python: a magic trick or a powerful tool?
Monkey-patching in Python: a magic trick or a powerful tool?
 

Viewers also liked

LL Ring Recursive ライトニングトーク
LL Ring Recursive ライトニングトークLL Ring Recursive ライトニングトーク
LL Ring Recursive ライトニングトークRyuichi Ueda
 
ATSプログラミングチュートリアル
ATSプログラミングチュートリアルATSプログラミングチュートリアル
ATSプログラミングチュートリアルKiwamu Okabe
 
ATS language overview
ATS language overviewATS language overview
ATS language overviewKiwamu Okabe
 
Arduino programming of ML-style in ATS
Arduino programming of ML-style in ATSArduino programming of ML-style in ATS
Arduino programming of ML-style in ATSKiwamu Okabe
 
Metasepi team meeting #17: Invariant captured by ATS's API
Metasepi team meeting #17: Invariant captured by ATS's APIMetasepi team meeting #17: Invariant captured by ATS's API
Metasepi team meeting #17: Invariant captured by ATS's APIKiwamu Okabe
 

Viewers also liked (7)

Krml203
Krml203Krml203
Krml203
 
LL Ring Recursive ライトニングトーク
LL Ring Recursive ライトニングトークLL Ring Recursive ライトニングトーク
LL Ring Recursive ライトニングトーク
 
ATSプログラミングチュートリアル
ATSプログラミングチュートリアルATSプログラミングチュートリアル
ATSプログラミングチュートリアル
 
ATS language overview
ATS language overviewATS language overview
ATS language overview
 
Arduino programming of ML-style in ATS
Arduino programming of ML-style in ATSArduino programming of ML-style in ATS
Arduino programming of ML-style in ATS
 
Metasepi team meeting #17: Invariant captured by ATS's API
Metasepi team meeting #17: Invariant captured by ATS's APIMetasepi team meeting #17: Invariant captured by ATS's API
Metasepi team meeting #17: Invariant captured by ATS's API
 
OSCON14: Mirage 2.0
OSCON14: Mirage 2.0 OSCON14: Mirage 2.0
OSCON14: Mirage 2.0
 

Similar to Functional IoT: Introduction

Why we are still writing?
Why we are still writing?Why we are still writing?
Why we are still writing?Alexander Osin
 
Achieving Technical Excellence in Your Software Teams - from Devternity
Achieving Technical Excellence in Your Software Teams - from Devternity Achieving Technical Excellence in Your Software Teams - from Devternity
Achieving Technical Excellence in Your Software Teams - from Devternity Peter Gfader
 
Of innovation and impatience - Future Decoded 2015
Of innovation and impatience - Future Decoded 2015Of innovation and impatience - Future Decoded 2015
Of innovation and impatience - Future Decoded 2015Christian Heilmann
 
TDC 2020 - Implementing a Mini-Language
TDC 2020 - Implementing a Mini-LanguageTDC 2020 - Implementing a Mini-Language
TDC 2020 - Implementing a Mini-LanguageLuciano Sabença
 
Spring, CDI, Jakarta EE good parts
Spring, CDI, Jakarta EE good partsSpring, CDI, Jakarta EE good parts
Spring, CDI, Jakarta EE good partsJarek Ratajski
 
Cloud AI GenAI Overview.pptx
Cloud AI GenAI Overview.pptxCloud AI GenAI Overview.pptx
Cloud AI GenAI Overview.pptxSahithiGurlinka
 
Dev secops opsec, devsec, devops ?
Dev secops opsec, devsec, devops ?Dev secops opsec, devsec, devops ?
Dev secops opsec, devsec, devops ?Kris Buytaert
 
DevDay 2013 - Building Startups and Minimum Viable Products
DevDay 2013 - Building Startups and Minimum Viable ProductsDevDay 2013 - Building Startups and Minimum Viable Products
DevDay 2013 - Building Startups and Minimum Viable ProductsBen Hall
 
Create an IoT Gateway and Establish a Data Pipeline to AWS IoT with Intel - I...
Create an IoT Gateway and Establish a Data Pipeline to AWS IoT with Intel - I...Create an IoT Gateway and Establish a Data Pipeline to AWS IoT with Intel - I...
Create an IoT Gateway and Establish a Data Pipeline to AWS IoT with Intel - I...Amazon Web Services
 
Notes (2012-06-08)
Notes (2012-06-08)Notes (2012-06-08)
Notes (2012-06-08)Chris Pitt
 
Creating multillingual apps for android
Creating multillingual apps for androidCreating multillingual apps for android
Creating multillingual apps for androidSergi Martínez
 
Devops is a Security Requirement
Devops is a Security RequirementDevops is a Security Requirement
Devops is a Security RequirementKris Buytaert
 
Online gas booking project in java
Online gas booking project in javaOnline gas booking project in java
Online gas booking project in javas4al_com
 
Does Infer dream of design by contract?
Does Infer dream of design by contract?Does Infer dream of design by contract?
Does Infer dream of design by contract?Kiwamu Okabe
 
xAPI in Action
xAPI in ActionxAPI in Action
xAPI in Actionbbetts
 
WEBASSEMBLY - What's the right thing to write? -
WEBASSEMBLY - What's the right thing to write? -WEBASSEMBLY - What's the right thing to write? -
WEBASSEMBLY - What's the right thing to write? -Shin Yoshida
 
Continuous Delivery of (y)our infrastructure.
Continuous Delivery of (y)our infrastructure.Continuous Delivery of (y)our infrastructure.
Continuous Delivery of (y)our infrastructure.Kris Buytaert
 

Similar to Functional IoT: Introduction (20)

Prototyping: Helping to take away the suck
Prototyping: Helping to take away the suckPrototyping: Helping to take away the suck
Prototyping: Helping to take away the suck
 
Why we are still writing?
Why we are still writing?Why we are still writing?
Why we are still writing?
 
Achieving Technical Excellence in Your Software Teams - from Devternity
Achieving Technical Excellence in Your Software Teams - from Devternity Achieving Technical Excellence in Your Software Teams - from Devternity
Achieving Technical Excellence in Your Software Teams - from Devternity
 
respect-estimates.pdf
respect-estimates.pdfrespect-estimates.pdf
respect-estimates.pdf
 
Of innovation and impatience - Future Decoded 2015
Of innovation and impatience - Future Decoded 2015Of innovation and impatience - Future Decoded 2015
Of innovation and impatience - Future Decoded 2015
 
TDC 2020 - Implementing a Mini-Language
TDC 2020 - Implementing a Mini-LanguageTDC 2020 - Implementing a Mini-Language
TDC 2020 - Implementing a Mini-Language
 
Spring, CDI, Jakarta EE good parts
Spring, CDI, Jakarta EE good partsSpring, CDI, Jakarta EE good parts
Spring, CDI, Jakarta EE good parts
 
Ruby - The Hard Bits
Ruby - The Hard BitsRuby - The Hard Bits
Ruby - The Hard Bits
 
Cloud AI GenAI Overview.pptx
Cloud AI GenAI Overview.pptxCloud AI GenAI Overview.pptx
Cloud AI GenAI Overview.pptx
 
Dev secops opsec, devsec, devops ?
Dev secops opsec, devsec, devops ?Dev secops opsec, devsec, devops ?
Dev secops opsec, devsec, devops ?
 
DevDay 2013 - Building Startups and Minimum Viable Products
DevDay 2013 - Building Startups and Minimum Viable ProductsDevDay 2013 - Building Startups and Minimum Viable Products
DevDay 2013 - Building Startups and Minimum Viable Products
 
Create an IoT Gateway and Establish a Data Pipeline to AWS IoT with Intel - I...
Create an IoT Gateway and Establish a Data Pipeline to AWS IoT with Intel - I...Create an IoT Gateway and Establish a Data Pipeline to AWS IoT with Intel - I...
Create an IoT Gateway and Establish a Data Pipeline to AWS IoT with Intel - I...
 
Notes (2012-06-08)
Notes (2012-06-08)Notes (2012-06-08)
Notes (2012-06-08)
 
Creating multillingual apps for android
Creating multillingual apps for androidCreating multillingual apps for android
Creating multillingual apps for android
 
Devops is a Security Requirement
Devops is a Security RequirementDevops is a Security Requirement
Devops is a Security Requirement
 
Online gas booking project in java
Online gas booking project in javaOnline gas booking project in java
Online gas booking project in java
 
Does Infer dream of design by contract?
Does Infer dream of design by contract?Does Infer dream of design by contract?
Does Infer dream of design by contract?
 
xAPI in Action
xAPI in ActionxAPI in Action
xAPI in Action
 
WEBASSEMBLY - What's the right thing to write? -
WEBASSEMBLY - What's the right thing to write? -WEBASSEMBLY - What's the right thing to write? -
WEBASSEMBLY - What's the right thing to write? -
 
Continuous Delivery of (y)our infrastructure.
Continuous Delivery of (y)our infrastructure.Continuous Delivery of (y)our infrastructure.
Continuous Delivery of (y)our infrastructure.
 

Recently uploaded

"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
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
 
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
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
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
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
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
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
"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
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
"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
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesZilliz
 

Recently uploaded (20)

"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
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
 
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
 
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
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
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
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
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
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
"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
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 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...
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector Databases
 

Functional IoT: Introduction

  • 1. Functional IoT: IntroductionFunctional IoT: IntroductionFunctional IoT: IntroductionFunctional IoT: IntroductionFunctional IoT: Introduction Kiwamu OkabeKiwamu OkabeKiwamu OkabeKiwamu OkabeKiwamu Okabe
  • 2. Who am I?Who am I?Who am I?Who am I?Who am I? ☆ http://masterq.metasepi-design.com/☆ http://masterq.metasepi-design.com/☆ http://masterq.metasepi-design.com/☆ http://masterq.metasepi-design.com/☆ http://masterq.metasepi-design.com/ ☆ Name: Kiwamu Okabe☆ Name: Kiwamu Okabe☆ Name: Kiwamu Okabe☆ Name: Kiwamu Okabe☆ Name: Kiwamu Okabe ☆ Software engineer at Centillion☆ Software engineer at Centillion☆ Software engineer at Centillion☆ Software engineer at Centillion☆ Software engineer at Centillion ☆ Part-time researcher at RIKEN AICS☆ Part-time researcher at RIKEN AICS☆ Part-time researcher at RIKEN AICS☆ Part-time researcher at RIKEN AICS☆ Part-time researcher at RIKEN AICS ☆ Self-employed at METASEPI DESIGN☆ Self-employed at METASEPI DESIGN☆ Self-employed at METASEPI DESIGN☆ Self-employed at METASEPI DESIGN☆ Self-employed at METASEPI DESIGN ☆ A Debian Maintainer☆ A Debian Maintainer☆ A Debian Maintainer☆ A Debian Maintainer☆ A Debian Maintainer
  • 3. What's IoT?What's IoT?What's IoT?What's IoT?What's IoT? The Internet of Things (or IoT for short) refers to uniquely identifiable objects and their virtual representations in an Internet-like structure. Imagine IoT devices are: The Internet of Things (or IoT for short) refers to uniquely identifiable objects and their virtual representations in an Internet-like structure. Imagine IoT devices are: The Internet of Things (or IoT for short) refers to uniquely identifiable objects and their virtual representations in an Internet-like structure. Imagine IoT devices are: The Internet of Things (or IoT for short) refers to uniquely identifiable objects and their virtual representations in an Internet-like structure. Imagine IoT devices are: The Internet of Things (or IoT for short) refers to uniquely identifiable objects and their virtual representations in an Internet-like structure. Imagine IoT devices are: connected to the internet / developed in a short time / storing personal data / secure / more intelligence / inexpensive. connected to the internet / developed in a short time / storing personal data / secure / more intelligence / inexpensive. connected to the internet / developed in a short time / storing personal data / secure / more intelligence / inexpensive. connected to the internet / developed in a short time / storing personal data / secure / more intelligence / inexpensive. connected to the internet / developed in a short time / storing personal data / secure / more intelligence / inexpensive. C language can easily design the IoT devices?C language can easily design the IoT devices?C language can easily design the IoT devices?C language can easily design the IoT devices?C language can easily design the IoT devices?
  • 4. What's Functional IoT?What's Functional IoT?What's Functional IoT?What's Functional IoT?What's Functional IoT? ☆ http://fpiot.metasepi.org/☆ http://fpiot.metasepi.org/☆ http://fpiot.metasepi.org/☆ http://fpiot.metasepi.org/☆ http://fpiot.metasepi.org/ ☆ is a wrestling mat that strongly typed languages fight on, to become the champion of system programming language. ☆ is a wrestling mat that strongly typed languages fight on, to become the champion of system programming language. ☆ is a wrestling mat that strongly typed languages fight on, to become the champion of system programming language. ☆ is a wrestling mat that strongly typed languages fight on, to become the champion of system programming language. ☆ is a wrestling mat that strongly typed languages fight on, to become the champion of system programming language. ☆ tries to write demo code running on tiny MCU using the languages. ☆ tries to write demo code running on tiny MCU using the languages. ☆ tries to write demo code running on tiny MCU using the languages. ☆ tries to write demo code running on tiny MCU using the languages. ☆ tries to write demo code running on tiny MCU using the languages. ☆ summarizes knowledge of the languages as catalog. ☆ summarizes knowledge of the languages as catalog. ☆ summarizes knowledge of the languages as catalog. ☆ summarizes knowledge of the languages as catalog. ☆ summarizes knowledge of the languages as catalog.
  • 5. Why do Functional IoT?Why do Functional IoT?Why do Functional IoT?Why do Functional IoT?Why do Functional IoT? ☆ Today, we have many methodologies for system design. ☆ Today, we have many methodologies for system design. ☆ Today, we have many methodologies for system design. ☆ Today, we have many methodologies for system design. ☆ Today, we have many methodologies for system design. ☆ For example, they are static typing, theorem proving, formal method, design by contract, model checking, static verification, SMT solver, etc. ☆ For example, they are static typing, theorem proving, formal method, design by contract, model checking, static verification, SMT solver, etc. ☆ For example, they are static typing, theorem proving, formal method, design by contract, model checking, static verification, SMT solver, etc. ☆ For example, they are static typing, theorem proving, formal method, design by contract, model checking, static verification, SMT solver, etc. ☆ For example, they are static typing, theorem proving, formal method, design by contract, model checking, static verification, SMT solver, etc. ☆ However, nobody have the exhaustive catalog of them. ☆ However, nobody have the exhaustive catalog of them. ☆ However, nobody have the exhaustive catalog of them. ☆ However, nobody have the exhaustive catalog of them. ☆ However, nobody have the exhaustive catalog of them. ☆ Let's make the catalog!☆ Let's make the catalog!☆ Let's make the catalog!☆ Let's make the catalog!☆ Let's make the catalog!
  • 6. Why need such methodologies?Why need such methodologies?Why need such methodologies?Why need such methodologies?Why need such methodologies? Many people choose C/C++ languages to design IoT device. However the languages lack following: Many people choose C/C++ languages to design IoT device. However the languages lack following: Many people choose C/C++ languages to design IoT device. However the languages lack following: Many people choose C/C++ languages to design IoT device. However the languages lack following: Many people choose C/C++ languages to design IoT device. However the languages lack following: ☆ Avoiding vulnerability☆ Avoiding vulnerability☆ Avoiding vulnerability☆ Avoiding vulnerability☆ Avoiding vulnerability ☆ Specification to be verified☆ Specification to be verified☆ Specification to be verified☆ Specification to be verified☆ Specification to be verified ☆ Keeping good quality☆ Keeping good quality☆ Keeping good quality☆ Keeping good quality☆ Keeping good quality ☆ Getting less man-hour☆ Getting less man-hour☆ Getting less man-hour☆ Getting less man-hour☆ Getting less man-hour ☆ Fun☆ Fun☆ Fun☆ Fun☆ Fun
  • 7. Avoiding vulnerabilityAvoiding vulnerabilityAvoiding vulnerabilityAvoiding vulnerabilityAvoiding vulnerability Vulnerability is caused by following errors:Vulnerability is caused by following errors:Vulnerability is caused by following errors:Vulnerability is caused by following errors:Vulnerability is caused by following errors: ☆ Array index out of range (Buffer overflow)☆ Array index out of range (Buffer overflow)☆ Array index out of range (Buffer overflow)☆ Array index out of range (Buffer overflow)☆ Array index out of range (Buffer overflow) ☆ Type range violation☆ Type range violation☆ Type range violation☆ Type range violation☆ Type range violation ☆ Division by zero☆ Division by zero☆ Division by zero☆ Division by zero☆ Division by zero ☆ Numerical overflow☆ Numerical overflow☆ Numerical overflow☆ Numerical overflow☆ Numerical overflow Some methodologies can avoid these errors.Some methodologies can avoid these errors.Some methodologies can avoid these errors.Some methodologies can avoid these errors.Some methodologies can avoid these errors.
  • 8. Specification to be verifiedSpecification to be verifiedSpecification to be verifiedSpecification to be verifiedSpecification to be verified ☆ Many people maintain specification as natural language. ☆ Many people maintain specification as natural language. ☆ Many people maintain specification as natural language. ☆ Many people maintain specification as natural language. ☆ Many people maintain specification as natural language. ☆ Some methodologies can formally maintain specification which is verified in computer. ☆ Some methodologies can formally maintain specification which is verified in computer. ☆ Some methodologies can formally maintain specification which is verified in computer. ☆ Some methodologies can formally maintain specification which is verified in computer. ☆ Some methodologies can formally maintain specification which is verified in computer.
  • 9. Keeping good qualityKeeping good qualityKeeping good qualityKeeping good qualityKeeping good quality ☆ Original author can keep quality of the code, however the other is hard to do it by lack of verify- able specification. Sometimes, the original author will become "the other" in future. ☆ Original author can keep quality of the code, however the other is hard to do it by lack of verify- able specification. Sometimes, the original author will become "the other" in future. ☆ Original author can keep quality of the code, however the other is hard to do it by lack of verify- able specification. Sometimes, the original author will become "the other" in future. ☆ Original author can keep quality of the code, however the other is hard to do it by lack of verify- able specification. Sometimes, the original author will become "the other" in future. ☆ Original author can keep quality of the code, however the other is hard to do it by lack of verify- able specification. Sometimes, the original author will become "the other" in future.
  • 10. Getting less man-hourGetting less man-hourGetting less man-hourGetting less man-hourGetting less man-hour ☆ Easy to estimate compile time error, however hard to do run time error, because finding latter needs some testing. ☆ Easy to estimate compile time error, however hard to do run time error, because finding latter needs some testing. ☆ Easy to estimate compile time error, however hard to do run time error, because finding latter needs some testing. ☆ Easy to estimate compile time error, however hard to do run time error, because finding latter needs some testing. ☆ Easy to estimate compile time error, however hard to do run time error, because finding latter needs some testing.
  • 11. FunFunFunFunFun C language can't use following feature:C language can't use following feature:C language can't use following feature:C language can't use following feature:C language can't use following feature: ☆ Algebraic data type☆ Algebraic data type☆ Algebraic data type☆ Algebraic data type☆ Algebraic data type ☆ Higher-order function☆ Higher-order function☆ Higher-order function☆ Higher-order function☆ Higher-order function ☆ Namespace☆ Namespace☆ Namespace☆ Namespace☆ Namespace ☆ Pattern matching☆ Pattern matching☆ Pattern matching☆ Pattern matching☆ Pattern matching ☆ Type inference☆ Type inference☆ Type inference☆ Type inference☆ Type inference ☆ Garbage collection☆ Garbage collection☆ Garbage collection☆ Garbage collection☆ Garbage collection
  • 12. How to do Functional IoT?How to do Functional IoT?How to do Functional IoT?How to do Functional IoT?How to do Functional IoT? ☆ Survey existing the methodologies as you like.☆ Survey existing the methodologies as you like.☆ Survey existing the methodologies as you like.☆ Survey existing the methodologies as you like.☆ Survey existing the methodologies as you like. ☆ Write some demo code running on tiny MCU.☆ Write some demo code running on tiny MCU.☆ Write some demo code running on tiny MCU.☆ Write some demo code running on tiny MCU.☆ Write some demo code running on tiny MCU. ☆ Monthly have meetup at Tokyo, Japan.☆ Monthly have meetup at Tokyo, Japan.☆ Monthly have meetup at Tokyo, Japan.☆ Monthly have meetup at Tokyo, Japan.☆ Monthly have meetup at Tokyo, Japan. ☆ Share your knowledge and demo at the meetup.☆ Share your knowledge and demo at the meetup.☆ Share your knowledge and demo at the meetup.☆ Share your knowledge and demo at the meetup.☆ Share your knowledge and demo at the meetup. ☆ Update our exhaustive catalog of the methodologies. ☆ Update our exhaustive catalog of the methodologies. ☆ Update our exhaustive catalog of the methodologies. ☆ Update our exhaustive catalog of the methodologies. ☆ Update our exhaustive catalog of the methodologies.
  • 13. Let's join the Functional IoT meetup!Let's join the Functional IoT meetup!Let's join the Functional IoT meetup!Let's join the Functional IoT meetup!Let's join the Functional IoT meetup! https://fpiot.doorkeeper.jp/https://fpiot.doorkeeper.jp/https://fpiot.doorkeeper.jp/https://fpiot.doorkeeper.jp/https://fpiot.doorkeeper.jp/
  • 14. License of photos #1License of photos #1License of photos #1License of photos #1License of photos #1 *�Nagoya�Port�panorama�│�Flickr�-�Photo�Sharing! ��https://www.flickr.com/photos/emrank/3074491752/ ��Copyright:�Emran�Kassim�/�License:�CC�BY�2.0 *�bPart�industrial�IoT�device.�│�Flickr�-�Photo�Sharing! ��https://www.flickr.com/photos/138891539@N03/23908928999/ ��Copyright:�KIT�TECO�/�License:�CC�BY�2.0 *�CEO�-�Tiare�-�Board�Meeting�-�Franklin�Canyon�│�Flickr�-�Photo�Sharing! ��https://www.flickr.com/photos/tiarescott/69821764/ ��Copyright:�tiarescott�/�License:�CC�BY�2.0 *�Bergere�de�France�catalogue�│�Flickr�-�Photo�Sharing! ��https://www.flickr.com/photos/breibeest/404587519/ ��Copyright:�Breibeest�/�License:�CC�BY�2.0 *�File:BjarneStroustrup.jpg�-�Wikimedia�Commons ��https://commons.wikimedia.org/wiki/File:BjarneStroustrup.jpg ��Copyright:�---�/�License:�GNU�Free�Documentation�License *�Nagoya�Port�panorama�│�Flickr�-�Photo�Sharing! ��https://www.flickr.com/photos/emrank/3074491752/ ��Copyright:�Emran�Kassim�/�License:�CC�BY�2.0 *�bPart�industrial�IoT�device.�│�Flickr�-�Photo�Sharing! ��https://www.flickr.com/photos/138891539@N03/23908928999/ ��Copyright:�KIT�TECO�/�License:�CC�BY�2.0 *�CEO�-�Tiare�-�Board�Meeting�-�Franklin�Canyon�│�Flickr�-�Photo�Sharing! ��https://www.flickr.com/photos/tiarescott/69821764/ ��Copyright:�tiarescott�/�License:�CC�BY�2.0 *�Bergere�de�France�catalogue�│�Flickr�-�Photo�Sharing! ��https://www.flickr.com/photos/breibeest/404587519/ ��Copyright:�Breibeest�/�License:�CC�BY�2.0 *�File:BjarneStroustrup.jpg�-�Wikimedia�Commons ��https://commons.wikimedia.org/wiki/File:BjarneStroustrup.jpg ��Copyright:�---�/�License:�GNU�Free�Documentation�License *�Nagoya�Port�panorama�│�Flickr�-�Photo�Sharing! ��https://www.flickr.com/photos/emrank/3074491752/ ��Copyright:�Emran�Kassim�/�License:�CC�BY�2.0 *�bPart�industrial�IoT�device.�│�Flickr�-�Photo�Sharing! ��https://www.flickr.com/photos/138891539@N03/23908928999/ ��Copyright:�KIT�TECO�/�License:�CC�BY�2.0 *�CEO�-�Tiare�-�Board�Meeting�-�Franklin�Canyon�│�Flickr�-�Photo�Sharing! ��https://www.flickr.com/photos/tiarescott/69821764/ ��Copyright:�tiarescott�/�License:�CC�BY�2.0 *�Bergere�de�France�catalogue�│�Flickr�-�Photo�Sharing! ��https://www.flickr.com/photos/breibeest/404587519/ ��Copyright:�Breibeest�/�License:�CC�BY�2.0 *�File:BjarneStroustrup.jpg�-�Wikimedia�Commons ��https://commons.wikimedia.org/wiki/File:BjarneStroustrup.jpg ��Copyright:�---�/�License:�GNU�Free�Documentation�License *�Nagoya�Port�panorama�│�Flickr�-�Photo�Sharing! ��https://www.flickr.com/photos/emrank/3074491752/ ��Copyright:�Emran�Kassim�/�License:�CC�BY�2.0 *�bPart�industrial�IoT�device.�│�Flickr�-�Photo�Sharing! ��https://www.flickr.com/photos/138891539@N03/23908928999/ ��Copyright:�KIT�TECO�/�License:�CC�BY�2.0 *�CEO�-�Tiare�-�Board�Meeting�-�Franklin�Canyon�│�Flickr�-�Photo�Sharing! ��https://www.flickr.com/photos/tiarescott/69821764/ ��Copyright:�tiarescott�/�License:�CC�BY�2.0 *�Bergere�de�France�catalogue�│�Flickr�-�Photo�Sharing! ��https://www.flickr.com/photos/breibeest/404587519/ ��Copyright:�Breibeest�/�License:�CC�BY�2.0 *�File:BjarneStroustrup.jpg�-�Wikimedia�Commons ��https://commons.wikimedia.org/wiki/File:BjarneStroustrup.jpg ��Copyright:�---�/�License:�GNU�Free�Documentation�License *�Nagoya�Port�panorama�│�Flickr�-�Photo�Sharing! ��https://www.flickr.com/photos/emrank/3074491752/ ��Copyright:�Emran�Kassim�/�License:�CC�BY�2.0 *�bPart�industrial�IoT�device.�│�Flickr�-�Photo�Sharing! ��https://www.flickr.com/photos/138891539@N03/23908928999/ ��Copyright:�KIT�TECO�/�License:�CC�BY�2.0 *�CEO�-�Tiare�-�Board�Meeting�-�Franklin�Canyon�│�Flickr�-�Photo�Sharing! ��https://www.flickr.com/photos/tiarescott/69821764/ ��Copyright:�tiarescott�/�License:�CC�BY�2.0 *�Bergere�de�France�catalogue�│�Flickr�-�Photo�Sharing! ��https://www.flickr.com/photos/breibeest/404587519/ ��Copyright:�Breibeest�/�License:�CC�BY�2.0 *�File:BjarneStroustrup.jpg�-�Wikimedia�Commons ��https://commons.wikimedia.org/wiki/File:BjarneStroustrup.jpg ��Copyright:�---�/�License:�GNU�Free�Documentation�License
  • 15. License of photos #2License of photos #2License of photos #2License of photos #2License of photos #2 *�Volkswagen�Beetle�crashed�through�a�brick�wall�│�Flickr�-�Photo�Sharing! ��https://www.flickr.com/photos/simpleinsomnia/23882140795/ ��Copyright:�simpleinsomnia�/�License:�CC�BY�2.0 *�Physical�Inventory�of�Fuel�Assemblies�(03210024)�│�Flickr�-�Photo�Sharing! ��https://www.flickr.com/photos/iaea_imagebank/8366285569/ ��Copyright:�IAEA�Imagebank�/�License:�CC�BY-SA�2.0 *�Old�Car�Festival,�2015�│�Flickr�-�Photo�Sharing! ��https://www.flickr.com/photos/50697352@N00/21210898408/ ��Copyright:�F.�D.�Richards�/�License:�CC�BY-SA�2.0 *�Iceberg�│�Flickr�-�Photo�Sharing! ��https://www.flickr.com/photos/usoceangov/8290528771/ ��Copyright:�NOAA's�National�Ocean�Service�/�License:�CC�BY�2.0 *�PDCA-Do�│�Flickr�-�Photo�Sharing! ��https://www.flickr.com/photos/jurgenappelo/6797304300/ ��Copyright:�Jurgen�Appelo�/�License:�CC�BY�2.0 *�Volkswagen�Beetle�crashed�through�a�brick�wall�│�Flickr�-�Photo�Sharing! ��https://www.flickr.com/photos/simpleinsomnia/23882140795/ ��Copyright:�simpleinsomnia�/�License:�CC�BY�2.0 *�Physical�Inventory�of�Fuel�Assemblies�(03210024)�│�Flickr�-�Photo�Sharing! ��https://www.flickr.com/photos/iaea_imagebank/8366285569/ ��Copyright:�IAEA�Imagebank�/�License:�CC�BY-SA�2.0 *�Old�Car�Festival,�2015�│�Flickr�-�Photo�Sharing! ��https://www.flickr.com/photos/50697352@N00/21210898408/ ��Copyright:�F.�D.�Richards�/�License:�CC�BY-SA�2.0 *�Iceberg�│�Flickr�-�Photo�Sharing! ��https://www.flickr.com/photos/usoceangov/8290528771/ ��Copyright:�NOAA's�National�Ocean�Service�/�License:�CC�BY�2.0 *�PDCA-Do�│�Flickr�-�Photo�Sharing! ��https://www.flickr.com/photos/jurgenappelo/6797304300/ ��Copyright:�Jurgen�Appelo�/�License:�CC�BY�2.0 *�Volkswagen�Beetle�crashed�through�a�brick�wall�│�Flickr�-�Photo�Sharing! ��https://www.flickr.com/photos/simpleinsomnia/23882140795/ ��Copyright:�simpleinsomnia�/�License:�CC�BY�2.0 *�Physical�Inventory�of�Fuel�Assemblies�(03210024)�│�Flickr�-�Photo�Sharing! ��https://www.flickr.com/photos/iaea_imagebank/8366285569/ ��Copyright:�IAEA�Imagebank�/�License:�CC�BY-SA�2.0 *�Old�Car�Festival,�2015�│�Flickr�-�Photo�Sharing! ��https://www.flickr.com/photos/50697352@N00/21210898408/ ��Copyright:�F.�D.�Richards�/�License:�CC�BY-SA�2.0 *�Iceberg�│�Flickr�-�Photo�Sharing! ��https://www.flickr.com/photos/usoceangov/8290528771/ ��Copyright:�NOAA's�National�Ocean�Service�/�License:�CC�BY�2.0 *�PDCA-Do�│�Flickr�-�Photo�Sharing! ��https://www.flickr.com/photos/jurgenappelo/6797304300/ ��Copyright:�Jurgen�Appelo�/�License:�CC�BY�2.0 *�Volkswagen�Beetle�crashed�through�a�brick�wall�│�Flickr�-�Photo�Sharing! ��https://www.flickr.com/photos/simpleinsomnia/23882140795/ ��Copyright:�simpleinsomnia�/�License:�CC�BY�2.0 *�Physical�Inventory�of�Fuel�Assemblies�(03210024)�│�Flickr�-�Photo�Sharing! ��https://www.flickr.com/photos/iaea_imagebank/8366285569/ ��Copyright:�IAEA�Imagebank�/�License:�CC�BY-SA�2.0 *�Old�Car�Festival,�2015�│�Flickr�-�Photo�Sharing! ��https://www.flickr.com/photos/50697352@N00/21210898408/ ��Copyright:�F.�D.�Richards�/�License:�CC�BY-SA�2.0 *�Iceberg�│�Flickr�-�Photo�Sharing! ��https://www.flickr.com/photos/usoceangov/8290528771/ ��Copyright:�NOAA's�National�Ocean�Service�/�License:�CC�BY�2.0 *�PDCA-Do�│�Flickr�-�Photo�Sharing! ��https://www.flickr.com/photos/jurgenappelo/6797304300/ ��Copyright:�Jurgen�Appelo�/�License:�CC�BY�2.0 *�Volkswagen�Beetle�crashed�through�a�brick�wall�│�Flickr�-�Photo�Sharing! ��https://www.flickr.com/photos/simpleinsomnia/23882140795/ ��Copyright:�simpleinsomnia�/�License:�CC�BY�2.0 *�Physical�Inventory�of�Fuel�Assemblies�(03210024)�│�Flickr�-�Photo�Sharing! ��https://www.flickr.com/photos/iaea_imagebank/8366285569/ ��Copyright:�IAEA�Imagebank�/�License:�CC�BY-SA�2.0 *�Old�Car�Festival,�2015�│�Flickr�-�Photo�Sharing! ��https://www.flickr.com/photos/50697352@N00/21210898408/ ��Copyright:�F.�D.�Richards�/�License:�CC�BY-SA�2.0 *�Iceberg�│�Flickr�-�Photo�Sharing! ��https://www.flickr.com/photos/usoceangov/8290528771/ ��Copyright:�NOAA's�National�Ocean�Service�/�License:�CC�BY�2.0 *�PDCA-Do�│�Flickr�-�Photo�Sharing! ��https://www.flickr.com/photos/jurgenappelo/6797304300/ ��Copyright:�Jurgen�Appelo�/�License:�CC�BY�2.0
  • 16. License of photos #3License of photos #3License of photos #3License of photos #3License of photos #3 *�Creative�Commons�BBB�│�Flickr�-�Photo�Sharing! ��https://www.flickr.com/photos/steren/2732488224/ ��Copyright:�Steren�Giannini�/�License:�CC�BY�2.0 *�Creative�Commons�BBB�│�Flickr�-�Photo�Sharing! ��https://www.flickr.com/photos/steren/2732488224/ ��Copyright:�Steren�Giannini�/�License:�CC�BY�2.0 *�Creative�Commons�BBB�│�Flickr�-�Photo�Sharing! ��https://www.flickr.com/photos/steren/2732488224/ ��Copyright:�Steren�Giannini�/�License:�CC�BY�2.0 *�Creative�Commons�BBB�│�Flickr�-�Photo�Sharing! ��https://www.flickr.com/photos/steren/2732488224/ ��Copyright:�Steren�Giannini�/�License:�CC�BY�2.0 *�Creative�Commons�BBB�│�Flickr�-�Photo�Sharing! ��https://www.flickr.com/photos/steren/2732488224/ ��Copyright:�Steren�Giannini�/�License:�CC�BY�2.0