Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
GOTOcon 2012: Taming JavaScript with Cloud9 IDE...
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
zef
May 30, 2012
Technology
120
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
GOTOcon 2012: Taming JavaScript with Cloud9 IDE: a Tale of Tree Hugging
My talk on TreeHugger.js at GOTOcon.
zef
May 30, 2012
More Decks by zef
See All by zef
Pick Your Battles
zef
1
160
GeeCON 2012: Coding in the Cloud
zef
2
350
Other Decks in Technology
See All in Technology
200個のGitHubリポジトリを横断調査したかった
icck
0
130
気づかぬうちにセキュリティ負債を生むAPIキー運用
sgwrmctk
0
160
新しいVibe Codingと”自走”について
watany
6
330
日本 Fintech 未来予測レポート 2027〜2028年(手動編集版)
8maki
0
2.4k
Oracle AI Database@Google Cloud:サービス概要のご紹介
oracle4engineer
PRO
6
1.5k
やさしいA2A入門
minorun365
PRO
12
1.9k
自律型AIエージェントは何を破壊するのか
kojira
0
160
非エンジニアがClaudeと挑んだ「1ヶ月間プロダクト30本ノック」
askokc
0
580
【セミナー資料】Claude Code をセキュアに使うための考え方と設定の勘どころ / Claude Code Webinar 20260616
masahirokawahara
2
360
作って終わりにしない タイミーのセマンティックレイヤー育成の現在地
chanyou0311
4
2.4k
不要なレビューをAIにまかせて AIコーディングの環境改善を加速した
shoota
1
150
AIのReact習熟度を測る
uhyo
2
600
Featured
See All Featured
Music & Morning Musume
bryan
47
7.2k
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
150
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
840
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
A Tale of Four Properties
chriscoyier
163
24k
Faster Mobile Websites
deanohume
310
31k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
330
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
310
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
300
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
230
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.8k
Transcript
Taming JavaScript with Cloud9 IDE: a Tale of Tree Hugging
Zef Hemel (@zef)
None
None
None
.js
browser.js
db.js
server.js
*.js
None
~140,000
Tooling matters
None
JavaScript Developer
None
None
None
HTML CSS JavaScript
HTML5 CSS3 JavaScript Client
HTML5 CSS3 JavaScript Client Node.js Redis Server
HTML5 CSS3 JavaScript Client Node.js Redis Server XMLHttpRequest HTML5 WebSockets
Mozilla Bespin
Mozilla Bespin Canvas
Browser Wars 2.0
DOM
Sidebar
Sidebar
Sidebar
Sidebar
Sidebar
Sidebar
Sidebar
Sidebar
JavaScript C/C++ Closure CoffeeScript Coldfusion C# CSS Groovy HTML Java
JSON LaTeX Lua Markdown OCaml Perl PHP Ruby Scad Scala SCSS SQL SVG Textile XML
None
~240,000
Component Systems Message Queues Decoupling
None
None
None
None
Tooling matters especially for JavaScript
None
Unleash the awesome power of...
tatic
program analysis
None
None
Iterating using undeclared variable
None
Warning: you are in an anonymous inner function with its
own “this” pointer
None
Did you mean “length”?
“The most important thing I have done as a programmer
in recent years is to aggressively pursue static code analysis.” John Carmack
How?
Parse Analyze
Parser Code AST
Abstract Syntax Tree a * 10 Parser Op Var Num
“*” “a” “10”
Zeon UglifyJS Narcissus Esprima language.js
performance (speed/memory) AST datastructure traversal tools
performance (speed/memory) AST datastructure traversal tools JavaScript specific
treehugger.js
“The JQuery of AST analysis.”
treehugger.js
treehugger.js Generic AST Data structure
treehugger.js Generic AST Data structure Generic Traversals
treehugger.js Generic AST Data structure Generic Traversals DSL with Pattern
Matching
treehugger.js Generic AST Data structure Generic Traversals DSL with Pattern
Matching Language- Specific Parsers
treehugger.js Generic AST Data structure Generic Traversals DSL with Pattern
Matching Language- Specific Parsers JavaScript (UglifyJS-based)
treehugger.js Generic AST Data structure Generic Traversals DSL with Pattern
Matching Language- Specific Parsers JavaScript (UglifyJS-based)
a * 10 Op Var Num “*” “a” “10”
Op("*", Var("a"), Num("10")) Op Var Num “*” “a” “10”
Op("*", Var("a"), Num("10")) ATerm Op Var Num “*” “a” “10”
Constructors Lists Strings Var(_) [_, _] "hello" Placeholders x
let’s play
What can you do with it?
Low-level tooling
None
Intelligent code completion
Complex refactoring
Cloud
Big data
What if...
Project 1 Project 2 Project 3 Project 4 Project 5
Project 6
Your (dev) environment matters use static analysis tools
http://c9.io @zef http://github.com/ajaxorg/treehugger