SlideShare a Scribd company logo
WORKSHOP
7th of November, 2014
Background
● Started in 2010 by Prof. Dave O’Hallaron
○ 15-213 followed by 15-112
● Completely student-run
● Timeline:
○ < 2010: Single machine
○ > 2010: VM support
○ > 2011: Autodriver
○ > 2013: Rails upgrade and Tango Web API
Some Numbers
● Approximately 2500 students use it every semester
● 77 classes since 2010 between CMU and CMU-Qatar
● 2 coding challenges
● 2014 (as of 3:20PM today): 320,538 -> ~1034 jobs/day
2012 2013 2014
Becoming Open Source
● Higher customizability
● Larger adoption rate
● Decoupling of two core components
● CMU spirit
● Add your own features!
○ PDF annotation
○ Online quizzes
○ Distributed Job Queue
Overview of Front-end
● Ruby on Rails
○ REST
○ Model-View-Controller (MVC)
■ Model: Internal structure
■ View: What user sees
■ Controller: Supply objects to view for rendering,
page redirecting, etc.
○ Javascript, CSS, etc.
Overview of Front-end
● Important model relations
CUD: CourseUserDatum
AUD: AssessmentUserDatum
User CUD Course
AssessmentAUD
Submission
Overview of Front-end
● Resources & Routing
○ RESTful CRUD
○ In the process of switching to a more traditional
REST interface for models
○ Each Resource Gets 7 routes by default
Overview of Front-end
● For example, Users
○ GET /users => index
○ GET /users/new => new
○ POST /users => create
○ GET /users/:id => show
○ GET /users/:id/edit => edit
○ PATCH /users/:id => update
○ DELETE /users/:id => destroy
Overview of Tango
● External, standalone, job dispatch service
● Stateless
● Highly flexible
● Web API
Overview of Tango
Tango
creates directory
stores files
poll for output file
optional callback
open
upload
addJob
poll
callback
job queue
Overview of Tango
Tango VM pool (EC2/CMU)
rhel.img
rhel.img
rhel601.img
rhel210.img
worker thread
initializeVM
waitVM
copyIn
copyOut
destroyVM
runJob
vmms
job queue
Overview of Tango
● Virtual Machine Management System (VMMS)
● Extending Tango for OpenStack, Docker, Vagrant, Xen
etc
Autograding
Autolab
Upon submission
#validateHandin
#saveHandin
#autogradeAfterHandin
- #createVm
Upon receiving Callback
#autogradeDone
#saveAutograde
- #parseAutoresult
Tango
creates directory
stores files
poll for output file
optional callback
VM pool (EC2/CMU)
rhel.img
rhel.img
rhel601.img
rhel210.img
open
upload
addJob
poll
callback
worker thread
initializeVM
waitVM
copyIn
copyOut
destroyVM
runJob
/courses/COURSE_ID/assessments/AS
SET_ID/handin
.c
tangoRES
T
vmms
Docs
● http://docs.autolab.cs.cmu.edu/
● https://github.com/autolab/Tango/wiki
Getting Started...
● What’s the hardest part of joining a project?
o Setting up your environment!
● We’ve set up an environment for you!
● See the Autolab README for full instructions
o Later, you will need your own DB
o ...and possibly your own Tango for Autograding
Getting Started...
1. Fork Autolab repo on github (https://github.com/autolab/Autolab.git)
1. You can’t push to our repo, so you need to fork your own
2. ssh autolab@54.201.118.81
3. git clone https://github.com/<github_id>/Autolab.git <your_andrewID>
4. cd <your_andrewID>
5. cp lib/autoConfig.rb.template lib/autoConfig.rb
6. cp config/database.yml.template config/database.yml
6. In autoConfig.rb change:
- RESTFUL_HOST = “greatwhite.ics.cs.cmu.edu”
- RESTFUL_PORT = 3000
- AUTOCONFIG_COURSE_DIR =
“/home/autolab/<andrew_ID>/courses”
- RESTFUL_KEY = “demo”
- RESTFUL_COURSELAB = “autolab-demo”
Getting Started...
Getting Started...
7. In config/database.yml change:
- database: <andrew_ID>_autolab_development
- username: root
- password: ‘autolab-demo’
8. Populate Autolab by running:
- bundle exec rake db:create db:migrate
- rake autolab:populate
9. Run Autolab!
- rails s -p <fav_port_num_between_9000_and_9999>
- 54.201.118.81:<port>
- Log in via “Developer Login”, enter email “admin@foo.bar”.
Contributing to Autolab
1. Fork the repository and create a local clone of your fork
a. https://github.com/autolab/Autolab
b. https://github.com/autolab/Tango
1. Assign yourself to a new or existing issue on the project
a. https://github.com/autolab/Autolab/issues
b. https://github.com/autolab/Tango/issues
Contributing to Autolab
3. Create a new local branch “fix_issue” and commit
a. git checkout -b "fix_issue”
b. git add .
c. git commit -m “commit_msg. Fixes #<issue_num>”
3. Push the branch to GitHub
a. git push origin “fix_issue”
Contributing to Autolab
4. Submit a pull request
a. navigate to your fork of the project
b. click the large green “compare and review” button
4. We will review and merge useful pull requests
a. documentation and comments on pull requests are
useful in this regard
Contributing to Autolab
6. Keep your forked repository synced with the project
a. git remote add upstream
https://github.com/autolab/Tango.git
b. git remote add upstream
https://github.com/autolab/Autolab.git
c. git checkout master
d. git fetch upstream
e. git merge upstream/master
Questions and Comments
Questions and
Comments
autolab-dev@andrew.cmu.edu
Ad

More Related Content

What's hot (20)

Webpack
WebpackWebpack
Webpack
Anjali Chawla
 
Grunt.js and Yeoman, Continous Integration
Grunt.js and Yeoman, Continous IntegrationGrunt.js and Yeoman, Continous Integration
Grunt.js and Yeoman, Continous Integration
David Amend
 
Isomorphic web application
Isomorphic web applicationIsomorphic web application
Isomorphic web application
Oliver N
 
Webpack DevTalk
Webpack DevTalkWebpack DevTalk
Webpack DevTalk
Alessandro Bellini
 
Improving build solutions dependency management with webpack
Improving build solutions  dependency management with webpackImproving build solutions  dependency management with webpack
Improving build solutions dependency management with webpack
NodeXperts
 
Webpack
Webpack Webpack
Webpack
DataArt
 
Andrew Mykhaliuk - Sorry, I need to make a build for frontend
Andrew Mykhaliuk - Sorry, I need to make a build for frontendAndrew Mykhaliuk - Sorry, I need to make a build for frontend
Andrew Mykhaliuk - Sorry, I need to make a build for frontend
OdessaJS Conf
 
Webpack Introduction
Webpack IntroductionWebpack Introduction
Webpack Introduction
Anjali Chawla
 
Server Side Rendering, caching and performance
Server Side Rendering, caching and performanceServer Side Rendering, caching and performance
Server Side Rendering, caching and performance
Ateev Chopra
 
Bundle your modules with Webpack
Bundle your modules with WebpackBundle your modules with Webpack
Bundle your modules with Webpack
Jake Peyser
 
Build RESTful API Using Express JS
Build RESTful API Using Express JSBuild RESTful API Using Express JS
Build RESTful API Using Express JS
Cakra Danu Sedayu
 
Server-side JavaScript for the rest of us
Server-side JavaScript for the rest of usServer-side JavaScript for the rest of us
Server-side JavaScript for the rest of us
Kyle Simpson
 
Webpack slides
Webpack slidesWebpack slides
Webpack slides
Андрей Вандакуров
 
Node.js 201: building real-world applications in pure JavaScript
Node.js 201: building real-world applications in pure JavaScriptNode.js 201: building real-world applications in pure JavaScript
Node.js 201: building real-world applications in pure JavaScript
Tom Boutell
 
Server-side React with Headless CMS – Exove
Server-side React with Headless CMS – ExoveServer-side React with Headless CMS – Exove
Server-side React with Headless CMS – Exove
Exove
 
Capybara
CapybaraCapybara
Capybara
Mona Soni
 
Module design pattern i.e. express js
Module design pattern i.e. express jsModule design pattern i.e. express js
Module design pattern i.e. express js
Ahmed Assaf
 
NodeJS: n00b no more
NodeJS: n00b no moreNodeJS: n00b no more
NodeJS: n00b no more
Ben Peachey
 
Web workers and service workers
Web workers and service workersWeb workers and service workers
Web workers and service workers
Nitish Phanse
 
Packing for the Web with Webpack
Packing for the Web with WebpackPacking for the Web with Webpack
Packing for the Web with Webpack
Thiago Temple
 
Grunt.js and Yeoman, Continous Integration
Grunt.js and Yeoman, Continous IntegrationGrunt.js and Yeoman, Continous Integration
Grunt.js and Yeoman, Continous Integration
David Amend
 
Isomorphic web application
Isomorphic web applicationIsomorphic web application
Isomorphic web application
Oliver N
 
Improving build solutions dependency management with webpack
Improving build solutions  dependency management with webpackImproving build solutions  dependency management with webpack
Improving build solutions dependency management with webpack
NodeXperts
 
Webpack
Webpack Webpack
Webpack
DataArt
 
Andrew Mykhaliuk - Sorry, I need to make a build for frontend
Andrew Mykhaliuk - Sorry, I need to make a build for frontendAndrew Mykhaliuk - Sorry, I need to make a build for frontend
Andrew Mykhaliuk - Sorry, I need to make a build for frontend
OdessaJS Conf
 
Webpack Introduction
Webpack IntroductionWebpack Introduction
Webpack Introduction
Anjali Chawla
 
Server Side Rendering, caching and performance
Server Side Rendering, caching and performanceServer Side Rendering, caching and performance
Server Side Rendering, caching and performance
Ateev Chopra
 
Bundle your modules with Webpack
Bundle your modules with WebpackBundle your modules with Webpack
Bundle your modules with Webpack
Jake Peyser
 
Build RESTful API Using Express JS
Build RESTful API Using Express JSBuild RESTful API Using Express JS
Build RESTful API Using Express JS
Cakra Danu Sedayu
 
Server-side JavaScript for the rest of us
Server-side JavaScript for the rest of usServer-side JavaScript for the rest of us
Server-side JavaScript for the rest of us
Kyle Simpson
 
Node.js 201: building real-world applications in pure JavaScript
Node.js 201: building real-world applications in pure JavaScriptNode.js 201: building real-world applications in pure JavaScript
Node.js 201: building real-world applications in pure JavaScript
Tom Boutell
 
Server-side React with Headless CMS – Exove
Server-side React with Headless CMS – ExoveServer-side React with Headless CMS – Exove
Server-side React with Headless CMS – Exove
Exove
 
Module design pattern i.e. express js
Module design pattern i.e. express jsModule design pattern i.e. express js
Module design pattern i.e. express js
Ahmed Assaf
 
NodeJS: n00b no more
NodeJS: n00b no moreNodeJS: n00b no more
NodeJS: n00b no more
Ben Peachey
 
Web workers and service workers
Web workers and service workersWeb workers and service workers
Web workers and service workers
Nitish Phanse
 
Packing for the Web with Webpack
Packing for the Web with WebpackPacking for the Web with Webpack
Packing for the Web with Webpack
Thiago Temple
 

Viewers also liked (8)

Book
BookBook
Book
Cristóbal Hidalgo García
 
AUTOLAB ( A Laboratory Instrument)
AUTOLAB ( A Laboratory Instrument)AUTOLAB ( A Laboratory Instrument)
AUTOLAB ( A Laboratory Instrument)
Norolayn Said
 
Protector Glove Box Overview Presentation
Protector Glove Box Overview PresentationProtector Glove Box Overview Presentation
Protector Glove Box Overview Presentation
Labconco Corporation
 
Lab equipment.ppt 2013
Lab equipment.ppt 2013Lab equipment.ppt 2013
Lab equipment.ppt 2013
sinnes
 
Analytical instrument
Analytical instrumentAnalytical instrument
Analytical instrument
Pranjit Sharmah
 
Laboratory Equipment - Use of Equipment
Laboratory Equipment - Use of EquipmentLaboratory Equipment - Use of Equipment
Laboratory Equipment - Use of Equipment
cjhiggs
 
1.4 Laboratory Equipment: Names & Uses
1.4 Laboratory Equipment:  Names & Uses1.4 Laboratory Equipment:  Names & Uses
1.4 Laboratory Equipment: Names & Uses
Cheryl Bausman
 
Lab equipment
Lab equipmentLab equipment
Lab equipment
OhMiss
 
AUTOLAB ( A Laboratory Instrument)
AUTOLAB ( A Laboratory Instrument)AUTOLAB ( A Laboratory Instrument)
AUTOLAB ( A Laboratory Instrument)
Norolayn Said
 
Protector Glove Box Overview Presentation
Protector Glove Box Overview PresentationProtector Glove Box Overview Presentation
Protector Glove Box Overview Presentation
Labconco Corporation
 
Lab equipment.ppt 2013
Lab equipment.ppt 2013Lab equipment.ppt 2013
Lab equipment.ppt 2013
sinnes
 
Laboratory Equipment - Use of Equipment
Laboratory Equipment - Use of EquipmentLaboratory Equipment - Use of Equipment
Laboratory Equipment - Use of Equipment
cjhiggs
 
1.4 Laboratory Equipment: Names & Uses
1.4 Laboratory Equipment:  Names & Uses1.4 Laboratory Equipment:  Names & Uses
1.4 Laboratory Equipment: Names & Uses
Cheryl Bausman
 
Lab equipment
Lab equipmentLab equipment
Lab equipment
OhMiss
 
Ad

Similar to Autolab Workshop (20)

Introduction to rails
Introduction to railsIntroduction to rails
Introduction to rails
Go Asgard
 
Daniel Steigerwald: EsteJS - javascriptové aplikace robusně, modulárně a komf...
Daniel Steigerwald: EsteJS - javascriptové aplikace robusně, modulárně a komf...Daniel Steigerwald: EsteJS - javascriptové aplikace robusně, modulárně a komf...
Daniel Steigerwald: EsteJS - javascriptové aplikace robusně, modulárně a komf...
Develcz
 
HTML, CSS & Javascript Architecture (extended version) - Jan Kraus
HTML, CSS & Javascript Architecture (extended version) - Jan KrausHTML, CSS & Javascript Architecture (extended version) - Jan Kraus
HTML, CSS & Javascript Architecture (extended version) - Jan Kraus
Women in Technology Poland
 
Dust.js
Dust.jsDust.js
Dust.js
Yevgeniy Brikman
 
202107 - Orion introduction - COSCUP
202107 - Orion introduction - COSCUP202107 - Orion introduction - COSCUP
202107 - Orion introduction - COSCUP
Ronald Hsu
 
EuroPython 2013 - Python3 TurboGears Training
EuroPython 2013 - Python3 TurboGears TrainingEuroPython 2013 - Python3 TurboGears Training
EuroPython 2013 - Python3 TurboGears Training
Alessandro Molina
 
Angular 2 vs React
Angular 2 vs ReactAngular 2 vs React
Angular 2 vs React
Iran Reyes Fleitas
 
Drupal 8 - Core and API Changes
Drupal 8 - Core and API ChangesDrupal 8 - Core and API Changes
Drupal 8 - Core and API Changes
Shabir Ahmad
 
Intro - End to end ML with Kubeflow @ SignalConf 2018
Intro - End to end ML with Kubeflow @ SignalConf 2018Intro - End to end ML with Kubeflow @ SignalConf 2018
Intro - End to end ML with Kubeflow @ SignalConf 2018
Holden Karau
 
Sprint 17
Sprint 17Sprint 17
Sprint 17
ManageIQ
 
Creating a custom API for a headless Drupal
Creating a custom API for a headless DrupalCreating a custom API for a headless Drupal
Creating a custom API for a headless Drupal
Exove
 
Angular js
Angular jsAngular js
Angular js
Mauro Servienti
 
Efficient development workflows with composer
Efficient development workflows with composerEfficient development workflows with composer
Efficient development workflows with composer
nuppla
 
Modern Perl Web Development with Dancer
Modern Perl Web Development with DancerModern Perl Web Development with Dancer
Modern Perl Web Development with Dancer
Dave Cross
 
JSFest 2019: Technology agnostic microservices at SPA frontend
JSFest 2019: Technology agnostic microservices at SPA frontendJSFest 2019: Technology agnostic microservices at SPA frontend
JSFest 2019: Technology agnostic microservices at SPA frontend
Vlad Fedosov
 
Doctrine Project
Doctrine ProjectDoctrine Project
Doctrine Project
Daniel Lima
 
Counterclockwise past present future
Counterclockwise  past present futureCounterclockwise  past present future
Counterclockwise past present future
lolopetit
 
Scraping the web with Laravel, Dusk, Docker, and PHP
Scraping the web with Laravel, Dusk, Docker, and PHPScraping the web with Laravel, Dusk, Docker, and PHP
Scraping the web with Laravel, Dusk, Docker, and PHP
Paul Redmond
 
Next.js with drupal, the good parts
Next.js with drupal, the good partsNext.js with drupal, the good parts
Next.js with drupal, the good parts
Taller Negócio Digitais
 
You Can Work on the Web Patform! (GOSIM 2023)
You Can Work on the Web Patform! (GOSIM 2023)You Can Work on the Web Patform! (GOSIM 2023)
You Can Work on the Web Patform! (GOSIM 2023)
Igalia
 
Introduction to rails
Introduction to railsIntroduction to rails
Introduction to rails
Go Asgard
 
Daniel Steigerwald: EsteJS - javascriptové aplikace robusně, modulárně a komf...
Daniel Steigerwald: EsteJS - javascriptové aplikace robusně, modulárně a komf...Daniel Steigerwald: EsteJS - javascriptové aplikace robusně, modulárně a komf...
Daniel Steigerwald: EsteJS - javascriptové aplikace robusně, modulárně a komf...
Develcz
 
HTML, CSS & Javascript Architecture (extended version) - Jan Kraus
HTML, CSS & Javascript Architecture (extended version) - Jan KrausHTML, CSS & Javascript Architecture (extended version) - Jan Kraus
HTML, CSS & Javascript Architecture (extended version) - Jan Kraus
Women in Technology Poland
 
202107 - Orion introduction - COSCUP
202107 - Orion introduction - COSCUP202107 - Orion introduction - COSCUP
202107 - Orion introduction - COSCUP
Ronald Hsu
 
EuroPython 2013 - Python3 TurboGears Training
EuroPython 2013 - Python3 TurboGears TrainingEuroPython 2013 - Python3 TurboGears Training
EuroPython 2013 - Python3 TurboGears Training
Alessandro Molina
 
Drupal 8 - Core and API Changes
Drupal 8 - Core and API ChangesDrupal 8 - Core and API Changes
Drupal 8 - Core and API Changes
Shabir Ahmad
 
Intro - End to end ML with Kubeflow @ SignalConf 2018
Intro - End to end ML with Kubeflow @ SignalConf 2018Intro - End to end ML with Kubeflow @ SignalConf 2018
Intro - End to end ML with Kubeflow @ SignalConf 2018
Holden Karau
 
Creating a custom API for a headless Drupal
Creating a custom API for a headless DrupalCreating a custom API for a headless Drupal
Creating a custom API for a headless Drupal
Exove
 
Efficient development workflows with composer
Efficient development workflows with composerEfficient development workflows with composer
Efficient development workflows with composer
nuppla
 
Modern Perl Web Development with Dancer
Modern Perl Web Development with DancerModern Perl Web Development with Dancer
Modern Perl Web Development with Dancer
Dave Cross
 
JSFest 2019: Technology agnostic microservices at SPA frontend
JSFest 2019: Technology agnostic microservices at SPA frontendJSFest 2019: Technology agnostic microservices at SPA frontend
JSFest 2019: Technology agnostic microservices at SPA frontend
Vlad Fedosov
 
Doctrine Project
Doctrine ProjectDoctrine Project
Doctrine Project
Daniel Lima
 
Counterclockwise past present future
Counterclockwise  past present futureCounterclockwise  past present future
Counterclockwise past present future
lolopetit
 
Scraping the web with Laravel, Dusk, Docker, and PHP
Scraping the web with Laravel, Dusk, Docker, and PHPScraping the web with Laravel, Dusk, Docker, and PHP
Scraping the web with Laravel, Dusk, Docker, and PHP
Paul Redmond
 
You Can Work on the Web Patform! (GOSIM 2023)
You Can Work on the Web Patform! (GOSIM 2023)You Can Work on the Web Patform! (GOSIM 2023)
You Can Work on the Web Patform! (GOSIM 2023)
Igalia
 
Ad

Recently uploaded (20)

Technology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data AnalyticsTechnology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data Analytics
InData Labs
 
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptxIncreasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Anoop Ashok
 
HCL Nomad Web – Best Practices and Managing Multiuser Environments
HCL Nomad Web – Best Practices and Managing Multiuser EnvironmentsHCL Nomad Web – Best Practices and Managing Multiuser Environments
HCL Nomad Web – Best Practices and Managing Multiuser Environments
panagenda
 
Greenhouse_Monitoring_Presentation.pptx.
Greenhouse_Monitoring_Presentation.pptx.Greenhouse_Monitoring_Presentation.pptx.
Greenhouse_Monitoring_Presentation.pptx.
hpbmnnxrvb
 
TrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business ConsultingTrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business Consulting
Trs Labs
 
Into The Box Conference Keynote Day 1 (ITB2025)
Into The Box Conference Keynote Day 1 (ITB2025)Into The Box Conference Keynote Day 1 (ITB2025)
Into The Box Conference Keynote Day 1 (ITB2025)
Ortus Solutions, Corp
 
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes
 
What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...
Vishnu Singh Chundawat
 
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdfComplete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Software Company
 
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
SOFTTECHHUB
 
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc
 
tecnologias de las primeras civilizaciones.pdf
tecnologias de las primeras civilizaciones.pdftecnologias de las primeras civilizaciones.pdf
tecnologias de las primeras civilizaciones.pdf
fjgm517
 
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
organizerofv
 
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdfSAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
Precisely
 
How Can I use the AI Hype in my Business Context?
How Can I use the AI Hype in my Business Context?How Can I use the AI Hype in my Business Context?
How Can I use the AI Hype in my Business Context?
Daniel Lehner
 
2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx
Samuele Fogagnolo
 
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul
 
Linux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdfLinux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdf
RHCSA Guru
 
Mobile App Development Company in Saudi Arabia
Mobile App Development Company in Saudi ArabiaMobile App Development Company in Saudi Arabia
Mobile App Development Company in Saudi Arabia
Steve Jonas
 
Role of Data Annotation Services in AI-Powered Manufacturing
Role of Data Annotation Services in AI-Powered ManufacturingRole of Data Annotation Services in AI-Powered Manufacturing
Role of Data Annotation Services in AI-Powered Manufacturing
Andrew Leo
 
Technology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data AnalyticsTechnology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data Analytics
InData Labs
 
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptxIncreasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Anoop Ashok
 
HCL Nomad Web – Best Practices and Managing Multiuser Environments
HCL Nomad Web – Best Practices and Managing Multiuser EnvironmentsHCL Nomad Web – Best Practices and Managing Multiuser Environments
HCL Nomad Web – Best Practices and Managing Multiuser Environments
panagenda
 
Greenhouse_Monitoring_Presentation.pptx.
Greenhouse_Monitoring_Presentation.pptx.Greenhouse_Monitoring_Presentation.pptx.
Greenhouse_Monitoring_Presentation.pptx.
hpbmnnxrvb
 
TrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business ConsultingTrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business Consulting
Trs Labs
 
Into The Box Conference Keynote Day 1 (ITB2025)
Into The Box Conference Keynote Day 1 (ITB2025)Into The Box Conference Keynote Day 1 (ITB2025)
Into The Box Conference Keynote Day 1 (ITB2025)
Ortus Solutions, Corp
 
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes
 
What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...
Vishnu Singh Chundawat
 
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdfComplete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Software Company
 
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
SOFTTECHHUB
 
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc
 
tecnologias de las primeras civilizaciones.pdf
tecnologias de las primeras civilizaciones.pdftecnologias de las primeras civilizaciones.pdf
tecnologias de las primeras civilizaciones.pdf
fjgm517
 
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
organizerofv
 
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdfSAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
Precisely
 
How Can I use the AI Hype in my Business Context?
How Can I use the AI Hype in my Business Context?How Can I use the AI Hype in my Business Context?
How Can I use the AI Hype in my Business Context?
Daniel Lehner
 
2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx
Samuele Fogagnolo
 
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul
 
Linux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdfLinux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdf
RHCSA Guru
 
Mobile App Development Company in Saudi Arabia
Mobile App Development Company in Saudi ArabiaMobile App Development Company in Saudi Arabia
Mobile App Development Company in Saudi Arabia
Steve Jonas
 
Role of Data Annotation Services in AI-Powered Manufacturing
Role of Data Annotation Services in AI-Powered ManufacturingRole of Data Annotation Services in AI-Powered Manufacturing
Role of Data Annotation Services in AI-Powered Manufacturing
Andrew Leo
 

Autolab Workshop

  • 2. Background ● Started in 2010 by Prof. Dave O’Hallaron ○ 15-213 followed by 15-112 ● Completely student-run ● Timeline: ○ < 2010: Single machine ○ > 2010: VM support ○ > 2011: Autodriver ○ > 2013: Rails upgrade and Tango Web API
  • 3. Some Numbers ● Approximately 2500 students use it every semester ● 77 classes since 2010 between CMU and CMU-Qatar ● 2 coding challenges ● 2014 (as of 3:20PM today): 320,538 -> ~1034 jobs/day 2012 2013 2014
  • 4. Becoming Open Source ● Higher customizability ● Larger adoption rate ● Decoupling of two core components ● CMU spirit ● Add your own features! ○ PDF annotation ○ Online quizzes ○ Distributed Job Queue
  • 5. Overview of Front-end ● Ruby on Rails ○ REST ○ Model-View-Controller (MVC) ■ Model: Internal structure ■ View: What user sees ■ Controller: Supply objects to view for rendering, page redirecting, etc. ○ Javascript, CSS, etc.
  • 6. Overview of Front-end ● Important model relations CUD: CourseUserDatum AUD: AssessmentUserDatum User CUD Course AssessmentAUD Submission
  • 7. Overview of Front-end ● Resources & Routing ○ RESTful CRUD ○ In the process of switching to a more traditional REST interface for models ○ Each Resource Gets 7 routes by default
  • 8. Overview of Front-end ● For example, Users ○ GET /users => index ○ GET /users/new => new ○ POST /users => create ○ GET /users/:id => show ○ GET /users/:id/edit => edit ○ PATCH /users/:id => update ○ DELETE /users/:id => destroy
  • 9. Overview of Tango ● External, standalone, job dispatch service ● Stateless ● Highly flexible ● Web API
  • 10. Overview of Tango Tango creates directory stores files poll for output file optional callback open upload addJob poll callback job queue
  • 11. Overview of Tango Tango VM pool (EC2/CMU) rhel.img rhel.img rhel601.img rhel210.img worker thread initializeVM waitVM copyIn copyOut destroyVM runJob vmms job queue
  • 12. Overview of Tango ● Virtual Machine Management System (VMMS) ● Extending Tango for OpenStack, Docker, Vagrant, Xen etc
  • 13. Autograding Autolab Upon submission #validateHandin #saveHandin #autogradeAfterHandin - #createVm Upon receiving Callback #autogradeDone #saveAutograde - #parseAutoresult Tango creates directory stores files poll for output file optional callback VM pool (EC2/CMU) rhel.img rhel.img rhel601.img rhel210.img open upload addJob poll callback worker thread initializeVM waitVM copyIn copyOut destroyVM runJob /courses/COURSE_ID/assessments/AS SET_ID/handin .c tangoRES T vmms
  • 15. Getting Started... ● What’s the hardest part of joining a project? o Setting up your environment! ● We’ve set up an environment for you! ● See the Autolab README for full instructions o Later, you will need your own DB o ...and possibly your own Tango for Autograding
  • 16. Getting Started... 1. Fork Autolab repo on github (https://github.com/autolab/Autolab.git) 1. You can’t push to our repo, so you need to fork your own 2. ssh [email protected] 3. git clone https://github.com/<github_id>/Autolab.git <your_andrewID> 4. cd <your_andrewID> 5. cp lib/autoConfig.rb.template lib/autoConfig.rb 6. cp config/database.yml.template config/database.yml
  • 17. 6. In autoConfig.rb change: - RESTFUL_HOST = “greatwhite.ics.cs.cmu.edu” - RESTFUL_PORT = 3000 - AUTOCONFIG_COURSE_DIR = “/home/autolab/<andrew_ID>/courses” - RESTFUL_KEY = “demo” - RESTFUL_COURSELAB = “autolab-demo” Getting Started...
  • 18. Getting Started... 7. In config/database.yml change: - database: <andrew_ID>_autolab_development - username: root - password: ‘autolab-demo’ 8. Populate Autolab by running: - bundle exec rake db:create db:migrate - rake autolab:populate 9. Run Autolab! - rails s -p <fav_port_num_between_9000_and_9999> - 54.201.118.81:<port> - Log in via “Developer Login”, enter email “[email protected]”.
  • 19. Contributing to Autolab 1. Fork the repository and create a local clone of your fork a. https://github.com/autolab/Autolab b. https://github.com/autolab/Tango 1. Assign yourself to a new or existing issue on the project a. https://github.com/autolab/Autolab/issues b. https://github.com/autolab/Tango/issues
  • 20. Contributing to Autolab 3. Create a new local branch “fix_issue” and commit a. git checkout -b "fix_issue” b. git add . c. git commit -m “commit_msg. Fixes #<issue_num>” 3. Push the branch to GitHub a. git push origin “fix_issue”
  • 21. Contributing to Autolab 4. Submit a pull request a. navigate to your fork of the project b. click the large green “compare and review” button 4. We will review and merge useful pull requests a. documentation and comments on pull requests are useful in this regard
  • 22. Contributing to Autolab 6. Keep your forked repository synced with the project a. git remote add upstream https://github.com/autolab/Tango.git b. git remote add upstream https://github.com/autolab/Autolab.git c. git checkout master d. git fetch upstream e. git merge upstream/master

Editor's Notes

  • #2: Communicate that this is a community project and we are all shareholders. It’s good for all the CMU students if we become really successful. Give the impression that we are actively working on it and we would like to collaborate. It’s not a black box that develops itself. Teach enough to have an overall idea of how Autolab works and where someone can start reading through the code when someone needs to figure out implement/debug parts of the system. We are not trying to “promote” Autolab. These people are already users. We can not teach them the whole codebase.