SlideShare a Scribd company logo
September 11, 2014 
Contents 
1 First things first: what is Clojure? 2 
2 Clojure Syntax 4 
3 Dynamic Develoment 4 
4 Functional Programming 4 
5 Example 4 
6 Example Cont. 5 
7 Example Cont. 5 
1
8 Example Cont. 5 
9 Hosted on the JVM 5 
10 Macros in Clojure 6 
11 Clj-webdriver 6 
12 calabash-clj 6 
13 appium-clj 7 
14 Demo 8 
15 Any Questions? 9 
1 First things first: what is Clojure? 
• Invented in 2007 by 
2
Rich Hickey 
• Dynamic, functional programming language 
• Lisp for JVM 
3
2 Clojure Syntax 
3 Dynamic Develoment 
4 Functional Programming 
• Functions as first-class objects 
• Feedback loop is fast 
5 Example 
4
6 Example Cont. 
7 Example Cont. 
8 Example Cont. 
9 Hosted on the JVM 
• Designed to be hosted (JVM, V8, CLR, Python, LLVM, etc) 
• Great java library consumer 
• Java invocation syntax is clean and simple Ex.: 
5
-> (. Classname-symbol method-symbol args*) 
-> (.instanceMember Classname args*) 
10 Macros in Clojure 
• Macros gives clojure great power. 
• Difference between functions and macros 
• Writing control flow macro 
11 Clj-webdriver 
• Clojure API for selenium webdriver 
• https://github.com/semperos/clj-webdriver 
• Clojars https://clojars.org/me.kapilreddy/clj-webdriver 
• Features 
• Demo link: https://www.youtube.com/watch?v=Zje19PkLbYk&feature= 
youtu.be 
12 calabash-clj 
• Clojure API for Android 
• https://github.com/kapilreddy/calabash-clj 
6
Kapil Reddy [Helpshift] 
• Demo link: https://www.youtube.com/watch?v=NY6aQh0lf8M&feature= 
youtu.be 
13 appium-clj 
• Clojure API for appium-java-client 
• https://github.com/helpshift/appium-clj-client 
7
Mayur Jadhav 
• Demo link: https://www.youtube.com/watch?v=eGcEWKZEZ9c&feature= 
youtu.be 
14 Demo 
• Demo link: https://www.youtube.com/watch?v=mO-vAMy0Ack&feature= 
youtu.be 
8
15 Any Questions? 
9

More Related Content

What's hot

Developing Rich Internet Applications with Perl and JavaScript
Developing Rich Internet Applications with Perl and JavaScriptDeveloping Rich Internet Applications with Perl and JavaScript
Developing Rich Internet Applications with Perl and JavaScript
nohuhu
 
New thing in JDK10 even that scala-er should know
New thing in JDK10 even that scala-er should knowNew thing in JDK10 even that scala-er should know
New thing in JDK10 even that scala-er should know
なおき きしだ
 
How to Make Your Code OSGi Friendly Without Depending on OSGi - Neil Bartlett
How to Make Your Code OSGi Friendly Without Depending on OSGi - Neil BartlettHow to Make Your Code OSGi Friendly Without Depending on OSGi - Neil Bartlett
How to Make Your Code OSGi Friendly Without Depending on OSGi - Neil Bartlett
mfrancis
 

What's hot (20)

Developing Rich Internet Applications with Perl and JavaScript
Developing Rich Internet Applications with Perl and JavaScriptDeveloping Rich Internet Applications with Perl and JavaScript
Developing Rich Internet Applications with Perl and JavaScript
 
easyM2R
easyM2ReasyM2R
easyM2R
 
Rsyslog version naming (v8.6.0+)
Rsyslog version naming (v8.6.0+)Rsyslog version naming (v8.6.0+)
Rsyslog version naming (v8.6.0+)
 
Rust kafka-5-2019-unskip
Rust kafka-5-2019-unskipRust kafka-5-2019-unskip
Rust kafka-5-2019-unskip
 
Queick: A Simple Job Queue System for Python
Queick: A Simple Job Queue System for PythonQueick: A Simple Job Queue System for Python
Queick: A Simple Job Queue System for Python
 
clj http
clj httpclj http
clj http
 
