SlideShare une entreprise Scribd logo
1  sur  14
Télécharger pour lire hors ligne
CODEFLOW
an advanced IDE for Lua
L U A W O R K S H O P 2 0 1 5
October 16, 2015
Jean-Luc Jumpertz @JLJump
founder celedev @celedev
CodeFlow
Interactive Development of iOS / OS X Apps in Lua
Instant feedback
on real devices
full SDK scope powerful dev tools
Faster development cycle
Easier experimentation, higher creativity
Better App UX
Lua Workshop 2015 - Stockholm - October 16, 2015CodeFlow, an advanced IDE for Lua - Jean-Luc Jumpertz (Celedev)
CodeFlow
Interactive Development of iOS / OS X Apps in Lua
CodeFlow
IDE
iOS App
Lua
CodeFlow
Runtime
CodeFlow, an advanced IDE for Lua - Jean-Luc Jumpertz (Celedev) Lua Workshop 2015 - Stockholm - October 16, 2015
CodeFlow
Interactive Development of iOS / OS X Apps in Lua
CodeFlow
IDE
iOS App
Lua
CodeFlow
Runtime
CodeFlow, an advanced IDE for Lua - Jean-Luc Jumpertz (Celedev) Lua Workshop 2015 - Stockholm - October 16, 2015Lua Workshop 2015 - Stockholm - October 16, 2015
CodeFlow
Interactive Development of iOS / OS X Apps in Lua
CodeFlow, an advanced IDE for Lua - Jean-Luc Jumpertz (Celedev) Lua Workshop 2015 - Stockholm - October 16, 2015
• Code editor common features: code coloring,
indentation, completion…
• Standard editors manage code purely as text
➡ The editor has no real knowledge of the
program structure!
➡ Limited features set
Lua code editor
• 1 file / language
• regex, list of keywords…
xml, json
Lua
mode
CodeFlow, an advanced IDE for Lua - Jean-Luc Jumpertz (Celedev) Lua Workshop 2015 - Stockholm - October 16, 2015
Syntax-driven Lua code editor
• The Lua Abstract Syntax Tree represents the syntax of a given Lua
source file
• Each AST node stores the associated char range in the source file
• The AST must be kept in sync with the source code (asynchronously)
➡ All syntax-related actions in the editor use the corresponding AST
➡ Much more powerful and accurate than text-based processing
.lua
Source code Lua AST
CodeFlow, an advanced IDE for Lua - Jean-Luc Jumpertz (Celedev) Lua Workshop 2015 - Stockholm - October 16, 2015
Syntax-driven Lua code editor
• Demo
➡ An advanced syntax-aware Lua editor can be a true help for
the developer!
• Under the hood: building the AST
• Many possible strategies
• In CodeFlow, Lua AST generation is based on the standard
Lua parser (llex.c, lparser.c)
➡ very good performance
➡ same language understanding as the Lua runtime
• Source available at bitbucket.org/jean_luc/luasyntaxer
CodeFlow, an advanced IDE for Lua - Jean-Luc Jumpertz (Celedev) Lua Workshop 2015 - Stockholm - October 16, 2015
Lua debugger
• For many developers, prints in the console is still the
primary debug tool. !
• A good debugger makes bug fixing much easier!
• The ideal debugger should be…
➡ Easy to use and well-integrated with the rest of the IDE
➡ Fast, low overhead
➡ Transparent to use 

i.e not forcing you to change your program code to make it
debug-compliant
Lua Workshop 2015 - Stockholm - October 16, 2015CodeFlow, an advanced IDE for Lua - Jean-Luc Jumpertz (Celedev)
Debugger features
• step-by-step execution
and breakpoints
• runtime errors analysis 

