SlideShare ist ein Scribd-Unternehmen logo
1 von 37
Downloaden Sie, um offline zu lesen
State of Counterclockwise:
Past, Present and Future
http://bit.ly/counterclockwise
by Laurent Petit
@laurentpetit
first.clojure-conj.org - 2010/10/22
Agenda
● Presentations / Intro
● History / Figures
● Installation
● Features / quick demos
● Future
● Credits
● Q & A
Presentations 1/2
● Me
● Laurent Petit, french
● Fond of Clojure since Q2 2008
● Involved in Counterclockwise since Q4 2008
Presentations 2/2
● Eclipse
● multi-language software development environment
● Primary target language/platform: Java/JVM
● Eclipse Foundation claims “millions” of users,
worldwide
● Counterclockwise
● An Eclipse extension for managing Clojure-based
projects
● License : EPL
● “ccw” for short
Intro 1/2
● Counterclockwise is an Eclipse plugin helping
developers write Clojure code
● Why an Eclipse plugin ?
● Targetting a large base of java developers
● Driving forces : writing Eclipse plugins both at work
& at home !
● Want Clojure for my next paid java project !
Intro 2/2
● Installing Counterclockwise and starting
testing/developing in clojure is really just a
matter of minutes!
Intro 2/2
● Installing Counterclockwise and starting
testing/developing in clojure is really just a
matter of minutes!
● Ease of installation = maximize a good first
impression with the language (like it or not !)
Intro 2/2
● Installing Counterclockwise and starting
testing/developing in clojure is really just a
matter of minutes!
● Ease of installation = maximize a good first
impression with the language (like it or not !)
● No-brainer integration into Eclipse java users'
toolset
– Parens will already feel UFOs to them, let the IDE get out
of their way and help them concentrate on the concepts
Intro 2/2
● Installing Counterclockwise and starting
testing/developing in clojure is really just a matter of
minutes!
● Ease of installation = maximize a good first impression
with the language (like it or not !)
● No-brainer integration into Eclipse java users' toolset
– Parens will feel alien enough to new users, let the IDE get out
of their way and help them concentrate on the concepts
● But should provide same interactive “dynamic”
experience
Agenda
● Presentations / Intro
● History / Figures
● Installation
● Features / quick demos
● Future
● Credits
● Q & A
History
● Started in 2008
● By Casey Marshall, code name “clojure-dev”
● Joined on October 2008
● Casey left the team early 2009 ...
● … got the “de-facto” leadership since then
Figures (google analytics)
Homepage – 2000 views per month
● Since March 1, 2010:
● ~ 4000 different visitors
– 800-900 average different visitors per month
● ~2000 homepage views per month
● ~2000 documentation page views per month
Agenda
● Presentations / Intro
● History / Figures
● Installation
● Features / quick demos
● Future
● Credits
● Q & A
Installation
● Super easy
● Use Eclipse 3.6 Helios' Market place
– Menu Help > Eclipse Market Place
– search for “clojure” & click
● Super fast
● 6 Mb download
Agenda
● Presentations / Intro
● History / Figures
● Installation
● Features / quick demos
● Future
● Credits
● Q & A
Editor features 1/2
● Syntactic coloration (stable)
● Strictly speaking, “token-based” coloration
● “rainbow” parens (and higlight, and jump to/from)
● Around the corner: true syntactic coloration (full use of parser's info)
● Structural edition commands (stable)
● based on emac's paredit.el (~ 80% commands currently ported)
● Totally reusable outside Eclipse context (pure clojure)
● Jump to definition (stable)
● Only to clojure global vars for now on ...
● Auto-indentation (stable)
● Predictable behaviour with & without support of dynamic environment
● But judged “too simple” by increasing number of users ...
Editor features 2/2
● Code completion (incomplete)
● Clojure top level vars
● Java
– Clojure is “backward”
– full search in the project's classpath)
– → slow !
● REPL interaction commands (stable)
● Documentation hover (around the corner)
● Code Outline (unstable)
● Missing: formatting, macro-expansion
Editor demo
● Structural edition modes
● Default mode – does not break habit
● Strict mode – mixed free/guided mode
● Underused structural edition commands
● Both modes
– Structure-based selection
– Raise over parent
– Split / Join
● Strict mode only
– Easy wrapping
Project management feature
● Compliant with Eclipse's notion of project
● Project “natures” : composable with JDT nature,
etc.
● “Running the project” uses “enhanced” java-
nature-based “launch configuration”
● Enabled to quickly provide out-of-the-box
interactivity
Interactive Dev feature1/2
● REPL' state of the art (v0.0.64)
● Based on the Java nature of the project
– Uses the project's classpath
– Same configuration tabs as the java's
● But limited in scope ...
– Forces the project to start with a stdin/stdout-based REPL class
(e.g. clojure.main or clojure.contrib.repl-ln)
– Not possible to work with web projects (WTP), GWT projects,
Eclipse projects (PDE)
● … and in features
– Plain text edition (no colors, no user assistance)
– No history
Interactive Dev feature 2/2
● Brand new REPL around the corner !
● Based on cemerick's nREPL client/server REPL library
● And on cemerick's rework of the Graphical REPLView !
● Connection to any JVM running a nREPL client
● No more need for special “launch configuration”
● => composable with projects of any kind (Web WTP, GWT, AppEngine,
etc.)
● Rich set of feature for the REPL View
● Shares source code editor featureset: colors, structural edition, code
completion (wip), navigation commands, etc.
● Colorized logs
● Recall previously entered commands (wip)
● Multiline (with auto-indentation!) command area
Interactive Dev demo
● “launch” your project
● auto-reload-on-save enabled or disabled
– Agile feature design at work ! :-)
● Exclusivity: new REPL View !
● Same feature set as editor
● Receive code from the editor
● Namespace browser
● Embedded search engine
● Click to jump to definition
Debugger feature
● Features
● Place breakpoints in clojure code
● Leverage the classic Eclipse integrated java
debugger
● Still a little bit unstable
● Future work
● Does not (yet) filter frames related to the internals
of clojure (clojure.lang.*)
● Integration with George Jahad's CDT debugger
Agenda
● Presentations / Intro
● History / Figures
● Installation
● Features / quick demos
● Future
● Credits
● Q & A
Future – features around the corner
● Editor
● Jump to definition (java)
● Documentation hover (clojure & java)
● True syntax-based coloration (locals, etc.)
● Project management
● More “orthogonality” with underlying “project nature” (pure
java, GWT, WTP, AppEngine, Eclipse RCP, etc.)
● REPL
● Port features of the editor
● And then … towards “graphical REPL” (ability to display
“binary” return values as images, HTML, charts, etc.)
Future – other features
● Refactoring features
● Integration of tcrayford's clojure-refactoring project
● Hopefully bidirectional java ↔ clojure
● Debugging features
● Integration with George Jahad's Clojure Debugging
Toolkit (CDT)
Future – “dream-about” features
● More “warnings” than what the compiler has to offer
● Help enforcing conventions
● Help detect potential bugs (more than one statement
inside dosync, local same name as global, etc., etc.)
● → No hurry, 'cause “cinc” may be a game changer ...
● “AI-like” User suggestions
● Analyse user's habits through heuristics (and occurrence)
● Non-invasive (hard part !) suggestions
Future - Miscellaneous
● Introduction of Contributor Agreement
● Better juridical protection for project's code
● Better protection of sponsor's rights on project “as a whole”
● copy&paste of Clojure's one, just names changed
● Switch to “semantic versioning”
● “embedded” REPL for ccw own's development
● Open the door to more contributors
● devs:
– mvn based build process
– Continuous integration
● users:
– Update Sites for “beta” versions as well as “stable” version
– Opening the plugin to user contributions (in clojure, of course)
Agenda
● Presentations / Intro
● History / Figures
● Installation
● Features / quick demos
● Future
● Credits
● Q & A
Share, ...
● Past & current contributors
● Casey Marshall (first versions of ccw)
● Stephan Müehlstraßer (preference pages, online
help, labrepl support)
● Christophe Grand (Debug breakpoints)
● Manuel Woelker (Source code outline)
● Miaubiz, clooney (editor commands:navigate to
definition, etc.)
● Nicolas Lambert (Outline commands)
● Chas Emerick (integration with nREPL, REPLView)
… reuse,
● vimClojure (@kotarak): code completion
● parsley (@cgrand): source code parser
● clojure.osgi (@aav): clojure+OSGi love story
● nREPL (@cemerick): REPL client/server library
… give back.
● Structural Editor
● paredit.clj (github)
● Clojure Grammar
● ccw.parsers.clojure (github, wip, no rush please)
Where to find it
● Google code home page
● http://code.google.com/p/counterclockwise/
● Google groups
● Users : http://groups.google.com/group/clojuredev-
users (66 members)
● Devs :
http://groups.google.com/group/clojuredev-devel
(37 members)
Agenda
● Presentations / Intro
● History / Figures
● Installation
● Features / quick demos
● Future
● Credits
● Q & A
Thanks for attending!
(can you wake up your neighbor pliz ?)

