Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
branch: master
Fetching contributors…

Cannot retrieve contributors at this time

820 lines (746 sloc) 50.47 kb
<!DOCTYPE html>
<html style="height: 100%;" lang="en"><head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, minimum-scale=1, maximum-scale=1, user-scalable=no">
<meta name="apple-mobile-web-app-capable" content="yes">
<title>Dojo Desert Island Disks</title>
<link href="index_files/css.css" rel="stylesheet">
<link href="index_files/slides.css" rel="stylesheet">
<link rel="stylesheet" href="index_files/editor.css" type="text/css" media="screen" title="no title" charset="utf-8">
<link href="index_files/style.css" rel="stylesheet">
<link rel="shortcut icon" href="http://colin:3000/resources/impress.js/favicon.png">
<link rel="apple-touch-icon" href="http://colin:3000/resources/impress.js/apple-touch-icon.png">
<script src="index_files/ace.js" data-requiremodule="ace/ace" data-requirecontext="_" async="" charset="utf-8" type="text/javascript"></script><script src="index_files/fixoldbrowsers.js" data-requiremodule="ace/lib/fixoldbrowsers" data-requirecontext="_" async="" charset="utf-8" type="text/javascript"></script><script src="index_files/dom.js" data-requiremodule="ace/lib/dom" data-requirecontext="_" async="" charset="utf-8" type="text/javascript"></script><script src="index_files/event.js" data-requiremodule="ace/lib/event" data-requirecontext="_" async="" charset="utf-8" type="text/javascript"></script><script src="index_files/editor.js" data-requiremodule="ace/editor" data-requirecontext="_" async="" charset="utf-8" type="text/javascript"></script><script src="index_files/edit_session.js" data-requiremodule="ace/edit_session" data-requirecontext="_" async="" charset="utf-8" type="text/javascript"></script><script src="index_files/undomanager.js" data-requiremodule="ace/undomanager" data-requirecontext="_" async="" charset="utf-8" type="text/javascript"></script><script src="index_files/virtual_renderer.js" data-requiremodule="ace/virtual_renderer" data-requirecontext="_" async="" charset="utf-8" type="text/javascript"></script><script src="index_files/worker_client.js" data-requiremodule="ace/worker/worker_client" data-requirecontext="_" async="" charset="utf-8" type="text/javascript"></script><script src="index_files/hash_handler.js" data-requiremodule="ace/keyboard/hash_handler" data-requirecontext="_" async="" charset="utf-8" type="text/javascript"></script><script src="index_files/state_handler.js" data-requiremodule="ace/keyboard/state_handler" data-requirecontext="_" async="" charset="utf-8" type="text/javascript"></script><script src="index_files/net.js" data-requiremodule="ace/lib/net" data-requirecontext="_" async="" charset="utf-8" type="text/javascript"></script><script src="index_files/placeholder.js" data-requiremodule="ace/placeholder" data-requirecontext="_" async="" charset="utf-8" type="text/javascript"></script><script src="index_files/config.js" data-requiremodule="ace/config" data-requirecontext="_" async="" charset="utf-8" type="text/javascript"></script><script src="index_files/textmate.js" data-requiremodule="ace/theme/textmate" data-requirecontext="_" async="" charset="utf-8" type="text/javascript"></script><script src="index_files/regexp.js" data-requiremodule="ace/lib/regexp" data-requirecontext="_" async="" charset="utf-8" type="text/javascript"></script><script src="index_files/es5-shim.js" data-requiremodule="ace/lib/es5-shim" data-requirecontext="_" async="" charset="utf-8" type="text/javascript"></script><script src="index_files/oop.js" data-requiremodule="ace/lib/oop" data-requirecontext="_" async="" charset="utf-8" type="text/javascript"></script><script src="index_files/lang.js" data-requiremodule="ace/lib/lang" data-requirecontext="_" async="" charset="utf-8" type="text/javascript"></script><script src="index_files/useragent.js" data-requiremodule="ace/lib/useragent" data-requirecontext="_" async="" charset="utf-8" type="text/javascript"></script><script src="index_files/textinput.js" data-requiremodule="ace/keyboard/textinput" data-requirecontext="_" async="" charset="utf-8" type="text/javascript"></script><script src="index_files/mouse_handler.js" data-requiremodule="ace/mouse/mouse_handler" data-requirecontext="_" async="" charset="utf-8" type="text/javascript"></script><script src="index_files/fold_handler.js" data-requiremodule="ace/mouse/fold_handler" data-requirecontext="_" async="" charset="utf-8" type="text/javascript"></script><script src="index_files/keybinding.js" data-requiremodule="ace/keyboard/keybinding" data-requirecontext="_" async="" charset="utf-8" type="text/javascript"></script><script src="index_files/search.js" data-requiremodule="ace/search" data-requirecontext="_" async="" charset="utf-8" type="text/javascript"></script><script src="index_files/range.js" data-requiremodule="ace/range" data-requirecontext="_" async="" charset="utf-8" type="text/javascript"></script><script src="index_files/event_emitter.js" data-requiremodule="ace/lib/event_emitter" data-requirecontext="_" async="" charset="utf-8" type="text/javascript"></script><script src="index_files/command_manager.js" data-requiremodule="ace/commands/command_manager" data-requirecontext="_" async="" charset="utf-8" type="text/javascript"></script><script src="index_files/default_commands.js" data-requiremodule="ace/commands/default_commands" data-requirecontext="_" async="" charset="utf-8" type="text/javascript"></script><script src="index_files/keys.js" data-requiremodule="ace/lib/keys" data-requirecontext="_" async="" charset="utf-8" type="text/javascript"></script><script src="index_files/selection.js" data-requiremodule="ace/selection" data-requirecontext="_" async="" charset="utf-8" type="text/javascript"></script><script src="index_files/text.js" data-requiremodule="ace/mode/text" data-requirecontext="_" async="" charset="utf-8" type="text/javascript"></script><script src="index_files/document.js" data-requiremodule="ace/document" data-requirecontext="_" async="" charset="utf-8" type="text/javascript"></script><script src="index_files/background_tokenizer.js" data-requiremodule="ace/background_tokenizer" data-requirecontext="_" async="" charset="utf-8" type="text/javascript"></script><script src="index_files/folding.js" data-requiremodule="ace/edit_session/folding" data-requirecontext="_" async="" charset="utf-8" type="text/javascript"></script><script src="index_files/bracket_match.js" data-requiremodule="ace/edit_session/bracket_match" data-requirecontext="_" async="" charset="utf-8" type="text/javascript"></script><script src="index_files/gutter.js" data-requiremodule="ace/layer/gutter" data-requirecontext="_" async="" charset="utf-8" type="text/javascript"></script><script src="index_files/marker.js" data-requiremodule="ace/layer/marker" data-requirecontext="_" async="" charset="utf-8" type="text/javascript"></script><script src="index_files/text_002.js" data-requiremodule="ace/layer/text" data-requirecontext="_" async="" charset="utf-8" type="text/javascript"></script><script src="index_files/cursor.js" data-requiremodule="ace/layer/cursor" data-requirecontext="_" async="" charset="utf-8" type="text/javascript"></script><script src="index_files/scrollbar.js" data-requiremodule="ace/scrollbar" data-requirecontext="_" async="" charset="utf-8" type="text/javascript"></script><script src="index_files/renderloop.js" data-requiremodule="ace/renderloop" data-requirecontext="_" async="" charset="utf-8" type="text/javascript"></script><script src="index_files/text_003.js" data-requiremodule="ace/requirejs/text" data-requirecontext="_" async="" charset="utf-8" type="text/javascript"></script><style id="ace-tm">.ace-tm .ace_editor { border: 2px solid rgb(159, 159, 159);}.ace-tm .ace_editor.ace_focus { border: 2px solid #327fbd;}.ace-tm .ace_gutter { background: #e8e8e8; color: #333;}.ace-tm .ace_print_margin { width: 1px; background: #e8e8e8;}.ace-tm .ace_fold { background-color: #6B72E6;}.ace-tm .ace_text-layer { cursor: text;}.ace-tm .ace_cursor { border-left: 2px solid black;}.ace-tm .ace_cursor.ace_overwrite { border-left: 0px; border-bottom: 1px solid black;} .ace-tm .ace_line .ace_invisible { color: rgb(191, 191, 191);}.ace-tm .ace_line .ace_storage,.ace-tm .ace_line .ace_keyword { color: blue;}.ace-tm .ace_line .ace_constant.ace_buildin { color: rgb(88, 72, 246);}.ace-tm .ace_line .ace_constant.ace_language { color: rgb(88, 92, 246);}.ace-tm .ace_line .ace_constant.ace_library { color: rgb(6, 150, 14);}.ace-tm .ace_line .ace_invalid { background-color: rgb(153, 0, 0); color: white;}.ace-tm .ace_line .ace_support.ace_function { color: rgb(60, 76, 114);}.ace-tm .ace_line .ace_support.ace_constant { color: rgb(6, 150, 14);}.ace-tm .ace_line .ace_support.ace_type,.ace-tm .ace_line .ace_support.ace_class { color: rgb(109, 121, 222);}.ace-tm .ace_line .ace_keyword.ace_operator { color: rgb(104, 118, 135);}.ace-tm .ace_line .ace_string { color: rgb(3, 106, 7);}.ace-tm .ace_line .ace_comment { color: rgb(76, 136, 107);}.ace-tm .ace_line .ace_comment.ace_doc { color: rgb(0, 102, 255);}.ace-tm .ace_line .ace_comment.ace_doc.ace_tag { color: rgb(128, 159, 191);}.ace-tm .ace_line .ace_constant.ace_numeric { color: rgb(0, 0, 205);}.ace-tm .ace_line .ace_variable { color: rgb(49, 132, 149);}.ace-tm .ace_line .ace_xml_pe { color: rgb(104, 104, 91);}.ace-tm .ace_entity.ace_name.ace_function { color: #0000A2;}.ace-tm .ace_markup.ace_markupine { text-decoration:underline;}.ace-tm .ace_markup.ace_heading { color: rgb(12, 7, 255);}.ace-tm .ace_markup.ace_list { color:rgb(185, 6, 144);}.ace-tm .ace_marker-layer .ace_selection { background: rgb(181, 213, 255);}.ace-tm .ace_marker-layer .ace_step { background: rgb(252, 255, 0);}.ace-tm .ace_marker-layer .ace_stack { background: rgb(164, 229, 101);}.ace-tm .ace_marker-layer .ace_bracket { margin: -1px 0 0 -1px; border: 1px solid rgb(192, 192, 192);}.ace-tm .ace_marker-layer .ace_active_line { background: rgba(0, 0, 0, 0.07);}.ace-tm .ace_marker-layer .ace_selected_word { background: rgb(250, 250, 255); border: 1px solid rgb(200, 200, 250);}.ace-tm .ace_meta.ace_tag { color:rgb(28, 2, 255);}.ace-tm .ace_string.ace_regex { color: rgb(255, 0, 0)}</style><script src="index_files/default_handlers.js" data-requiremodule="ace/mouse/default_handlers" data-requirecontext="_" async="" charset="utf-8" type="text/javascript"></script><script src="index_files/default_gutter_handler.js" data-requiremodule="ace/mouse/default_gutter_handler" data-requirecontext="_" async="" charset="utf-8" type="text/javascript"></script><script src="index_files/mouse_event.js" data-requiremodule="ace/mouse/mouse_event" data-requirecontext="_" async="" charset="utf-8" type="text/javascript"></script><script src="index_files/token_iterator.js" data-requiremodule="ace/token_iterator" data-requirecontext="_" async="" charset="utf-8" type="text/javascript"></script><script src="index_files/fold_line.js" data-requiremodule="ace/edit_session/fold_line" data-requirecontext="_" async="" charset="utf-8" type="text/javascript"></script><script src="index_files/fold.js" data-requiremodule="ace/edit_session/fold" data-requirecontext="_" async="" charset="utf-8" type="text/javascript"></script><script src="index_files/tokenizer.js" data-requiremodule="ace/tokenizer" data-requirecontext="_" async="" charset="utf-8" type="text/javascript"></script><script src="index_files/text_highlight_rules.js" data-requiremodule="ace/mode/text_highlight_rules" data-requirecontext="_" async="" charset="utf-8" type="text/javascript"></script><script src="index_files/behaviour.js" data-requiremodule="ace/mode/behaviour" data-requirecontext="_" async="" charset="utf-8" type="text/javascript"></script><script src="index_files/unicode.js" data-requiremodule="ace/unicode" data-requirecontext="_" async="" charset="utf-8" type="text/javascript"></script><script src="index_files/anchor.js" data-requiremodule="ace/anchor" data-requirecontext="_" async="" charset="utf-8" type="text/javascript"></script><script src="index_files/browser_focus.js" data-requiremodule="ace/lib/browser_focus" data-requirecontext="_" async="" charset="utf-8" type="text/javascript"></script><style id="ace_editor">@import url(//fonts.googleapis.com/css?family=Droid+Sans+Mono);
.ace_editor {
position: absolute;
overflow: hidden;
font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', 'Droid Sans Mono', 'Consolas', monospace;
font-size: 12px;
}
.ace_scroller {
position: absolute;
overflow-x: scroll;
overflow-y: hidden;
}
.ace_content {
position: absolute;
box-sizing: border-box;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
cursor: text;
}
.ace_composition {
position: absolute;
background: #555;
color: #DDD;
z-index: 4;
}
.ace_gutter {
position: absolute;
overflow : hidden;
height: 100%;
width: auto;
cursor: default;
}
.ace_gutter-cell {
padding-left: 19px;
padding-right: 6px;
}
.ace_gutter-cell.ace_error {
background-image: url("data:image/gif,GIF89a%10%00%10%00%D5%00%00%F5or%F5%87%88%F5nr%F4ns%EBmq%F5z%7F%DDJT%DEKS%DFOW%F1Yc%F2ah%CE(7%CE)8%D18E%DD%40M%F2KZ%EBU%60%F4%60m%DCir%C8%16(%C8%19*%CE%255%F1%3FR%F1%3FS%E6%AB%B5%CA%5DI%CEn%5E%F7%A2%9A%C9G%3E%E0a%5B%F7%89%85%F5yy%F6%82%80%ED%82%80%FF%BF%BF%E3%C4%C4%FF%FF%FF%FF%FF%FF%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00!%F9%04%01%00%00%25%00%2C%00%00%00%00%10%00%10%00%00%06p%C0%92pH%2C%1A%8F%C8%D2H%93%E1d4%23%E4%88%D3%09mB%1DN%B48%F5%90%40%60%92G%5B%94%20%3E%22%D2%87%24%FA%20%24%C5%06A%00%20%B1%07%02B%A38%89X.v%17%82%11%13q%10%0Fi%24%0F%8B%10%7BD%12%0Ei%09%92%09%0EpD%18%15%24%0A%9Ci%05%0C%18F%18%0B%07%04%01%04%06%A0H%18%12%0D%14%0D%12%A1I%B3%B4%B5IA%00%3B");
background-repeat: no-repeat;
background-position: 2px center;
}
.ace_gutter-cell.ace_warning {
background-image: url("data:image/gif,GIF89a%10%00%10%00%D5%00%00%FF%DBr%FF%DE%81%FF%E2%8D%FF%E2%8F%FF%E4%96%FF%E3%97%FF%E5%9D%FF%E6%9E%FF%EE%C1%FF%C8Z%FF%CDk%FF%D0s%FF%D4%81%FF%D5%82%FF%D5%83%FF%DC%97%FF%DE%9D%FF%E7%B8%FF%CCl%7BQ%13%80U%15%82W%16%81U%16%89%5B%18%87%5B%18%8C%5E%1A%94d%1D%C5%83-%C9%87%2F%C6%84.%C6%85.%CD%8B2%C9%871%CB%8A3%CD%8B5%DC%98%3F%DF%9BB%E0%9CC%E1%A5U%CB%871%CF%8B5%D1%8D6%DB%97%40%DF%9AB%DD%99B%E3%B0p%E7%CC%AE%FF%FF%FF%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00!%F9%04%01%00%00%2F%00%2C%00%00%00%00%10%00%10%00%00%06a%C0%97pH%2C%1A%8FH%A1%ABTr%25%87%2B%04%82%F4%7C%B9X%91%08%CB%99%1C!%26%13%84*iJ9(%15G%CA%84%14%01%1A%97%0C%03%80%3A%9A%3E%81%84%3E%11%08%B1%8B%20%02%12%0F%18%1A%0F%0A%03'F%1C%04%0B%10%16%18%10%0B%05%1CF%1D-%06%07%9A%9A-%1EG%1B%A0%A1%A0U%A4%A5%A6BA%00%3B");
background-repeat: no-repeat;
background-position: 2px center;
}
.ace_gutter-cell.ace_info {
background-image: url("data:image/gif;base64,R0lGODlhEAAQAMQAAAAAAEFBQVJSUl5eXmRkZGtra39/f4WFhYmJiZGRkaampry8vMPDw8zMzNXV1dzc3OTk5Orq6vDw8P///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAkAABQALAAAAAAQABAAAAUuICWOZGmeaBml5XGwFCQSBGyXRSAwtqQIiRuiwIM5BoYVbEFIyGCQoeJGrVptIQA7");
background-repeat: no-repeat;
background-position: 2px center;
}
.ace_editor .ace_sb {
position: absolute;
overflow-x: hidden;
overflow-y: scroll;
right: 0;
}
.ace_editor .ace_sb div {
position: absolute;
width: 1px;
left: 0;
}
.ace_editor .ace_print_margin_layer {
z-index: 0;
position: absolute;
overflow: hidden;
margin: 0;
left: 0;
height: 100%;
width: 100%;
}
.ace_editor .ace_print_margin {
position: absolute;
height: 100%;
}
.ace_editor textarea {
position: fixed;
z-index: 0;
width: 10px;
height: 30px;
opacity: 0;
background: transparent;
appearance: none;
-moz-appearance: none;
border: none;
resize: none;
outline: none;
overflow: hidden;
}
.ace_layer {
z-index: 1;
position: absolute;
overflow: hidden;
white-space: nowrap;
height: 100%;
width: 100%;
box-sizing: border-box;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
/* setting pointer-events: auto; on node under the mouse, which changes
during scroll, will break mouse wheel scrolling in Safari */
pointer-events: none;
}
.ace_gutter .ace_layer {
position: relative;
min-width: 40px;
text-align: right;
pointer-events: auto;
}
.ace_text-layer {
color: black;
}
.ace_cjk {
display: inline-block;
text-align: center;
}
.ace_cursor-layer {
z-index: 4;
}
.ace_cursor {
z-index: 4;
position: absolute;
}
.ace_cursor.ace_hidden {
opacity: 0.2;
}
.ace_line {
white-space: nowrap;
}
.ace_marker-layer .ace_step {
position: absolute;
z-index: 3;
}
.ace_marker-layer .ace_selection {
position: absolute;
z-index: 4;
}
.ace_marker-layer .ace_bracket {
position: absolute;
z-index: 5;
}
.ace_marker-layer .ace_active_line {
position: absolute;
z-index: 2;
}
.ace_marker-layer .ace_selected_word {
position: absolute;
z-index: 6;
box-sizing: border-box;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
}
.ace_line .ace_fold {
box-sizing: border-box;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
display: inline-block;
height: 11px;
margin-top: -2px;
vertical-align: middle;
background-image:
url("data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%11%00%00%00%09%08%06%00%00%00%D4%E8%C7%0C%00%00%03%1EiCCPICC%20Profile%00%00x%01%85T%DFk%D3P%14%FE%DAe%9D%B0%E1%8B%3Ag%11%09%3Eh%91ndStC%9C%B6kW%BA%CDZ%EA6%B7!H%9B%A6m%5C%9A%C6%24%ED~%B0%07%D9%8Bo%3A%C5w%F1%07%3E%F9%07%0C%D9%83o%7B%92%0D%C6%14a%F8%AC%88%22L%F6%22%B3%9E%9B4M'S%03%B9%F7%BB%DF%F9%EE9'%E7%E4%5E%A0%F9qZ%D3%14%2F%0F%14USO%C5%C2%FC%C4%E4%14%DF%F2%01%5E%1CC%2B%FChM%8B%86%16J%26G%40%0F%D3%B2y%EF%B3%F3%0E%1E%C6lt%EEo%DF%AB%FEc%D5%9A%95%0C%11%F0%1C%20%BE%945%C4%22%E1Y%A0i%5C%D4t%13%E0%D6%89%EF%9D15%C2%CDLsX%A7%04%09%1Fg8oc%81%E1%8C%8D%23%96f45%40%9A%09%C2%07%C5B%3AK%B8%408%98i%E0%F3%0D%D8%CE%81%14%E4'%26%A9%92.%8B%3C%ABER%2F%E5dE%B2%0C%F6%F0%1Fs%83%F2_%B0%A8%94%E9%9B%AD%E7%10%8Dm%9A%19N%D1%7C%8A%DE%1F9%7Dp%8C%E6%00%D5%C1%3F_%18%BDA%B8%9DpX6%E3%A35~B%CD%24%AE%11%26%BD%E7%EEti%98%EDe%9A%97Y)%12%25%1C%24%BCbT%AE3li%E6%0B%03%89%9A%E6%D3%ED%F4P%92%B0%9F4%BF43Y%F3%E3%EDP%95%04%EB1%C5%F5%F6KF%F4%BA%BD%D7%DB%91%93%07%E35%3E%A7)%D6%7F%40%FE%BD%F7%F5r%8A%E5y%92%F0%EB%B4%1E%8D%D5%F4%5B%92%3AV%DB%DB%E4%CD%A6%23%C3%C4wQ%3F%03HB%82%8E%1Cd(%E0%91B%0Ca%9Ac%C4%AA%F8L%16%19%22J%A4%D2itTy%B28%D6%3B(%93%96%ED%1CGx%C9_%0E%B8%5E%16%F5%5B%B2%B8%F6%E0%FB%9E%DD%25%D7%8E%BC%15%85%C5%B7%A3%D8Q%ED%B5%81%E9%BA%B2%13%9A%1B%7Fua%A5%A3n%E17%B9%E5%9B%1Bm%AB%0B%08Q%FE%8A%E5%B1H%5Ee%CAO%82Q%D7u6%E6%90S%97%FCu%0B%CF2%94%EE%25v%12X%0C%BA%AC%F0%5E%F8*l%0AO%85%17%C2%97%BF%D4%C8%CE%DE%AD%11%CB%80q%2C%3E%AB%9ES%CD%C6%EC%25%D2L%D2%EBd%B8%BF%8A%F5B%C6%18%F9%901CZ%9D%BE%24M%9C%8A9%F2%DAP%0B'%06w%82%EB%E6%E2%5C%2F%D7%07%9E%BB%CC%5D%E1%FA%B9%08%AD.r%23%8E%C2%17%F5E%7C!%F0%BE3%BE%3E_%B7o%88a%A7%DB%BE%D3d%EB%A31Z%EB%BB%D3%91%BA%A2%B1z%94%8F%DB'%F6%3D%8E%AA%13%19%B2%B1%BE%B1~V%08%2B%B4%A2cjJ%B3tO%00%03%25mN%97%F3%05%93%EF%11%84%0B%7C%88%AE-%89%8F%ABbW%90O%2B%0Ao%99%0C%5E%97%0CI%AFH%D9.%B0%3B%8F%ED%03%B6S%D6%5D%E6i_s9%F3*p%E9%1B%FD%C3%EB.7U%06%5E%19%C0%D1s.%17%A03u%E4%09%B0%7C%5E%2C%EB%15%DB%1F%3C%9E%B7%80%91%3B%DBc%AD%3Dma%BA%8B%3EV%AB%DBt.%5B%1E%01%BB%0F%AB%D5%9F%CF%AA%D5%DD%E7%E4%7F%0Bx%A3%FC%06%A9%23%0A%D6%C2%A1_2%00%00%00%09pHYs%00%00%0B%13%00%00%0B%13%01%00%9A%9C%18%00%00%00%B5IDAT(%15%A5%91%3D%0E%02!%10%85ac%E1%05%D6%CE%D6%C6%CE%D2%E8%ED%CD%DE%C0%C6%D6N.%E0V%F8%3D%9Ca%891XH%C2%BE%D9y%3F%90!%E6%9C%C3%BFk%E5%011%C6-%F5%C8N%04%DF%BD%FF%89%DFt%83DN%60%3E%F3%AB%A0%DE%1A%5Dg%BE%10Q%97%1B%40%9C%A8o%10%8F%5E%828%B4%1B%60%87%F6%02%26%85%1Ch%1E%C1%2B%5Bk%FF%86%EE%B7j%09%9A%DA%9B%ACe%A3%F9%EC%DA!9%B4%D5%A6%81%86%86%98%CC%3C%5B%40%FA%81%B3%E9%CB%23%94%C16Azo%05%D4%E1%C1%95a%3B%8A'%A0%E8%CC%17%22%85%1D%BA%00%A2%FA%DC%0A%94%D1%D1%8D%8B%3A%84%17B%C7%60%1A%25Z%FC%8D%00%00%00%00IEND%AEB%60%82"),
url("data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%05%00%00%007%08%06%00%00%00%C4%DD%80C%00%00%03%1EiCCPICC%20Profile%00%00x%01%85T%DFk%D3P%14%FE%DAe%9D%B0%E1%8B%3Ag%11%09%3Eh%91ndStC%9C%B6kW%BA%CDZ%EA6%B7!H%9B%A6m%5C%9A%C6%24%ED~%B0%07%D9%8Bo%3A%C5w%F1%07%3E%F9%07%0C%D9%83o%7B%92%0D%C6%14a%F8%AC%88%22L%F6%22%B3%9E%9B4M'S%03%B9%F7%BB%DF%F9%EE9'%E7%E4%5E%A0%F9qZ%D3%14%2F%0F%14USO%C5%C2%FC%C4%E4%14%DF%F2%01%5E%1CC%2B%FChM%8B%86%16J%26G%40%0F%D3%B2y%EF%B3%F3%0E%1E%C6lt%EEo%DF%AB%FEc%D5%9A%95%0C%11%F0%1C%20%BE%945%C4%22%E1Y%A0i%5C%D4t%13%E0%D6%89%EF%9D15%C2%CDLsX%A7%04%09%1Fg8oc%81%E1%8C%8D%23%96f45%40%9A%09%C2%07%C5B%3AK%B8%408%98i%E0%F3%0D%D8%CE%81%14%E4'%26%A9%92.%8B%3C%ABER%2F%E5dE%B2%0C%F6%F0%1Fs%83%F2_%B0%A8%94%E9%9B%AD%E7%10%8Dm%9A%19N%D1%7C%8A%DE%1F9%7Dp%8C%E6%00%D5%C1%3F_%18%BDA%B8%9DpX6%E3%A35~B%CD%24%AE%11%26%BD%E7%EEti%98%EDe%9A%97Y)%12%25%1C%24%BCbT%AE3li%E6%0B%03%89%9A%E6%D3%ED%F4P%92%B0%9F4%BF43Y%F3%E3%EDP%95%04%EB1%C5%F5%F6KF%F4%BA%BD%D7%DB%91%93%07%E35%3E%A7)%D6%7F%40%FE%BD%F7%F5r%8A%E5y%92%F0%EB%B4%1E%8D%D5%F4%5B%92%3AV%DB%DB%E4%CD%A6%23%C3%C4wQ%3F%03HB%82%8E%1Cd(%E0%91B%0Ca%9Ac%C4%AA%F8L%16%19%22J%A4%D2itTy%B28%D6%3B(%93%96%ED%1CGx%C9_%0E%B8%5E%16%F5%5B%B2%B8%F6%E0%FB%9E%DD%25%D7%8E%BC%15%85%C5%B7%A3%D8Q%ED%B5%81%E9%BA%B2%13%9A%1B%7Fua%A5%A3n%E17%B9%E5%9B%1Bm%AB%0B%08Q%FE%8A%E5%B1H%5Ee%CAO%82Q%D7u6%E6%90S%97%FCu%0B%CF2%94%EE%25v%12X%0C%BA%AC%F0%5E%F8*l%0AO%85%17%C2%97%BF%D4%C8%CE%DE%AD%11%CB%80q%2C%3E%AB%9ES%CD%C6%EC%25%D2L%D2%EBd%B8%BF%8A%F5B%C6%18%F9%901CZ%9D%BE%24M%9C%8A9%F2%DAP%0B'%06w%82%EB%E6%E2%5C%2F%D7%07%9E%BB%CC%5D%E1%FA%B9%08%AD.r%23%8E%C2%17%F5E%7C!%F0%BE3%BE%3E_%B7o%88a%A7%DB%BE%D3d%EB%A31Z%EB%BB%D3%91%BA%A2%B1z%94%8F%DB'%F6%3D%8E%AA%13%19%B2%B1%BE%B1~V%08%2B%B4%A2cjJ%B3tO%00%03%25mN%97%F3%05%93%EF%11%84%0B%7C%88%AE-%89%8F%ABbW%90O%2B%0Ao%99%0C%5E%97%0CI%AFH%D9.%B0%3B%8F%ED%03%B6S%D6%5D%E6i_s9%F3*p%E9%1B%FD%C3%EB.7U%06%5E%19%C0%D1s.%17%A03u%E4%09%B0%7C%5E%2C%EB%15%DB%1F%3C%9E%B7%80%91%3B%DBc%AD%3Dma%BA%8B%3EV%AB%DBt.%5B%1E%01%BB%0F%AB%D5%9F%CF%AA%D5%DD%E7%E4%7F%0Bx%A3%FC%06%A9%23%0A%D6%C2%A1_2%00%00%00%09pHYs%00%00%0B%13%00%00%0B%13%01%00%9A%9C%18%00%00%00%3AIDAT8%11c%FC%FF%FF%7F%18%03%1A%60%01%F2%3F%A0%891%80%04%FF%11-%F8%17%9BJ%E2%05%B1ZD%81v%26t%E7%80%F8%A3%82h%A12%1A%20%A3%01%02%0F%01%BA%25%06%00%19%C0%0D%AEF%D5%3ES%00%00%00%00IEND%AEB%60%82");
background-repeat: no-repeat, repeat-x;
background-position: center center, top left;
color: transparent;
border: 1px solid black;
-moz-border-radius: 2px;
-webkit-border-radius: 2px;
border-radius: 2px;
cursor: pointer;
pointer-events: auto;
}
.ace_dark .ace_fold {
}
.ace_fold:hover{
background-image:
url("data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%11%00%00%00%09%08%06%00%00%00%D4%E8%C7%0C%00%00%03%1EiCCPICC%20Profile%00%00x%01%85T%DFk%D3P%14%FE%DAe%9D%B0%E1%8B%3Ag%11%09%3Eh%91ndStC%9C%B6kW%BA%CDZ%EA6%B7!H%9B%A6m%5C%9A%C6%24%ED~%B0%07%D9%8Bo%3A%C5w%F1%07%3E%F9%07%0C%D9%83o%7B%92%0D%C6%14a%F8%AC%88%22L%F6%22%B3%9E%9B4M'S%03%B9%F7%BB%DF%F9%EE9'%E7%E4%5E%A0%F9qZ%D3%14%2F%0F%14USO%C5%C2%FC%C4%E4%14%DF%F2%01%5E%1CC%2B%FChM%8B%86%16J%26G%40%0F%D3%B2y%EF%B3%F3%0E%1E%C6lt%EEo%DF%AB%FEc%D5%9A%95%0C%11%F0%1C%20%BE%945%C4%22%E1Y%A0i%5C%D4t%13%E0%D6%89%EF%9D15%C2%CDLsX%A7%04%09%1Fg8oc%81%E1%8C%8D%23%96f45%40%9A%09%C2%07%C5B%3AK%B8%408%98i%E0%F3%0D%D8%CE%81%14%E4'%26%A9%92.%8B%3C%ABER%2F%E5dE%B2%0C%F6%F0%1Fs%83%F2_%B0%A8%94%E9%9B%AD%E7%10%8Dm%9A%19N%D1%7C%8A%DE%1F9%7Dp%8C%E6%00%D5%C1%3F_%18%BDA%B8%9DpX6%E3%A35~B%CD%24%AE%11%26%BD%E7%EEti%98%EDe%9A%97Y)%12%25%1C%24%BCbT%AE3li%E6%0B%03%89%9A%E6%D3%ED%F4P%92%B0%9F4%BF43Y%F3%E3%EDP%95%04%EB1%C5%F5%F6KF%F4%BA%BD%D7%DB%91%93%07%E35%3E%A7)%D6%7F%40%FE%BD%F7%F5r%8A%E5y%92%F0%EB%B4%1E%8D%D5%F4%5B%92%3AV%DB%DB%E4%CD%A6%23%C3%C4wQ%3F%03HB%82%8E%1Cd(%E0%91B%0Ca%9Ac%C4%AA%F8L%16%19%22J%A4%D2itTy%B28%D6%3B(%93%96%ED%1CGx%C9_%0E%B8%5E%16%F5%5B%B2%B8%F6%E0%FB%9E%DD%25%D7%8E%BC%15%85%C5%B7%A3%D8Q%ED%B5%81%E9%BA%B2%13%9A%1B%7Fua%A5%A3n%E17%B9%E5%9B%1Bm%AB%0B%08Q%FE%8A%E5%B1H%5Ee%CAO%82Q%D7u6%E6%90S%97%FCu%0B%CF2%94%EE%25v%12X%0C%BA%AC%F0%5E%F8*l%0AO%85%17%C2%97%BF%D4%C8%CE%DE%AD%11%CB%80q%2C%3E%AB%9ES%CD%C6%EC%25%D2L%D2%EBd%B8%BF%8A%F5B%C6%18%F9%901CZ%9D%BE%24M%9C%8A9%F2%DAP%0B'%06w%82%EB%E6%E2%5C%2F%D7%07%9E%BB%CC%5D%E1%FA%B9%08%AD.r%23%8E%C2%17%F5E%7C!%F0%BE3%BE%3E_%B7o%88a%A7%DB%BE%D3d%EB%A31Z%EB%BB%D3%91%BA%A2%B1z%94%8F%DB'%F6%3D%8E%AA%13%19%B2%B1%BE%B1~V%08%2B%B4%A2cjJ%B3tO%00%03%25mN%97%F3%05%93%EF%11%84%0B%7C%88%AE-%89%8F%ABbW%90O%2B%0Ao%99%0C%5E%97%0CI%AFH%D9.%B0%3B%8F%ED%03%B6S%D6%5D%E6i_s9%F3*p%E9%1B%FD%C3%EB.7U%06%5E%19%C0%D1s.%17%A03u%E4%09%B0%7C%5E%2C%EB%15%DB%1F%3C%9E%B7%80%91%3B%DBc%AD%3Dma%BA%8B%3EV%AB%DBt.%5B%1E%01%BB%0F%AB%D5%9F%CF%AA%D5%DD%E7%E4%7F%0Bx%A3%FC%06%A9%23%0A%D6%C2%A1_2%00%00%00%09pHYs%00%00%0B%13%00%00%0B%13%01%00%9A%9C%18%00%00%00%B5IDAT(%15%A5%91%3D%0E%02!%10%85ac%E1%05%D6%CE%D6%C6%CE%D2%E8%ED%CD%DE%C0%C6%D6N.%E0V%F8%3D%9Ca%891XH%C2%BE%D9y%3F%90!%E6%9C%C3%BFk%E5%011%C6-%F5%C8N%04%DF%BD%FF%89%DFt%83DN%60%3E%F3%AB%A0%DE%1A%5Dg%BE%10Q%97%1B%40%9C%A8o%10%8F%5E%828%B4%1B%60%87%F6%02%26%85%1Ch%1E%C1%2B%5Bk%FF%86%EE%B7j%09%9A%DA%9B%ACe%A3%F9%EC%DA!9%B4%D5%A6%81%86%86%98%CC%3C%5B%40%FA%81%B3%E9%CB%23%94%C16Azo%05%D4%E1%C1%95a%3B%8A'%A0%E8%CC%17%22%85%1D%BA%00%A2%FA%DC%0A%94%D1%D1%8D%8B%3A%84%17B%C7%60%1A%25Z%FC%8D%00%00%00%00IEND%AEB%60%82"),
url("data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%05%00%00%007%08%06%00%00%00%C4%DD%80C%00%00%03%1EiCCPICC%20Profile%00%00x%01%85T%DFk%D3P%14%FE%DAe%9D%B0%E1%8B%3Ag%11%09%3Eh%91ndStC%9C%B6kW%BA%CDZ%EA6%B7!H%9B%A6m%5C%9A%C6%24%ED~%B0%07%D9%8Bo%3A%C5w%F1%07%3E%F9%07%0C%D9%83o%7B%92%0D%C6%14a%F8%AC%88%22L%F6%22%B3%9E%9B4M'S%03%B9%F7%BB%DF%F9%EE9'%E7%E4%5E%A0%F9qZ%D3%14%2F%0F%14USO%C5%C2%FC%C4%E4%14%DF%F2%01%5E%1CC%2B%FChM%8B%86%16J%26G%40%0F%D3%B2y%EF%B3%F3%0E%1E%C6lt%EEo%DF%AB%FEc%D5%9A%95%0C%11%F0%1C%20%BE%945%C4%22%E1Y%A0i%5C%D4t%13%E0%D6%89%EF%9D15%C2%CDLsX%A7%04%09%1Fg8oc%81%E1%8C%8D%23%96f45%40%9A%09%C2%07%C5B%3AK%B8%408%98i%E0%F3%0D%D8%CE%81%14%E4'%26%A9%92.%8B%3C%ABER%2F%E5dE%B2%0C%F6%F0%1Fs%83%F2_%B0%A8%94%E9%9B%AD%E7%10%8Dm%9A%19N%D1%7C%8A%DE%1F9%7Dp%8C%E6%00%D5%C1%3F_%18%BDA%B8%9DpX6%E3%A35~B%CD%24%AE%11%26%BD%E7%EEti%98%EDe%9A%97Y)%12%25%1C%24%BCbT%AE3li%E6%0B%03%89%9A%E6%D3%ED%F4P%92%B0%9F4%BF43Y%F3%E3%EDP%95%04%EB1%C5%F5%F6KF%F4%BA%BD%D7%DB%91%93%07%E35%3E%A7)%D6%7F%40%FE%BD%F7%F5r%8A%E5y%92%F0%EB%B4%1E%8D%D5%F4%5B%92%3AV%DB%DB%E4%CD%A6%23%C3%C4wQ%3F%03HB%82%8E%1Cd(%E0%91B%0Ca%9Ac%C4%AA%F8L%16%19%22J%A4%D2itTy%B28%D6%3B(%93%96%ED%1CGx%C9_%0E%B8%5E%16%F5%5B%B2%B8%F6%E0%FB%9E%DD%25%D7%8E%BC%15%85%C5%B7%A3%D8Q%ED%B5%81%E9%BA%B2%13%9A%1B%7Fua%A5%A3n%E17%B9%E5%9B%1Bm%AB%0B%08Q%FE%8A%E5%B1H%5Ee%CAO%82Q%D7u6%E6%90S%97%FCu%0B%CF2%94%EE%25v%12X%0C%BA%AC%F0%5E%F8*l%0AO%85%17%C2%97%BF%D4%C8%CE%DE%AD%11%CB%80q%2C%3E%AB%9ES%CD%C6%EC%25%D2L%D2%EBd%B8%BF%8A%F5B%C6%18%F9%901CZ%9D%BE%24M%9C%8A9%F2%DAP%0B'%06w%82%EB%E6%E2%5C%2F%D7%07%9E%BB%CC%5D%E1%FA%B9%08%AD.r%23%8E%C2%17%F5E%7C!%F0%BE3%BE%3E_%B7o%88a%A7%DB%BE%D3d%EB%A31Z%EB%BB%D3%91%BA%A2%B1z%94%8F%DB'%F6%3D%8E%AA%13%19%B2%B1%BE%B1~V%08%2B%B4%A2cjJ%B3tO%00%03%25mN%97%F3%05%93%EF%11%84%0B%7C%88%AE-%89%8F%ABbW%90O%2B%0Ao%99%0C%5E%97%0CI%AFH%D9.%B0%3B%8F%ED%03%B6S%D6%5D%E6i_s9%F3*p%E9%1B%FD%C3%EB.7U%06%5E%19%C0%D1s.%17%A03u%E4%09%B0%7C%5E%2C%EB%15%DB%1F%3C%9E%B7%80%91%3B%DBc%AD%3Dma%BA%8B%3EV%AB%DBt.%5B%1E%01%BB%0F%AB%D5%9F%CF%AA%D5%DD%E7%E4%7F%0Bx%A3%FC%06%A9%23%0A%D6%C2%A1_2%00%00%00%09pHYs%00%00%0B%13%00%00%0B%13%01%00%9A%9C%18%00%00%003IDAT8%11c%FC%FF%FF%7F%3E%03%1A%60%01%F2%3F%A3%891%80%04%FFQ%26%F8w%C0%B43%A1%DB%0C%E2%8F%0A%A2%85%CAh%80%8C%06%08%3C%04%E8%96%18%00%A3S%0D%CD%CF%D8%C1%9D%00%00%00%00IEND%AEB%60%82");
background-repeat: no-repeat, repeat-x;
background-position: center center, top left;
}
.ace_dragging .ace_content {
cursor: move;
}
.ace_folding-enabled > .ace_gutter-cell {
padding-right: 13px;
}
.ace_fold-widget {
box-sizing: border-box;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
margin: 0 -12px 1px 1px;
display: inline-block;
height: 14px;
width: 11px;
vertical-align: text-bottom;
background-image: url("data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%05%00%00%00%05%08%06%00%00%00%8Do%26%E5%00%00%004IDATx%DAe%8A%B1%0D%000%0C%C2%F2%2CK%96%BC%D0%8F9%81%88H%E9%D0%0E%96%C0%10%92%3E%02%80%5E%82%E4%A9*-%EEsw%C8%CC%11%EE%96w%D8%DC%E9*Eh%0C%151(%00%00%00%00IEND%AEB%60%82");
background-repeat: no-repeat;
background-position: center 5px;
border-radius: 3px;
}
.ace_fold-widget.end {
background-image: url("data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%05%00%00%00%05%08%06%00%00%00%8Do%26%E5%00%00%004IDATx%DAm%C7%C1%09%000%08C%D1%8C%ECE%C8E(%8E%EC%02)%1EZJ%F1%C1'%04%07I%E1%E5%EE%CAL%F5%A2%99%99%22%E2%D6%1FU%B5%FE0%D9x%A7%26Wz5%0E%D5%00%00%00%00IEND%AEB%60%82");
}
.ace_fold-widget.closed {
background-image: url("data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%03%00%00%00%06%08%06%00%00%00%06%E5%24%0C%00%00%009IDATx%DA5%CA%C1%09%000%08%03%C0%AC*(%3E%04%C1%0D%BA%B1%23%A4Uh%E0%20%81%C0%CC%F8%82%81%AA%A2%AArGfr%88%08%11%11%1C%DD%7D%E0%EE%5B%F6%F6%CB%B8%05Q%2F%E9tai%D9%00%00%00%00IEND%AEB%60%82");
}
.ace_fold-widget:hover {
border: 1px solid rgba(0, 0, 0, 0.3);
background-color: rgba(255, 255, 255, 0.2);
-moz-box-shadow:inset 0 1px 1px rgba(255, 255, 255, 0.7);
-moz-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);
-webkit-box-shadow:inset 0 1px 1px rgba(255, 255, 255, 0.7);
-webkit-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);
box-shadow:inset 0 1px 1px rgba(255, 255, 255, 0.7);
box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);
background-position: center 4px;
}
.ace_fold-widget:active {
border: 1px solid rgba(0, 0, 0, 0.4);
background-color: rgba(0, 0, 0, 0.05);
-moz-box-shadow:inset 0 1px 1px rgba(255, 255, 255);
-moz-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);
-webkit-box-shadow:inset 0 1px 1px rgba(255, 255, 255);
-webkit-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);
box-shadow:inset 0 1px 1px rgba(255, 255, 255);
box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);
}
.ace_fold-widget.invalid {
background-color: #FFB4B4;
border-color: #DE5555;
}
</style></head>
<body style="height: 100%; overflow: hidden;" class="impress-supported impress-on-frontmatter">
<div style="position: absolute; -moz-transform-origin: left top; -moz-transition: all 1000ms ease-in-out 500ms ; -moz-transform-style: preserve-3d; top: 50%; left: 50%; -moz-transform: perspective(1000px) scale(1);" id="impress"><div style="position: absolute; -moz-transform-origin: left top; -moz-transition: all 1000ms ease-in-out 0ms ; -moz-transform-style: preserve-3d; -moz-transform: rotateZ(0deg) rotateY(0deg) rotateX(0deg) translate3d(0px, 0px, 0px);" class="canvas">
<div class="fallback-message">
<p>Your browser <b>doesn't support the features required</b> by impress.js, so you are presented with a simplified version of this presentation.</p>
<p>For the best experience please use the latest <b>Chrome</b> or <b>Safari</b> browser. Firefox 10 (to be released soon) will also handle it.</p>
</div>
<div style="position: absolute; -moz-transform: translate(-50%, -50%) translate3d(0px, 0px, 0px) rotateX(0deg) rotateY(0deg) rotateZ(0deg) scale(1); -moz-transform-style: preserve-3d;" id="frontmatter" class="step active" data-x="0" data-y="0">
<div class="slide-header"><h3>Desert Island Disks with Dojo</h3></div>
<div class="media">
<div class="img">
<span class="imgblock"></span>
</div>
<div class="bd">
<div class="slide-body"><p>Sam Foster,
Web Engineer, Mozilla.
</p>
<p><a href="http://twitter.com/samfosteriam">@samfosteriam</a>
</p>
<p><span class="play-btn" id="themesong-btn"></span><audio id="themesong-audio" autobuffer="" autoloop="" loop=""><source src="index_files/Sleepy_Lagoon.mp3"><source src="index_files/Sleepy_Lagoon.ogg"></audio>
</p>
</div>
</div>
</div>
</div>
<div style="position: absolute; -moz-transform: translate(-50%, -50%) translate3d(1200px, 0px, 0px) rotateX(0deg) rotateY(0deg) rotateZ(0deg) scale(1); -moz-transform-style: preserve-3d;" id="aboutme" class="step medium" data-x="1200" data-y="0">
<div class="slide-header"><h3>About Me</h3></div>
<div class="media">
<div class="img">
<span class="imgblock"></span>
</div>
<div class="bd">
<div class="slide-body"><ul>
<li>Developer on the Pancake project, Mozilla</li>
<li>Mostly Front-end</li>
<li>Recently working with: Backbone.js, require.js</li>
<li>Dojo contributor since ~2007</li>
<li><a href="http://leedsjs.org/">LeedsJs</a></li>
</ul>
</div>
</div>
</div>
</div>
<div style="position: absolute; -moz-transform: translate(-50%, -50%) translate3d(2400px, 0px, 0px) rotateX(0deg) rotateY(0deg) rotateZ(0deg) scale(1); -moz-transform-style: preserve-3d;" id="libraries" class="step compact" data-x="2400" data-y="0">
<div class="slide-header"><h3>The Age of Libraries</h3></div>
<div class="media">
<div class="img">
<span class="imgblock"></span>
</div>
<div class="bd">
<div class="slide-body"><ul>
<li>Level foundation </li>
<li>Language utils</li>
<li><p>Core APIs</p>
</li>
<li><p>Price of entry</p>
</li>
</ul>
</div>
</div>
</div>
</div>
<div style="position: absolute; -moz-transform: translate(-50%, -50%) translate3d(0px, 800px, 0px) rotateX(0deg) rotateY(0deg) rotateZ(0deg) scale(1); -moz-transform-style: preserve-3d;" id="modules" class="step medium" data-x="0" data-y="800">
<div class="slide-header"><h3>Modules</h3></div>
<div class="media">
<div class="img">
<span class="imgblock"></span>
</div>
<div class="bd">
<div class="slide-body"><p>Developing at any scale needs modules:
</p>
<ul>
<li>dojo.require</li>
<li>dojo.provide</li>
</ul>
<p>Better known as:
</p>
<ul>
<li>require</li>
<li>define</li>
</ul>
</div>
</div>
</div>
</div>
<div style="position: absolute; -moz-transform: translate(-50%, -50%) translate3d(1200px, 800px, 0px) rotateX(0deg) rotateY(0deg) rotateZ(0deg) scale(1); -moz-transform-style: preserve-3d;" id="modules-1" class="step medium" data-x="1200" data-y="800">
<div class="slide-header"><h3>Modules</h3></div>
<div class="media">
<div class="img">
<span class="imgblock"></span>
</div>
<div class="bd">
<div class="slide-body"><h4>Modules and packaging standards</h4>
<ul>
<li>Module scope</li>
<li>Module exports</li>
<li>Module Ids, Anonymous modules</li>
</ul>
<h4>Production builds</h4>
<ul>
<li>Concatenation</li>
<li>Minification</li>
<li>Optimization</li>
</ul>
</div>
</div>
</div>
</div>
<div style="position: absolute; -moz-transform: translate(-50%, -50%) translate3d(0px, 1600px, 0px) rotateX(0deg) rotateY(0deg) rotateZ(0deg) scale(1); -moz-transform-style: preserve-3d;" id="hitch" class="step medium" data-x="0" data-y="1600" data-scale="1">
<div class="slide-header"><h3>Hitch</h3></div>
<div class="media">
<div class="img">
<span class="imgblock"></span>
</div>
<div class="bd">
<div class="slide-body"><pre><code>var me = {
name: "Sam",
greeting: function(){
return "My name is: " + this.name;
}
};
var greet = me.greeting;
greet(); // returns "My name is " or whatever window.name is</code></pre>
</div>
</div>
</div>
</div>
<div style="position: absolute; -moz-transform: translate(-50%, -50%) translate3d(1200px, 1600px, 0px) rotateX(0deg) rotateY(0deg) rotateZ(0deg) scale(1); -moz-transform-style: preserve-3d;" id="hitch-1" class="step " data-x="1200" data-y="1600">
<div class="slide-header"><h3>Fixing 'this' with dojo.hitch</h3></div>
<div class="media">
<div class="img">
<span class="imgblock"></span>
</div>
<div class="bd">
<div class="slide-body"><pre><code>var greet = dojo.hitch( me, 'greeting' );
greet(); // returns "My name is Sam"</code></pre>
<p>Similar to Function.bind, _.bind etc. </p>
</div>
</div>
</div>
</div>
<div style="position: absolute; -moz-transform: translate(-50%, -50%) translate3d(0px, 2400px, 0px) rotateX(0deg) rotateY(0deg) rotateZ(0deg) scale(1); -moz-transform-style: preserve-3d;" id="adapter-registry" class="step " data-x="0" data-y="2400">
<div class="slide-header"><h3>AdapterRegistry</h3></div>
<div class="media">
<div class="img">
<span class="imgblock"></span>
</div>
<div class="bd">
<div class="slide-body"><p>Replace a function with a registry of adapters
</p>
<ul>
<li>Adapter name</li>
<li>"accepts" function</li>
<li>Handler function </li>
</ul>
</div>
</div>
</div>
</div>
<div style="position: absolute; -moz-transform: translate(-50%, -50%) translate3d(1200px, 2400px, 0px) rotateX(0deg) rotateY(0deg) rotateZ(0deg) scale(1); -moz-transform-style: preserve-3d;" id="xhr-plugins" class="step " data-x="1200" data-y="2400">
<div class="slide-header"><h3>XHR Plugins </h3></div>
<div class="media">
<div class="img">
<span class="imgblock"></span>
</div>
<div class="bd">
<div class="slide-body"><p>A registry of adapters to intercept XHR requests and decorate, re-route and or mock the request</p>
</div>
</div>
</div>
</div>
<div style="position: absolute; -moz-transform: translate(-50%, -50%) translate3d(2400px, 2400px, 0px) rotateX(0deg) rotateY(0deg) rotateZ(0deg) scale(1); -moz-transform-style: preserve-3d;" id="xhr-plugins-1" class="step " data-x="2400" data-y="2400">
<div class="slide-header"><h3>XHR Plugins Use Cases</h3></div>
<div class="media">
<div class="img">
<span class="imgblock"></span>
</div>
<div class="bd">
<div class="slide-body"><ul>
<li>Cross-origin requests, to add CORS headers or pick a JSON-P transport</li>
<li>decorate requests needing some auth token</li>
<li>Mock requests in unit tests</li>
<li>Normalize responses from different service end-points</li>
</ul>
</div>
</div>
</div>
</div>
<div style="position: absolute; -moz-transform: translate(-50%, -50%) translate3d(0px, 3200px, 0px) rotateX(0deg) rotateY(0deg) rotateZ(0deg) scale(1); -moz-transform-style: preserve-3d;" id="i18n" class="step " data-x="0" data-y="3200">
<div class="slide-header"><h3>i18n</h3></div>
<div class="media">
<div class="img">
<span class="imgblock"></span>
</div>
<div class="bd">
<div class="slide-body"><ul>
<li>Locale-specific bundles</li>
<li>i18n AMD plugin</li>
</ul>
<pre><code>require(['i18n!some/nls/bundle'], function(text){
// greets in your language
alert(text.greeting);
});</code></pre>
</div>
</div>
</div>
</div>
<div style="position: absolute; -moz-transform: translate(-50%, -50%) translate3d(0px, 4000px, 0px) rotateX(0deg) rotateY(0deg) rotateZ(0deg) scale(1); -moz-transform-style: preserve-3d;" id="doh" class="step " data-x="0" data-y="4000">
<div class="slide-header"><h3>DOH</h3></div>
<div class="media">
<div class="img">
<span class="imgblock"></span>
</div>
<div class="bd">
<div class="slide-body"><ul>
<li>Async-friendly test runner</li>
<li>Includes "robot" for UI testing</li>
<li>AMD</li>
<li>Visual and audible feedback!</li>
</ul>
<p><a class="example-link" href="http://colin:3000/resources/vendor/dojo-trunk/util/doh/runner.html?test=dojo/tests/_base/array">doh runner</a></p>
</div>
</div>
</div>
</div>
<div style="position: absolute; -moz-transform: translate(-50%, -50%) translate3d(0px, 4800px, 0px) rotateX(0deg) rotateY(0deg) rotateZ(0deg) scale(1); -moz-transform-style: preserve-3d;" id="dojo-data" class="step " data-x="0" data-y="4800">
<div class="slide-header"><h3>dojo/store</h3></div>
<div class="media">
<div class="img">
<span class="imgblock"></span>
</div>
<div class="bd">
<div class="slide-body"><p>Consistent, ubiquitous interface to data
</p>
<ul>
<li>get, query, getIdentity</li>
<li>remove, put, save</li>
<li>observe</li>
</ul>
</div>
</div>
</div>
</div>
<div style="position: absolute; -moz-transform: translate(-50%, -50%) translate3d(1200px, 4800px, 0px) rotateX(0deg) rotateY(0deg) rotateZ(0deg) scale(1); -moz-transform-style: preserve-3d;" id="store-example" class="step compact" data-x="1200" data-y="4800">
<div class="slide-header"><h3>Store example</h3></div>
<div class="media">
<div class="img">
<span class="imgblock"></span>
</div>
<div class="bd">
<div class="slide-body"><pre><code>var npcs = [
{ nom:"coder", alive:true, sprite:'coder.png' },
{ nom:"deathknight", alive:true, sprite:'deathknight.png' },
{ nom:"crab", alive: true, sprite:'crab.png' },
{ nom:"goblin", alive: false, sprite:'goblin.png' }
];
var npcStore = new dojo.store.Memory({
data:npcs, idProperty: "nom"
});
npcStore.query({alive:true}).forEach(function(npc){
// this is called for each not-yet-dead npc
console.log(npc.sprite);
});</code></pre>
</div>
</div>
</div>
</div>
<div style="position: absolute; -moz-transform: translate(-50%, -50%) translate3d(0px, 5600px, 0px) rotateX(0deg) rotateY(0deg) rotateZ(0deg) scale(1); -moz-transform-style: preserve-3d;" id="promises" class="step " data-x="0" data-y="5600">
<div class="slide-header"><h3>Promises</h3></div>
<div class="media">
<div class="img">
<span class="imgblock"></span>
</div>
<div class="bd">
<div class="slide-body"><p>Increasing adoption, notably in jQuery.
</p>
<ul>
<li>Do something then do something else</li>
<li>When something is done, do this other thing</li>
</ul>
</div>
</div>
</div>
</div>
<div style="position: absolute; -moz-transform: translate(-50%, -50%) translate3d(1200px, 5600px, 0px) rotateX(0deg) rotateY(0deg) rotateZ(0deg) scale(1); -moz-transform-style: preserve-3d;" id="promises-example" class="step compact" data-x="1200" data-y="5600">
<div class="slide-header"><h3>Promises in Practice</h3></div>
<div class="media">
<div class="img">
<span class="imgblock"></span>
</div>
<div class="bd">
<div class="slide-body"><pre><code>require(['promise'], function(Promise){
function pause(){
var start = +new Date,
promise = new Promise();
setTimeout(function(){
var now = +new Date;
promise.resolve(start-now);
}, 1000);
return promise;
}
pause().then(function(elapsed){
console.log("elapsed: " + elapsed);
});
});</code></pre>
</div>
</div>
</div>
</div>
<div style="position: absolute; -moz-transform: translate(-50%, -50%) translate3d(0px, 6400px, 0px) rotateX(0deg) rotateY(0deg) rotateZ(0deg) scale(1); -moz-transform-style: preserve-3d;" id="dojox-json" class="step " data-x="0" data-y="6400">
<div class="slide-header"><h3>dojox/json</h3></div>
<div class="media">
<div class="img">
<span class="imgblock"></span>
</div>
<div class="bd">
<div class="slide-body"><p>JSON utilities:
</p>
<ul>
<li>JSON References, </li>
<li>JSON Schema</li>
<li>JSON Date</li>
</ul>
</div>
</div>
</div>
</div>
<div style="position: absolute; -moz-transform: translate(-50%, -50%) translate3d(1200px, 6400px, 0px) rotateX(0deg) rotateY(0deg) rotateZ(0deg) scale(1); -moz-transform-style: preserve-3d;" id="json-refs" class="step medium" data-x="1200" data-y="6400">
<div class="slide-header"><h3>JSON References</h3></div>
<div class="media">
<div class="img">
<span class="imgblock"></span>
</div>
<div class="bd">
<div class="slide-body"><pre><code>{
"x": 0,
"y": 0,
"type": "abyss",
"$ref": "/location/0,0.json"
},</code></pre>
</div>
</div>
</div>
</div>
<div style="position: absolute; -moz-transform: translate(-50%, -50%) translate3d(2400px, 6400px, 0px) rotateX(0deg) rotateY(0deg) rotateZ(0deg) scale(1); -moz-transform-style: preserve-3d;" id="json-schema" class="step compact" data-x="2400" data-y="6400">
<div class="slide-header"><h3>Schema Schema</h3></div>
<div class="media">
<div class="img">
<span class="imgblock"></span>
</div>
<div class="bd">
<div class="slide-body"><pre><code>{
"description":"This is the JSON Schema for JSON Schemas.",
"type":[ "object", "array" ],
"items":{
"type":"object",
"properties":{
"$ref":"$.properties"
},
"description":"When the schema is an array, it indicates that it is enforcing tuple typing..."
},
"properties":{
"type":{
"type":[ "string", "array" ],
"items":{
"$ref":"$.properties.type"
},
...
}</code></pre>
</div>
</div>
</div>
</div>
<div style="position: absolute; -moz-transform: translate(-50%, -50%) translate3d(0px, 7200px, 0px) rotateX(0deg) rotateY(0deg) rotateZ(0deg) scale(1); -moz-transform-style: preserve-3d;" id="data-dojo" class="step " data-x="0" data-y="7200">
<div class="slide-header"><h3>data-dojo*</h3></div>
<div class="media">
<div class="img">
<span class="imgblock"></span>
</div>
<div class="bd">
<div class="slide-body"><ul>
<li>data-dojo-type</li>
<li><p>data-dojo-config</p>
</li>
<li><p>Declarative UI</p>
</li>
<li>In-place configuration</li>
</ul>
</div>
</div>
</div>
</div>
<div style="position: absolute; -moz-transform: translate(-50%, -50%) translate3d(0px, 8000px, 0px) rotateX(0deg) rotateY(0deg) rotateZ(0deg) scale(1); -moz-transform-style: preserve-3d;" id="attachpoint" class="step " data-x="0" data-y="8000">
<div class="slide-header"><h3>attachPoint</h3></div>
<div class="media">
<div class="img">
<span class="imgblock"></span>
</div>
<div class="bd">
<div class="slide-body"><p>Binding between DOM and object properties</p>
</div>
</div>
</div>
</div>
<div style="position: absolute; -moz-transform: translate(-50%, -50%) translate3d(0px, 8800px, 0px) rotateX(0deg) rotateY(0deg) rotateZ(0deg) scale(1); -moz-transform-style: preserve-3d;" id="dojo-cla" class="step " data-x="0" data-y="8800">
<div class="slide-header"><h3>Dojo CLA</h3></div>
<div class="media">
<div class="img">
<span class="imgblock"></span>
</div>
<div class="bd">
<div class="slide-body"><p>Dojo Foundation owns copyright of all Dojo Toolkit contributions
</p>
<p>Unambiguous intellectual property ownership
</p>
</div>
</div>
</div>
</div>
<div style="position: absolute; -moz-transform: translate(-50%, -50%) translate3d(0px, 9600px, 0px) rotateX(0deg) rotateY(0deg) rotateZ(0deg) scale(1); -moz-transform-style: preserve-3d;" id="desert-island-books" class="step " data-x="0" data-y="9600">
<div class="slide-header"><h3>What If?</h3></div>
<div class="media">
<div class="img">
<span class="imgblock"></span>
</div>
<div class="bd">
<div class="slide-body"><ul>
<li>How do we consume libraries and toolkits</li>
<li>Granular, single-function modules</li>
<li>Pick-and-mix</li>
</ul>
</div>
</div>
</div>
</div>
<div style="position: absolute; -moz-transform: translate(-50%, -50%) translate3d(0px, 10400px, 0px) rotateX(0deg) rotateY(0deg) rotateZ(0deg) scale(1); -moz-transform-style: preserve-3d;" id="desert-island-luxury" class="step " data-x="0" data-y="10400">
<div class="slide-header"><h3>Thank You</h3></div>
<div class="media">
<div class="img">
<span class="imgblock"></span>
</div>
<div class="bd">
<div class="slide-body"><h4>I've been Sam Foster</h4>
<ul>
<li><a href="http://twitter.com/samfosteriam">@samfosteriam</a></li>
</ul>
<h4>Slides on Github</h4>
<p><a href="https://github.com/sfoster/web5-desert-island-dojo-talk">github.com/sfoster/web5-desert-island-dojo-talk</a>
</p>
</div>
</div>
</div>
</div>
</div></div>
<div class="hint">
<p>Use a spacebar or arrow keys to navigate</p>
</div>
<script src="index_files/impress.js"></script>
<script src="index_files/jquery-1.js"></script>
<script src="index_files/require.js"></script>
<script>
require({
baseUrl: './resources',
paths: {
'$': 'dollar',
'use': 'plugins/use',
'json': 'plugins/json',
'text': 'plugins/text',
'ace': 'vendor/ace'
}
}, ['ace/ace'], function(ace){
impress();
var ta = $('textarea.codesample');
$('#themesong-btn').on('click', function(evt){
var node = evt.target, isPlaying = $(node).hasClass('playing');
if(isPlaying){
$('#themesong-audio')[0].pause();
$(node).removeClass('playing');
} else {
$('#themesong-audio')[0].play();
$(node).addClass('playing');
}
});
});
</script>
<script>
$(document).load(function(){
impress();
});
$(document.body).click(function(evt){
if(evt.target.tagName == 'A') {
evt.preventDefault();
// Change "_blank" to something like "newWindow" to load all links in the same new window
viewWindow = window.open(evt.target.href, 'viewer');
newWindow.focus();
return false;
}
});
</script>
</body></html>
Jump to Line
Something went wrong with that request. Please try again.