(+ make them recoverable)
• variable inspector / editor
• stack-context-aware
command console
• multi-thread debugging
CodeFlow, an advanced IDE for Lua - Jean-Luc Jumpertz (Celedev) Lua Workshop 2015 - Stockholm - October 16, 2015
Lua Modules in CodeFlow
• Managing modules is a classic role of an IDE
• A logical choice for Lua modules interaction: use the
require function
• In CodeFlow, Lua modules are in 

the IDE space; but require is called 

from the app on the device
➡ Custom require function in the 

CodeFlow Runtime
• Behavior changes
• Enable multiple return values
• Reload a module if syntactically changed in the IDE
CodeFlow
IDE
iOS App
Lua
CodeFlow
Runtime
CodeFlow, an advanced IDE for Lua - Jean-Luc Jumpertz (Celedev) Lua Workshop 2015 - Stockholm - October 16, 2015
Automatic Bindings generation
• In the target apps, Lua code interacts heavily with C / ObjC APIs
• May needs to call the System SDK, but also custom APIs defined by the
target app
• CodeFlow automatically generates project bindings for custom APIs
defined in the app’s Xcode project.
• Integration in the IDE
➡ auto-completion of project bindings APIs in the editor
➡ inspection of project bindings types in the debugger
CodeFlow, an advanced IDE for Lua - Jean-Luc Jumpertz (Celedev) Lua Workshop 2015 - Stockholm - October 16, 2015
As a conclusion
• The real value of an IDE comes from integration of
its components
• A dynamic language like Lua comes with specific
challenges for the developer, that a dedicated IDE
can help to address.
CodeFlow, an advanced IDE for Lua - Jean-Luc Jumpertz (Celedev) Lua Workshop 2015 - Stockholm - October 16, 2015
Questions?
Jean-Luc Jumpertz
@JLJump
www.celedev.com
bitbucket.org/jean_luc/luasyntaxer
Want to try? Download CodeFlow at celedev.com/en/support
github.com/celedev contact@celedev.com

Contenu connexe

Tendances

Hacking Java - Enhancing Java Code at Build or Runtime
Hacking Java - Enhancing Java Code at Build or RuntimeHacking Java - Enhancing Java Code at Build or Runtime
Hacking Java - Enhancing Java Code at Build or RuntimeSean P. Floyd
 
Introduction and hacking OpenStack, Pycon India
Introduction and hacking OpenStack,  Pycon IndiaIntroduction and hacking OpenStack,  Pycon India
Introduction and hacking OpenStack, Pycon IndiaAtul Jha
 
Functional Programming for Busy Object Oriented Programmers
Functional Programming for Busy Object Oriented ProgrammersFunctional Programming for Busy Object Oriented Programmers
Functional Programming for Busy Object Oriented ProgrammersDiego Freniche Brito
 
Alberto Maria Angelo Paro - Isomorphic programming in Scala and WebDevelopmen...
Alberto Maria Angelo Paro - Isomorphic programming in Scala and WebDevelopmen...Alberto Maria Angelo Paro - Isomorphic programming in Scala and WebDevelopmen...
Alberto Maria Angelo Paro - Isomorphic programming in Scala and WebDevelopmen...Codemotion
 
Building next gen android library with gradle
Building next gen android library with gradleBuilding next gen android library with gradle
Building next gen android library with gradleAnton Rutkevich
 
Scala and its Ecosystem
Scala and its EcosystemScala and its Ecosystem
Scala and its EcosystemPetr Hošek
 
MobileConf 2021 Slides: Let's build macOS CLI Utilities using Swift
MobileConf 2021 Slides:  Let's build macOS CLI Utilities using SwiftMobileConf 2021 Slides:  Let's build macOS CLI Utilities using Swift
MobileConf 2021 Slides: Let's build macOS CLI Utilities using SwiftDiego Freniche Brito
 
Counterclockwise past present future
Counterclockwise  past present futureCounterclockwise  past present future
Counterclockwise past present futurelolopetit
 
How to start using Scala
How to start using ScalaHow to start using Scala
How to start using ScalaNgoc Dao
 
