SlideShare a Scribd company logo
1 of 29
Download to read offline
CodeHub
Curran Kelleher
8/18/2012
Programming is Overly Complex
● Development environment setup
● Revision control management
● Dependency management
● Deployment
= time and effort learning tools,
not writing code.
● The barrier to entry is higher than necessary
● This can be solved through automation
Simplification by Automation
Automation of what?
● Development environment setup
○ It's all on the server
○ Just open a Web page
● Revision control management
○ It's all on the server
○ Just click "save"
● Dependency management
○ It's all on the server
○ Just use "require(moduleName)'
● Deployment
○ Just click "run" and share that link
Prior Art in "Web-Based IDEs"
We consider a "Web-Based IDE" something that
● runs in a browser
● lets users edit, save, and run source code
The following are notable examples:
● JSBin
● JSFiddle
● CSSDesk
● Cloud9 IDE
● GitHub
Prior Art - JSBin
code, run, save, deploy - in the browser try it!
Prior Art - JSFiddle
code, run, save, deploy - in the browser
Prior Art - CSSDesk
code, run, save, deploy (CSS) - in the browser
Prior Art - Cloud9 IDE
● Full featured IDE, runs Node.js code
● Integrates with GitHub and Heroku
● Integrated terminal for Git and Unix commands
Prior Art - GitHub
● An in-browser text file editor for Git repositories
● Can be coupled with "GitHub Pages", a service
that serves GitHub repositories as Web sites
Prior Art in Software Repositories
Developers can publish reusable packages
with support for dependency management
● The Maven Repository (for Java)
● RubyGems (for Ruby)
● The Node Package Manager (for Node.js)
● The CommonJS module specification
● Asynchronous Module Definition (AMD)
● The Require.js AMD module loader
● ...many more out there
● The point: packages and dependency
management empower the platforms
The CodeHub Vision
No existing tools have all of these features:
● Web-based source code editing
● Definition and use of reusable modules
● Web-based deployment, with
● Automated dependency management
Such a tool would support
● Computer science education
● a public Wikipedia-like software repository
● a research testbed for interactive graphics
The CodeHub Architecture
● Limited to JavaScript and HTML software
● Based on CommonJS modules
● All versions are published
○ So when an application is linked to or embedded,
its behavior does not change (or break) over time
● The server tracks
○ Script content, for all versions
○ The dependency graph, for all versions
● Scripts can be run
○ At runtime, dependencies are evaluated and
bundled together into a single page
○ Compilation strategy from a CommonJS Wiki Page
CodeHub Scripts
● Every piece of code stored is a "script"
● Each script has an id number
● Each script version has a revision number
● Saving a script creates a new revision
● All script revisions are published
○ For example
http://code-hub.org/edit/7.1
edits the script whose id is 7, revision number 1
● There are three types of scripts:
○ Modules
○ Templates
○ Applications
CodeHub Modules
● CodeHub supports CommonJS Modules
● Each module must have a unique name
● Modules can be required with the syntax
foo = require('foo')
● Modules can be defined with the syntax
@module foo
● Modules define their exported API by adding
properties to an exports object
CodeHub Templates
● Templates are HTML pages with placeholders
of the form ${parameterName}
● Parameter values are passed in from
applications that use the template
● ${scripts}gets replaced by script tags
including application source code
○ dependencies are bundled together and included also
● Each template has a unique name
● Templates can be defined with the syntax
@template templateName
CodeHub Applications
● Applications are scripts that can be run
● Applications can depend on modules
● Applications are defined using the syntax
@app template templateName
● Applications can pass arbitrary parameters
to the template using the syntax
@app parameterName value
CodeHub Implementation
CodeHub was implemented using
● Node.js as a server platform
● The Express.js Web Framework
○ With Jade and Markdown templates
● MongoDB via the Mongoose API
● Git via the Node.js child process API
● Hosted on the Rackspace cloud
○ In a single Ubuntu server VM
● Live now at code-hub.org
CodeHub Screenshots:
New Script and Script List
ddfds
CodeHub Screenshots:
Example Scripts
Try it!
CodeHub Implementation Modules
Case Study:
An Interactive Graphics Course
● Web-based IDEs were used in a course
○ "Computer Programming and Interactive Graphics"
○ a 50-hour summer course for high school students
○ of the MIT Junction program, July-August 2012
● The class blog contains
○ Links to the "edit" pages in CodeHub
○ Embedded programs from CodeHub using iFrames
○ Comment sections for students to post their work
● The class used
○ JSBin
○ CodeHub
○ Cloud9 IDE
○ GitHub and GitHub Pages
Case Study:
An Interactive Graphics Course
● Students were first exposed to JSBin
○ Basic JavaScript and HTML5 Canvas features were
introduced in "code as I code" fashion using JSBin
○ JSBin's "auto-run" feature provided instant feedback
● Students were then exposed to CodeHub
○ ..but did not use the module functionality
■ as it was beyond their knowledge
○ ..but preferred JSBin because
■ The editor and output are on the same page
■ The code is re-run automatically when changed
● Some students liked
○ the simplicity of CodeHub
○ that CodeHub adds nothing extra when running
■ whereas JSBin adds an "edit in JSBin" button
Case Study:
An Interactive Graphics Course
● Students were then exposed to GitHub
○ Students created GitHub accounts and a repository
○ Students used the in-browser GitHub editor
■ just for learning basic Markdown
○ Students set up Web sites using GitHub Pages
● Students were then exposed to Cloud9 IDE
○ Students learned the basics of Git, and merging
○ Students used Cloud9 IDE to
■ construct an interactive graphical program
■ publish it to the Web using GitHub Pages
● The overall response was fear and dislike
○ Students perceived GitHub and Cloud9 IDE as
overly complex and cumbersome to use
○ JSBin was their most preferred tool overall
Case Study:
An Interactive Graphics Course Blog
Links to
source
code in
CodeHub
The running
program
embedded
directly
from
CodeHub
using an
iFrame
Case Study:
An Interactive Graphics Course Blog
Comments
allowed students
to showcase
their work
and collaborate
Case Study:
An Interactive Graphics Course Blog
A starting point for graphics programming was provided.
Shortcomings
● Apps do not have names
○ So the list of scripts includes things like "12.4"
○ Perhaps apps should have names
● Modules are in a single global namespace
○ So modules for specific applications might use
"appName.moduleName" for the module name
● Modules are editable by anyone
○ Therefore breakable by anyone
○ No built-in concept of ownership or authorship
● Trumped by JSBin in terms of usability
○ CodeHub needs the "Auto-run JS" feature
Future Work
● A "showcase" feature
○ Apps can be showcased on their own page
○ Including a comments section
○ This would enable discussion-based collaboration
● The "Auto-run JS" feature from JSBin
● Visualization of dependencies and apps
○ The content of CodeHub is difficult to navigate
○ A node-link visualization of the dependency graph
would be useful for navigation
● A documentation editor
○ Each module could have documentation
○ This would make CodeHub more usable
● Implementation of Information Visualization
software within CodeHub
The End