Weitere ähnliche Inhalte

Was ist angesagt?

How to Make Your Qt App Look Native
How to Make Your Qt App Look NativeHow to Make Your Qt App Look Native
How to Make Your Qt App Look Nativeaccount inactive
 
JVM Languages Support in Eclipse - Monkey-patching the JDT for fun and profit?
JVM Languages Support in Eclipse - Monkey-patching the JDT for fun and profit?JVM Languages Support in Eclipse - Monkey-patching the JDT for fun and profit?
JVM Languages Support in Eclipse - Monkey-patching the JDT for fun and profit?Miles Sabin
 
Case Study: Using Qt to Develop Advanced GUIs & Advanced Visualization Software
Case Study: Using Qt to Develop Advanced GUIs & Advanced Visualization SoftwareCase Study: Using Qt to Develop Advanced GUIs & Advanced Visualization Software
Case Study: Using Qt to Develop Advanced GUIs & Advanced Visualization Softwareaccount inactive
 
Qt for beginners part 4 doing more
Qt for beginners part 4   doing moreQt for beginners part 4   doing more
Qt for beginners part 4 doing moreICS
 
LJCConf 2013 "Contributing to OpenJDK for the GitHub Generation"
LJCConf 2013 "Contributing to OpenJDK for the GitHub Generation"LJCConf 2013 "Contributing to OpenJDK for the GitHub Generation"
LJCConf 2013 "Contributing to OpenJDK for the GitHub Generation"Daniel Bryant
 
