Slide 1

Slide 1 text

@scalone 20k mRuby devices Production Thiago Scalone - @scalone

Slide 2

Slide 2 text

@scalone こんばんは 私の名前はThiago Scalone です よろしくお願いします! 私はブラジルのソフトウェアエンジニアです

Slide 3

Slide 3 text

@scalone

Slide 4

Slide 4 text

@scalone Speak Portuguese, not Spanish Not everyone likes socker/football Some people like contact and hugs We do Party and drink We work hard Brazilian

Slide 5

Slide 5 text

@scalone @scalone Free hugs!

Slide 6

Slide 6 text

The digital payment acquirer @scalone

Slide 7

Slide 7 text

@scalone

Slide 8

Slide 8 text

@scalone

Slide 9

Slide 9 text

@scalone

Slide 10

Slide 10 text

@scalone

Slide 11

Slide 11 text

@scalone

Slide 12

Slide 12 text

Payment acquirers are very inefficient
 
 Most using outdated technology
 
 Incapable of offering digital products @scalone

Slide 13

Slide 13 text

@scalone

Slide 14

Slide 14 text

@scalone @scalone

Slide 15

Slide 15 text

@scalone @scalone

Slide 16

Slide 16 text

@scalone @scalone

Slide 17

Slide 17 text

@scalone @scalone

Slide 18

Slide 18 text

@scalone @scalone

Slide 19

Slide 19 text

@scalone ERC20 @scalone

Slide 20

Slide 20 text

@scalone ERC20

Slide 21

Slide 21 text

@scalone Demo application creation/deploy Runtime and application Update/Upgrade Communication configuration and intelligence Payment transaction security and cryptography Code sharing between CRuby and mRuby Concurrency / Memory management and leaks Demo chip/pin Payment Transaction Topics

Slide 22

Slide 22 text

@scalone Demo Thiago Scalone - @scalone

Slide 23

Slide 23 text

@scalone @scalone

Slide 24

Slide 24 text

@scalone CLI @scalone

Slide 25

Slide 25 text

@scalone PROJECT CLI @scalone

Slide 26

Slide 26 text

@scalone PROJECT COMPILE CLI @scalone

Slide 27

Slide 27 text

@scalone PROJECT COMPILE DEPLOY CLI @scalone

Slide 28

Slide 28 text

@scalone PROJECT COMPILE DEPLOY CLI RUN @scalone

Slide 29

Slide 29 text

@scalone PROJECT COMPILE DEPLOY CLI RUN @scalone

Slide 30

Slide 30 text

@scalone PROJECT COMPILE DEPLOY CLI RUN mRuby mruby-cli da_funk @scalone

Slide 31

Slide 31 text

@scalone Created by Matz Small Cross-compilation / ANSI C Modular No gems, mrbgems static compilation .mrb https://github.com/mruby/mruby mRuby

Slide 32

Slide 32 text

@scalone CLI apps framework Created and maintained by hone, zzak and toch Power of mruby to generate standalone binary Linux, Windows, and OS X Docker Compose https://github.com/hone/mruby-cli https://github.com/cloudwalkio/cloudwalk mruby-cli

Slide 33

Slide 33 text

@scalone Open Source IOT Embedded Framework Created by CloudWalk Adopt adapter pattern to hardware interface Compilation and packaging tools Helpers https://github.com/cloudwalkio/da_funk da_funk

Slide 34

Slide 34 text

@scalone lib/device/ !"" application.rb !"" audio.rb !"" crypto.rb !"" display.rb !"" io.rb !"" magnetic.rb !"" network.rb !"" printer.rb !"" runtime.rb !"" system.rb #"" version.rb class Device class Audio def self.adapter Device.adapter::Audio end def self.beep(tone, seconds) milli = seconds * 1000 adapter.beep(tone, milli) end end end da_funk da_funk

Slide 35

Slide 35 text

@scalone @scalone GPRS/3G/WIFI Persistent Connection TCP + TLS 1.2 WebSocket Download in chunks