More Related Content

What's hot

How do we test nodejs apps?
How do we test nodejs apps?How do we test nodejs apps?
How do we test nodejs apps?Michal Juhas
 
Single page apps a bleeding edge new concept or a revived old one?
Single page apps   a bleeding edge new concept or a revived old one?Single page apps   a bleeding edge new concept or a revived old one?
Single page apps a bleeding edge new concept or a revived old one?Omer Dawelbeit
 
Angular2 - A story from the trenches
Angular2 - A story from the trenchesAngular2 - A story from the trenches
Angular2 - A story from the trenchesJohannes Rudolph
 
Nodeschool italy at codemotion
Nodeschool italy at codemotionNodeschool italy at codemotion
Nodeschool italy at codemotionMichele Capra
 
Dealing with large code bases. cd ams meetup
Dealing with large code bases. cd ams meetupDealing with large code bases. cd ams meetup
Dealing with large code bases. cd ams meetupViktor Sadovnikov
 
Gradle enabled android project
Gradle enabled android projectGradle enabled android project
Gradle enabled android projectShaka Huang
 
Luna - How to build and maintain a github project
Luna  - How to build and maintain a github projectLuna  - How to build and maintain a github project
Luna - How to build and maintain a github projectPanayiotis Arvanitis
 
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
 
Chromium on Wayland Desktop (BlinkOn 7)
Chromium on Wayland Desktop (BlinkOn 7)Chromium on Wayland Desktop (BlinkOn 7)
Chromium on Wayland Desktop (BlinkOn 7)Igalia
 