Ljc conf open jdk betterrev bof
Ljc conf open jdk betterrev bofLjc conf open jdk betterrev bof
Ljc conf open jdk betterrev bofMani Sarkar
 
Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...
Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...
Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...mfrancis
 
Android Modularization
Android ModularizationAndroid Modularization
Android ModularizationYoung-Hyuk Yoo
 
Java SE 9 modules (JPMS) - an introduction
Java SE 9 modules (JPMS) - an introductionJava SE 9 modules (JPMS) - an introduction
Java SE 9 modules (JPMS) - an introductionStephen Colebourne
 
Javascript as a target language - GWT KickOff - Part 2/2
Javascript as a target language - GWT KickOff - Part 2/2Javascript as a target language - GWT KickOff - Part 2/2
Javascript as a target language - GWT KickOff - Part 2/2JooinK
 
Scala Support in Eclipse - Monkey-patching the JDT for fun and profit?
Scala Support in Eclipse - Monkey-patching the JDT for fun and profit?Scala Support in Eclipse - Monkey-patching the JDT for fun and profit?
Scala Support in Eclipse - Monkey-patching the JDT for fun and profit?Miles Sabin
 
Building Rich Internet Applications Using Google Web Toolkit
Building Rich Internet Applications Using  Google Web ToolkitBuilding Rich Internet Applications Using  Google Web Toolkit
Building Rich Internet Applications Using Google Web Toolkitrajivmordani
 
Geb+spock: let your functional tests live long and prosper
Geb+spock: let your functional tests live long and prosperGeb+spock: let your functional tests live long and prosper
Geb+spock: let your functional tests live long and prosperEsther Lozano
 
Programming iOS in Lua - A bridge story
Programming iOS in Lua - A bridge storyProgramming iOS in Lua - A bridge story
Programming iOS in Lua - A bridge storyjljumpertz
 
20091226 名古屋SGGAE/J勉強会発表資料『Lift on GAE/J』
20091226 名古屋SGGAE/J勉強会発表資料『Lift on GAE/J』20091226 名古屋SGGAE/J勉強会発表資料『Lift on GAE/J』
20091226 名古屋SGGAE/J勉強会発表資料『Lift on GAE/J』Ryo RKTM
 
Introduction to User Experience Design for Engineers
Introduction to User Experience Design for EngineersIntroduction to User Experience Design for Engineers
Introduction to User Experience Design for EngineersICS
 

