SlideShare ist ein Scribd-Unternehmen logo
1 von 20
Mozilla Add-on SDK
I'm Martin aka freaktechnik 
● Information Technology and Electrical 
Engineering student 
● Euphonium player 
● Nightingale Media Player developer 
● Firefox Add-on developer
Goals 
● Basic Firefox Extension Knowledge 
● Tools for Development 
● Add-on SDK Extension Structure and API
Firefox Extensions 
3 Different Types
Traditional Overlay Add-ons 
● The old style 
● Restart to apply 
● Add content by overlaying documents 
● XPCOM
Bootstrapped Extensions 
● Since Firefox 4 
● Restartless 
● Everything is done with XPCOM
Add-on SDK Extensions 
● Compile to bootstrapped extensions 
● CommonJS environement
Base Knowledge 
● JavaScript 
● Maybe HTML and CSS 
● XPCOM
Tools 
● Firefox 
● CFX or JPM 
● An editor
JPM 
● The 'compiler' apart from others 
● Node based 
● npm install jpm --global
Basic Extension Structure 
jpm init
Basic Extension Structure 
● lib →main modules 
● data →misc files 
● test →unit test modules 
● package.json →add-on metadata
Modules 
● Where functionality is 
● Prebuilt SDK modules 
● 3rd party “libraries“ 
● Custom modules for Add-on logic
SDK Modules 
● Split into high-level and low-level API modules 
● High-level modules provide simple APIs for 
things like 
– Page content modification (sdk/page-mod) 
– Tabs (sdk/tabs) 
– Requests (sdk/request) 
– Buttons and toolbars (sdk/ui) 
– Panels (sdk/panel) 
– Clipboard (sdk/clipboard) 
– Passwords (sdk/passwords)
Custom Modules 
● Main loading point module (usually main.js) 
● require() to import other modules 
● exports object for public symbols
Content Scripts 
● Scripts that run in a browser context 
● Still run in a separated sandbox 
● They have access to the document's DOM 
● port for communication
Debugging 
● Firefox 31 
● Always enabled via run command 
● Content-scripts can't be reached
XPCOM with Jetpack 
● const { Cu, Ci, Cr, Cc } = 
require('chrome') 
● Be nice to the global scope: 
const { jsm } = 
require('resource://some.jsm'); 
● You can define components
Future 
● JPM release 
● Integrated extension toolkit
Help! 
● MDN: 
https://developer.mozilla.org/en-US/Add-ons/SDK/ 
● Sourcecode: 
https://github.com/mozilla/addon-sdk 
● IRC: irc://irc.mozilla.org/jetpack 
● Follow @MozillaCH on Twitter

Weitere ähnliche Inhalte

Was ist angesagt?

Continuous Deployment of Front-end JavaScript with StriderCD, Github and Sauc...
Continuous Deployment of Front-end JavaScript with StriderCD, Github and Sauc...Continuous Deployment of Front-end JavaScript with StriderCD, Github and Sauc...
Continuous Deployment of Front-end JavaScript with StriderCD, Github and Sauc...
niallo
 

Was ist angesagt? (16)

Continuous Deployment of Front-end JavaScript with StriderCD, Github and Sauc...
Continuous Deployment of Front-end JavaScript with StriderCD, Github and Sauc...Continuous Deployment of Front-end JavaScript with StriderCD, Github and Sauc...
Continuous Deployment of Front-end JavaScript with StriderCD, Github and Sauc...
 
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
 
Web Framework and Struts 2 - KNOWARTH
Web Framework and Struts 2 - KNOWARTHWeb Framework and Struts 2 - KNOWARTH
Web Framework and Struts 2 - KNOWARTH
 
Enterprise Griffon
Enterprise GriffonEnterprise Griffon
Enterprise Griffon
 
Hello android
Hello androidHello android
Hello android
 
Cross platform dotnet development using dotnet core
Cross platform dotnet development using dotnet coreCross platform dotnet development using dotnet core
Cross platform dotnet development using dotnet core
 
Docker @haufe lexware tech lunch
Docker @haufe lexware tech lunchDocker @haufe lexware tech lunch
Docker @haufe lexware tech lunch
 
Eclipse demo camp 2016 Toronto
Eclipse demo camp 2016 TorontoEclipse demo camp 2016 Toronto
Eclipse demo camp 2016 Toronto
 
2013 Ohio LinuxFest - Ports, Packages, and PBI's
2013 Ohio LinuxFest - Ports, Packages, and PBI's2013 Ohio LinuxFest - Ports, Packages, and PBI's
2013 Ohio LinuxFest - Ports, Packages, and PBI's
 
