SlideShare a Scribd company logo
MAKING PROGRAMS TALK 
MICHAEL F. COLLINS, III 
DESERT CODE CAMP 
OCTOBER 18, 2014
ABOUT ME 
• PRODUCT ARCHITECT/LEAD DEVELOPER FOR NEURON ESB, A MESSAGING 
MIDDLEWARE PRODUCT 
• 20+ YEAR CAREER (1994-2014) 
• STUDIED COMPUTER ENGINEERING AT CSU SACRAMENTO (GO HORNETS!) 
• CURRENTLY WORK FOR NEUDESIC (6+ YEARS); PRIOR EMPLOYERS INCLUDE 
SOGETI USA, JDA SOFTWARE, KAISER IT, NONSTOP SOLUTIONS, PEOPLESOFT, 
AND OTHERS 
• DEVELOP FOR WINDOWS, LINUX, MAC OSX, IOS, ANDROID, AND OTHER 
PLATFORMS 
• FAVORITE LANGUAGES: C#, C++, JAVA, RUBY, PYTHON, GO, ERLANG
CONTACT ME 
• EMAIL: 
• MICHAEL.COLLINS@NAKEDCODERS.BIZ 
• MICHAEL.COLLINS@NEUDESIC.COM 
• TWITTER: @MFCOLLINS3 
• SKYPE: MFCOLLINS3 
• LINKED IN: HTTP://WWW.LINKEDIN.COM/IN/MICHAELFCOLLINS3/
WHY ARE WE HERE? 
• HOW DO TWO OR MORE PROGRAMS TALK? 
• HOW CAN PROGRAMS COLLABORATE TO GET WORK DONE? 
• WHAT STRATEGIES EXIST FOR PROGRAM COLLABORATION? 
• WHAT ARE THE PITFALLS OF MULTI-PROGRAM DEVELOPMENT?
PARENT-CHILD PROCESSES 
• PARENT PROCESS “SPAWNS” A CHILD 
PROCESS 
• “STANDARD I/O STREAMS” ARE USED 
TO CONTROL AND COLLECT 
FEEDBACK: 
• 1 INPUT STREAM (STDIN) 
• 2 OUTPUT STREAMS (STDOUT, 
STDERR) 
Parent 
Child
PARENT-CHILD PROCESSES 
• PARENT SENDS A COMMAND TO THE 
CHILD USING STDIN 
• CHILD SENDS A RESPONSE BACK TO 
THE PARENT USING STDOUT 
• CHILD CAN OUTPUT DIAGNOSTIC 
INFORMATION (LOG DATA; DEBUG 
MESSAGES) USING STDERR 
Parent 
Child
PARENT-CHILD PROCESSES 
• SINGLE RESPONSIBILITY PRINCIPAL 
• A PROGRAM SHOULD HAVE ONE REASON TO CHANGE 
• DO ONE THING AND DO IT WELL 
• GUI FOR COMMAND-LINE INTERFACE (CLI) 
• PRESENT A GUI OVER POWERSHELL SCRIPTS OR COMMAND-LINE PROGRAMS 
• USE A TEXT PROTOCOL 
• EASY TO DEBUG FROM THE COMMAND LINE 
• CAN BE SCRIPTED OR AUTOMATED FOR TESTING
DEMO 
PARENT-CHILD PROCESSES
DISTRIBUTED PROCESSES 
Client Server
DISTRIBUTED PROCESSES 
• SOAP 
• REST/HTTP 
• PROTOCOL BUFFERS 
• APACHE THRIFT 
• SOCKETS 
Client Server
DISTRIBUTED PROCESS PROTOCOLS 
SOAP 
XML-BASED PROTOCOL 
PROVEN TECHNOLOGY 
GREAT .NET SUPPORT (WCF) 
STANDARDS FOR SECURITY, 
RELIABILITY, DISCOVERY, 
METADATA 
LIMITED SUPPORT FOR OTHER 
PLATFORMS/LANGUAGES 
REST 
HTTP-BASED 
LOW BARRIER TO ENTRY 
HIGHLY PORTABLE BETWEEN 
PLATFORMS AND LANGUAGES 
MOST LANGUAGES HAVE BASIC 
HTTP SUPPORT 
STABLE SECURITY STANDARDS 
(HTTPS, OAUTH) 
THRIFT 
HIGHLY PORTABLE BETWEEN 
PLATFORMS AND LANGUAGES 
STANDARD FOR METADATA 
API-BASED 
SECURITY THROUGH SSL
DISTRIBUTED PROCESSES 
• USE THE BEST PROTOCOL FOR YOUR PROJECT 
• DO YOU NEED ADVANCED SECURITY, DISCOVERABILITY, DISTRIBUTED TRANSACTIONS, 
RELIABILITY, AND YOU’RE ON .NET ONLY? 
• USE WCF AND SOAP 
• DO YOU NEED PORTABILITY AND THE ABILITY FOR MULTIPLE TECHNOLOGIES TO 
INTEGRATE? 
• USE REST OR THRIFT 
• ARE YOU EXPOSING A PUBLIC API OVER THE INTERNET? 
• USE REST 
• ARE YOUR SERVICES FOR AN INTERNAL INTERNET? 
• USE THRIFT
DEMO 
DISTRIBUTED PROCESSES
ASYNCHRONOUS MESSAGING 
Broker 
Participant Participant Participant
ASYNCHRONOUS MESSAGING 
• COMMUNICATION IS HANDLED VIA 
ONE-WAY MESSAGES SENT BETWEEN 
PARTICIPANTS 
• A BROKER PROVIDES SERVICES SUCH 
AS A MESSAGE QUEUE OR PUBLISH-SUBSCRIBE 
ARCHITECTURE TO 
DELIVER MESSAGES TO RECEIVERS 
Broker 
Participa 
nt 
Participa 
nt 
Participa 
nt
ASYNCHRONOUS MESSAGING 
• POINT-TO-POINT: DELIVERED AT 
MOST ONCE 
• PUBLISH-SUBSCRIBE: DELIVERED TO 
ALL SUBSCRIBERS 
Broker 
Participa 
nt 
Participa 
nt 
Participa 
nt
ASYNCHRONOUS MESSAGING 
• MESSAGES MAY BE PERSISTED BEFORE 
BEING DELIVERED 
• SOME MESSAGES CAN BE PROCESSED 
IN A TRANSACTION 
• RELIABLE MESSAGING IF A 
PARTICIPANT IS UNAVAILABLE 
Broker 
Participa 
nt 
Participa 
nt 
Participa 
nt
ASYNCHRONOUS MESSAGING 
• POISON MESSAGE QUEUE: MESSAGES 
THAT CAUSE FAILURES 
• DEAD LETTER QUEUE: MESSAGES 
THAT EXPIRE BEFORE BEING 
DELIVERED 
• RELIABLE == NO MESSAGE LOSS! 
• GUARANTEED == MESSAGE WILL BE 
DELIVERED, OR YOU WILL KNOW 
THAT IT WAS NOT DELIVERED 
Broker 
Participa 
nt 
Participa 
nt 
Participa 
nt
ASYNCHRONOUS MESSAGING 
• MSMQ 
• MQ SERIES 
• ACTIVE MQ 
• RABBIT MQ 
• ZEROMQ 
Broker 
Participa 
nt 
Participa 
nt 
Participa 
nt
ASYNCHRONOUS MESSAGING 
• PATIENCE IS YOUR FRIEND 
• TEST, TEST, TEST 
• CAPTURE POISON MESSAGES AND DEAD 
LETTER MESSAGES 
• ANYTHING YOU DO SLOWS YOUR SYSTEM 
DOWN 
• PERSISTENCE 
• TRANSACTIONS 
• GUARANTEED DELIVERY 
• MAXIMIZE I/O
DEMO 
ASYNCHRONOUS MESSAGING
Q&A 
ASK ME ANYTHING!
NEUDESIC IS HIRING! 
• ARE YOU ONE OF THE BEST SOFTWARE DEVELOPERS IN THE DESERT? IF YES, 
WHAT ARE YOU WAITING FOR? 
• NEUDESIC HIRES THE BEST-OF-THE-BEST AND IS LOOKING FOR TALENTED 
SOFTWARE DEVELOPERS, UX DESIGNERS, BI DEVELOPERS, QA ENGINEERS, AND 
PROJECT MANAGERS! 
• PHOENIX IS ONE OF THE BEST LOCATIONS TO WORK IN! 
• JOIN A GROWING COMPANY AND MAKE IT MORE SUCCESSFUL!!! 
• EMAIL ME YOUR RESUME TODAY: MICHAEL.COLLINS@NEUDESIC.COM
CONTACT ME (AGAIN) 
• EMAIL: 
• MICHAEL.COLLINS@NAKEDCODERS.BIZ 
• MICHAEL.COLLINS@NEUDESIC.COM 
• TWITTER: @MFCOLLINS3 
• SKYPE: MFCOLLINS3 
• LINKED IN: HTTP://WWW.LINKEDIN.COM/IN/MICHAELFCOLLINS3/