javerosmx-2015-marzo-groovy-java8-comparison
javerosmx-2015-marzo-groovy-java8-comparisonjaverosmx-2015-marzo-groovy-java8-comparison
javerosmx-2015-marzo-groovy-java8-comparisonDomingo Suarez Torres
 
Headless Drupal: A modern approach to (micro)services and APIs
Headless Drupal: A modern approach to (micro)services and APIsHeadless Drupal: A modern approach to (micro)services and APIs
Headless Drupal: A modern approach to (micro)services and APIssparkfabrik
 
Presentation on Core java
Presentation on Core javaPresentation on Core java
Presentation on Core javamahir jain
 
The curious Life of JavaScript - Talk at SI-SE 2015
The curious Life of JavaScript - Talk at SI-SE 2015The curious Life of JavaScript - Talk at SI-SE 2015
The curious Life of JavaScript - Talk at SI-SE 2015jbandi
 
Run-time of Node.js : V8 JavaScript Engine
Run-time of Node.js: V8 JavaScript EngineRun-time of Node.js: V8 JavaScript Engine
Run-time of Node.js : V8 JavaScript EngineGary Yeh
 
Android talks #08 decompiling android applications
Android talks #08   decompiling android applicationsAndroid talks #08   decompiling android applications
Android talks #08 decompiling android applicationsInfinum
 
Core Java
Core JavaCore Java
Core JavaNA
 

Tendances (20)

Hacking Java - Enhancing Java Code at Build or Runtime
Hacking Java - Enhancing Java Code at Build or RuntimeHacking Java - Enhancing Java Code at Build or Runtime
Hacking Java - Enhancing Java Code at Build or Runtime
 
Introduction and hacking OpenStack, Pycon India
Introduction and hacking OpenStack,  Pycon IndiaIntroduction and hacking OpenStack,  Pycon India
Introduction and hacking OpenStack, Pycon India
 
Functional Programming for Busy Object Oriented Programmers
Functional Programming for Busy Object Oriented ProgrammersFunctional Programming for Busy Object Oriented Programmers
Functional Programming for Busy Object Oriented Programmers
 
Alberto Maria Angelo Paro - Isomorphic programming in Scala and WebDevelopmen...
Alberto Maria Angelo Paro - Isomorphic programming in Scala and WebDevelopmen...Alberto Maria Angelo Paro - Isomorphic programming in Scala and WebDevelopmen...
Alberto Maria Angelo Paro - Isomorphic programming in Scala and WebDevelopmen...
 
Building next gen android library with gradle
Building next gen android library with gradleBuilding next gen android library with gradle
Building next gen android library with gradle
 
Scala and its Ecosystem
Scala and its EcosystemScala and its Ecosystem
Scala and its Ecosystem
 
MobileConf 2021 Slides: Let's build macOS CLI Utilities using Swift
MobileConf 2021 Slides:  Let's build macOS CLI Utilities using SwiftMobileConf 2021 Slides:  Let's build macOS CLI Utilities using Swift
MobileConf 2021 Slides: Let's build macOS CLI Utilities using Swift
 
Counterclockwise past present future
Counterclockwise  past present futureCounterclockwise  past present future
Counterclockwise past present future
 
How to start using Scala
How to start using ScalaHow to start using Scala
How to start using Scala
 
Introduction to Java
Introduction to JavaIntroduction to Java
Introduction to Java
 
javerosmx-2015-marzo-groovy-java8-comparison
javerosmx-2015-marzo-groovy-java8-comparisonjaverosmx-2015-marzo-groovy-java8-comparison
javerosmx-2015-marzo-groovy-java8-comparison
 
Headless Drupal: A modern approach to (micro)services and APIs
Headless Drupal: A modern approach to (micro)services and APIsHeadless Drupal: A modern approach to (micro)services and APIs
Headless Drupal: A modern approach to (micro)services and APIs
 
Presentation on Core java
Presentation on Core javaPresentation on Core java
Presentation on Core java
 