Improving the MODX Documentation - March 29, 2019
Improving the MODX Documentation - March 29, 2019Improving the MODX Documentation - March 29, 2019
Improving the MODX Documentation - March 29, 2019Mark Hamstra
 
Android build process (1)
Android build process (1)Android build process (1)
Android build process (1)Shubham Goyal
 
End-to-end HTML5 APIs - The Geek Gathering 2013
End-to-end HTML5 APIs - The Geek Gathering 2013End-to-end HTML5 APIs - The Geek Gathering 2013
End-to-end HTML5 APIs - The Geek Gathering 2013Alexandre Morgaut
 
QGIS UK: Developing with QGIS - What is possible (Lutra Consulting)
QGIS UK: Developing with QGIS - What is possible (Lutra Consulting)QGIS UK: Developing with QGIS - What is possible (Lutra Consulting)
QGIS UK: Developing with QGIS - What is possible (Lutra Consulting)Ross McDonald
 
Continuous integration is not a solved problem
Continuous integration is not a solved problemContinuous integration is not a solved problem
Continuous integration is not a solved problemKristian Van Der Vliet
 
Griffon for the Enterprise
Griffon for the EnterpriseGriffon for the Enterprise
Griffon for the EnterpriseJames Williams
 

What's hot (20)

How do we test nodejs apps?
How do we test nodejs apps?How do we test nodejs apps?
How do we test nodejs apps?
 
Single page apps a bleeding edge new concept or a revived old one?
Single page apps   a bleeding edge new concept or a revived old one?Single page apps   a bleeding edge new concept or a revived old one?
Single page apps a bleeding edge new concept or a revived old one?
 
Angular2 - A story from the trenches
Angular2 - A story from the trenchesAngular2 - A story from the trenches
Angular2 - A story from the trenches
 
Groovy android
Groovy androidGroovy android
Groovy android
 
Nodeschool italy at codemotion
Nodeschool italy at codemotionNodeschool italy at codemotion
Nodeschool italy at codemotion
 
Dealing with large code bases. cd ams meetup
Dealing with large code bases. cd ams meetupDealing with large code bases. cd ams meetup
Dealing with large code bases. cd ams meetup
 
Gradle enabled android project
Gradle enabled android projectGradle enabled android project
Gradle enabled android project
 
Luna - How to build and maintain a github project
Luna  - How to build and maintain a github projectLuna  - How to build and maintain a github project
Luna - How to build and maintain a github project
 
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
 
Chromium on Wayland Desktop (BlinkOn 7)
Chromium on Wayland Desktop (BlinkOn 7)Chromium on Wayland Desktop (BlinkOn 7)
Chromium on Wayland Desktop (BlinkOn 7)
 
Improving the MODX Documentation - March 29, 2019
Improving the MODX Documentation - March 29, 2019Improving the MODX Documentation - March 29, 2019
Improving the MODX Documentation - March 29, 2019
 
Android build process (1)
Android build process (1)Android build process (1)
Android build process (1)
 
End-to-end HTML5 APIs - The Geek Gathering 2013
End-to-end HTML5 APIs - The Geek Gathering 2013End-to-end HTML5 APIs - The Geek Gathering 2013
End-to-end HTML5 APIs - The Geek Gathering 2013
 
Open data for good
Open data for goodOpen data for good
Open data for good
 
QGIS UK: Developing with QGIS - What is possible (Lutra Consulting)
QGIS UK: Developing with QGIS - What is possible (Lutra Consulting)QGIS UK: Developing with QGIS - What is possible (Lutra Consulting)
QGIS UK: Developing with QGIS - What is possible (Lutra Consulting)
 
OpenCms Days 2014 Keynote - Step up to OpenCms 9.5
OpenCms Days 2014 Keynote - Step up to OpenCms 9.5OpenCms Days 2014 Keynote - Step up to OpenCms 9.5
OpenCms Days 2014 Keynote - Step up to OpenCms 9.5
 
Introduction to React
Introduction to ReactIntroduction to React
Introduction to React
 
Continuous integration is not a solved problem
Continuous integration is not a solved problemContinuous integration is not a solved problem
Continuous integration is not a solved problem
 
Gradle explained
Gradle explainedGradle explained
Gradle explained
 