More Related Content

Viewers also liked

Windows 8 for .NET Developers
Windows 8 for .NET DevelopersWindows 8 for .NET Developers
Windows 8 for .NET Developers
Michael Collins
 
Tools for Building Windows 8 style apps
Tools for Building Windows 8 style appsTools for Building Windows 8 style apps
Tools for Building Windows 8 style apps
Zubair Ahmed
 
Visual studio 2012 - What's in it for me?
Visual studio 2012 - What's in it for me?Visual studio 2012 - What's in it for me?
Visual studio 2012 - What's in it for me?
Jeff Bramwell
 
ITCamp 2012 - Raffaele Rialdi - Introduction to WinRT
ITCamp 2012 - Raffaele Rialdi - Introduction to WinRTITCamp 2012 - Raffaele Rialdi - Introduction to WinRT
ITCamp 2012 - Raffaele Rialdi - Introduction to WinRT
ITCamp
 
ITCamp 2012 - Lorant Domokos - Building single page, modular HTML5 applications
ITCamp 2012 - Lorant Domokos - Building single page, modular HTML5 applicationsITCamp 2012 - Lorant Domokos - Building single page, modular HTML5 applications
ITCamp 2012 - Lorant Domokos - Building single page, modular HTML5 applications
ITCamp
 
Win8 architecture for developers
Win8 architecture for developersWin8 architecture for developers
Win8 architecture for developers
Robert MacLean
 