The curious Life of JavaScript - Talk at SI-SE 2015
The curious Life of JavaScript - Talk at SI-SE 2015The curious Life of JavaScript - Talk at SI-SE 2015
The curious Life of JavaScript - Talk at SI-SE 2015
 
Introduction to Core Java Programming
Introduction to Core Java ProgrammingIntroduction to Core Java Programming
Introduction to Core Java Programming
 
History of java
History of javaHistory of java
History of java
 
Run-time of Node.js : V8 JavaScript Engine
Run-time of Node.js: V8 JavaScript EngineRun-time of Node.js: V8 JavaScript Engine
Run-time of Node.js : V8 JavaScript Engine
 
Turbo charging v8 engine
Turbo charging v8 engineTurbo charging v8 engine
Turbo charging v8 engine
 
Android talks #08 decompiling android applications
Android talks #08   decompiling android applicationsAndroid talks #08   decompiling android applications
Android talks #08 decompiling android applications
 
Core Java
Core JavaCore Java
Core Java
 

Similaire à CodeFlow, an advanced IDE for Lua

API workshop: Introduction to APIs (TC Camp)
API workshop: Introduction to APIs (TC Camp)API workshop: Introduction to APIs (TC Camp)
API workshop: Introduction to APIs (TC Camp)Tom Johnson
 
Code in the cloud with eclipse che and docker / snowcamp.io 2017
Code in the cloud with eclipse che and docker /  snowcamp.io 2017Code in the cloud with eclipse che and docker /  snowcamp.io 2017
Code in the cloud with eclipse che and docker / snowcamp.io 2017Florent BENOIT
 
Code in the cloud with Eclipse Che and Docker - EclipseCon France 2016
Code in the cloud with Eclipse Che and Docker - EclipseCon France 2016Code in the cloud with Eclipse Che and Docker - EclipseCon France 2016
Code in the cloud with Eclipse Che and Docker - EclipseCon France 2016Florent BENOIT
 
Code in the cloud with Eclipse Che and Docker
Code in the cloud with Eclipse Che and DockerCode in the cloud with Eclipse Che and Docker
Code in the cloud with Eclipse Che and DockerFlorent BENOIT
 
Programming tools for developers
Programming tools for developersProgramming tools for developers
Programming tools for developersBBVA API Market
 
Kotlin native for iOS and Android
Kotlin native for iOS and AndroidKotlin native for iOS and Android
Kotlin native for iOS and AndroidShady Selim
 
Developer joy for distributed teams with CodeReady Workspaces | DevNation Tec...
Developer joy for distributed teams with CodeReady Workspaces | DevNation Tec...Developer joy for distributed teams with CodeReady Workspaces | DevNation Tec...
Developer joy for distributed teams with CodeReady Workspaces | DevNation Tec...Red Hat Developers
 
Eclipse Che - A Revolutionary IDE for Distributed & Mainframe Development
Eclipse Che - A Revolutionary IDE for Distributed & Mainframe DevelopmentEclipse Che - A Revolutionary IDE for Distributed & Mainframe Development
Eclipse Che - A Revolutionary IDE for Distributed & Mainframe DevelopmentDevOps.com
 
The new java developers kit bag
The new java developers kit bagThe new java developers kit bag
The new java developers kit bagJamie Coleman
 
Gwt and JSR 269's Pluggable Annotation Processing API
Gwt and JSR 269's Pluggable Annotation Processing APIGwt and JSR 269's Pluggable Annotation Processing API
Gwt and JSR 269's Pluggable Annotation Processing APIArnaud Tournier
 
Habitat Workshop at Velocity London 2017
Habitat Workshop at Velocity London 2017Habitat Workshop at Velocity London 2017
Habitat Workshop at Velocity London 2017Mandi Walls
 