Griffon for the Enterprise
Griffon for the EnterpriseGriffon for the Enterprise
Griffon for the Enterprise
 

Similar to Code-Hub

OVERVIEW: Chromium Source Tree
OVERVIEW: Chromium Source TreeOVERVIEW: Chromium Source Tree
OVERVIEW: Chromium Source TreeChang W. Doh
 
JIO and WebViewers: interoperability for Javascript and Web Applications
JIO and WebViewers: interoperability  for Javascript and Web ApplicationsJIO and WebViewers: interoperability  for Javascript and Web Applications
JIO and WebViewers: interoperability for Javascript and Web ApplicationsXWiki
 
DocDoku: Using web technologies in a desktop application. OW2con'15, November...
DocDoku: Using web technologies in a desktop application. OW2con'15, November...DocDoku: Using web technologies in a desktop application. OW2con'15, November...
DocDoku: Using web technologies in a desktop application. OW2con'15, November...OW2
 
Node js vs golang -which one is better ?
Node js vs golang -which one is better ?Node js vs golang -which one is better ?
Node js vs golang -which one is better ?ForceBolt
 
Programming Android
Programming AndroidProgramming Android
Programming Androidleague
 
AstroLabs_Academy_Learning_to_Code-Coding_Bootcamp_Day1.pdf
AstroLabs_Academy_Learning_to_Code-Coding_Bootcamp_Day1.pdfAstroLabs_Academy_Learning_to_Code-Coding_Bootcamp_Day1.pdf
AstroLabs_Academy_Learning_to_Code-Coding_Bootcamp_Day1.pdfFarHanWasif1
 
Architektura html, css i javascript - Jan Kraus
Architektura html, css i javascript - Jan KrausArchitektura html, css i javascript - Jan Kraus
Architektura html, css i javascript - Jan KrausWomen in Technology Poland
 
Voxxed days Vilnius 2015 - Android Reverse Engineering Lab
Voxxed days Vilnius 2015 - Android Reverse Engineering LabVoxxed days Vilnius 2015 - Android Reverse Engineering Lab
Voxxed days Vilnius 2015 - Android Reverse Engineering LabRon Munitz
 
Electron JS | Build cross-platform desktop applications with web technologies
Electron JS | Build cross-platform desktop applications with web technologiesElectron JS | Build cross-platform desktop applications with web technologies
Electron JS | Build cross-platform desktop applications with web technologiesBethmi Gunasekara
 
Keep calm and write reusable code in Android
Keep calm and write reusable code in AndroidKeep calm and write reusable code in Android
Keep calm and write reusable code in AndroidJuan Camilo Sacanamboy
 
Who needs containers in a serverless world
Who needs containers in a serverless worldWho needs containers in a serverless world
Who needs containers in a serverless worldMatthias Luebken
 
A New CLI for Spring Developer Productivity
A New CLI for Spring Developer ProductivityA New CLI for Spring Developer Productivity
A New CLI for Spring Developer ProductivityVMware Tanzu
 
Best React js Training course in Bangalore
Best React js Training course in BangaloreBest React js Training course in Bangalore
Best React js Training course in BangaloreAvinash Kumar
 
Programming for non tech entrepreneurs
Programming for non tech entrepreneursProgramming for non tech entrepreneurs
Programming for non tech entrepreneursRodrigo Gil
 
GeoServer Developers Workshop
GeoServer Developers WorkshopGeoServer Developers Workshop
GeoServer Developers WorkshopJody Garnett
 
Parallel development of Web Apps | Codesushi - Gliwice 2017
Parallel development of Web Apps | Codesushi - Gliwice  2017Parallel development of Web Apps | Codesushi - Gliwice  2017
Parallel development of Web Apps | Codesushi - Gliwice 2017Krzysztof (Chris) Ozog
 
Angularjs for kolkata drupal meetup
Angularjs for kolkata drupal meetupAngularjs for kolkata drupal meetup
Angularjs for kolkata drupal meetupGoutam Dey
 

Similar to Code-Hub (20)

OVERVIEW: Chromium Source Tree
OVERVIEW: Chromium Source TreeOVERVIEW: Chromium Source Tree
OVERVIEW: Chromium Source Tree
 
JIO and WebViewers: interoperability for Javascript and Web Applications
JIO and WebViewers: interoperability  for Javascript and Web ApplicationsJIO and WebViewers: interoperability  for Javascript and Web Applications
JIO and WebViewers: interoperability for Javascript and Web Applications
 