Was ist angesagt? (20)

How to Make Your Qt App Look Native
How to Make Your Qt App Look NativeHow to Make Your Qt App Look Native
How to Make Your Qt App Look Native
 
JVM Languages Support in Eclipse - Monkey-patching the JDT for fun and profit?
JVM Languages Support in Eclipse - Monkey-patching the JDT for fun and profit?JVM Languages Support in Eclipse - Monkey-patching the JDT for fun and profit?
JVM Languages Support in Eclipse - Monkey-patching the JDT for fun and profit?
 
Case Study: Using Qt to Develop Advanced GUIs & Advanced Visualization Software
Case Study: Using Qt to Develop Advanced GUIs & Advanced Visualization SoftwareCase Study: Using Qt to Develop Advanced GUIs & Advanced Visualization Software
Case Study: Using Qt to Develop Advanced GUIs & Advanced Visualization Software
 
Qt for beginners part 4 doing more
Qt for beginners part 4   doing moreQt for beginners part 4   doing more
Qt for beginners part 4 doing more
 
LJCConf 2013 "Contributing to OpenJDK for the GitHub Generation"
LJCConf 2013 "Contributing to OpenJDK for the GitHub Generation"LJCConf 2013 "Contributing to OpenJDK for the GitHub Generation"
LJCConf 2013 "Contributing to OpenJDK for the GitHub Generation"
 
Ljc conf open jdk betterrev bof
Ljc conf open jdk betterrev bofLjc conf open jdk betterrev bof
Ljc conf open jdk betterrev bof
 
Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...
Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...
Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...
 
Android Modularization
Android ModularizationAndroid Modularization
Android Modularization
 
Java SE 9 modules (JPMS) - an introduction
Java SE 9 modules (JPMS) - an introductionJava SE 9 modules (JPMS) - an introduction
Java SE 9 modules (JPMS) - an introduction
 
Javascript as a target language - GWT KickOff - Part 2/2
Javascript as a target language - GWT KickOff - Part 2/2Javascript as a target language - GWT KickOff - Part 2/2
Javascript as a target language - GWT KickOff - Part 2/2
 
Scala Support in Eclipse - Monkey-patching the JDT for fun and profit?
Scala Support in Eclipse - Monkey-patching the JDT for fun and profit?Scala Support in Eclipse - Monkey-patching the JDT for fun and profit?
Scala Support in Eclipse - Monkey-patching the JDT for fun and profit?
 
Gwt Presentation
Gwt PresentationGwt Presentation
Gwt Presentation
 
Building Rich Internet Applications Using Google Web Toolkit
Building Rich Internet Applications Using  Google Web ToolkitBuilding Rich Internet Applications Using  Google Web Toolkit
Building Rich Internet Applications Using Google Web Toolkit
 
Gwt ppt
Gwt pptGwt ppt
Gwt ppt
 
GWT- Google Web Toolkit
GWT- Google Web ToolkitGWT- Google Web Toolkit
GWT- Google Web Toolkit
 
Using Features
Using FeaturesUsing Features
Using Features
 
Geb+spock: let your functional tests live long and prosper
Geb+spock: let your functional tests live long and prosperGeb+spock: let your functional tests live long and prosper
Geb+spock: let your functional tests live long and prosper
 
Programming iOS in Lua - A bridge story
Programming iOS in Lua - A bridge storyProgramming iOS in Lua - A bridge story
Programming iOS in Lua - A bridge story
 
20091226 名古屋SGGAE/J勉強会発表資料『Lift on GAE/J』
20091226 名古屋SGGAE/J勉強会発表資料『Lift on GAE/J』20091226 名古屋SGGAE/J勉強会発表資料『Lift on GAE/J』
20091226 名古屋SGGAE/J勉強会発表資料『Lift on GAE/J』
 
Introduction to User Experience Design for Engineers
Introduction to User Experience Design for EngineersIntroduction to User Experience Design for Engineers
Introduction to User Experience Design for Engineers
 

Ähnlich wie Counterclockwise past present future

Instant developer onboarding with self contained repositories
Instant developer onboarding with self contained repositoriesInstant developer onboarding with self contained repositories
Instant developer onboarding with self contained repositoriesYshay Yaacobi
 
GWT - Building Rich Internet Applications Using OO Tools
GWT - Building Rich Internet Applications Using OO ToolsGWT - Building Rich Internet Applications Using OO Tools
GWT - Building Rich Internet Applications Using OO Toolsbarciszewski
 
