├── events ├── 20150106 │ ├── app.js │ └── README.md ├── 20150203 │ ├── problem-1-solution.js │ ├── problem-3-solution.js │ ├── problem-2-solution.js │ └── README.md ├── 20150303 │ ├── count-to-6-1-solution.js │ ├── count-to-6-2-solution.js │ ├── count-to-6-4-solution.js │ ├── count-to-6-3-solution.js │ └── README.md ├── 20150407 │ ├── promise_1.js │ ├── promise_4.js │ ├── promise_3.js │ ├── promise_2.js │ └── README.md ├── 20150505 │ ├── introduction.js │ ├── numbers.js │ ├── variables.js │ ├── number-to-string.js │ ├── strings.js │ ├── string-length.js │ ├── arrays.js │ ├── rounding-numbers.js │ ├── for-loop.js │ ├── revising-strings.js │ ├── array-filtering.js │ ├── if-statement.js │ └── README.md ├── 20150602 │ ├── problem-3-solution.js │ ├── problem-5-solution.js │ ├── problem-4-solution.js │ └── README.md ├── 20150715 │ ├── problem-1-solution.js │ ├── problem-3-uniquely.js │ ├── problem-3-solution.js │ ├── problem-2-solution.js │ └── README.md ├── 20150804 │ ├── .jshintrc │ ├── problem-3-solution.js │ ├── problem-1-solution.js │ ├── problem-2-solution.js │ └── README.md ├── 20150901 │ ├── problem-1-solution.js │ ├── .jshintrc │ ├── problem-3-solution.js │ ├── problem-2-solution.js │ ├── problem-4-solution.js │ └── README.md ├── 20151006 │ ├── problem-1-solution.js │ ├── .jshintrc │ ├── problem-2-solution.js │ ├── problem-3-solution.js │ └── README.md ├── 20151103 │ ├── 1_.js │ ├── 3_.js │ ├── 3_ jshint.js │ ├── 3_eslint.js │ ├── 2_.js │ ├── 4_runner.js │ ├── 4_.js │ └── README.md ├── 20160503 │ ├── beep_bool.js │ ├── uniq.js │ └── README.md └── 20160802 │ ├── README.md │ └── test.html ├── MENTORS.md └── README.md /events/20150505/introduction.js: -------------------------------------------------------------------------------- 1 | console.log('hello'); 2 | -------------------------------------------------------------------------------- /events/20160503/beep_bool.js: -------------------------------------------------------------------------------- 1 | console.log("BEEP BOOP"); 2 | -------------------------------------------------------------------------------- /events/20150203/problem-1-solution.js: -------------------------------------------------------------------------------- 1 | console.log("beep boop"); 2 | -------------------------------------------------------------------------------- /events/20150715/problem-1-solution.js: -------------------------------------------------------------------------------- 1 | console.log("BEEP BOOP"); 2 | -------------------------------------------------------------------------------- /events/20150203/problem-3-solution.js: -------------------------------------------------------------------------------- 1 | process.stdin.pipe(process.stdout); 2 | -------------------------------------------------------------------------------- /events/20150505/numbers.js: -------------------------------------------------------------------------------- 1 | var example = 123456789; 2 | console.log(example); 3 | -------------------------------------------------------------------------------- /events/20150505/variables.js: -------------------------------------------------------------------------------- 1 | var example = 'some string'; 2 | console.log(example); 3 | -------------------------------------------------------------------------------- /events/20150505/number-to-string.js: -------------------------------------------------------------------------------- 1 | var n = 128; 2 | n = n.toString(); 3 | console.log(n); 4 | -------------------------------------------------------------------------------- /events/20150505/strings.js: -------------------------------------------------------------------------------- 1 | var someString = 'this is a string'; 2 | console.log(someString); 3 | -------------------------------------------------------------------------------- /events/20151103/1_.js: -------------------------------------------------------------------------------- 1 | console.log("i am okay"); 2 | console.error("i am so incredibly not okay"); -------------------------------------------------------------------------------- /events/20150505/string-length.js: -------------------------------------------------------------------------------- 1 | var example = 'example string'; 2 | console.log(example.length); 3 | -------------------------------------------------------------------------------- /events/20150505/arrays.js: -------------------------------------------------------------------------------- 1 | var pizzaToppings = ['tomato sauce', 'cheese', 'pepperoni']; 2 | console.log(pizzaToppings); 3 | -------------------------------------------------------------------------------- /events/20150505/rounding-numbers.js: -------------------------------------------------------------------------------- 1 | var roundUp = 1.5; 2 | var rounded = Math.round(roundUp); 3 | console.log(rounded); 4 | -------------------------------------------------------------------------------- /events/20150203/problem-2-solution.js: -------------------------------------------------------------------------------- 1 | var fs = require("fs"); 2 | 3 | fs.createReadStream(process.argv[2]).pipe(process.stdout); 4 | -------------------------------------------------------------------------------- /events/20150303/count-to-6-1-solution.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by kearney on 3/2/15. 3 | */ 4 | console.log('Hello ES6'.toUpperCase()) -------------------------------------------------------------------------------- /events/20150505/for-loop.js: -------------------------------------------------------------------------------- 1 | var total = 0; 2 | var limit = 10; 3 | for (var i = 0; i < limit; i++) { 4 | total += i; 5 | } 6 | console.log(total); 7 | -------------------------------------------------------------------------------- /events/20150505/revising-strings.js: -------------------------------------------------------------------------------- 1 | var pizza = 'pizza is alright'; 2 | pizza = pizza.replace('is alright', 'is wonderful'); 3 | console.log(pizza); 4 | -------------------------------------------------------------------------------- /events/20150407/promise_1.js: -------------------------------------------------------------------------------- 1 | var q = require('q'); 2 | var defer = q.defer(); 3 | 4 | defer.promise.then(console.log); 5 | setTimeout(defer.resolve, 300, "RESOLVED!"); -------------------------------------------------------------------------------- /events/20150407/promise_4.js: -------------------------------------------------------------------------------- 1 | var q = require('q'); 2 | var defer = q.defer(); 3 | 4 | defer.promise.then(console.log); 5 | defer.resolve("SECOND"); 6 | console.log("FIRST"); -------------------------------------------------------------------------------- /events/20150901/problem-1-solution.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | function upperCaser(input) { 4 | return input.toUpperCase(); 5 | } 6 | 7 | module.exports = upperCaser; 8 | -------------------------------------------------------------------------------- /events/20150407/promise_3.js: -------------------------------------------------------------------------------- 1 | var q = require('q'); 2 | var defer = q.defer(); 3 | 4 | defer.promise.then(console.log, console.log); 5 | defer.resolve("I FIRED"); 6 | defer.reject("I DID NOT FIRE"); -------------------------------------------------------------------------------- /events/20150505/array-filtering.js: -------------------------------------------------------------------------------- 1 | var numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; 2 | var filtered = numbers.filter(function evenNumbers (number) { 3 | return number % 2 === 0; 4 | }); 5 | console.log(filtered); 6 | -------------------------------------------------------------------------------- /events/20151103/3_.js: -------------------------------------------------------------------------------- 1 | today = 'today'; 2 | 3 | console.log('date is', timestamp()); 4 | console.log('today is', today); 5 | 6 | function timestamp() { 7 | today = Date(); 8 | return today; 9 | } 10 | -------------------------------------------------------------------------------- /events/20151006/problem-1-solution.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | var _ = require("lodash"); 4 | 5 | module.exports = function(list) { 6 | return _.where(list, { 7 | active: true 8 | }); 9 | }; 10 | -------------------------------------------------------------------------------- /events/20150804/.jshintrc: -------------------------------------------------------------------------------- 1 | { 2 | "globalstrict": true, 3 | "globals": { 4 | "module": false, 5 | "require": false, 6 | "process": false, 7 | "console": false 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /events/20150901/.jshintrc: -------------------------------------------------------------------------------- 1 | { 2 | "globalstrict": true, 3 | "globals": { 4 | "module": false, 5 | "require": false, 6 | "process": false, 7 | "console": false 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /events/20151006/.jshintrc: -------------------------------------------------------------------------------- 1 | { 2 | "globalstrict": true, 3 | "globals": { 4 | "module": false, 5 | "require": false, 6 | "process": false, 7 | "console": false 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /events/20151103/3_ jshint.js: -------------------------------------------------------------------------------- 1 | var today = 'today'; 2 | 3 | console.log('date is', timestamp()); 4 | console.log('today is', today); 5 | 6 | function timestamp() { 7 | var today = Date(); 8 | return today; 9 | } 10 | -------------------------------------------------------------------------------- /events/20150505/if-statement.js: -------------------------------------------------------------------------------- 1 | var fruit = 'orange'; 2 | if (fruit.length > 5) { 3 | console.log('The fruit name has more than five characters.'); 4 | } else { 5 | console.log('The fruit name has five characters or less.'); 6 | } 7 | -------------------------------------------------------------------------------- /events/20151103/3_eslint.js: -------------------------------------------------------------------------------- 1 | function timestamp() { 2 | var todayDate = Date(); 3 | return todayDate; 4 | } 5 | 6 | var today = "today"; 7 | 8 | console.log("date is", timestamp()); 9 | console.log("today is", today); 10 | 11 | 12 | -------------------------------------------------------------------------------- /events/20150303/count-to-6-2-solution.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by kearney on 3/2/15. 3 | */ 4 | var person = process.argv[2]; 5 | 6 | var output = `Hello, ${person}! 7 | Your name lowercased is "${person.toLocaleLowerCase()}".`; 8 | 9 | console.log(output) -------------------------------------------------------------------------------- /events/20150407/promise_2.js: -------------------------------------------------------------------------------- 1 | var q = require('q'); 2 | var defer = q.defer(); 3 | 4 | function printError (err) { 5 | console.log(err.message); 6 | } 7 | 8 | defer.promise.then(null, printError); 9 | setTimeout(defer.reject, 300, new Error("REJECTED!")); -------------------------------------------------------------------------------- /events/20151006/problem-2-solution.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | var _ = require("lodash"); 4 | 5 | module.exports = function(collection) { 6 | return _.sortBy(collection, function(elem) { 7 | return -elem.quantity; 8 | }); 9 | }; 10 | -------------------------------------------------------------------------------- /events/20150901/problem-3-solution.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | function doubleAll(numbers) { 4 | // SOLUTION GOES HERE 5 | return numbers.map(function(num){ 6 | return num * 2; 7 | }); 8 | 9 | } 10 | 11 | module.exports = doubleAll; -------------------------------------------------------------------------------- /events/20150715/problem-3-uniquely.js: -------------------------------------------------------------------------------- 1 | var uniq = require("uniq"); 2 | 3 | module.exports = function(input) { 4 | // split the input into an array 5 | input = input.split(","); 6 | 7 | // return only the unique elements from the array 8 | return uniq(input); 9 | }; 10 | -------------------------------------------------------------------------------- /events/20150303/count-to-6-4-solution.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by kearney on 3/3/15. 3 | */ 4 | 5 | var foot = { 6 | kick: function() { 7 | this.yelp = "Ouch!"; 8 | var answer = `${setImmediate( () => console.log(this.yelp))}`; 9 | 10 | } 11 | }; 12 | 13 | foot.kick(); -------------------------------------------------------------------------------- /events/20150901/problem-2-solution.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | function repeat(operation, num) { 4 | // SOLUTION GOES HERE 5 | if (num <= 0) { 6 | return operation(); 7 | } 8 | return repeat(operation, --num); 9 | } 10 | 11 | // Do not remove the line below 12 | module.exports = repeat; -------------------------------------------------------------------------------- /events/20150715/problem-3-solution.js: -------------------------------------------------------------------------------- 1 | var uniquely = require("./uniquely.js"); 2 | 3 | var input; 4 | 5 | // using the browser's "prompt", pull in a string 6 | input = prompt("enter a string"); 7 | 8 | // grab only the unique elements from the string 9 | input = uniquely(input); 10 | 11 | console.log(input); 12 | -------------------------------------------------------------------------------- /events/20150901/problem-4-solution.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | function getShortMessages(messages) { 4 | // SOLUTION GOES HERE 5 | return messages.map(function(obj){ 6 | return obj.message; 7 | }).filter(function(msg){ 8 | return msg.length < 50; 9 | }); 10 | } 11 | 12 | module.exports = getShortMessages; -------------------------------------------------------------------------------- /events/20150303/count-to-6-3-solution.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by kearney on 3/3/15. 3 | */ 4 | var inputs = process.argv.slice(2); 5 | //console.log(inputs); 6 | 7 | var results = inputs.map(first => first[0]).reduce((out, first) => out + first); 8 | 9 | var output = (`[${inputs}] becomes "${results}"`); 10 | 11 | 12 | 13 | console.log(output) -------------------------------------------------------------------------------- /events/20160503/uniq.js: -------------------------------------------------------------------------------- 1 | var uniq = require("uniq"); 2 | 3 | var input; 4 | 5 | // using the browser's "prompt", pull in a string 6 | input = prompt("enter a string"); 7 | 8 | // split the input into an array 9 | input = input.split(","); 10 | 11 | // grab only the unique elements from the array 12 | input = uniq(input); 13 | 14 | console.log(input); 15 | 16 | -------------------------------------------------------------------------------- /events/20150715/problem-2-solution.js: -------------------------------------------------------------------------------- 1 | var uniq = require("uniq"); 2 | 3 | var input; 4 | 5 | // using the browser's "prompt", pull in a string 6 | input = prompt("enter a string"); 7 | 8 | // split the input into an array 9 | input = input.split(","); 10 | 11 | // grab only the unique elements from the array 12 | input = uniq(input); 13 | 14 | console.log(input); 15 | -------------------------------------------------------------------------------- /events/20151006/problem-3-solution.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | var _ = require("lodash"); 4 | 5 | module.exports = function(collection) { 6 | return _.forEach(collection, function(value, index, collection) { 7 | var size; 8 | 9 | if (value.population > 1) { 10 | size = "big"; 11 | } else if (value.population > 0.5 && value.population < 1) { 12 | size = "med"; 13 | } else { 14 | size = "small"; 15 | } 16 | 17 | value.size = size; 18 | collection[index] = value; 19 | }); 20 | }; 21 | -------------------------------------------------------------------------------- /events/20151103/2_.js: -------------------------------------------------------------------------------- 1 | // scenario.js 2 | var fs = require("fs"); 3 | 4 | var peach = function (obj) { 5 | // trace the message "traced" 6 | console.trace("traced") 7 | 8 | // dump obj to stdout 9 | console.log(obj); 10 | }; 11 | 12 | var bowser = function (callback) { 13 | fs.readFile(process.argv[2], {encoding : "utf8"}, callback); 14 | }; 15 | 16 | var koopa = function (error, file) { 17 | // handle error by printing something to stderr 18 | if (error) { 19 | console.error(JSON.stringify(error)); 20 | }` NaN 1` ` `` 21 | 22 | peach(JSON.parse(file)); 23 | }; 24 | 25 | bowser(koopa); -------------------------------------------------------------------------------- /MENTORS.md: -------------------------------------------------------------------------------- 1 | * [Stefan von Ellenrieder](https://twitter.com/stefanmve) 2 | * [Enrique Delgado](https://twitter.com/enriquedelgado) 3 | * [Kearney Taaffe](https://twitter.com/k_taaffe) 4 | * [Dylan Smith](https://twitter.com/dylants) 5 | * [Avi Das](https://twitter.com/avidas) 6 | * [Dennis Bartlett](https://twitter.com/bartlettdc1) 7 | * [Evan Lucas](https://github.com/evanlucas) 8 | * [Alfredo Miranda](https://github.com/mirandaio) 9 | * [Monico Moreno](https://twitter.com/javascriptstack) 10 | * [Rob Horrigan](https://twitter.com/rob_horrigan) 11 | * [David Aktary] (https://twitter.com/davidaktary) 12 | -------------------------------------------------------------------------------- /events/20150602/problem-3-solution.js: -------------------------------------------------------------------------------- 1 | var mongo = require("mongodb").MongoClient; 2 | var url = "mongodb://localhost:27017/learnyoumongo"; 3 | var age = process.argv[2]; 4 | 5 | mongo.connect(url, function(err, db) { 6 | var parrots; 7 | 8 | if (err) { 9 | throw err; 10 | } 11 | 12 | parrots = db.collection("parrots"); 13 | 14 | parrots.find({ 15 | age: { 16 | $gt: +age 17 | } 18 | }).toArray(function(err, docs) { 19 | if (err) { 20 | throw err; 21 | } 22 | 23 | console.log(docs); 24 | db.close(); 25 | }); 26 | }); 27 | -------------------------------------------------------------------------------- /events/20151103/4_runner.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Use this to test the bunyan logging. 3 | * 4 | * install bunyan `npm install --global bunyan` 5 | * install bunyan locally 'npm install bunyan' 6 | * add logging to your app using this line: 7 | * log.info({value : value}, "function name goes here"); 8 | * 9 | * run the code: `node 4_runner.js 4_.js | bunyan` 10 | */ 11 | 12 | var resolve = require("path").resolve; 13 | 14 | var bunyan = require("bunyan"); 15 | var log = bunyan.createLogger({name : "sample"}); 16 | 17 | var scenario = require(resolve(process.cwd(), process.argv[2])); 18 | scenario(log, function (value) { 19 | log.info("value at finish is", value); 20 | }); -------------------------------------------------------------------------------- /events/20150602/problem-5-solution.js: -------------------------------------------------------------------------------- 1 | var mongo = require("mongodb").MongoClient; 2 | var url = "mongodb://localhost:27017/learnyoumongo"; 3 | var firstName = process.argv[2]; 4 | var lastName = process.argv[3]; 5 | var doc = { 6 | firstName: firstName, 7 | lastName: lastName 8 | }; 9 | 10 | mongo.connect(url, function(err, db) { 11 | var collection; 12 | 13 | if (err) { 14 | throw err; 15 | } 16 | 17 | collection = db.collection("docs"); 18 | collection.insert(doc, function(err, data) { 19 | if (err) { 20 | throw err; 21 | } 22 | 23 | console.log(JSON.stringify(doc)); 24 | db.close(); 25 | }); 26 | }); 27 | -------------------------------------------------------------------------------- /events/20150804/problem-3-solution.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | var request = require("request"), 4 | async = require("async"); 5 | 6 | // way too tricky! 7 | var array = process.argv.slice(2); 8 | 9 | async.each(array, function(item, eachCallback) { 10 | request(item, function(err, response, body) { 11 | if (err) { 12 | return eachCallback(err); 13 | } 14 | 15 | // do nothing with the data, just move on to the next item 16 | return eachCallback(null); 17 | }); 18 | }, function(err) { 19 | if (err) { 20 | // note that this is expecting console LOG not ERROR (to compare) 21 | return console.log(err); 22 | } 23 | }); 24 | -------------------------------------------------------------------------------- /events/20150602/problem-4-solution.js: -------------------------------------------------------------------------------- 1 | var mongo = require("mongodb").MongoClient; 2 | var url = "mongodb://localhost:27017/learnyoumongo"; 3 | var age = process.argv[2]; 4 | 5 | mongo.connect(url, function(err, db) { 6 | var parrots; 7 | 8 | if (err) { 9 | throw err; 10 | } 11 | 12 | parrots = db.collection("parrots"); 13 | 14 | parrots.find({ 15 | age: { 16 | $gt: +age 17 | } 18 | }, { 19 | name: 1, 20 | age: 1, 21 | _id: 0 22 | }).toArray(function(err, docs) { 23 | if (err) { 24 | throw err; 25 | } 26 | 27 | console.log(docs); 28 | db.close(); 29 | }); 30 | }); 31 | -------------------------------------------------------------------------------- /events/20151103/4_.js: -------------------------------------------------------------------------------- 1 | /** using bunyan for logging */ 2 | 3 | var bunyan = require('bunyan'); 4 | var log = bunyan.createLogger({name: 'myapp'}); 5 | 6 | module.exports = scenario; 7 | 8 | function scenario(log, cb) { 9 | function start() { 10 | process.nextTick(thing); 11 | } 12 | 13 | var value = 97; 14 | log.info({value : value}, "scenario"); 15 | 16 | function foo() { 17 | value *= 13; 18 | log.info({value : value}, "foo"); 19 | 20 | cb(value); 21 | } 22 | 23 | start(); 24 | 25 | function racer() { 26 | value &= 255; 27 | log.info({value : value}, "racer"); 28 | 29 | setTimeout(foo, 0); 30 | } 31 | 32 | log.error("this line shound't be here"); 33 | // value = 213; 34 | log.info({value : value}, "scenario"); 35 | 36 | function thing() { 37 | value += 131; 38 | log.info({value : value}, "thing"); 39 | 40 | process.nextTick(racer); 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /events/20150804/problem-1-solution.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | var fs = require("fs"), 4 | request = require("request"), 5 | async = require("async"); 6 | 7 | async.waterfall([ 8 | function(waterfallCallback) { 9 | fs.readFile(process.argv[2], function(err, data) { 10 | if (err) { 11 | return waterfallCallback(err); 12 | } 13 | 14 | return waterfallCallback(null, data.toString()); 15 | }); 16 | }, 17 | function(data, waterfallCallback) { 18 | request(data, function(err, response, body) { 19 | if (err) { 20 | return waterfallCallback(err); 21 | } 22 | 23 | return waterfallCallback(null, body); 24 | }); 25 | } 26 | ], function(err, result) { 27 | if (err) { 28 | return console.error(err); 29 | } 30 | 31 | console.log(result); 32 | }); 33 | -------------------------------------------------------------------------------- /events/20150804/problem-2-solution.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | var request = require("request"), 4 | async = require("async"); 5 | 6 | // this could be parallel instead! 7 | async.series({ 8 | requestOne: function(seriesCallback) { 9 | request(process.argv[2], function(err, response, body) { 10 | if (err) { 11 | return seriesCallback(err); 12 | } 13 | 14 | return seriesCallback(null, body); 15 | }); 16 | }, 17 | requestTwo: function(seriesCallback) { 18 | request(process.argv[3], function(err, response, body) { 19 | if (err) { 20 | return seriesCallback(err); 21 | } 22 | 23 | return seriesCallback(null, body); 24 | }); 25 | } 26 | }, function(err, results) { 27 | if (err) { 28 | return console.error(err); 29 | } 30 | 31 | console.log(results); 32 | }); 33 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Austin NodeSchool # 2 | 3 | Austin NodeSchool was launched by [Stefan von Ellenrieder](https://twitter.com/stefanmve), and is supported by [Kearney Taaffe](https://twitter.com/k_taaffe) and [Dylan Smith](https://twitter.com/dylants). 4 | 5 | For more information on Austin NodeSchool, please visit: http://nodeschool.io/austin 6 | 7 | ## Contact ## 8 | 9 | Austin NodeSchool uses an Issues list much like a forum, has a Gitter chat for instant communication between members, and has an official Twitter account. If you would like to help by sponsoring an event, please contact us! 10 | 11 | * Issues list (forum for question/answer): https://github.com/nodeschool/austin/issues 12 | * Gitter chat: [![Gitter chat](https://badges.gitter.im/nodeschool/austin.png)](https://gitter.im/nodeschool/austin) 13 | * Twitter: https://twitter.com/ATXNodeSchool 14 | 15 | ## Events ## 16 | 17 | For information on upcoming events, checkout our Meetup page: http://www.meetup.com/atxnodejs/ 18 | 19 | ## Mentors ## 20 | 21 | If you've been mentoring at events, or would like to volunteer to help out, please add yourself to [MENTORS.md](https://github.com/nodeschool/austin/blob/master/MENTORS.md). (Please let us know if you need access to the [Austin NodeSchool team](https://github.com/orgs/nodeschool/teams/austin).) 22 | -------------------------------------------------------------------------------- /events/20150303/README.md: -------------------------------------------------------------------------------- 1 | # COUNT TO 6 # 2 | 3 | The _Count To 6_ Adventure NodeSchool workshop provides an overview of 4 | [EMCAScript6](http://wiki.ecmascript.org/doku.php?id=harmony:specification_drafts). 5 | 6 | ## Setup ## 7 | 8 | Be sure you've gone through the 9 | [initial setup found on the Austin NodeSchool website](http://nodeschool.io/austin/#getting-started), 10 | including installing Node, and making sure `npm` is available from the command line. 11 | 12 | Install the `count-to-6` workshop: 13 | 14 | `$ npm install -g count-to-6` 15 | 16 | ## Start the Workshop ## 17 | 18 | To start up the workshop, issue the following command from the terminal: 19 | 20 | `$ count-to-6` 21 | 22 | Select the first exercise from the list, `HELLO ES6`, and hit enter to see the 23 | instructions for this problem. 24 | 25 | ### Solve the Exercise ### 26 | 27 | Once you've understood what needs to be accomplished, open a file with your 28 | favorite editor, add the solution to it, and save it as `program.js`. 29 | 30 | Now, from the command line you can `run` or `verify` your solution. To run 31 | the program and see what the output looks like, issue the following command: 32 | 33 | `$ count-to-6 run program.js` 34 | 35 | Once you're satisfied with the output, `verify` the solution: 36 | 37 | `$ count-to-6 verify program.js` 38 | 39 | The workshop will pass or fail your solution based on if it performs the actions 40 | correctly as explained in the exercise. If it passes, congratulations!! You can 41 | now proceed on to the next problem. 42 | 43 | ## Code Away! ## 44 | 45 | Make you're way through the workshop an exercise at a time. Please ask someone 46 | if you get stuck, and/or 47 | [contact Austin NodeSchool](http://nodeschool.io/austin/#contact) if you need help 48 | outside of an event. Good luck and have fun! -------------------------------------------------------------------------------- /events/20150203/README.md: -------------------------------------------------------------------------------- 1 | # Stream Adventure # 2 | 3 | The Stream Adventure NodeSchool workshop provides an overview of 4 | [Node's Stream API](http://nodejs.org/api/stream.html). 5 | 6 | ## Setup ## 7 | 8 | Be sure you've gone through the 9 | [initial setup found on the Austin NodeSchool website](http://nodeschool.io/austin/#getting-started), 10 | including installing Node, and making sure `npm` is available from the command line. 11 | 12 | Install the `stream-adventure` workshop: 13 | 14 | `$ npm install -g stream-adventure` 15 | 16 | ## Start the Workshop ## 17 | 18 | To start up the workshop, issue the following command from the terminal: 19 | 20 | `$ stream-adventure` 21 | 22 | Select the first exercise from the list, `BEEP BOOP`, and hit enter to see the 23 | instructions for this problem. 24 | 25 | ### Solve the Exercise ### 26 | 27 | Once you've understood what needs to be accomplished, open a file with your 28 | favorite editor, add the solution to it, and save it as `program.js`. 29 | 30 | Now, from the command line you can `run` or `verify` your solution. To run 31 | the program and see what the output looks like, issue the following command: 32 | 33 | `$ stream-adventure run program.js` 34 | 35 | Once you're satisfied with the output, `verify` the solution: 36 | 37 | `$ stream-adventure verify program.js` 38 | 39 | The workshop will pass or fail your solution based on if it performs the actions 40 | correctly as explained in the exercise. If it passes, congratulations!! You can 41 | now proceed on to the next problem. 42 | 43 | ## Code Away! ## 44 | 45 | Make you're way through the workshop an exercise at a time. Please ask someone 46 | if you get stuck, and/or 47 | [contact Austin NodeSchool](http://nodeschool.io/austin/#contact) if you need help 48 | outside of an event. Good luck and have fun! 49 | -------------------------------------------------------------------------------- /events/20150106/app.js: -------------------------------------------------------------------------------- 1 | (function(){ 2 | 3 | "use strict"; 4 | 5 | var scene=new THREE.Scene(), 6 | light= new THREE.AmbientLight(0xffffff), 7 | camera, 8 | renderer = new THREE.WebGLRenderer(), 9 | box; 10 | 11 | function initScene(){ 12 | 13 | renderer.setSize( window.innerWidth, window.innerHeight ); 14 | document.getElementById("webgl-container").appendChild(renderer.domElement); 15 | 16 | scene.add(light); 17 | 18 | camera = new THREE.PerspectiveCamera( 19 | 35, 20 | window.innerWidth / window.innerHeight, 21 | 1, 22 | 1000 23 | ); 24 | 25 | camera.position.set( 0, 0, 100 ); 26 | 27 | // 02 look down 28 | // camera.lookAt(new THREE.Vector3(0, -100, -200)); 29 | 30 | scene.add(camera); 31 | 32 | box = new THREE.Mesh( 33 | new THREE.CubeGeometry( 34 | 20, 35 | 20, 36 | 20), 37 | new THREE.MeshBasicMaterial({ color: 0x00FF00, wireframe: false })); 38 | 39 | // 03 rotate box 40 | // box.rotateY(45 * (Math.PI / 180)); 41 | 42 | scene.add(box); 43 | 44 | requestAnimationFrame(render); 45 | 46 | } 47 | 48 | function render() { 49 | renderer.render(scene, camera); 50 | 51 | // 02 zoom in 52 | // camera.position.z--; 53 | 54 | // 03 rotate box 55 | // box.rotateY(1 * (Math.PI / 180)); 56 | 57 | requestAnimationFrame(render); 58 | } 59 | 60 | window.onload = initScene; 61 | 62 | })(); 63 | -------------------------------------------------------------------------------- /events/20150106/README.md: -------------------------------------------------------------------------------- 1 | # Intro to WebGL # 2 | 3 | The Intro to WebGL NodeSchool workshop provides an introduction to WebGL via the 4 | `three.js` node module. This workshop is different from the other NodeSchool 5 | workshops in that there is no validation of the problems. You are still given 6 | exercises to complete, but you validate them yourself, visually. 7 | 8 | ## Setup ## 9 | 10 | Install the `introtowebgl` workshop: 11 | 12 | `$ npm install -g introtowebgl` 13 | 14 | ## Launch the workshop ## 15 | 16 | To launch the `introtowebgl` workshop, enter the command: 17 | 18 | `$ introtowebgl` 19 | 20 | You can then select the first problem to work through. 21 | 22 | ## Run the web application ## 23 | 24 | Since this workshop covers WebGL, you'll need to run the code provided via a 25 | web browser. The creator of the `introtowebgl` workshop provided some assets which 26 | can be used to complete the exercises. 27 | 28 | ### Change directories to `introtowebgl/assets` 29 | 30 | Change directories to the location of the `assets` directory within the 31 | `introtowebgl` module: 32 | 33 | `$ cd introtowebgl/assets` 34 | 35 | #### Finding the `introtowebgl` module #### 36 | 37 | If you are unsure where you've installed the `introtowebgl` module, you can simply 38 | install it to your current directory by issuing the command: 39 | 40 | `$ npm install introtowebgl` 41 | 42 | Then change directories locally to: 43 | 44 | `$ cd node_modules/introtowebgl/assets` 45 | 46 | ### Start the web app ### 47 | 48 | There are multiple ways of running static files. One node module which allows us 49 | to do this is the `node-static` module. If you'd like to use this module, install 50 | it via the command: 51 | 52 | `$ npm install -g node-static` 53 | 54 | Then from the assets/<app name> directory (for instance, `assets/BoilerplateApp`), 55 | issue the command: 56 | 57 | `$ static` 58 | 59 | To view the page, browse to http://127.0.0.1:8080/index.htm 60 | 61 | ## Code Away! ## 62 | 63 | Make you're way through the workshop an exercise at a time. Please ask someone 64 | if you get stuck. Good luck and have fun! 65 | -------------------------------------------------------------------------------- /events/20150505/README.md: -------------------------------------------------------------------------------- 1 | # JAVASCRIPTING # 2 | 3 | Learn JavaScript by adventuring around in the terminal, [module github](https://github.com/sethvincent/javascripting). 4 | 5 | ## Setup ## 6 | 7 | Be sure you've gone through the 8 | [initial setup found on the Austin NodeSchool website](http://nodeschool.io/austin/#getting-started), 9 | including installing Node, and making sure `npm` is available from the command line. 10 | 11 | ## Installation & Update 12 | 13 | Create a new directory to do your workshop work in. Let's call it "javascripting". 14 | 15 | ``` 16 | $ mkdir javascripting && cd javascripting 17 | $ npm install javascripting 18 | ``` 19 | 20 | ## Usage Instructions 21 | 22 | #### 1. Selecting a problem to work on 23 | 24 | Once the workshop is installed, run `javascripting` to print a menu 25 | where you can select a problem to work on. 26 | 27 | ``` 28 | $ javascripting 29 | ``` 30 | 31 | Problems are listed in rough order of difficulty. You are advised to complete them in order, as later problems 32 | will build on skills developed by solving previous problems. 33 | 34 | #### 2. Writing your solution 35 | 36 | Once you have selected a problem, the workshop will remember which problem you are working on. 37 | Using your preferred editor, simply create a file to write your solution in. 38 | 39 | #### 3. Testing your solution 40 | 41 | Use the workshop's `run` command to point the workshop at your solution file. Your solution will loaded 42 | and passed the problem input. This usually won't perform any validation, it will only show the program output. 43 | 44 | ``` 45 | $ javascripting run mysolution.js 46 | ``` 47 | 48 | #### 4. Verifying your solution 49 | 50 | Your solution will be verified against the output of the 'official' solution. 51 | If all of the output matches, then you have successfully solved the problem! 52 | 53 | ``` 54 | $ javascripting verify mysolution.js 55 | ``` 56 | 57 | ## Code Away! ## 58 | 59 | Make you're way through the workshop an exercise at a time. Please ask someone 60 | if you get stuck, and/or 61 | [contact Austin NodeSchool](http://nodeschool.io/austin/#contact) if you need help 62 | outside of an event. Good luck and have fun! -------------------------------------------------------------------------------- /events/20160802/README.md: -------------------------------------------------------------------------------- 1 | ## Scope Chains & Closures ## 2 | Learn how to use Scopes and Closures with NodeJS with the [Scope Chain and Closures](https://github.com/jesstelford/scope-chains-closures) workshop. 3 | 4 | ## Setup ## 5 | 6 | Be sure you've gone through the [initial setup found on the Austin NodeSchool website](http://nodeschool.io/austin/#getting-started), including installing Node, and making sure `npm` is available from the command line. 7 | 8 | ### Install the Workshop 9 | 10 | Use `npm` to install the workshop globally. This will place the workshop binary in your `PATH` so that you can access it from the command line. 11 | 12 | ``` 13 | $ npm install -g scope-chains-closures 14 | ``` 15 | 16 | ### Setup your Workspace 17 | 18 | Create a new directory to do your workshop work in. Let's call it "learning_closures". 19 | 20 | ``` 21 | $ mkdir learning_closures && cd learning_closures 22 | ``` 23 | 24 | ## Workshoop Instructions 25 | 26 | ### 1. Select a problem to work on 27 | 28 | With the workshop installed, run `scope-chains-closures` to print a menu where you can select a problem to work on. 29 | 30 | You can also type _sccjs_ 31 | 32 | ``` 33 | $ sccjs 34 | ``` 35 | 36 | Problems are listed in rough order of difficulty. You are advised to complete them in order, as later problems will build on skills developed by solving previous problems. 37 | 38 | ### 2. Write your solution 39 | 40 | Once you have selected a problem, the workshop will remember which problem you are working on. Using your preferred editor, simply create a file to write your solution in. 41 | 42 | ### 3. Verify your solution 43 | 44 | This workshop requires that you run your solution through `scope-chains-closures`. Using the workshop's `verify` command, your solution will be verified against the output of the "official" solution. If all of the output matches, then you have successfully solved the problem! 45 | 46 | ``` 47 | $ scope-chains-closures verify 48 | ``` 49 | 50 | ## Code Away! ## 51 | 52 | Make you're way through the workshop an exercise at a time. Please ask someone if you get stuck, and/or [contact Austin NodeSchool](http://nodeschool.io/austin/#contact) if you need help outside of an event. Good luck and have fun! 53 | -------------------------------------------------------------------------------- /events/20150602/README.md: -------------------------------------------------------------------------------- 1 | # Learn You Mongo # 2 | 3 | Learn how to use Mongo through Node with the [learnyoumongo](https://github.com/evanlucas/learnyoumongo) workshop. 4 | 5 | ## Setup ## 6 | 7 | Be sure you've gone through the [initial setup found on the Austin NodeSchool website](http://nodeschool.io/austin/#getting-started), including installing Node, and making sure `npm` is available from the command line. 8 | 9 | ### Install the Workshop 10 | 11 | Use `npm` to install the workshop globally. This will place the workshop binary in your `PATH` so that you can access it from the command line. 12 | 13 | ``` 14 | $ npm install -g learnyoumongo 15 | ``` 16 | 17 | ### Setup your Workspace 18 | 19 | Create a new directory to do your workshop work in. Let's call it "learnyoumongo". 20 | 21 | ``` 22 | $ mkdir learnyoumongo && cd learnyoumongo 23 | ``` 24 | 25 | ## Workshoop Instructions 26 | 27 | ### 1. Select a problem to work on 28 | 29 | With the workshop installed, run `learnyoumongo` to print a menu where you can select a problem to work on. 30 | 31 | ``` 32 | $ learnyoumongo 33 | ``` 34 | 35 | Problems are listed in rough order of difficulty. You are advised to complete them in order, as later problems will build on skills developed by solving previous problems. 36 | 37 | ### 2. Write your solution 38 | 39 | Once you have selected a problem, the workshop will remember which problem you are working on. Using your preferred editor, simply create a file to write your solution in. 40 | 41 | ### 3. Test your solution 42 | 43 | Use the workshop's `run` command to point the workshop at your solution file. Your solution will loaded and passed the problem input. This usually won't perform any validation, it will only show the program output. 44 | 45 | ``` 46 | $ learnyoumongo run mysolution.js 47 | ``` 48 | 49 | ### 4. Verify your solution 50 | 51 | Your solution will be verified against the output of the 'official' solution. If all of the output matches, then you have successfully solved the problem! 52 | 53 | ``` 54 | $ learnyoumongo verify mysolution.js 55 | ``` 56 | 57 | ## Code Away! ## 58 | 59 | Make you're way through the workshop an exercise at a time. Please ask someone if you get stuck, and/or [contact Austin NodeSchool](http://nodeschool.io/austin/#contact) if you need help outside of an event. Good luck and have fun! 60 | -------------------------------------------------------------------------------- /events/20151006/README.md: -------------------------------------------------------------------------------- 1 | # lololodash # 2 | 3 | Learn how to use [lodash](https://github.com/lodash/lodash) through Node with the [lololodash](https://github.com/mdunisch/lololodash) workshop. 4 | 5 | ## Setup ## 6 | 7 | Be sure you've gone through the [initial setup found on the Austin NodeSchool website](http://nodeschool.io/austin/#getting-started), including installing Node, and making sure `npm` is available from the command line. 8 | 9 | ### Install the Workshop 10 | 11 | Use `npm` to install the workshop globally. This will place the workshop binary in your `PATH` so that you can access it from the command line. 12 | 13 | ``` 14 | $ npm install -g lololodash 15 | ``` 16 | 17 | ### Setup your Workspace 18 | 19 | Create a new directory to do your workshop work in. Let's call it "workspace". 20 | 21 | ``` 22 | $ mkdir workspace && cd workspace 23 | ``` 24 | 25 | 26 | ## Workshop Instructions 27 | 28 | ### 1. Select a problem to work on 29 | 30 | With the workshop installed, run `lololodash` to print a menu where you can select a problem to work on. 31 | 32 | ``` 33 | $ lololodash 34 | ``` 35 | 36 | Problems are listed in rough order of difficulty. You are advised to complete them in order, as later problems will build on skills developed by solving previous problems. 37 | 38 | ### 2. Write your solution 39 | 40 | Once you have selected a problem, the workshop will remember which problem you are working on. Using your preferred editor, simply create a file to write your solution in. 41 | 42 | ### 3. Test your solution 43 | 44 | Use the workshop's `run` command to test your solution. Your solution will be loaded and passed the problem input. This usually won't perform any validation, it will only show the program output. 45 | 46 | ``` 47 | $ lololodash run solution.js 48 | ``` 49 | 50 | ### 4. Verify your solution 51 | 52 | Use the workshop's `verify` command to test your solution against the output of the "official" solution. If all of the output matches, then you have successfully solved the problem! 53 | 54 | ``` 55 | $ lololodash verify solution.js 56 | ``` 57 | 58 | ## Code Away! ## 59 | 60 | Make you're way through the workshop an exercise at a time. Please ask someone if you get stuck, and/or [contact Austin NodeSchool](http://nodeschool.io/austin/#contact) if you need help outside of an event. Good luck and have fun! 61 | -------------------------------------------------------------------------------- /events/20151103/README.md: -------------------------------------------------------------------------------- 1 | # bug-clinic # 2 | 3 | Learn how to use stacktraces, eslint, and jsling through Node with the [bug-clinic](https://github.com/othiym23/bug-clinic) workshop. 4 | 5 | ## Setup ## 6 | 7 | Be sure you've gone through the [initial setup found on the Austin NodeSchool website](http://nodeschool.io/austin/#getting-started), including installing Node, and making sure `npm` is available from the command line. 8 | 9 | ### Install the Workshop 10 | 11 | Use `npm` to install the workshop globally. This will place the workshop binary in your `PATH` so that you can access it from the command line. 12 | 13 | ``` 14 | $ npm install -g bug-clinic 15 | ``` 16 | 17 | ### Setup your Workspace 18 | 19 | Create a new directory to do your workshop work in. Let's call it "workspace". 20 | 21 | ``` 22 | $ mkdir workspace && cd workspace 23 | $ npm install bug-clinic 24 | ``` 25 | 26 | 27 | ## Workshop Instructions 28 | 29 | ### 1. Select a problem to work on 30 | 31 | With the workshop installed, run `bug-clinic` to print a menu where you can select a problem to work on. 32 | 33 | ``` 34 | $ bug-clinc 35 | ``` 36 | 37 | Problems are listed in rough order of difficulty. You are advised to complete them in order, as later problems will build on skills developed by solving previous problems. 38 | 39 | ### 2. Write your solution 40 | 41 | Once you have selected a problem, the workshop will remember which problem you are working on. Using your preferred editor, simply create a file to write your solution in. 42 | 43 | ### 3. Test your solution 44 | 45 | Use the workshop's `run` command to test your solution. Your solution will be loaded and passed the problem input. This usually won't perform any validation, it will only show the program output. 46 | 47 | ``` 48 | $ bug-clinic run solution.js 49 | ``` 50 | 51 | ### 4. Verify your solution 52 | 53 | Use the workshop's `verify` command to test your solution against the output of the "official" solution. If all of the output matches, then you have successfully solved the problem! 54 | 55 | ``` 56 | $ bug-clinic verify solution.js 57 | ``` 58 | 59 | ## Code Away! ## 60 | 61 | Make you're way through the workshop an exercise at a time. Please ask someone if you get stuck, and/or [contact Austin NodeSchool](http://nodeschool.io/austin/#contact) if you need help outside of an event. Good luck and have fun! 62 | -------------------------------------------------------------------------------- /events/20150901/README.md: -------------------------------------------------------------------------------- 1 | # Functional Javascript Workshop # 2 | 3 | Teaching fundamental [functional programming](https://github.com/timoxley/functional-javascript-workshop) features of Javascript. 4 | 5 | ## Setup ## 6 | 7 | Be sure you've gone through the [initial setup found on the Austin NodeSchool website](http://nodeschool.io/austin/#getting-started), including installing Node, and making sure `npm` is available from the command line. 8 | 9 | ### Install the Workshop 10 | 11 | Use `npm` to install the workshop globally. This will place the workshop binary in your `PATH` so that you can access it from the command line. 12 | 13 | ``` 14 | $ npm install -g functional-javascript-workshop 15 | ``` 16 | 17 | ### Setup your Workspace 18 | 19 | Create a new directory to do your workshop work in. Let's call it "functional-javascript". 20 | 21 | ``` 22 | $ mkdir workspace && cd functional-javascript 23 | ``` 24 | 25 | 26 | ## Workshop Instructions 27 | 28 | ### 1. Select a problem to work on 29 | 30 | With the workshop installed, run `functional-javascript` to print a menu where you can select a problem to work on. 31 | 32 | ``` 33 | $ functional-javascript 34 | ``` 35 | 36 | Problems are listed in rough order of difficulty. You are advised to complete them in order, as later problems will build on skills developed by solving previous problems. 37 | 38 | ### 2. Write your solution 39 | 40 | Once you have selected a problem, the workshop will remember which problem you are working on. Using your preferred editor, simply create a file to write your solution in. 41 | 42 | ### 3. Test your solution 43 | 44 | Use the workshop's `run` command to test your solution. Your solution will be loaded and passed the problem input. This usually won't perform any validation, it will only show the program output. 45 | 46 | ``` 47 | $ functional-javascript run solution.js 48 | ``` 49 | 50 | ### 4. Verify your solution 51 | 52 | Use the workshop's `verify` command to test your solution against the output of the "official" solution. If all of the output matches, then you have successfully solved the problem! 53 | 54 | ``` 55 | $ functional-javascript verify solution.js 56 | ``` 57 | 58 | ## Code Away! ## 59 | 60 | Make you're way through the workshop an exercise at a time. Please ask someone if you get stuck, and/or [contact Austin NodeSchool](http://nodeschool.io/austin/#contact) if you need help outside of an event. Good luck and have fun! 61 | -------------------------------------------------------------------------------- /events/20150804/README.md: -------------------------------------------------------------------------------- 1 | # Async You # 2 | 3 | Learn how to use [async](https://github.com/caolan/async) through Node with the [async-you](https://github.com/bulkan/async-you) workshop. 4 | 5 | ## Setup ## 6 | 7 | Be sure you've gone through the [initial setup found on the Austin NodeSchool website](http://nodeschool.io/austin/#getting-started), including installing Node, and making sure `npm` is available from the command line. 8 | 9 | ### Install the Workshop 10 | 11 | Use `npm` to install the workshop globally. This will place the workshop binary in your `PATH` so that you can access it from the command line. 12 | 13 | ``` 14 | $ npm install -g async-you 15 | ``` 16 | 17 | ### Setup your Workspace 18 | 19 | Create a new directory to do your workshop work in. Let's call it "workspace". 20 | 21 | ``` 22 | $ mkdir workspace && cd workspace 23 | ``` 24 | 25 | For this workshop, you'll also need to install `async` (since it is used throughout the exercises): 26 | 27 | ``` 28 | $ npm install async 29 | ``` 30 | 31 | ## Workshop Instructions 32 | 33 | ### 1. Select a problem to work on 34 | 35 | With the workshop installed, run `async-you` to print a menu where you can select a problem to work on. 36 | 37 | ``` 38 | $ async-you 39 | ``` 40 | 41 | Problems are listed in rough order of difficulty. You are advised to complete them in order, as later problems will build on skills developed by solving previous problems. 42 | 43 | ### 2. Write your solution 44 | 45 | Once you have selected a problem, the workshop will remember which problem you are working on. Using your preferred editor, simply create a file to write your solution in. 46 | 47 | ### 3. Test your solution 48 | 49 | Use the workshop's `run` command to test your solution. Your solution will be loaded and passed the problem input. This usually won't perform any validation, it will only show the program output. 50 | 51 | ``` 52 | $ async-you run solution.js 53 | ``` 54 | 55 | ### 4. Verify your solution 56 | 57 | Use the workshop's `verify` command to test your solution against the output of the "official" solution. If all of the output matches, then you have successfully solved the problem! 58 | 59 | ``` 60 | $ async-you verify solution.js 61 | ``` 62 | 63 | ## Code Away! ## 64 | 65 | Make you're way through the workshop an exercise at a time. Please ask someone if you get stuck, and/or [contact Austin NodeSchool](http://nodeschool.io/austin/#contact) if you need help outside of an event. Good luck and have fun! 66 | -------------------------------------------------------------------------------- /events/20160503/README.md: -------------------------------------------------------------------------------- 1 | ## Browserify Adventure ## 2 | Learn how to use [Broswerify] (http://browserify.org) through Node with the [browserify-adventure](https://github.com/substack/browserify-adventure) workshop. 3 | 4 | ## Setup ## 5 | 6 | Be sure you've gone through the [initial setup found on the Austin NodeSchool website](http://nodeschool.io/austin/#getting-started), including installing Node, and making sure `npm` is available from the command line. 7 | 8 | ### Install the Workshop 9 | 10 | Use `npm` to install the workshop globally. This will place the workshop binary in your `PATH` so that you can access it from the command line. 11 | 12 | ``` 13 | $ npm install -g browserify-adventure 14 | ``` 15 | 16 | For this workshop, you'll also need to install `browserify` globally (since it is used throughout the exercises): 17 | 18 | ``` 19 | $ npm install -g browserify 20 | ``` 21 | 22 | ### Setup your Workspace 23 | 24 | Create a new directory to do your workshop work in. Let's call it "browserify". 25 | 26 | ``` 27 | $ mkdir browserify && cd browserify 28 | ``` 29 | 30 | ## Workshoop Instructions 31 | 32 | ### 1. Select a problem to work on 33 | 34 | With the workshop installed, run `browserify-adventure` to print a menu where you can select a problem to work on. 35 | 36 | ``` 37 | $ browserify-adventure 38 | ``` 39 | 40 | Problems are listed in rough order of difficulty. You are advised to complete them in order, as later problems will build on skills developed by solving previous problems. 41 | 42 | ### 2. Write your solution 43 | 44 | Once you have selected a problem, the workshop will remember which problem you are working on. Using your preferred editor, simply create a file to write your solution in. 45 | 46 | ### 3. Test your solution 47 | 48 | This workshop requires that you run your solution through `browserify` first, then pipe that output to the `browserify-adventure` workshop. Use the workshop's `run` command to test your solution. Your solution will be loaded and passed the problem input. This usually won't perform any validation, it will only show the program output. 49 | 50 | ``` 51 | $ browserify solution.js | browserify-adventure run 52 | ``` 53 | 54 | ### 4. Verify your solution 55 | 56 | This workshop requires that you run your solution through `browserify` first, then pipe that output to the `browserify-adventure` workshop. Using the workshop's `verify` command, your solution will be verified against the output of the "official" solution. If all of the output matches, then you have successfully solved the problem! 57 | 58 | ``` 59 | $ browserify solution.js | browserify-adventure verify 60 | ``` 61 | 62 | ## Code Away! ## 63 | 64 | Make you're way through the workshop an exercise at a time. Please ask someone if you get stuck, and/or [contact Austin NodeSchool](http://nodeschool.io/austin/#contact) if you need help outside of an event. Good luck and have fun! 65 | -------------------------------------------------------------------------------- /events/20160802/test.html: -------------------------------------------------------------------------------- 1 |

Scope Chains & Closures

2 | 3 |

Learn how to use Scopes and Closures with NodeJS with the Scope Chain and Closures workshop.

4 | 5 |

Setup

6 | 7 |

Be sure you've gone through the initial setup found on the Austin NodeSchool website, including installing Node, and making sure npm is available from the command line.

8 | 9 |

Install the Workshop

10 | 11 |

Use npm to install the workshop globally. This will place the workshop binary in your PATH so that you can access it from the command line.

12 | 13 |

14 | $ npm install -g scope-chains-closures 15 |

16 | 17 |

Setup your Workspace

18 | 19 |

Create a new directory to do your workshop work in. Let's call it "learning_closures".

20 | 21 |

22 | $ mkdir learning_closures && cd !$ 23 |

24 | 25 |

Workshoop Instructions

26 | 27 |

1. Select a problem to work on

28 | 29 |

With the workshop installed, run scope-chains-closures to print a menu where you can select a problem to work on.

30 | 31 |

You can also type sccjs

32 | 33 |

34 | $ sccjs 35 |

36 | 37 |

Problems are listed in rough order of difficulty. You are advised to complete them in order, as later problems will build on skills developed by solving previous problems.

38 | 39 |

2. Write your solution

40 | 41 |

Once you have selected a problem, the workshop will remember which problem you are working on. Using your preferred editor, simply create a file to write your solution in.

42 | 43 |

3. Test your solution

44 | 45 |

This workshop allows you to run your solution by using the command scope-chains-closures run. Use this command to test your solution. Your solution will be loaded and passed the problem input. This usually won't perform any validation, it will only show the program output.

46 | 47 |

48 | $ scope-chains-closures run <your_file.js> 49 |

50 | 51 |

4. Verify your solution

52 | 53 |

This workshop requires that you run your solution through scope-chains-closures. Using the workshop's verify command, your solution will be verified against the output of the "official" solution. If all of the output matches, then you have successfully solved the problem!

54 | 55 |

56 | $ scope-chains-closures verify <your_file.js> 57 |

58 | 59 |

Code Away!

60 | 61 |

Make you're way through the workshop an exercise at a time. Please ask someone if you get stuck, and/or contact Austin NodeSchool if you need help outside of an event. Good luck and have fun!

62 | -------------------------------------------------------------------------------- /events/20150715/README.md: -------------------------------------------------------------------------------- 1 | # Browserify Adventure # 2 | 3 | Learn how to use [Browserify](http://browserify.org/) through Node with the [browserify-adventure](https://github.com/substack/browserify-adventure) workshop. 4 | 5 | Thanks again to [Avi Das](https://twitter.com/avidas) for guest hosting the workshop! [Find the slides he presented here](http://slides.com/ananyadas/deck#/). 6 | 7 | ## Setup ## 8 | 9 | Be sure you've gone through the [initial setup found on the Austin NodeSchool website](http://nodeschool.io/austin/#getting-started), including installing Node, and making sure `npm` is available from the command line. 10 | 11 | ### Install the Workshop 12 | 13 | Use `npm` to install the workshop globally. This will place the workshop binary in your `PATH` so that you can access it from the command line. 14 | 15 | ``` 16 | $ npm install -g browserify-adventure 17 | ``` 18 | 19 | For this workshop, you'll also need to install `browserify` globally (since it is used throughout the exercises): 20 | 21 | ``` 22 | $ npm install -g browserify 23 | ``` 24 | 25 | ### Setup your Workspace 26 | 27 | Create a new directory to do your workshop work in. Let's call it "browserify". 28 | 29 | ``` 30 | $ mkdir browserify && cd browserify 31 | ``` 32 | 33 | ## Workshoop Instructions 34 | 35 | ### 1. Select a problem to work on 36 | 37 | With the workshop installed, run `browserify-adventure` to print a menu where you can select a problem to work on. 38 | 39 | ``` 40 | $ browserify-adventure 41 | ``` 42 | 43 | Problems are listed in rough order of difficulty. You are advised to complete them in order, as later problems will build on skills developed by solving previous problems. 44 | 45 | ### 2. Write your solution 46 | 47 | Once you have selected a problem, the workshop will remember which problem you are working on. Using your preferred editor, simply create a file to write your solution in. 48 | 49 | ### 3. Test your solution 50 | 51 | This workshop requires that you run your solution through `browserify` first, then pipe that output to the `browserify-adventure` workshop. Use the workshop's `run` command to test your solution. Your solution will be loaded and passed the problem input. This usually won't perform any validation, it will only show the program output. 52 | 53 | ``` 54 | $ browserify solution.js | browserify-adventure run 55 | ``` 56 | 57 | ### 4. Verify your solution 58 | 59 | This workshop requires that you run your solution through `browserify` first, then pipe that output to the `browserify-adventure` workshop. Using the workshop's `verify` command, your solution will be verified against the output of the "official" solution. If all of the output matches, then you have successfully solved the problem! 60 | 61 | ``` 62 | $ browserify solution.js | browserify-adventure verify 63 | ``` 64 | 65 | ## Code Away! ## 66 | 67 | Make you're way through the workshop an exercise at a time. Please ask someone if you get stuck, and/or [contact Austin NodeSchool](http://nodeschool.io/austin/#contact) if you need help outside of an event. Good luck and have fun! 68 | -------------------------------------------------------------------------------- /events/20150407/README.md: -------------------------------------------------------------------------------- 1 | # Promise it won't hurt # 2 | 3 | A Workshopper module that teaches you to use promises in javascript, [module github](https://github.com/stevekane/promise-it-wont-hurt). 4 | 5 | Promises offer a very powerful abstraction for obtaining values asynchronously. 6 | As javascript is a async-first language it is important to understand the options you have for handling asynchronicity. 7 | 8 | You will learn the ins and outs of promises including error handling, value propagation, synchronous returns, and composition. 9 | 10 | By the end of the workshop you will be comfortable using the [Q library](https://github.com/kriskowal/q) to work with promises AND writing your own functions that leverage promises to provide clean abstractions and error handling. 11 | 12 | ## Setup ## 13 | 14 | Be sure you've gone through the 15 | [initial setup found on the Austin NodeSchool website](http://nodeschool.io/austin/#getting-started), 16 | including installing Node, and making sure `npm` is available from the command line. 17 | 18 | ## Installation & Update 19 | 20 | Create a new directory to do your workshop work in. Let's call it "promise-shop". 21 | You will need to initialize npm in this repo and then use npm to install "q". 22 | 23 | ``` 24 | $ mkdir promise-shop && cd promise-shop 25 | $ npm init 26 | $ npm install q --save 27 | $ npm install -g promise-it-wont-hurt@latest 28 | ``` 29 | 30 | **Note**: the workshop is being updated weekly. 31 | Please regularly rerun the above command to get the latest set of exercises. 32 | 33 | ## Usage Instructions 34 | 35 | #### 1. Selecting a problem to work on 36 | 37 | Once the workshop is installed, run `promise-it-wont-hurt` to print a menu 38 | where you can select a problem to work on. 39 | 40 | ``` 41 | $ promise-it-wont-hurt 42 | ``` 43 | 44 | Problems are listed in rough order of difficulty. You are advised to complete them in order, as later problems 45 | will build on skills developed by solving previous problems. 46 | 47 | #### 2. Writing your solution 48 | 49 | Once you have selected a problem, the workshop will remember which problem you are working on. 50 | Using your preferred editor, simply create a file to write your solution in. 51 | 52 | #### 3. Testing your solution 53 | 54 | Use the workshop's `run` command to point the workshop at your solution file. Your solution will loaded 55 | and passed the problem input. This usually won't perform any validation, it will only show the program output. 56 | 57 | ``` 58 | $ promise-it-wont-hurt run mysolution.js 59 | ``` 60 | 61 | #### 4. Verifying your solution 62 | 63 | Your solution will be verified against the output of the 'official' solution. 64 | If all of the output matches, then you have successfully solved the problem! 65 | 66 | ``` 67 | $ promise-it-wont-hurt verify mysolution.js 68 | ``` 69 | 70 | ## Code Away! ## 71 | 72 | Make you're way through the workshop an exercise at a time. Please ask someone 73 | if you get stuck, and/or 74 | [contact Austin NodeSchool](http://nodeschool.io/austin/#contact) if you need help 75 | outside of an event. Good luck and have fun! --------------------------------------------------------------------------------