Dust.js
Dust.jsDust.js
Dust.js
 
DocDoku: Using web technologies in a desktop application. OW2con'15, November...
DocDoku: Using web technologies in a desktop application. OW2con'15, November...DocDoku: Using web technologies in a desktop application. OW2con'15, November...
DocDoku: Using web technologies in a desktop application. OW2con'15, November...
 
Node js vs golang -which one is better ?
Node js vs golang -which one is better ?Node js vs golang -which one is better ?
Node js vs golang -which one is better ?
 
Programming Android
Programming AndroidProgramming Android
Programming Android
 
AstroLabs_Academy_Learning_to_Code-Coding_Bootcamp_Day1.pdf
AstroLabs_Academy_Learning_to_Code-Coding_Bootcamp_Day1.pdfAstroLabs_Academy_Learning_to_Code-Coding_Bootcamp_Day1.pdf
AstroLabs_Academy_Learning_to_Code-Coding_Bootcamp_Day1.pdf
 
Architektura html, css i javascript - Jan Kraus
Architektura html, css i javascript - Jan KrausArchitektura html, css i javascript - Jan Kraus
Architektura html, css i javascript - Jan Kraus
 
Voxxed days Vilnius 2015 - Android Reverse Engineering Lab
Voxxed days Vilnius 2015 - Android Reverse Engineering LabVoxxed days Vilnius 2015 - Android Reverse Engineering Lab
Voxxed days Vilnius 2015 - Android Reverse Engineering Lab
 
Drools & jBPM Workshop London 2013
Drools & jBPM Workshop London 2013Drools & jBPM Workshop London 2013
Drools & jBPM Workshop London 2013
 
Electron JS | Build cross-platform desktop applications with web technologies
Electron JS | Build cross-platform desktop applications with web technologiesElectron JS | Build cross-platform desktop applications with web technologies
Electron JS | Build cross-platform desktop applications with web technologies
 
Keep calm and write reusable code in Android
Keep calm and write reusable code in AndroidKeep calm and write reusable code in Android
Keep calm and write reusable code in Android
 
Who needs containers in a serverless world
Who needs containers in a serverless worldWho needs containers in a serverless world
Who needs containers in a serverless world
 
Scaling xtext
Scaling xtextScaling xtext
Scaling xtext
 
A New CLI for Spring Developer Productivity
A New CLI for Spring Developer ProductivityA New CLI for Spring Developer Productivity
A New CLI for Spring Developer Productivity
 
Best React js Training course in Bangalore
Best React js Training course in BangaloreBest React js Training course in Bangalore
Best React js Training course in Bangalore
 
Programming for non tech entrepreneurs
Programming for non tech entrepreneursProgramming for non tech entrepreneurs
Programming for non tech entrepreneurs
 
GeoServer Developers Workshop
GeoServer Developers WorkshopGeoServer Developers Workshop
GeoServer Developers Workshop
 
Parallel development of Web Apps | Codesushi - Gliwice 2017
Parallel development of Web Apps | Codesushi - Gliwice  2017Parallel development of Web Apps | Codesushi - Gliwice  2017
Parallel development of Web Apps | Codesushi - Gliwice 2017
 
Angularjs for kolkata drupal meetup
Angularjs for kolkata drupal meetupAngularjs for kolkata drupal meetup
Angularjs for kolkata drupal meetup
 

More from Curran Kelleher

The Chiasm Visualization Platform
The Chiasm Visualization PlatformThe Chiasm Visualization Platform
The Chiasm Visualization PlatformCurran Kelleher
 
2011 07 14_fractalperspective
2011 07 14_fractalperspective2011 07 14_fractalperspective
2011 07 14_fractalperspectiveCurran Kelleher
 
Visualizing the Bureau of Labor Statistics Employment Dataset
Visualizing the Bureau of Labor Statistics Employment DatasetVisualizing the Bureau of Labor Statistics Employment Dataset
Visualizing the Bureau of Labor Statistics Employment DatasetCurran Kelleher
 
Multiscale Visualization Using Data Cubes
Multiscale Visualization Using Data CubesMultiscale Visualization Using Data Cubes
Multiscale Visualization Using Data CubesCurran Kelleher
 