Elyra - a set of AI-centric extensions to JupyterLab Notebooks.
Elyra - a set of AI-centric extensions to JupyterLab Notebooks.Elyra - a set of AI-centric extensions to JupyterLab Notebooks.
Elyra - a set of AI-centric extensions to JupyterLab Notebooks.Luciano Resende
 
Red Hat OpenShift App Dev meetup - Operator SDK
Red Hat OpenShift App Dev meetup - Operator SDK Red Hat OpenShift App Dev meetup - Operator SDK
Red Hat OpenShift App Dev meetup - Operator SDK Dmitry Kartsev
 
Nantes Jug 2016 Eclipse Che: The Next-Gen Eclipse IDE
Nantes Jug 2016 Eclipse Che: The Next-Gen Eclipse IDENantes Jug 2016 Eclipse Che: The Next-Gen Eclipse IDE
Nantes Jug 2016 Eclipse Che: The Next-Gen Eclipse IDEFlorent BENOIT
 
Flutter vs react native – from developer point
Flutter vs react native – from developer pointFlutter vs react native – from developer point
Flutter vs react native – from developer pointBOSC Tech Labs
 
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
 
Modern Web-site Development Pipeline
Modern Web-site Development PipelineModern Web-site Development Pipeline
Modern Web-site Development PipelineGlobalLogic Ukraine
 
Introduction to Docker - Vellore Institute of Technology
Introduction to Docker - Vellore Institute of TechnologyIntroduction to Docker - Vellore Institute of Technology
Introduction to Docker - Vellore Institute of TechnologyAjeet Singh Raina
 
Docker based-Pipelines with Codefresh
Docker based-Pipelines with CodefreshDocker based-Pipelines with Codefresh
Docker based-Pipelines with CodefreshCodefresh
 

Similaire à CodeFlow, an advanced IDE for Lua (20)

API workshop: Introduction to APIs (TC Camp)
API workshop: Introduction to APIs (TC Camp)API workshop: Introduction to APIs (TC Camp)
API workshop: Introduction to APIs (TC Camp)
 
Code in the cloud with eclipse che and docker / snowcamp.io 2017
Code in the cloud with eclipse che and docker /  snowcamp.io 2017Code in the cloud with eclipse che and docker /  snowcamp.io 2017
Code in the cloud with eclipse che and docker / snowcamp.io 2017
 
Code in the cloud with Eclipse Che and Docker - EclipseCon France 2016
Code in the cloud with Eclipse Che and Docker - EclipseCon France 2016Code in the cloud with Eclipse Che and Docker - EclipseCon France 2016
Code in the cloud with Eclipse Che and Docker - EclipseCon France 2016
 
Ide
IdeIde
Ide
 
Code in the cloud with Eclipse Che and Docker
Code in the cloud with Eclipse Che and DockerCode in the cloud with Eclipse Che and Docker
Code in the cloud with Eclipse Che and Docker
 
Programming tools for developers
Programming tools for developersProgramming tools for developers
Programming tools for developers
 
Kotlin native for iOS and Android
Kotlin native for iOS and AndroidKotlin native for iOS and Android
Kotlin native for iOS and Android
 
Developer joy for distributed teams with CodeReady Workspaces | DevNation Tec...
Developer joy for distributed teams with CodeReady Workspaces | DevNation Tec...Developer joy for distributed teams with CodeReady Workspaces | DevNation Tec...
Developer joy for distributed teams with CodeReady Workspaces | DevNation Tec...
 
Eclipse Che - A Revolutionary IDE for Distributed & Mainframe Development
Eclipse Che - A Revolutionary IDE for Distributed & Mainframe DevelopmentEclipse Che - A Revolutionary IDE for Distributed & Mainframe Development
Eclipse Che - A Revolutionary IDE for Distributed & Mainframe Development
 
The new java developers kit bag
The new java developers kit bagThe new java developers kit bag
The new java developers kit bag
 