Slide 36

Slide 36 text

@scalone Push Notification / Transaction / Package Download Past ISO8583 and Serfx :( Ping 6 bytes and Data Consumption (2mb limit per month) Inflate/deflate Heroku Implemented by DaFunk WebSocket

Slide 37

Slide 37 text

@scalone AT Command Interface Ruby Communication

Slide 38

Slide 38 text

@scalone AT Command Interface Ruby Attach Connection Management Communication

Slide 39

Slide 39 text

@scalone Security and Crypto

Slide 40

Slide 40 text

@scalone PTS Terminal 3DES + Working Key PIN / DATA DUKPT (Derived Unique Key Per Transaction) (SDK bind) SSL Library mbed TLS / PolarSSL hKps:/ /github.com/luisbebop/mruby-polarssl HMAC, SHA1, MD5 and etc on mruby suite
 
 Security and Crypto

Slide 41

Slide 41 text

@scalone PTS Terminal 3DES + Working Key PIN / DATA DUKPT (Derived Unique Key Per Transaction) (SDK bind) SSL Library mbed TLS / PolarSSL hKps:/ /github.com/luisbebop/mruby-polarssl HMAC, SHA1, MD5 and etc on mruby suite
 
 Security and Crypto

Slide 42

Slide 42 text

@scalone Security and Crypto

Slide 43

Slide 43 text

@scalone Take advantage of Bundler Rake tasks Adopt the same code in some scenarios ISO8583 CRuby + mRuby

Slide 44

Slide 44 text

@scalone Gem Spec DaFunk compilation CRuby + mRuby

Slide 45

Slide 45 text

@scalone Memory and leaks

Slide 46

Slide 46 text

@scalone Memory and leaks

Slide 47

Slide 47 text

@scalone Concurrency

Slide 48

Slide 48 text

@scalone Status Bar Update Connection Management Sharing memory for communication by controlled queue Concurrency

Slide 49

Slide 49 text

@scalone CloudWalk mruby gem mruby-context C structure implementation using semaphores Concurrency

Slide 50

Slide 50 text

@scalone MRuby Libraries to make the runPme works h"ps:/ /github.com/cloudwalkio/mruby-da-funk IOT Framework h"ps:/ /github.com/cloudwalkio/da_funk TLV Parser (Payment TransacPon) h"ps:/ /github.com/scalone/funky-tlv CloudWalk CLI h"ps:/ /github.com/cloudwalkio/cloudwalk SSL Library mbed TLS / PolarSSL bind h"ps:/ /github.com/luisbebop/mruby-polarssl Open Source

Slide 51

Slide 51 text

@scalone MRuby EMV Interface (Payment TransacPon) h"ps:/ /github.com/cloudwalkio/mruby-emv RIPEMD-160 hash h"ps:/ /github.com/scalone/mruby-ripemd QRCode generaPon h"ps:/ /github.com/scalone/mruby-qrcode Miniz bind to ZIP/UNZIP inflate/deflate h"ps:/ /github.com/scalone/mruby-miniz HMAC hash h"ps:/ /github.com/scalone/mruby-hmac Open Source

Slide 52

Slide 52 text

@scalone PAX Terminals h"ps:/ /github.com/cloudwalkio/robot_rock Open Source TODAY

Slide 53

Slide 53 text

@scalone Demo Thiago Scalone - @scalone

Slide 54

Slide 54 text

@scalone 20k mRuby devices Production Thiago Scalone - @scalone

Slide 55

Slide 55 text

@scalone 40.375 Devices Production Thiago Scalone - @scalone

Slide 56

Slide 56 text

@scalone 40.375 Devices $ +1bi 50% mRuby Production Thiago Scalone - @scalone

Slide 57

Slide 57 text

@scalone mRuby in Production Thiago Scalone - @scalone

Slide 58

Slide 58 text

@scalone in mRuby We Trust Thiago Scalone - @scalone

Slide 59

Slide 59 text

@scalone Thank you We Trust Thiago Scalone - @scalone