CSGSO Welcome Reception Fall 2012
CSGSO Welcome Reception Fall 2012CSGSO Welcome Reception Fall 2012
CSGSO Welcome Reception Fall 2012Curran Kelleher
 

More from Curran Kelleher (9)

Resume
ResumeResume
Resume
 
Introduction to D3
Introduction to D3Introduction to D3
Introduction to D3
 
The Chiasm Visualization Platform
The Chiasm Visualization PlatformThe Chiasm Visualization Platform
The Chiasm Visualization Platform
 
Chiasm
ChiasmChiasm
Chiasm
 
Introduction to D3.js
Introduction to D3.jsIntroduction to D3.js
Introduction to D3.js
 
2011 07 14_fractalperspective
2011 07 14_fractalperspective2011 07 14_fractalperspective
2011 07 14_fractalperspective
 
Visualizing the Bureau of Labor Statistics Employment Dataset
Visualizing the Bureau of Labor Statistics Employment DatasetVisualizing the Bureau of Labor Statistics Employment Dataset
Visualizing the Bureau of Labor Statistics Employment Dataset
 
Multiscale Visualization Using Data Cubes
Multiscale Visualization Using Data CubesMultiscale Visualization Using Data Cubes
Multiscale Visualization Using Data Cubes
 
CSGSO Welcome Reception Fall 2012
CSGSO Welcome Reception Fall 2012CSGSO Welcome Reception Fall 2012
CSGSO Welcome Reception Fall 2012
 

Recently uploaded

08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsRoshan Dwivedi
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilV3cube
 

Recently uploaded (20)

08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 