Joomla!Day Poland 2013 - Joomla Architecture (Ofer Cohen)
Joomla!Day Poland 2013 - Joomla Architecture  (Ofer Cohen)Joomla!Day Poland 2013 - Joomla Architecture  (Ofer Cohen)
Joomla!Day Poland 2013 - Joomla Architecture (Ofer Cohen)
 
WSO2 Presentation Layer
WSO2 Presentation LayerWSO2 Presentation Layer
WSO2 Presentation Layer
 
ASP.NET vNext
ASP.NET vNextASP.NET vNext
ASP.NET vNext
 
Custom angular libraries
Custom angular librariesCustom angular libraries
Custom angular libraries
 
.Net Core
.Net Core.Net Core
.Net Core
 
SELF 2014: PBI v10: Application Management Made Easy
SELF 2014: PBI v10: Application Management Made EasySELF 2014: PBI v10: Application Management Made Easy
SELF 2014: PBI v10: Application Management Made Easy
 
Ruby on rails
Ruby on railsRuby on rails
Ruby on rails
 

Andere mochten auch

The element of art
The element of artThe element of art
The element of art
gzorskas
 
The year you where born
The year you where bornThe year you where born
The year you where born
JE
 
An update on psychopharmacology part i 22 june 2007 fountain house
An update on psychopharmacology part i 22 june 2007 fountain houseAn update on psychopharmacology part i 22 june 2007 fountain house
An update on psychopharmacology part i 22 june 2007 fountain house
Pk Doctors
 

Andere mochten auch (20)

Nightingale Features Showcase
Nightingale Features ShowcaseNightingale Features Showcase
Nightingale Features Showcase
 
Building Mobile Apps on Salesforce Platform with Mobile SDK
Building Mobile Apps on Salesforce Platform with Mobile SDKBuilding Mobile Apps on Salesforce Platform with Mobile SDK
Building Mobile Apps on Salesforce Platform with Mobile SDK
 
The element of art
The element of artThe element of art
The element of art
 
24symbols. The Spotify Model for eBooks - Presentation
24symbols. The Spotify Model for eBooks - Presentation24symbols. The Spotify Model for eBooks - Presentation
24symbols. The Spotify Model for eBooks - Presentation
 
CómicSJ yang zu
CómicSJ yang  zuCómicSJ yang  zu
CómicSJ yang zu
 
Hosted Virtualization
Hosted VirtualizationHosted Virtualization
Hosted Virtualization
 
P1121327289
P1121327289P1121327289
P1121327289
 
P1121105111
P1121105111P1121105111
P1121105111
 
P1121102462
P1121102462P1121102462
P1121102462
 
The year you where born
The year you where bornThe year you where born
The year you where born
 
Parkour
ParkourParkour
Parkour
 
Great expectations
Great expectationsGreat expectations
Great expectations
 
P1121138815
P1121138815P1121138815
P1121138815
 
London
LondonLondon
London
 
Major_Proj_Ramya
Major_Proj_RamyaMajor_Proj_Ramya
Major_Proj_Ramya
 
P1131210137
P1131210137P1131210137
P1131210137
 
Footprints Of Disaster.Okspra Hndts
Footprints Of Disaster.Okspra HndtsFootprints Of Disaster.Okspra Hndts
Footprints Of Disaster.Okspra Hndts
 
P1131213152
P1131213152P1131213152
P1131213152
 
P1151139820
P1151139820P1151139820
P1151139820
 
An update on psychopharmacology part i 22 june 2007 fountain house
An update on psychopharmacology part i 22 june 2007 fountain houseAn update on psychopharmacology part i 22 june 2007 fountain house
An update on psychopharmacology part i 22 june 2007 fountain house
 

Ähnlich wie Brief Introduction to the Mozilla Add-on SDK

Web technologies for desktop development
Web technologies for desktop developmentWeb technologies for desktop development
Web technologies for desktop development
Darko Kukovec
 

Ähnlich wie Brief Introduction to the Mozilla Add-on SDK (20)

CBDW2014- Intro to CommandBox; The ColdFusion CLI, Package Manager, and REPL ...
CBDW2014- Intro to CommandBox; The ColdFusion CLI, Package Manager, and REPL ...CBDW2014- Intro to CommandBox; The ColdFusion CLI, Package Manager, and REPL ...
CBDW2014- Intro to CommandBox; The ColdFusion CLI, Package Manager, and REPL ...
 
Introduction and course Details of Embedded Linux Platform Developer Training
Introduction and course Details of Embedded Linux Platform Developer TrainingIntroduction and course Details of Embedded Linux Platform Developer Training
Introduction and course Details of Embedded Linux Platform Developer Training
 
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
 
Symfony under control. Continuous Integration and Automated Deployments in Sy...
Symfony under control. Continuous Integration and Automated Deployments in Sy...Symfony under control. Continuous Integration and Automated Deployments in Sy...
Symfony under control. Continuous Integration and Automated Deployments in Sy...
 