Distributing OSGi
Distributing OSGiDistributing OSGi
Distributing OSGi
 
Ruby on rails
Ruby on railsRuby on rails
Ruby on rails
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
 
New thing in JDK10 even that scala-er should know
New thing in JDK10 even that scala-er should knowNew thing in JDK10 even that scala-er should know
New thing in JDK10 even that scala-er should know
 
Distributed locks in Ruby - Correctness vs Efficiency - Knapsack Pro case stu...
Distributed locks in Ruby - Correctness vs Efficiency - Knapsack Pro case stu...Distributed locks in Ruby - Correctness vs Efficiency - Knapsack Pro case stu...
Distributed locks in Ruby - Correctness vs Efficiency - Knapsack Pro case stu...
 
Javantura v4 - Java and lambdas and streams - are they better than for loops ...
Javantura v4 - Java and lambdas and streams - are they better than for loops ...Javantura v4 - Java and lambdas and streams - are they better than for loops ...
Javantura v4 - Java and lambdas and streams - are they better than for loops ...
 
Nimrod: MongoDB Shell in NodeJS (JSConfUY 2015)
Nimrod: MongoDB Shell in NodeJS (JSConfUY 2015)Nimrod: MongoDB Shell in NodeJS (JSConfUY 2015)
Nimrod: MongoDB Shell in NodeJS (JSConfUY 2015)
 
Node Architecture.pptx
Node Architecture.pptxNode Architecture.pptx
Node Architecture.pptx
 
Kubernetes CRI containerd integration by Lantao Liu (Google)
Kubernetes CRI containerd integration by Lantao Liu (Google)Kubernetes CRI containerd integration by Lantao Liu (Google)
Kubernetes CRI containerd integration by Lantao Liu (Google)
 
AWS Community Day - Bob Lee - Beware the Sandbox!
AWS Community Day  - Bob Lee - Beware the Sandbox!AWS Community Day  - Bob Lee - Beware the Sandbox!
AWS Community Day - Bob Lee - Beware the Sandbox!
 
How to Make Your Code OSGi Friendly Without Depending on OSGi - Neil Bartlett
How to Make Your Code OSGi Friendly Without Depending on OSGi - Neil BartlettHow to Make Your Code OSGi Friendly Without Depending on OSGi - Neil Bartlett
How to Make Your Code OSGi Friendly Without Depending on OSGi - Neil Bartlett
 