Code-Hub

  • 2. Programming is Overly Complex ● Development environment setup ● Revision control management ● Dependency management ● Deployment = time and effort learning tools, not writing code. ● The barrier to entry is higher than necessary ● This can be solved through automation
  • 3. Simplification by Automation Automation of what? ● Development environment setup ○ It's all on the server ○ Just open a Web page ● Revision control management ○ It's all on the server ○ Just click "save" ● Dependency management ○ It's all on the server ○ Just use "require(moduleName)' ● Deployment ○ Just click "run" and share that link
  • 4. Prior Art in "Web-Based IDEs" We consider a "Web-Based IDE" something that ● runs in a browser ● lets users edit, save, and run source code The following are notable examples: ● JSBin ● JSFiddle ● CSSDesk ● Cloud9 IDE ● GitHub
  • 5. Prior Art - JSBin code, run, save, deploy - in the browser try it!
  • 6. Prior Art - JSFiddle code, run, save, deploy - in the browser
  • 7. Prior Art - CSSDesk code, run, save, deploy (CSS) - in the browser
  • 8. Prior Art - Cloud9 IDE ● Full featured IDE, runs Node.js code ● Integrates with GitHub and Heroku ● Integrated terminal for Git and Unix commands
  • 9. Prior Art - GitHub ● An in-browser text file editor for Git repositories ● Can be coupled with "GitHub Pages", a service that serves GitHub repositories as Web sites
  • 10. Prior Art in Software Repositories Developers can publish reusable packages with support for dependency management ● The Maven Repository (for Java) ● RubyGems (for Ruby) ● The Node Package Manager (for Node.js) ● The CommonJS module specification ● Asynchronous Module Definition (AMD) ● The Require.js AMD module loader ● ...many more out there ● The point: packages and dependency management empower the platforms
  • 11. The CodeHub Vision No existing tools have all of these features: ● Web-based source code editing ● Definition and use of reusable modules ● Web-based deployment, with ● Automated dependency management Such a tool would support ● Computer science education ● a public Wikipedia-like software repository ● a research testbed for interactive graphics
  • 12. The CodeHub Architecture ● Limited to JavaScript and HTML software ● Based on CommonJS modules ● All versions are published ○ So when an application is linked to or embedded, its behavior does not change (or break) over time ● The server tracks ○ Script content, for all versions ○ The dependency graph, for all versions ● Scripts can be run ○ At runtime, dependencies are evaluated and bundled together into a single page ○ Compilation strategy from a CommonJS Wiki Page
  • 13. CodeHub Scripts ● Every piece of code stored is a "script" ● Each script has an id number ● Each script version has a revision number ● Saving a script creates a new revision ● All script revisions are published ○ For example http://code-hub.org/edit/7.1 edits the script whose id is 7, revision number 1 ● There are three types of scripts: ○ Modules ○ Templates ○ Applications
  • 14. CodeHub Modules ● CodeHub supports CommonJS Modules ● Each module must have a unique name ● Modules can be required with the syntax foo = require('foo') ● Modules can be defined with the syntax @module foo ● Modules define their exported API by adding properties to an exports object
  • 15. CodeHub Templates ● Templates are HTML pages with placeholders of the form ${parameterName} ● Parameter values are passed in from applications that use the template ● ${scripts}gets replaced by script tags including application source code ○ dependencies are bundled together and included also ● Each template has a unique name ● Templates can be defined with the syntax @template templateName
  • 16. CodeHub Applications ● Applications are scripts that can be run ● Applications can depend on modules ● Applications are defined using the syntax @app template templateName ● Applications can pass arbitrary parameters to the template using the syntax @app parameterName value
  • 17. CodeHub Implementation CodeHub was implemented using ● Node.js as a server platform ● The Express.js Web Framework ○ With Jade and Markdown templates ● MongoDB via the Mongoose API ● Git via the Node.js child process API ● Hosted on the Rackspace cloud ○ In a single Ubuntu server VM ● Live now at code-hub.org
  • 18. CodeHub Screenshots: New Script and Script List ddfds
  • 21. Case Study: An Interactive Graphics Course ● Web-based IDEs were used in a course ○ "Computer Programming and Interactive Graphics" ○ a 50-hour summer course for high school students ○ of the MIT Junction program, July-August 2012 ● The class blog contains ○ Links to the "edit" pages in CodeHub ○ Embedded programs from CodeHub using iFrames ○ Comment sections for students to post their work ● The class used ○ JSBin ○ CodeHub ○ Cloud9 IDE ○ GitHub and GitHub Pages
  • 22. Case Study: An Interactive Graphics Course ● Students were first exposed to JSBin ○ Basic JavaScript and HTML5 Canvas features were introduced in "code as I code" fashion using JSBin ○ JSBin's "auto-run" feature provided instant feedback ● Students were then exposed to CodeHub ○ ..but did not use the module functionality ■ as it was beyond their knowledge ○ ..but preferred JSBin because ■ The editor and output are on the same page ■ The code is re-run automatically when changed ● Some students liked ○ the simplicity of CodeHub ○ that CodeHub adds nothing extra when running ■ whereas JSBin adds an "edit in JSBin" button
  • 23. Case Study: An Interactive Graphics Course ● Students were then exposed to GitHub ○ Students created GitHub accounts and a repository ○ Students used the in-browser GitHub editor ■ just for learning basic Markdown ○ Students set up Web sites using GitHub Pages ● Students were then exposed to Cloud9 IDE ○ Students learned the basics of Git, and merging ○ Students used Cloud9 IDE to ■ construct an interactive graphical program ■ publish it to the Web using GitHub Pages ● The overall response was fear and dislike ○ Students perceived GitHub and Cloud9 IDE as overly complex and cumbersome to use ○ JSBin was their most preferred tool overall
  • 24. Case Study: An Interactive Graphics Course Blog Links to source code in CodeHub The running program embedded directly from CodeHub using an iFrame
  • 25. Case Study: An Interactive Graphics Course Blog Comments allowed students to showcase their work and collaborate
  • 26. Case Study: An Interactive Graphics Course Blog A starting point for graphics programming was provided.
  • 27. Shortcomings ● Apps do not have names ○ So the list of scripts includes things like "12.4" ○ Perhaps apps should have names ● Modules are in a single global namespace ○ So modules for specific applications might use "appName.moduleName" for the module name ● Modules are editable by anyone ○ Therefore breakable by anyone ○ No built-in concept of ownership or authorship ● Trumped by JSBin in terms of usability ○ CodeHub needs the "Auto-run JS" feature
  • 28. Future Work ● A "showcase" feature ○ Apps can be showcased on their own page ○ Including a comments section ○ This would enable discussion-based collaboration ● The "Auto-run JS" feature from JSBin ● Visualization of dependencies and apps ○ The content of CodeHub is difficult to navigate ○ A node-link visualization of the dependency graph would be useful for navigation ● A documentation editor ○ Each module could have documentation ○ This would make CodeHub more usable ● Implementation of Information Visualization software within CodeHub