Symfony Under Control by Maxim Romanovsky
Symfony Under Control by Maxim RomanovskySymfony Under Control by Maxim Romanovsky
Symfony Under Control by Maxim Romanovsky
 
Informix Expedition Through Connectivity
Informix Expedition Through ConnectivityInformix Expedition Through Connectivity
Informix Expedition Through Connectivity
 
OVERVIEW: Chromium Source Tree
OVERVIEW: Chromium Source TreeOVERVIEW: Chromium Source Tree
OVERVIEW: Chromium Source Tree
 
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...
 
DocDokuPLM presentation - OW2Con 2015 Community Award winner
DocDokuPLM presentation - OW2Con 2015 Community Award winnerDocDokuPLM presentation - OW2Con 2015 Community Award winner
DocDokuPLM presentation - OW2Con 2015 Community Award winner
 
Android for Embedded Linux Developers
Android for Embedded Linux DevelopersAndroid for Embedded Linux Developers
Android for Embedded Linux Developers
 
Moodle Development Best Pracitces
Moodle Development Best PracitcesMoodle Development Best Pracitces
Moodle Development Best Pracitces
 
Web technologies for desktop development
Web technologies for desktop developmentWeb technologies for desktop development
Web technologies for desktop development
 
Javascript Update May 2013
Javascript Update May 2013Javascript Update May 2013
Javascript Update May 2013
 
Build your apps everywhere with Lightning Web Components Open Source, Fabien ...
Build your apps everywhere with Lightning Web Components Open Source, Fabien ...Build your apps everywhere with Lightning Web Components Open Source, Fabien ...
Build your apps everywhere with Lightning Web Components Open Source, Fabien ...
 
Update on the open source browser space (16th GENIVI AMM)
Update on the open source browser space (16th GENIVI AMM)Update on the open source browser space (16th GENIVI AMM)
Update on the open source browser space (16th GENIVI AMM)
 
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
 
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
 
OpenCms Days 2015 Workflow using Docker and Jenkins
OpenCms Days 2015 Workflow using Docker and JenkinsOpenCms Days 2015 Workflow using Docker and Jenkins
OpenCms Days 2015 Workflow using Docker and Jenkins
 
Yocto Project Dev Day Prague 2017 - Advanced class - Kernel modules with eSDK
Yocto Project Dev Day Prague 2017 - Advanced class - Kernel modules with eSDKYocto Project Dev Day Prague 2017 - Advanced class - Kernel modules with eSDK
Yocto Project Dev Day Prague 2017 - Advanced class - Kernel modules with eSDK
 
Embedded Linux on ARM
Embedded Linux on ARMEmbedded Linux on ARM
Embedded Linux on ARM
 

Mehr von Martin Giger

Nightingale Social & Cloud mockup
Nightingale Social & Cloud mockupNightingale Social & Cloud mockup
Nightingale Social & Cloud mockup
Martin Giger
 
ig_chino plakat 2010
ig_chino plakat 2010ig_chino plakat 2010
ig_chino plakat 2010
Martin Giger
 
ig_chino Flyer 2010
ig_chino Flyer 2010ig_chino Flyer 2010
ig_chino Flyer 2010
Martin Giger
 
Friedrich Schiller
Friedrich SchillerFriedrich Schiller
Friedrich Schiller
Martin Giger
 
Jacob Und Willhelm Grimm
Jacob Und Willhelm GrimmJacob Und Willhelm Grimm
Jacob Und Willhelm Grimm
Martin Giger
 
Hochdruck oder Tiefdruck
Hochdruck oder TiefdruckHochdruck oder Tiefdruck
Hochdruck oder Tiefdruck
Martin Giger
 
Wie Funktioniert ein Hochregallager
Wie Funktioniert ein HochregallagerWie Funktioniert ein Hochregallager
Wie Funktioniert ein Hochregallager
Martin Giger
 
BNSF Präsentation
BNSF PräsentationBNSF Präsentation
BNSF Präsentation
Martin Giger
 

Mehr von Martin Giger (18)

Indexed db
Indexed dbIndexed db
Indexed db
 
Nightingale Social & Cloud mockup
Nightingale Social & Cloud mockupNightingale Social & Cloud mockup
Nightingale Social & Cloud mockup
 
Ozon / Melanom
Ozon / MelanomOzon / Melanom
Ozon / Melanom
 
ig_chino plakat 2010
ig_chino plakat 2010ig_chino plakat 2010
ig_chino plakat 2010
 
ig_chino Flyer 2010
ig_chino Flyer 2010ig_chino Flyer 2010
ig_chino Flyer 2010
 
Plakat 2009
Plakat 2009Plakat 2009
Plakat 2009
 
Open source software
Open source softwareOpen source software
Open source software
 