Gwt and JSR 269's Pluggable Annotation Processing API
Gwt and JSR 269's Pluggable Annotation Processing APIGwt and JSR 269's Pluggable Annotation Processing API
Gwt and JSR 269's Pluggable Annotation Processing API
 
Habitat Workshop at Velocity London 2017
Habitat Workshop at Velocity London 2017Habitat Workshop at Velocity London 2017
Habitat Workshop at Velocity London 2017
 
Elyra - a set of AI-centric extensions to JupyterLab Notebooks.
Elyra - a set of AI-centric extensions to JupyterLab Notebooks.Elyra - a set of AI-centric extensions to JupyterLab Notebooks.
Elyra - a set of AI-centric extensions to JupyterLab Notebooks.
 
Red Hat OpenShift App Dev meetup - Operator SDK
Red Hat OpenShift App Dev meetup - Operator SDK Red Hat OpenShift App Dev meetup - Operator SDK
Red Hat OpenShift App Dev meetup - Operator SDK
 
Nantes Jug 2016 Eclipse Che: The Next-Gen Eclipse IDE
Nantes Jug 2016 Eclipse Che: The Next-Gen Eclipse IDENantes Jug 2016 Eclipse Che: The Next-Gen Eclipse IDE
Nantes Jug 2016 Eclipse Che: The Next-Gen Eclipse IDE
 
Flutter vs react native – from developer point
Flutter vs react native – from developer pointFlutter vs react native – from developer point
Flutter vs react native – from developer point
 
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
 
Modern Web-site Development Pipeline
Modern Web-site Development PipelineModern Web-site Development Pipeline
Modern Web-site Development Pipeline
 
Introduction to Docker - Vellore Institute of Technology
Introduction to Docker - Vellore Institute of TechnologyIntroduction to Docker - Vellore Institute of Technology
Introduction to Docker - Vellore Institute of Technology
 
Docker based-Pipelines with Codefresh
Docker based-Pipelines with CodefreshDocker based-Pipelines with Codefresh
Docker based-Pipelines with Codefresh
 

Dernier

Science&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdfScience&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdfjimielynbastida
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
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
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024BookNet Canada
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksSoftradix Technologies
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDGMarianaLemus7
 

Dernier (20)

Science&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdfScience&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdf
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
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
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptxVulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDG
 