Road to sbt 1.0: Paved with server (2015 Amsterdam)
Road to sbt 1.0: Paved with server (2015 Amsterdam)Road to sbt 1.0: Paved with server (2015 Amsterdam)
Road to sbt 1.0: Paved with server (2015 Amsterdam)Eugene Yokota
 
Road to sbt 1.0 paved with server
Road to sbt 1.0   paved with serverRoad to sbt 1.0   paved with server
Road to sbt 1.0 paved with serverEugene Yokota
 
Odo improving the developer experience on OpenShift - hack & sangria
Odo   improving the developer experience on OpenShift - hack & sangriaOdo   improving the developer experience on OpenShift - hack & sangria
Odo improving the developer experience on OpenShift - hack & sangriaJorge Morales
 
How To Maintain Million Lines Of Open Source Code And Remain Sane or The Stor...
How To Maintain Million Lines Of Open Source Code And Remain Sane or The Stor...How To Maintain Million Lines Of Open Source Code And Remain Sane or The Stor...
How To Maintain Million Lines Of Open Source Code And Remain Sane or The Stor...Radovan Semancik
 
Micronaut: A new way to build microservices
Micronaut: A new way to build microservicesMicronaut: A new way to build microservices
Micronaut: A new way to build microservicesLuram Archanjo
 
AirBNB's ML platform - BigHead
AirBNB's ML platform - BigHeadAirBNB's ML platform - BigHead
AirBNB's ML platform - BigHeadKarthik Murugesan
 
Bighead: Airbnb’s End-to-End Machine Learning Platform with Krishna Puttaswa...
 Bighead: Airbnb’s End-to-End Machine Learning Platform with Krishna Puttaswa... Bighead: Airbnb’s End-to-End Machine Learning Platform with Krishna Puttaswa...
Bighead: Airbnb’s End-to-End Machine Learning Platform with Krishna Puttaswa...Databricks
 
Joomla!Day Poland 2013 - Joomla Architecture (Ofer Cohen)
Joomla!Day Poland 2013 - Joomla Architecture  (Ofer Cohen)Joomla!Day Poland 2013 - Joomla Architecture  (Ofer Cohen)
Joomla!Day Poland 2013 - Joomla Architecture (Ofer Cohen)Ofer Cohen
 
Apache Airflow in the Cloud: Programmatically orchestrating workloads with Py...
Apache Airflow in the Cloud: Programmatically orchestrating workloads with Py...Apache Airflow in the Cloud: Programmatically orchestrating workloads with Py...
Apache Airflow in the Cloud: Programmatically orchestrating workloads with Py...Kaxil Naik
 
Gradle build automation tool
Gradle   build automation toolGradle   build automation tool
Gradle build automation toolIoan Eugen Stan
 
Angular meetup 2 2019-08-29
Angular meetup 2   2019-08-29Angular meetup 2   2019-08-29
Angular meetup 2 2019-08-29Nitin Bhojwani
 
Node.js Web Apps @ ebay scale
Node.js Web Apps @ ebay scaleNode.js Web Apps @ ebay scale
Node.js Web Apps @ ebay scaleDmytro Semenov
 
GeoServer Developers Workshop
GeoServer Developers WorkshopGeoServer Developers Workshop
GeoServer Developers WorkshopJody Garnett
 
The State of the Veil Framework
The State of the Veil FrameworkThe State of the Veil Framework
The State of the Veil FrameworkVeilFramework
 
Introduction to serverless computing on Google Cloud
Introduction to serverless computing on Google CloudIntroduction to serverless computing on Google Cloud
Introduction to serverless computing on Google Cloudwesley chun
 

Ähnlich wie Counterclockwise past present future (20)

Instant developer onboarding with self contained repositories
Instant developer onboarding with self contained repositoriesInstant developer onboarding with self contained repositories
Instant developer onboarding with self contained repositories
 
GWT - Building Rich Internet Applications Using OO Tools
GWT - Building Rich Internet Applications Using OO ToolsGWT - Building Rich Internet Applications Using OO Tools
GWT - Building Rich Internet Applications Using OO Tools
 