Was ist HDTV
Was ist HDTVWas ist HDTV
Was ist HDTV
 
Friedrich Schiller
Friedrich SchillerFriedrich Schiller
Friedrich Schiller
 
Jacob Und Willhelm Grimm
Jacob Und Willhelm GrimmJacob Und Willhelm Grimm
Jacob Und Willhelm Grimm
 
Hochdruck oder Tiefdruck
Hochdruck oder TiefdruckHochdruck oder Tiefdruck
Hochdruck oder Tiefdruck
 
Otto Waalkes
Otto WaalkesOtto Waalkes
Otto Waalkes
 
Wie Funktioniert ein Hochregallager
Wie Funktioniert ein HochregallagerWie Funktioniert ein Hochregallager
Wie Funktioniert ein Hochregallager
 
Ol Doinyo Lengai
Ol Doinyo LengaiOl Doinyo Lengai
Ol Doinyo Lengai
 
Fabian Unteregger
Fabian UntereggerFabian Unteregger
Fabian Unteregger
 
Schimmelpilze
SchimmelpilzeSchimmelpilze
Schimmelpilze
 
BNSF Präsentation
BNSF PräsentationBNSF Präsentation
BNSF Präsentation
 
Staatsbankrott von Griechenland
Staatsbankrott von GriechenlandStaatsbankrott von Griechenland
Staatsbankrott von Griechenland
 

Kürzlich hochgeladen

Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 

Kürzlich hochgeladen (20)

Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKSpring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 

Brief Introduction to the Mozilla Add-on SDK

  • 2. I'm Martin aka freaktechnik ● Information Technology and Electrical Engineering student ● Euphonium player ● Nightingale Media Player developer ● Firefox Add-on developer
  • 3. Goals ● Basic Firefox Extension Knowledge ● Tools for Development ● Add-on SDK Extension Structure and API
  • 4. Firefox Extensions 3 Different Types
  • 5. Traditional Overlay Add-ons ● The old style ● Restart to apply ● Add content by overlaying documents ● XPCOM
  • 6. Bootstrapped Extensions ● Since Firefox 4 ● Restartless ● Everything is done with XPCOM
  • 7. Add-on SDK Extensions ● Compile to bootstrapped extensions ● CommonJS environement
  • 8. Base Knowledge ● JavaScript ● Maybe HTML and CSS ● XPCOM
  • 9. Tools ● Firefox ● CFX or JPM ● An editor
  • 10. JPM ● The 'compiler' apart from others ● Node based ● npm install jpm --global
  • 12. Basic Extension Structure ● lib →main modules ● data →misc files ● test →unit test modules ● package.json →add-on metadata
  • 13. Modules ● Where functionality is ● Prebuilt SDK modules ● 3rd party “libraries“ ● Custom modules for Add-on logic
  • 14. SDK Modules ● Split into high-level and low-level API modules ● High-level modules provide simple APIs for things like – Page content modification (sdk/page-mod) – Tabs (sdk/tabs) – Requests (sdk/request) – Buttons and toolbars (sdk/ui) – Panels (sdk/panel) – Clipboard (sdk/clipboard) – Passwords (sdk/passwords)
  • 15. Custom Modules ● Main loading point module (usually main.js) ● require() to import other modules ● exports object for public symbols
  • 16. Content Scripts ● Scripts that run in a browser context ● Still run in a separated sandbox ● They have access to the document's DOM ● port for communication
  • 17. Debugging ● Firefox 31 ● Always enabled via run command ● Content-scripts can't be reached
  • 18. XPCOM with Jetpack ● const { Cu, Ci, Cr, Cc } = require('chrome') ● Be nice to the global scope: const { jsm } = require('resource://some.jsm'); ● You can define components
  • 19. Future ● JPM release ● Integrated extension toolkit
  • 20. Help! ● MDN: https://developer.mozilla.org/en-US/Add-ons/SDK/ ● Sourcecode: https://github.com/mozilla/addon-sdk ● IRC: irc://irc.mozilla.org/jetpack ● Follow @MozillaCH on Twitter

Hinweis der Redaktion

  1. AMO Questions/Understanding (bad at explaining) → ask them directly
  2. Just ZIP files Also Themes (no scripts anymore), langpacks and searchengines (sometimes recognized as normal extension)
  3. Components can be in nearly any language
  4. Manually load components → need to use JS to load binaries
  5. XPCOM API wrappers to commonjs → stable API (for example e10s doesn't affect you in most cases) SDK isn't bundled anymore with jpm...
  6. -> CommonJS and chrome JS, also everything is mozJS, no DOM etc.
  7. Init Run Xpi Test help (testall, -b etc.)
  8. Console output in console when run, else browser console (important, not web console)
  9. Quick, buuut, extreaction brackets