Ozone-Wayland Support in Chromium (GENIVI 13th All Member Meeting & AMM Open ...
Ozone-Wayland Support in Chromium (GENIVI 13th All Member Meeting & AMM Open ...Ozone-Wayland Support in Chromium (GENIVI 13th All Member Meeting & AMM Open ...
Ozone-Wayland Support in Chromium (GENIVI 13th All Member Meeting & AMM Open ...
 
jLove 2020 - Micronaut and graalvm: The power of AoT
jLove 2020 - Micronaut and graalvm: The power of AoTjLove 2020 - Micronaut and graalvm: The power of AoT
jLove 2020 - Micronaut and graalvm: The power of AoT
 
Javantura v4 - CroDuke Indy and the Kingdom of Java Skills - Branko Mihaljevi...
Javantura v4 - CroDuke Indy and the Kingdom of Java Skills - Branko Mihaljevi...Javantura v4 - CroDuke Indy and the Kingdom of Java Skills - Branko Mihaljevi...
Javantura v4 - CroDuke Indy and the Kingdom of Java Skills - Branko Mihaljevi...
 

Viewers also liked

BJP MANIFESTO IN KANNADA LOKSABHA ELECTIONS 2014
BJP MANIFESTO IN KANNADA LOKSABHA ELECTIONS 2014BJP MANIFESTO IN KANNADA LOKSABHA ELECTIONS 2014
BJP MANIFESTO IN KANNADA LOKSABHA ELECTIONS 2014
bjpkarnataka
 
RCREEE/enerMENA_Course Program_2013
RCREEE/enerMENA_Course Program_2013RCREEE/enerMENA_Course Program_2013
RCREEE/enerMENA_Course Program_2013
RCREEE
 
تلخيص مادة الإنشاءات في العمارة2
تلخيص مادة الإنشاءات في العمارة2تلخيص مادة الإنشاءات في العمارة2
تلخيص مادة الإنشاءات في العمارة2
Yasser Sarraj
 

Viewers also liked (20)

BJP MANIFESTO IN KANNADA LOKSABHA ELECTIONS 2014
BJP MANIFESTO IN KANNADA LOKSABHA ELECTIONS 2014BJP MANIFESTO IN KANNADA LOKSABHA ELECTIONS 2014
BJP MANIFESTO IN KANNADA LOKSABHA ELECTIONS 2014
 
غسالة أتوماتيك
غسالة أتوماتيكغسالة أتوماتيك
غسالة أتوماتيك
 
International Marketing
International MarketingInternational Marketing
International Marketing
 
Legal Framework for Energy Auditing in the Building Sector in Tunisia
Legal Framework for Energy Auditing in the Building Sector in Tunisia Legal Framework for Energy Auditing in the Building Sector in Tunisia
Legal Framework for Energy Auditing in the Building Sector in Tunisia
 
Energy Audit Specifications and Criteria in New Constructions in Tunisia
Energy Audit Specifications and Criteria in New Constructions in Tunisia Energy Audit Specifications and Criteria in New Constructions in Tunisia
Energy Audit Specifications and Criteria in New Constructions in Tunisia
 
09.45 ahmed al humaidan, deputy minister of labor for labor policies
09.45 ahmed al humaidan, deputy minister of labor for labor policies09.45 ahmed al humaidan, deputy minister of labor for labor policies
09.45 ahmed al humaidan, deputy minister of labor for labor policies
 
1 مصطلحات
1 مصطلحات1 مصطلحات
1 مصطلحات
 
Workshop recommendations
Workshop recommendationsWorkshop recommendations
Workshop recommendations
 
RCREEE/enerMENA_Course Program_2013
RCREEE/enerMENA_Course Program_2013RCREEE/enerMENA_Course Program_2013
RCREEE/enerMENA_Course Program_2013
 
الحوائط الحامله مهندس فادى مجدى
 الحوائط الحامله مهندس فادى مجدى الحوائط الحامله مهندس فادى مجدى
الحوائط الحامله مهندس فادى مجدى
 
Pv power plants algerian experience
Pv power plants algerian experiencePv power plants algerian experience
Pv power plants algerian experience
 
Urban heritage
Urban heritageUrban heritage
Urban heritage
 
Climatic handlings with_site .. العامل الجوي
Climatic handlings with_site .. العامل الجوي Climatic handlings with_site .. العامل الجوي
Climatic handlings with_site .. العامل الجوي
 
Earthquake Resistant designs with exp... all the things u need to know
Earthquake  Resistant designs with exp... all the things u need to knowEarthquake  Resistant designs with exp... all the things u need to know
Earthquake Resistant designs with exp... all the things u need to know
 
الطاقة الشمسية 1
الطاقة الشمسية 1الطاقة الشمسية 1
الطاقة الشمسية 1
 
تلخيص مادة الإنشاءات في العمارة2
تلخيص مادة الإنشاءات في العمارة2تلخيص مادة الإنشاءات في العمارة2
تلخيص مادة الإنشاءات في العمارة2
 
Application of Capacitors to Distribution System and Voltage Regulation
Application of Capacitors to Distribution System and Voltage RegulationApplication of Capacitors to Distribution System and Voltage Regulation
Application of Capacitors to Distribution System and Voltage Regulation
 
structure building systems
structure building systemsstructure building systems
structure building systems
 
الطاقة الشمسية
الطاقة الشمسيةالطاقة الشمسية
الطاقة الشمسية
 
الطاقة الشمسية
الطاقة الشمسيةالطاقة الشمسية
الطاقة الشمسية
 

Similar to Clojure@seleniumconf

Aleksandr Khokhlov - Do not chase the hype train. Just steal ideas
Aleksandr Khokhlov - Do not chase the hype train. Just steal ideasAleksandr Khokhlov - Do not chase the hype train. Just steal ideas
Aleksandr Khokhlov - Do not chase the hype train. Just steal ideas
OdessaJS Conf
 
jQuery 1.4-1.6 Best new features
jQuery 1.4-1.6 Best new featuresjQuery 1.4-1.6 Best new features
jQuery 1.4-1.6 Best new features
Ryan Blunden
 

Similar to Clojure@seleniumconf (20)

Applying the paradigms of core.async in Clojure and ClojureScript
Applying the paradigms of core.async in Clojure and ClojureScriptApplying the paradigms of core.async in Clojure and ClojureScript
Applying the paradigms of core.async in Clojure and ClojureScript
 
Bootstraping real world Jakarta EE/MicroProfile microservices with Maven Arch...
Bootstraping real world Jakarta EE/MicroProfile microservices with Maven Arch...Bootstraping real world Jakarta EE/MicroProfile microservices with Maven Arch...
Bootstraping real world Jakarta EE/MicroProfile microservices with Maven Arch...
 
Functional Programming in Clojure
Functional Programming in ClojureFunctional Programming in Clojure
Functional Programming in Clojure
 
Introduction to Java 7 (OSCON 2012)
Introduction to Java 7 (OSCON 2012)Introduction to Java 7 (OSCON 2012)
Introduction to Java 7 (OSCON 2012)
 
The Ideas of Clojure - Things I learn from Clojure
The Ideas of Clojure - Things I learn from ClojureThe Ideas of Clojure - Things I learn from Clojure
The Ideas of Clojure - Things I learn from Clojure
 
Taking the Long View: How the Oslo Program Reduces Technical Debt
Taking the Long View: How the Oslo Program Reduces Technical DebtTaking the Long View: How the Oslo Program Reduces Technical Debt
Taking the Long View: How the Oslo Program Reduces Technical Debt
 
Eclipse MicroProfile 과 Microservice Java framework – Helidon
Eclipse MicroProfile 과 Microservice Java framework – HelidonEclipse MicroProfile 과 Microservice Java framework – Helidon
Eclipse MicroProfile 과 Microservice Java framework – Helidon
 
Clojure Conj 2014 - Paradigms of core.async - Julian Gamble
Clojure Conj 2014 - Paradigms of core.async - Julian GambleClojure Conj 2014 - Paradigms of core.async - Julian Gamble
Clojure Conj 2014 - Paradigms of core.async - Julian Gamble
 
Introduction to CQ5
Introduction to CQ5Introduction to CQ5
Introduction to CQ5
 
Go - A Key Language in Enterprise Application Development?
Go - A Key Language in Enterprise Application Development?Go - A Key Language in Enterprise Application Development?
Go - A Key Language in Enterprise Application Development?
 
Java training in ahmedabad
Java training in ahmedabadJava training in ahmedabad
Java training in ahmedabad
 
The JAVA Training Workshop in Ahmedabad
The JAVA Training Workshop in AhmedabadThe JAVA Training Workshop in Ahmedabad
The JAVA Training Workshop in Ahmedabad
 
Clojure in real life 17.10.2014
Clojure in real life 17.10.2014Clojure in real life 17.10.2014
Clojure in real life 17.10.2014
 
Clojurescript slides
Clojurescript slidesClojurescript slides
Clojurescript slides
 
Modern ClojureScript
Modern ClojureScriptModern ClojureScript
Modern ClojureScript
 
Aleksandr Khokhlov - Do not chase the hype train. Just steal ideas
Aleksandr Khokhlov - Do not chase the hype train. Just steal ideasAleksandr Khokhlov - Do not chase the hype train. Just steal ideas
Aleksandr Khokhlov - Do not chase the hype train. Just steal ideas
 
Benefits of Reactive Programming with Reactor and Spring Boot 2 - Violeta Geo...
Benefits of Reactive Programming with Reactor and Spring Boot 2 - Violeta Geo...Benefits of Reactive Programming with Reactor and Spring Boot 2 - Violeta Geo...
Benefits of Reactive Programming with Reactor and Spring Boot 2 - Violeta Geo...
 
Generalization in Auto-Testing. How we put what we had into new Technological...
Generalization in Auto-Testing. How we put what we had into new Technological...Generalization in Auto-Testing. How we put what we had into new Technological...
Generalization in Auto-Testing. How we put what we had into new Technological...
 
Modern javascript
Modern javascriptModern javascript
Modern javascript
 
jQuery 1.4-1.6 Best new features
jQuery 1.4-1.6 Best new featuresjQuery 1.4-1.6 Best new features
jQuery 1.4-1.6 Best new features
 

Recently uploaded

Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
Safe Software
 

Recently uploaded (20)

UiPath Test Automation using UiPath Test Suite series, part 2
UiPath Test Automation using UiPath Test Suite series, part 2UiPath Test Automation using UiPath Test Suite series, part 2
UiPath Test Automation using UiPath Test Suite series, part 2
 
UiPath Test Automation using UiPath Test Suite series, part 1
UiPath Test Automation using UiPath Test Suite series, part 1UiPath Test Automation using UiPath Test Suite series, part 1
UiPath Test Automation using UiPath Test Suite series, part 1
 
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptxIOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
 
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptxUnpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
 
НАДІЯ ФЕДЮШКО БАЦ «Професійне зростання QA спеціаліста»
НАДІЯ ФЕДЮШКО БАЦ  «Професійне зростання QA спеціаліста»НАДІЯ ФЕДЮШКО БАЦ  «Професійне зростання QA спеціаліста»
НАДІЯ ФЕДЮШКО БАЦ «Професійне зростання QA спеціаліста»
 
"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi
 
IoT Analytics Company Presentation May 2024
IoT Analytics Company Presentation May 2024IoT Analytics Company Presentation May 2024
IoT Analytics Company Presentation May 2024
 
In-Depth Performance Testing Guide for IT Professionals
In-Depth Performance Testing Guide for IT ProfessionalsIn-Depth Performance Testing Guide for IT Professionals
In-Depth Performance Testing Guide for IT Professionals
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
 
Exploring UiPath Orchestrator API: updates and limits in 2024 🚀
Exploring UiPath Orchestrator API: updates and limits in 2024 🚀Exploring UiPath Orchestrator API: updates and limits in 2024 🚀
Exploring UiPath Orchestrator API: updates and limits in 2024 🚀
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
 

Clojure@seleniumconf

  • 1. September 11, 2014 Contents 1 First things first: what is Clojure? 2 2 Clojure Syntax 4 3 Dynamic Develoment 4 4 Functional Programming 4 5 Example 4 6 Example Cont. 5 7 Example Cont. 5 1
  • 2. 8 Example Cont. 5 9 Hosted on the JVM 5 10 Macros in Clojure 6 11 Clj-webdriver 6 12 calabash-clj 6 13 appium-clj 7 14 Demo 8 15 Any Questions? 9 1 First things first: what is Clojure? • Invented in 2007 by 2
  • 3. Rich Hickey • Dynamic, functional programming language • Lisp for JVM 3
  • 4. 2 Clojure Syntax 3 Dynamic Develoment 4 Functional Programming • Functions as first-class objects • Feedback loop is fast 5 Example 4
  • 5. 6 Example Cont. 7 Example Cont. 8 Example Cont. 9 Hosted on the JVM • Designed to be hosted (JVM, V8, CLR, Python, LLVM, etc) • Great java library consumer • Java invocation syntax is clean and simple Ex.: 5
  • 6. -> (. Classname-symbol method-symbol args*) -> (.instanceMember Classname args*) 10 Macros in Clojure • Macros gives clojure great power. • Difference between functions and macros • Writing control flow macro 11 Clj-webdriver • Clojure API for selenium webdriver • https://github.com/semperos/clj-webdriver • Clojars https://clojars.org/me.kapilreddy/clj-webdriver • Features • Demo link: https://www.youtube.com/watch?v=Zje19PkLbYk&feature= youtu.be 12 calabash-clj • Clojure API for Android • https://github.com/kapilreddy/calabash-clj 6
  • 7. Kapil Reddy [Helpshift] • Demo link: https://www.youtube.com/watch?v=NY6aQh0lf8M&feature= youtu.be 13 appium-clj • Clojure API for appium-java-client • https://github.com/helpshift/appium-clj-client 7
  • 8. Mayur Jadhav • Demo link: https://www.youtube.com/watch?v=eGcEWKZEZ9c&feature= youtu.be 14 Demo • Demo link: https://www.youtube.com/watch?v=mO-vAMy0Ack&feature= youtu.be 8