Road to sbt 1.0: Paved with server (2015 Amsterdam)
Road to sbt 1.0: Paved with server (2015 Amsterdam)Road to sbt 1.0: Paved with server (2015 Amsterdam)
Road to sbt 1.0: Paved with server (2015 Amsterdam)
 
Road to sbt 1.0 paved with server
Road to sbt 1.0   paved with serverRoad to sbt 1.0   paved with server
Road to sbt 1.0 paved with server
 
Odo improving the developer experience on OpenShift - hack & sangria
Odo   improving the developer experience on OpenShift - hack & sangriaOdo   improving the developer experience on OpenShift - hack & sangria
Odo improving the developer experience on OpenShift - hack & sangria
 
Dust.js
Dust.jsDust.js
Dust.js
 
How To Maintain Million Lines Of Open Source Code And Remain Sane or The Stor...
How To Maintain Million Lines Of Open Source Code And Remain Sane or The Stor...How To Maintain Million Lines Of Open Source Code And Remain Sane or The Stor...
How To Maintain Million Lines Of Open Source Code And Remain Sane or The Stor...
 
Micronaut: A new way to build microservices
Micronaut: A new way to build microservicesMicronaut: A new way to build microservices
Micronaut: A new way to build microservices
 
AirBNB's ML platform - BigHead
AirBNB's ML platform - BigHeadAirBNB's ML platform - BigHead
AirBNB's ML platform - BigHead
 
Bighead: Airbnb’s End-to-End Machine Learning Platform with Krishna Puttaswa...
 Bighead: Airbnb’s End-to-End Machine Learning Platform with Krishna Puttaswa... Bighead: Airbnb’s End-to-End Machine Learning Platform with Krishna Puttaswa...
Bighead: Airbnb’s End-to-End Machine Learning Platform with Krishna Puttaswa...
 
Joomla!Day Poland 2013 - Joomla Architecture (Ofer Cohen)
Joomla!Day Poland 2013 - Joomla Architecture  (Ofer Cohen)Joomla!Day Poland 2013 - Joomla Architecture  (Ofer Cohen)
Joomla!Day Poland 2013 - Joomla Architecture (Ofer Cohen)
 
Apache Airflow in the Cloud: Programmatically orchestrating workloads with Py...
Apache Airflow in the Cloud: Programmatically orchestrating workloads with Py...Apache Airflow in the Cloud: Programmatically orchestrating workloads with Py...
Apache Airflow in the Cloud: Programmatically orchestrating workloads with Py...
 
Gradle build automation tool
Gradle   build automation toolGradle   build automation tool
Gradle build automation tool
 
Angular meetup 2 2019-08-29
Angular meetup 2   2019-08-29Angular meetup 2   2019-08-29
Angular meetup 2 2019-08-29
 
Node.js Web Apps @ ebay scale
Node.js Web Apps @ ebay scaleNode.js Web Apps @ ebay scale
Node.js Web Apps @ ebay scale
 
Protractor survival guide
Protractor survival guideProtractor survival guide
Protractor survival guide
 
GeoServer Developers Workshop
GeoServer Developers WorkshopGeoServer Developers Workshop
GeoServer Developers Workshop
 
The State of the Veil Framework
The State of the Veil FrameworkThe State of the Veil Framework
The State of the Veil Framework
 
september13.ppt
september13.pptseptember13.ppt
september13.ppt
 
Introduction to serverless computing on Google Cloud
Introduction to serverless computing on Google CloudIntroduction to serverless computing on Google Cloud
Introduction to serverless computing on Google Cloud
 

Kürzlich hochgeladen

DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
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
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESmohitsingh558521
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
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
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
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
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
"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
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 

Kürzlich hochgeladen (20)

DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
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
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
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
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
"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
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 