CodeFlow, an advanced IDE for Lua

  • 1. CODEFLOW an advanced IDE for Lua L U A W O R K S H O P 2 0 1 5 October 16, 2015 Jean-Luc Jumpertz @JLJump founder celedev @celedev
  • 2. CodeFlow Interactive Development of iOS / OS X Apps in Lua Instant feedback on real devices full SDK scope powerful dev tools Faster development cycle Easier experimentation, higher creativity Better App UX Lua Workshop 2015 - Stockholm - October 16, 2015CodeFlow, an advanced IDE for Lua - Jean-Luc Jumpertz (Celedev)
  • 3. CodeFlow Interactive Development of iOS / OS X Apps in Lua CodeFlow IDE iOS App Lua CodeFlow Runtime CodeFlow, an advanced IDE for Lua - Jean-Luc Jumpertz (Celedev) Lua Workshop 2015 - Stockholm - October 16, 2015
  • 4. CodeFlow Interactive Development of iOS / OS X Apps in Lua CodeFlow IDE iOS App Lua CodeFlow Runtime CodeFlow, an advanced IDE for Lua - Jean-Luc Jumpertz (Celedev) Lua Workshop 2015 - Stockholm - October 16, 2015Lua Workshop 2015 - Stockholm - October 16, 2015
  • 5. CodeFlow Interactive Development of iOS / OS X Apps in Lua CodeFlow, an advanced IDE for Lua - Jean-Luc Jumpertz (Celedev) Lua Workshop 2015 - Stockholm - October 16, 2015
  • 6. • Code editor common features: code coloring, indentation, completion… • Standard editors manage code purely as text ➡ The editor has no real knowledge of the program structure! ➡ Limited features set Lua code editor • 1 file / language • regex, list of keywords… xml, json Lua mode CodeFlow, an advanced IDE for Lua - Jean-Luc Jumpertz (Celedev) Lua Workshop 2015 - Stockholm - October 16, 2015
  • 7. Syntax-driven Lua code editor • The Lua Abstract Syntax Tree represents the syntax of a given Lua source file • Each AST node stores the associated char range in the source file • The AST must be kept in sync with the source code (asynchronously) ➡ All syntax-related actions in the editor use the corresponding AST ➡ Much more powerful and accurate than text-based processing .lua Source code Lua AST CodeFlow, an advanced IDE for Lua - Jean-Luc Jumpertz (Celedev) Lua Workshop 2015 - Stockholm - October 16, 2015
  • 8. Syntax-driven Lua code editor • Demo ➡ An advanced syntax-aware Lua editor can be a true help for the developer! • Under the hood: building the AST • Many possible strategies • In CodeFlow, Lua AST generation is based on the standard Lua parser (llex.c, lparser.c) ➡ very good performance ➡ same language understanding as the Lua runtime • Source available at bitbucket.org/jean_luc/luasyntaxer CodeFlow, an advanced IDE for Lua - Jean-Luc Jumpertz (Celedev) Lua Workshop 2015 - Stockholm - October 16, 2015
  • 9. Lua debugger • For many developers, prints in the console is still the primary debug tool. ! • A good debugger makes bug fixing much easier! • The ideal debugger should be… ➡ Easy to use and well-integrated with the rest of the IDE ➡ Fast, low overhead ➡ Transparent to use 
 i.e not forcing you to change your program code to make it debug-compliant Lua Workshop 2015 - Stockholm - October 16, 2015CodeFlow, an advanced IDE for Lua - Jean-Luc Jumpertz (Celedev)
  • 10. Debugger features • step-by-step execution and breakpoints • runtime errors analysis 
 (+ make them recoverable) • variable inspector / editor • stack-context-aware command console • multi-thread debugging CodeFlow, an advanced IDE for Lua - Jean-Luc Jumpertz (Celedev) Lua Workshop 2015 - Stockholm - October 16, 2015
  • 11. Lua Modules in CodeFlow • Managing modules is a classic role of an IDE • A logical choice for Lua modules interaction: use the require function • In CodeFlow, Lua modules are in 
 the IDE space; but require is called 
 from the app on the device ➡ Custom require function in the 
 CodeFlow Runtime • Behavior changes • Enable multiple return values • Reload a module if syntactically changed in the IDE CodeFlow IDE iOS App Lua CodeFlow Runtime CodeFlow, an advanced IDE for Lua - Jean-Luc Jumpertz (Celedev) Lua Workshop 2015 - Stockholm - October 16, 2015
  • 12. Automatic Bindings generation • In the target apps, Lua code interacts heavily with C / ObjC APIs • May needs to call the System SDK, but also custom APIs defined by the target app • CodeFlow automatically generates project bindings for custom APIs defined in the app’s Xcode project. • Integration in the IDE ➡ auto-completion of project bindings APIs in the editor ➡ inspection of project bindings types in the debugger CodeFlow, an advanced IDE for Lua - Jean-Luc Jumpertz (Celedev) Lua Workshop 2015 - Stockholm - October 16, 2015
  • 13. As a conclusion • The real value of an IDE comes from integration of its components • A dynamic language like Lua comes with specific challenges for the developer, that a dedicated IDE can help to address. CodeFlow, an advanced IDE for Lua - Jean-Luc Jumpertz (Celedev) Lua Workshop 2015 - Stockholm - October 16, 2015
  • 14. Questions? Jean-Luc Jumpertz @JLJump www.celedev.com bitbucket.org/jean_luc/luasyntaxer Want to try? Download CodeFlow at celedev.com/en/support github.com/celedev contact@celedev.com