Delivering High Availability and Performance with SQL Server 2014 (Silviu Nic...
Delivering High Availability and Performance with SQL Server 2014 (Silviu Nic...Delivering High Availability and Performance with SQL Server 2014 (Silviu Nic...
Delivering High Availability and Performance with SQL Server 2014 (Silviu Nic...
ITCamp
 

Viewers also liked (7)

Windows 8 for .NET Developers
Windows 8 for .NET DevelopersWindows 8 for .NET Developers
Windows 8 for .NET Developers
 
Tools for Building Windows 8 style apps
Tools for Building Windows 8 style appsTools for Building Windows 8 style apps
Tools for Building Windows 8 style apps
 
Visual studio 2012 - What's in it for me?
Visual studio 2012 - What's in it for me?Visual studio 2012 - What's in it for me?
Visual studio 2012 - What's in it for me?
 
ITCamp 2012 - Raffaele Rialdi - Introduction to WinRT
ITCamp 2012 - Raffaele Rialdi - Introduction to WinRTITCamp 2012 - Raffaele Rialdi - Introduction to WinRT
ITCamp 2012 - Raffaele Rialdi - Introduction to WinRT
 
ITCamp 2012 - Lorant Domokos - Building single page, modular HTML5 applications
ITCamp 2012 - Lorant Domokos - Building single page, modular HTML5 applicationsITCamp 2012 - Lorant Domokos - Building single page, modular HTML5 applications
ITCamp 2012 - Lorant Domokos - Building single page, modular HTML5 applications
 
Win8 architecture for developers
Win8 architecture for developersWin8 architecture for developers
Win8 architecture for developers
 
Delivering High Availability and Performance with SQL Server 2014 (Silviu Nic...
Delivering High Availability and Performance with SQL Server 2014 (Silviu Nic...Delivering High Availability and Performance with SQL Server 2014 (Silviu Nic...
Delivering High Availability and Performance with SQL Server 2014 (Silviu Nic...
 

Similar to Making Programs Talk

Ethical hacking for fun and profit
Ethical hacking for fun and profitEthical hacking for fun and profit
Ethical hacking for fun and profit
Florent Batard
 
AppSec in an Agile World
AppSec in an Agile WorldAppSec in an Agile World
AppSec in an Agile World
David Lindner
 
Why Service Oriented Architecture DDD North 20151024
Why Service Oriented Architecture DDD North 20151024Why Service Oriented Architecture DDD North 20151024
Why Service Oriented Architecture DDD North 20151024
Sean Farmar
 
Making security-agile matt-tesauro
Making security-agile matt-tesauroMaking security-agile matt-tesauro
Making security-agile matt-tesauro
Matt Tesauro
 
In the Clouds with Windows Phone 7
In the Clouds with Windows Phone 7In the Clouds with Windows Phone 7
In the Clouds with Windows Phone 7
Danijel Malik
 
TigerText Presentation
TigerText PresentationTigerText Presentation
TigerText Presentation
Dealmaker Media
 
Harness Your Code, Unleash Your Creativity: Your Team's Pragmatic Guide to Se...
Harness Your Code, Unleash Your Creativity: Your Team's Pragmatic Guide to Se...Harness Your Code, Unleash Your Creativity: Your Team's Pragmatic Guide to Se...
Harness Your Code, Unleash Your Creativity: Your Team's Pragmatic Guide to Se...
Aggregage
 
Seguridad de la Información y Controles contra Hackers - Getting hacked 101 ...
Seguridad de la Información y Controles contra Hackers - Getting hacked 101  ...Seguridad de la Información y Controles contra Hackers - Getting hacked 101  ...
Seguridad de la Información y Controles contra Hackers - Getting hacked 101 ...
Asociación de Ejecutivos de Cooperativas de Puerto Rico
 
Serverless: when functions and GitOps collide
Serverless: when functions and GitOps collideServerless: when functions and GitOps collide
Serverless: when functions and GitOps collide
Edward Wilde
 
Web App Security Presentation by Ryan Holland - 05-31-2017
Web App Security Presentation by Ryan Holland - 05-31-2017Web App Security Presentation by Ryan Holland - 05-31-2017
Web App Security Presentation by Ryan Holland - 05-31-2017
TriNimbus
 
JavaOne: Efficiently building and deploying microservices
JavaOne: Efficiently building and deploying microservicesJavaOne: Efficiently building and deploying microservices
JavaOne: Efficiently building and deploying microservices
Bart Blommaerts
 
Beyond DevOps: How Netflix Bridges the Gap?
Beyond DevOps: How Netflix Bridges the Gap?Beyond DevOps: How Netflix Bridges the Gap?
Beyond DevOps: How Netflix Bridges the Gap?
C4Media
 
SharePoint, Nintex and DocuSign - Putting it all together
SharePoint, Nintex and DocuSign - Putting it all together SharePoint, Nintex and DocuSign - Putting it all together
SharePoint, Nintex and DocuSign - Putting it all together
Netwoven Inc.
 
Office 365 Disruption - Metalogix Roadshow - 20th October 2016
Office 365 Disruption - Metalogix Roadshow - 20th October 2016Office 365 Disruption - Metalogix Roadshow - 20th October 2016
Office 365 Disruption - Metalogix Roadshow - 20th October 2016
Alistair Pugin
 
Choosing Javascript Libraries to Adopt for Development
Choosing Javascript Libraries to Adopt for DevelopmentChoosing Javascript Libraries to Adopt for Development
Choosing Javascript Libraries to Adopt for Development
Edward Apostol
 
From Monoliths to Services: Paying Your Technical Debt
From Monoliths to Services: Paying Your Technical DebtFrom Monoliths to Services: Paying Your Technical Debt
From Monoliths to Services: Paying Your Technical Debt
TechWell
 
Application Delivery Patterns for Developers - Technical 401
Application Delivery Patterns for Developers - Technical 401Application Delivery Patterns for Developers - Technical 401
Application Delivery Patterns for Developers - Technical 401
Amazon Web Services
 
Continuous integration using Jenkins and Sonar
Continuous integration using Jenkins and SonarContinuous integration using Jenkins and Sonar
Continuous integration using Jenkins and Sonar
Pascal Larocque
 
RA21 Charleston Library Conference Presentation
RA21 Charleston Library Conference Presentation RA21 Charleston Library Conference Presentation
RA21 Charleston Library Conference Presentation
National Information Standards Organization (NISO)
 
4+Year_Exp_Resume Linux_Admin, Linux_engineer
4+Year_Exp_Resume Linux_Admin, Linux_engineer4+Year_Exp_Resume Linux_Admin, Linux_engineer
4+Year_Exp_Resume Linux_Admin, Linux_engineer
Abhijeet Rohanekar
 

Similar to Making Programs Talk (20)

Ethical hacking for fun and profit
Ethical hacking for fun and profitEthical hacking for fun and profit
Ethical hacking for fun and profit
 
AppSec in an Agile World
AppSec in an Agile WorldAppSec in an Agile World
AppSec in an Agile World
 
Why Service Oriented Architecture DDD North 20151024
Why Service Oriented Architecture DDD North 20151024Why Service Oriented Architecture DDD North 20151024
Why Service Oriented Architecture DDD North 20151024
 
Making security-agile matt-tesauro
Making security-agile matt-tesauroMaking security-agile matt-tesauro
Making security-agile matt-tesauro
 
In the Clouds with Windows Phone 7
In the Clouds with Windows Phone 7In the Clouds with Windows Phone 7
In the Clouds with Windows Phone 7
 
TigerText Presentation
TigerText PresentationTigerText Presentation
TigerText Presentation
 
Harness Your Code, Unleash Your Creativity: Your Team's Pragmatic Guide to Se...
Harness Your Code, Unleash Your Creativity: Your Team's Pragmatic Guide to Se...Harness Your Code, Unleash Your Creativity: Your Team's Pragmatic Guide to Se...
Harness Your Code, Unleash Your Creativity: Your Team's Pragmatic Guide to Se...
 
Seguridad de la Información y Controles contra Hackers - Getting hacked 101 ...
Seguridad de la Información y Controles contra Hackers - Getting hacked 101  ...Seguridad de la Información y Controles contra Hackers - Getting hacked 101  ...
Seguridad de la Información y Controles contra Hackers - Getting hacked 101 ...
 
Serverless: when functions and GitOps collide
Serverless: when functions and GitOps collideServerless: when functions and GitOps collide
Serverless: when functions and GitOps collide
 
Web App Security Presentation by Ryan Holland - 05-31-2017
Web App Security Presentation by Ryan Holland - 05-31-2017Web App Security Presentation by Ryan Holland - 05-31-2017
Web App Security Presentation by Ryan Holland - 05-31-2017
 
JavaOne: Efficiently building and deploying microservices
JavaOne: Efficiently building and deploying microservicesJavaOne: Efficiently building and deploying microservices
JavaOne: Efficiently building and deploying microservices
 
Beyond DevOps: How Netflix Bridges the Gap?
Beyond DevOps: How Netflix Bridges the Gap?Beyond DevOps: How Netflix Bridges the Gap?
Beyond DevOps: How Netflix Bridges the Gap?
 
SharePoint, Nintex and DocuSign - Putting it all together
SharePoint, Nintex and DocuSign - Putting it all together SharePoint, Nintex and DocuSign - Putting it all together
SharePoint, Nintex and DocuSign - Putting it all together
 
Office 365 Disruption - Metalogix Roadshow - 20th October 2016
Office 365 Disruption - Metalogix Roadshow - 20th October 2016Office 365 Disruption - Metalogix Roadshow - 20th October 2016
Office 365 Disruption - Metalogix Roadshow - 20th October 2016
 
Choosing Javascript Libraries to Adopt for Development
Choosing Javascript Libraries to Adopt for DevelopmentChoosing Javascript Libraries to Adopt for Development
Choosing Javascript Libraries to Adopt for Development
 
From Monoliths to Services: Paying Your Technical Debt
From Monoliths to Services: Paying Your Technical DebtFrom Monoliths to Services: Paying Your Technical Debt
From Monoliths to Services: Paying Your Technical Debt
 
Application Delivery Patterns for Developers - Technical 401
Application Delivery Patterns for Developers - Technical 401Application Delivery Patterns for Developers - Technical 401
Application Delivery Patterns for Developers - Technical 401
 
Continuous integration using Jenkins and Sonar
Continuous integration using Jenkins and SonarContinuous integration using Jenkins and Sonar
Continuous integration using Jenkins and Sonar
 
RA21 Charleston Library Conference Presentation
RA21 Charleston Library Conference Presentation RA21 Charleston Library Conference Presentation
RA21 Charleston Library Conference Presentation
 
4+Year_Exp_Resume Linux_Admin, Linux_engineer
4+Year_Exp_Resume Linux_Admin, Linux_engineer4+Year_Exp_Resume Linux_Admin, Linux_engineer
4+Year_Exp_Resume Linux_Admin, Linux_engineer
 

Recently uploaded

E-commerce Application Development Company.pdf
E-commerce Application Development Company.pdfE-commerce Application Development Company.pdf
E-commerce Application Development Company.pdf
Hornet Dynamics
 
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket ManagementUtilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate
 
GraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph TechnologyGraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph Technology
Neo4j
 
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxTop Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
rickgrimesss22
 
Enterprise Resource Planning System in Telangana
Enterprise Resource Planning System in TelanganaEnterprise Resource Planning System in Telangana
Enterprise Resource Planning System in Telangana
NYGGS Automation Suite
 
Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604
Fermin Galan
 
DDS-Security 1.2 - What's New? Stronger security for long-running systems
DDS-Security 1.2 - What's New? Stronger security for long-running systemsDDS-Security 1.2 - What's New? Stronger security for long-running systems
DDS-Security 1.2 - What's New? Stronger security for long-running systems
Gerardo Pardo-Castellote
 
Why Mobile App Regression Testing is Critical for Sustained Success_ A Detail...
Why Mobile App Regression Testing is Critical for Sustained Success_ A Detail...Why Mobile App Regression Testing is Critical for Sustained Success_ A Detail...
Why Mobile App Regression Testing is Critical for Sustained Success_ A Detail...
kalichargn70th171
 
Using Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional SafetyUsing Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional Safety
Ayan Halder
 
Hand Rolled Applicative User Validation Code Kata
Hand Rolled Applicative User ValidationCode KataHand Rolled Applicative User ValidationCode Kata
Hand Rolled Applicative User Validation Code Kata
Philip Schwarz
 
Energy consumption of Database Management - Florina Jonuzi
Energy consumption of Database Management - Florina JonuziEnergy consumption of Database Management - Florina Jonuzi
Energy consumption of Database Management - Florina Jonuzi
Green Software Development
 
LORRAINE ANDREI_LEQUIGAN_HOW TO USE WHATSAPP.pptx
LORRAINE ANDREI_LEQUIGAN_HOW TO USE WHATSAPP.pptxLORRAINE ANDREI_LEQUIGAN_HOW TO USE WHATSAPP.pptx
LORRAINE ANDREI_LEQUIGAN_HOW TO USE WHATSAPP.pptx
lorraineandreiamcidl
 
Mobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona InfotechMobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona Infotech
Drona Infotech
 
A Study of Variable-Role-based Feature Enrichment in Neural Models of Code
A Study of Variable-Role-based Feature Enrichment in Neural Models of CodeA Study of Variable-Role-based Feature Enrichment in Neural Models of Code
A Study of Variable-Role-based Feature Enrichment in Neural Models of Code
Aftab Hussain
 
Graspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code AnalysisGraspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code Analysis
Aftab Hussain
 
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit ParisNeo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j
 
Empowering Growth with Best Software Development Company in Noida - Deuglo
Empowering Growth with Best Software  Development Company in Noida - DeugloEmpowering Growth with Best Software  Development Company in Noida - Deuglo
Empowering Growth with Best Software Development Company in Noida - Deuglo
Deuglo Infosystem Pvt Ltd
 
Revolutionizing Visual Effects Mastering AI Face Swaps.pdf
Revolutionizing Visual Effects Mastering AI Face Swaps.pdfRevolutionizing Visual Effects Mastering AI Face Swaps.pdf
Revolutionizing Visual Effects Mastering AI Face Swaps.pdf
Undress Baby
 
Fundamentals of Programming and Language Processors
Fundamentals of Programming and Language ProcessorsFundamentals of Programming and Language Processors
Fundamentals of Programming and Language Processors
Rakesh Kumar R
 
Webinar On-Demand: Using Flutter for Embedded
Webinar On-Demand: Using Flutter for EmbeddedWebinar On-Demand: Using Flutter for Embedded
Webinar On-Demand: Using Flutter for Embedded
ICS
 

Recently uploaded (20)

E-commerce Application Development Company.pdf
E-commerce Application Development Company.pdfE-commerce Application Development Company.pdf
E-commerce Application Development Company.pdf
 
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket ManagementUtilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
 
GraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph TechnologyGraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph Technology
 
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxTop Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
 
Enterprise Resource Planning System in Telangana
Enterprise Resource Planning System in TelanganaEnterprise Resource Planning System in Telangana
Enterprise Resource Planning System in Telangana
 
Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604
 
DDS-Security 1.2 - What's New? Stronger security for long-running systems
DDS-Security 1.2 - What's New? Stronger security for long-running systemsDDS-Security 1.2 - What's New? Stronger security for long-running systems
DDS-Security 1.2 - What's New? Stronger security for long-running systems
 
Why Mobile App Regression Testing is Critical for Sustained Success_ A Detail...
Why Mobile App Regression Testing is Critical for Sustained Success_ A Detail...Why Mobile App Regression Testing is Critical for Sustained Success_ A Detail...
Why Mobile App Regression Testing is Critical for Sustained Success_ A Detail...
 
Using Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional SafetyUsing Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional Safety
 
Hand Rolled Applicative User Validation Code Kata
Hand Rolled Applicative User ValidationCode KataHand Rolled Applicative User ValidationCode Kata
Hand Rolled Applicative User Validation Code Kata
 
Energy consumption of Database Management - Florina Jonuzi
Energy consumption of Database Management - Florina JonuziEnergy consumption of Database Management - Florina Jonuzi
Energy consumption of Database Management - Florina Jonuzi
 
LORRAINE ANDREI_LEQUIGAN_HOW TO USE WHATSAPP.pptx
LORRAINE ANDREI_LEQUIGAN_HOW TO USE WHATSAPP.pptxLORRAINE ANDREI_LEQUIGAN_HOW TO USE WHATSAPP.pptx
LORRAINE ANDREI_LEQUIGAN_HOW TO USE WHATSAPP.pptx
 
Mobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona InfotechMobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona Infotech
 
A Study of Variable-Role-based Feature Enrichment in Neural Models of Code
A Study of Variable-Role-based Feature Enrichment in Neural Models of CodeA Study of Variable-Role-based Feature Enrichment in Neural Models of Code
A Study of Variable-Role-based Feature Enrichment in Neural Models of Code
 
Graspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code AnalysisGraspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code Analysis
 
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit ParisNeo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
 
Empowering Growth with Best Software Development Company in Noida - Deuglo
Empowering Growth with Best Software  Development Company in Noida - DeugloEmpowering Growth with Best Software  Development Company in Noida - Deuglo
Empowering Growth with Best Software Development Company in Noida - Deuglo
 
Revolutionizing Visual Effects Mastering AI Face Swaps.pdf
Revolutionizing Visual Effects Mastering AI Face Swaps.pdfRevolutionizing Visual Effects Mastering AI Face Swaps.pdf
Revolutionizing Visual Effects Mastering AI Face Swaps.pdf
 
Fundamentals of Programming and Language Processors
Fundamentals of Programming and Language ProcessorsFundamentals of Programming and Language Processors
Fundamentals of Programming and Language Processors
 
Webinar On-Demand: Using Flutter for Embedded
Webinar On-Demand: Using Flutter for EmbeddedWebinar On-Demand: Using Flutter for Embedded
Webinar On-Demand: Using Flutter for Embedded
 

Making Programs Talk

  • 1. MAKING PROGRAMS TALK MICHAEL F. COLLINS, III DESERT CODE CAMP OCTOBER 18, 2014
  • 2. ABOUT ME • PRODUCT ARCHITECT/LEAD DEVELOPER FOR NEURON ESB, A MESSAGING MIDDLEWARE PRODUCT • 20+ YEAR CAREER (1994-2014) • STUDIED COMPUTER ENGINEERING AT CSU SACRAMENTO (GO HORNETS!) • CURRENTLY WORK FOR NEUDESIC (6+ YEARS); PRIOR EMPLOYERS INCLUDE SOGETI USA, JDA SOFTWARE, KAISER IT, NONSTOP SOLUTIONS, PEOPLESOFT, AND OTHERS • DEVELOP FOR WINDOWS, LINUX, MAC OSX, IOS, ANDROID, AND OTHER PLATFORMS • FAVORITE LANGUAGES: C#, C++, JAVA, RUBY, PYTHON, GO, ERLANG
  • 3. CONTACT ME • EMAIL: • MICHAEL.COLLINS@NAKEDCODERS.BIZ • MICHAEL.COLLINS@NEUDESIC.COM • TWITTER: @MFCOLLINS3 • SKYPE: MFCOLLINS3 • LINKED IN: HTTP://WWW.LINKEDIN.COM/IN/MICHAELFCOLLINS3/
  • 4. WHY ARE WE HERE? • HOW DO TWO OR MORE PROGRAMS TALK? • HOW CAN PROGRAMS COLLABORATE TO GET WORK DONE? • WHAT STRATEGIES EXIST FOR PROGRAM COLLABORATION? • WHAT ARE THE PITFALLS OF MULTI-PROGRAM DEVELOPMENT?
  • 5. PARENT-CHILD PROCESSES • PARENT PROCESS “SPAWNS” A CHILD PROCESS • “STANDARD I/O STREAMS” ARE USED TO CONTROL AND COLLECT FEEDBACK: • 1 INPUT STREAM (STDIN) • 2 OUTPUT STREAMS (STDOUT, STDERR) Parent Child
  • 6. PARENT-CHILD PROCESSES • PARENT SENDS A COMMAND TO THE CHILD USING STDIN • CHILD SENDS A RESPONSE BACK TO THE PARENT USING STDOUT • CHILD CAN OUTPUT DIAGNOSTIC INFORMATION (LOG DATA; DEBUG MESSAGES) USING STDERR Parent Child
  • 7. PARENT-CHILD PROCESSES • SINGLE RESPONSIBILITY PRINCIPAL • A PROGRAM SHOULD HAVE ONE REASON TO CHANGE • DO ONE THING AND DO IT WELL • GUI FOR COMMAND-LINE INTERFACE (CLI) • PRESENT A GUI OVER POWERSHELL SCRIPTS OR COMMAND-LINE PROGRAMS • USE A TEXT PROTOCOL • EASY TO DEBUG FROM THE COMMAND LINE • CAN BE SCRIPTED OR AUTOMATED FOR TESTING
  • 10. DISTRIBUTED PROCESSES • SOAP • REST/HTTP • PROTOCOL BUFFERS • APACHE THRIFT • SOCKETS Client Server
  • 11. DISTRIBUTED PROCESS PROTOCOLS SOAP XML-BASED PROTOCOL PROVEN TECHNOLOGY GREAT .NET SUPPORT (WCF) STANDARDS FOR SECURITY, RELIABILITY, DISCOVERY, METADATA LIMITED SUPPORT FOR OTHER PLATFORMS/LANGUAGES REST HTTP-BASED LOW BARRIER TO ENTRY HIGHLY PORTABLE BETWEEN PLATFORMS AND LANGUAGES MOST LANGUAGES HAVE BASIC HTTP SUPPORT STABLE SECURITY STANDARDS (HTTPS, OAUTH) THRIFT HIGHLY PORTABLE BETWEEN PLATFORMS AND LANGUAGES STANDARD FOR METADATA API-BASED SECURITY THROUGH SSL
  • 12. DISTRIBUTED PROCESSES • USE THE BEST PROTOCOL FOR YOUR PROJECT • DO YOU NEED ADVANCED SECURITY, DISCOVERABILITY, DISTRIBUTED TRANSACTIONS, RELIABILITY, AND YOU’RE ON .NET ONLY? • USE WCF AND SOAP • DO YOU NEED PORTABILITY AND THE ABILITY FOR MULTIPLE TECHNOLOGIES TO INTEGRATE? • USE REST OR THRIFT • ARE YOU EXPOSING A PUBLIC API OVER THE INTERNET? • USE REST • ARE YOUR SERVICES FOR AN INTERNAL INTERNET? • USE THRIFT
  • 14. ASYNCHRONOUS MESSAGING Broker Participant Participant Participant
  • 15. ASYNCHRONOUS MESSAGING • COMMUNICATION IS HANDLED VIA ONE-WAY MESSAGES SENT BETWEEN PARTICIPANTS • A BROKER PROVIDES SERVICES SUCH AS A MESSAGE QUEUE OR PUBLISH-SUBSCRIBE ARCHITECTURE TO DELIVER MESSAGES TO RECEIVERS Broker Participa nt Participa nt Participa nt
  • 16. ASYNCHRONOUS MESSAGING • POINT-TO-POINT: DELIVERED AT MOST ONCE • PUBLISH-SUBSCRIBE: DELIVERED TO ALL SUBSCRIBERS Broker Participa nt Participa nt Participa nt
  • 17. ASYNCHRONOUS MESSAGING • MESSAGES MAY BE PERSISTED BEFORE BEING DELIVERED • SOME MESSAGES CAN BE PROCESSED IN A TRANSACTION • RELIABLE MESSAGING IF A PARTICIPANT IS UNAVAILABLE Broker Participa nt Participa nt Participa nt
  • 18. ASYNCHRONOUS MESSAGING • POISON MESSAGE QUEUE: MESSAGES THAT CAUSE FAILURES • DEAD LETTER QUEUE: MESSAGES THAT EXPIRE BEFORE BEING DELIVERED • RELIABLE == NO MESSAGE LOSS! • GUARANTEED == MESSAGE WILL BE DELIVERED, OR YOU WILL KNOW THAT IT WAS NOT DELIVERED Broker Participa nt Participa nt Participa nt
  • 19. ASYNCHRONOUS MESSAGING • MSMQ • MQ SERIES • ACTIVE MQ • RABBIT MQ • ZEROMQ Broker Participa nt Participa nt Participa nt
  • 20. ASYNCHRONOUS MESSAGING • PATIENCE IS YOUR FRIEND • TEST, TEST, TEST • CAPTURE POISON MESSAGES AND DEAD LETTER MESSAGES • ANYTHING YOU DO SLOWS YOUR SYSTEM DOWN • PERSISTENCE • TRANSACTIONS • GUARANTEED DELIVERY • MAXIMIZE I/O
  • 22. Q&A ASK ME ANYTHING!
  • 23. NEUDESIC IS HIRING! • ARE YOU ONE OF THE BEST SOFTWARE DEVELOPERS IN THE DESERT? IF YES, WHAT ARE YOU WAITING FOR? • NEUDESIC HIRES THE BEST-OF-THE-BEST AND IS LOOKING FOR TALENTED SOFTWARE DEVELOPERS, UX DESIGNERS, BI DEVELOPERS, QA ENGINEERS, AND PROJECT MANAGERS! • PHOENIX IS ONE OF THE BEST LOCATIONS TO WORK IN! • JOIN A GROWING COMPANY AND MAKE IT MORE SUCCESSFUL!!! • EMAIL ME YOUR RESUME TODAY: MICHAEL.COLLINS@NEUDESIC.COM
  • 24. CONTACT ME (AGAIN) • EMAIL: • MICHAEL.COLLINS@NAKEDCODERS.BIZ • MICHAEL.COLLINS@NEUDESIC.COM • TWITTER: @MFCOLLINS3 • SKYPE: MFCOLLINS3 • LINKED IN: HTTP://WWW.LINKEDIN.COM/IN/MICHAELFCOLLINS3/