Counterclockwise past present future

  • 1. State of Counterclockwise: Past, Present and Future http://bit.ly/counterclockwise by Laurent Petit @laurentpetit first.clojure-conj.org - 2010/10/22
  • 2. Agenda ● Presentations / Intro ● History / Figures ● Installation ● Features / quick demos ● Future ● Credits ● Q & A
  • 3. Presentations 1/2 ● Me ● Laurent Petit, french ● Fond of Clojure since Q2 2008 ● Involved in Counterclockwise since Q4 2008
  • 4. Presentations 2/2 ● Eclipse ● multi-language software development environment ● Primary target language/platform: Java/JVM ● Eclipse Foundation claims “millions” of users, worldwide ● Counterclockwise ● An Eclipse extension for managing Clojure-based projects ● License : EPL ● “ccw” for short
  • 5. Intro 1/2 ● Counterclockwise is an Eclipse plugin helping developers write Clojure code ● Why an Eclipse plugin ? ● Targetting a large base of java developers ● Driving forces : writing Eclipse plugins both at work & at home ! ● Want Clojure for my next paid java project !
  • 6.
  • 7.
  • 8. Intro 2/2 ● Installing Counterclockwise and starting testing/developing in clojure is really just a matter of minutes!
  • 9. Intro 2/2 ● Installing Counterclockwise and starting testing/developing in clojure is really just a matter of minutes! ● Ease of installation = maximize a good first impression with the language (like it or not !)
  • 10. Intro 2/2 ● Installing Counterclockwise and starting testing/developing in clojure is really just a matter of minutes! ● Ease of installation = maximize a good first impression with the language (like it or not !) ● No-brainer integration into Eclipse java users' toolset – Parens will already feel UFOs to them, let the IDE get out of their way and help them concentrate on the concepts
  • 11. Intro 2/2 ● Installing Counterclockwise and starting testing/developing in clojure is really just a matter of minutes! ● Ease of installation = maximize a good first impression with the language (like it or not !) ● No-brainer integration into Eclipse java users' toolset – Parens will feel alien enough to new users, let the IDE get out of their way and help them concentrate on the concepts ● But should provide same interactive “dynamic” experience
  • 12. Agenda ● Presentations / Intro ● History / Figures ● Installation ● Features / quick demos ● Future ● Credits ● Q & A
  • 13. History ● Started in 2008 ● By Casey Marshall, code name “clojure-dev” ● Joined on October 2008 ● Casey left the team early 2009 ... ● … got the “de-facto” leadership since then
  • 14. Figures (google analytics) Homepage – 2000 views per month ● Since March 1, 2010: ● ~ 4000 different visitors – 800-900 average different visitors per month ● ~2000 homepage views per month ● ~2000 documentation page views per month
  • 15. Agenda ● Presentations / Intro ● History / Figures ● Installation ● Features / quick demos ● Future ● Credits ● Q & A
  • 16. Installation ● Super easy ● Use Eclipse 3.6 Helios' Market place – Menu Help > Eclipse Market Place – search for “clojure” & click ● Super fast ● 6 Mb download
  • 17. Agenda ● Presentations / Intro ● History / Figures ● Installation ● Features / quick demos ● Future ● Credits ● Q & A
  • 18. Editor features 1/2 ● Syntactic coloration (stable) ● Strictly speaking, “token-based” coloration ● “rainbow” parens (and higlight, and jump to/from) ● Around the corner: true syntactic coloration (full use of parser's info) ● Structural edition commands (stable) ● based on emac's paredit.el (~ 80% commands currently ported) ● Totally reusable outside Eclipse context (pure clojure) ● Jump to definition (stable) ● Only to clojure global vars for now on ... ● Auto-indentation (stable) ● Predictable behaviour with & without support of dynamic environment ● But judged “too simple” by increasing number of users ...
  • 19. Editor features 2/2 ● Code completion (incomplete) ● Clojure top level vars ● Java – Clojure is “backward” – full search in the project's classpath) – → slow ! ● REPL interaction commands (stable) ● Documentation hover (around the corner) ● Code Outline (unstable) ● Missing: formatting, macro-expansion
  • 20. Editor demo ● Structural edition modes ● Default mode – does not break habit ● Strict mode – mixed free/guided mode ● Underused structural edition commands ● Both modes – Structure-based selection – Raise over parent – Split / Join ● Strict mode only – Easy wrapping
  • 21. Project management feature ● Compliant with Eclipse's notion of project ● Project “natures” : composable with JDT nature, etc. ● “Running the project” uses “enhanced” java- nature-based “launch configuration” ● Enabled to quickly provide out-of-the-box interactivity
  • 22. Interactive Dev feature1/2 ● REPL' state of the art (v0.0.64) ● Based on the Java nature of the project – Uses the project's classpath – Same configuration tabs as the java's ● But limited in scope ... – Forces the project to start with a stdin/stdout-based REPL class (e.g. clojure.main or clojure.contrib.repl-ln) – Not possible to work with web projects (WTP), GWT projects, Eclipse projects (PDE) ● … and in features – Plain text edition (no colors, no user assistance) – No history
  • 23. Interactive Dev feature 2/2 ● Brand new REPL around the corner ! ● Based on cemerick's nREPL client/server REPL library ● And on cemerick's rework of the Graphical REPLView ! ● Connection to any JVM running a nREPL client ● No more need for special “launch configuration” ● => composable with projects of any kind (Web WTP, GWT, AppEngine, etc.) ● Rich set of feature for the REPL View ● Shares source code editor featureset: colors, structural edition, code completion (wip), navigation commands, etc. ● Colorized logs ● Recall previously entered commands (wip) ● Multiline (with auto-indentation!) command area
  • 24. Interactive Dev demo ● “launch” your project ● auto-reload-on-save enabled or disabled – Agile feature design at work ! :-) ● Exclusivity: new REPL View ! ● Same feature set as editor ● Receive code from the editor ● Namespace browser ● Embedded search engine ● Click to jump to definition
  • 25. Debugger feature ● Features ● Place breakpoints in clojure code ● Leverage the classic Eclipse integrated java debugger ● Still a little bit unstable ● Future work ● Does not (yet) filter frames related to the internals of clojure (clojure.lang.*) ● Integration with George Jahad's CDT debugger
  • 26. Agenda ● Presentations / Intro ● History / Figures ● Installation ● Features / quick demos ● Future ● Credits ● Q & A
  • 27. Future – features around the corner ● Editor ● Jump to definition (java) ● Documentation hover (clojure & java) ● True syntax-based coloration (locals, etc.) ● Project management ● More “orthogonality” with underlying “project nature” (pure java, GWT, WTP, AppEngine, Eclipse RCP, etc.) ● REPL ● Port features of the editor ● And then … towards “graphical REPL” (ability to display “binary” return values as images, HTML, charts, etc.)
  • 28. Future – other features ● Refactoring features ● Integration of tcrayford's clojure-refactoring project ● Hopefully bidirectional java ↔ clojure ● Debugging features ● Integration with George Jahad's Clojure Debugging Toolkit (CDT)
  • 29. Future – “dream-about” features ● More “warnings” than what the compiler has to offer ● Help enforcing conventions ● Help detect potential bugs (more than one statement inside dosync, local same name as global, etc., etc.) ● → No hurry, 'cause “cinc” may be a game changer ... ● “AI-like” User suggestions ● Analyse user's habits through heuristics (and occurrence) ● Non-invasive (hard part !) suggestions
  • 30. Future - Miscellaneous ● Introduction of Contributor Agreement ● Better juridical protection for project's code ● Better protection of sponsor's rights on project “as a whole” ● copy&paste of Clojure's one, just names changed ● Switch to “semantic versioning” ● “embedded” REPL for ccw own's development ● Open the door to more contributors ● devs: – mvn based build process – Continuous integration ● users: – Update Sites for “beta” versions as well as “stable” version – Opening the plugin to user contributions (in clojure, of course)
  • 31. Agenda ● Presentations / Intro ● History / Figures ● Installation ● Features / quick demos ● Future ● Credits ● Q & A
  • 32. Share, ... ● Past & current contributors ● Casey Marshall (first versions of ccw) ● Stephan Müehlstraßer (preference pages, online help, labrepl support) ● Christophe Grand (Debug breakpoints) ● Manuel Woelker (Source code outline) ● Miaubiz, clooney (editor commands:navigate to definition, etc.) ● Nicolas Lambert (Outline commands) ● Chas Emerick (integration with nREPL, REPLView)
  • 33. … reuse, ● vimClojure (@kotarak): code completion ● parsley (@cgrand): source code parser ● clojure.osgi (@aav): clojure+OSGi love story ● nREPL (@cemerick): REPL client/server library
  • 34. … give back. ● Structural Editor ● paredit.clj (github) ● Clojure Grammar ● ccw.parsers.clojure (github, wip, no rush please)
  • 35. Where to find it ● Google code home page ● http://code.google.com/p/counterclockwise/ ● Google groups ● Users : http://groups.google.com/group/clojuredev- users (66 members) ● Devs : http://groups.google.com/group/clojuredev-devel (37 members)
  • 36. Agenda ● Presentations / Intro ● History / Figures ● Installation ● Features / quick demos ● Future ● Credits ● Q & A
  • 37. Thanks for attending! (can you wake up your neighbor pliz ?)