diff --git a/episodes/2016-03-30/index.js b/episodes/2016-03-30/index.js new file mode 100644 index 0000000..acdf219 --- /dev/null +++ b/episodes/2016-03-30/index.js @@ -0,0 +1,106 @@ +export default { + title: `JavaScript Frameworks: Vue.js`, + guests: [ + { + name: 'Evan You', + twitter: 'youyuxi', + links: [ + ], + tips: [ + ], + picks: [ + ], + }, + ], + description: ` + Vue.js is a JavaScript Framework for building reactive components for modern web interfaces. It allows you to write your JS, HTML, and CSS in a single file, has powerful data bindings, focuses on composability, is small, and is insanely fast. Join us with the author for this show! + `, + hangoutId: 'ctmiq58p34btmpqe4b1p8flq8a0', + youTubeId: 'i3ET71ZCW_E', + podbeanId: '', + shortUrl: 'http://jsair.io/vuejs', + host: { + links: [ + ], + tips: [ + ], + picks: [ + ], + }, + panelists: [ + { + twitter: 'dan_abramov', + links: [ + ], + tips: [ + ], + picks: [ + ], + }, + { + twitter: 'drboolean', + links: [ + ], + tips: [ + ], + picks: [ + ], + }, + { + twitter: 'getify', + links: [ + ], + tips: [ + ], + picks: [ + ], + }, + { + twitter: 'kwuchu', + links: [ + ], + tips: [ + ], + picks: [ + ], + }, + { + twitter: 'linclark', + links: [ + ], + tips: [ + ], + picks: [ + ], + }, + { + twitter: 'mzabriskie', + links: [ + ], + tips: [ + ], + picks: [ + ], + }, + { + twitter: 'pamasaur', + links: [ + ], + tips: [ + ], + picks: [ + ], + }, + { + twitter: 'tylermcginnis33', + links: [ + ], + tips: [ + ], + picks: [ + ], + }, + ], +} + + diff --git a/episodes/2016-03-30/youyuxi.png b/episodes/2016-03-30/youyuxi.png new file mode 100644 index 0000000..819e253 Binary files /dev/null and b/episodes/2016-03-30/youyuxi.png differ diff --git a/episodes/2016-04-06/IgorMinar.png b/episodes/2016-04-06/IgorMinar.png new file mode 100644 index 0000000..d76af80 Binary files /dev/null and b/episodes/2016-04-06/IgorMinar.png differ diff --git a/episodes/2016-04-06/bradlygreen.png b/episodes/2016-04-06/bradlygreen.png new file mode 100644 index 0000000..668156f Binary files /dev/null and b/episodes/2016-04-06/bradlygreen.png differ diff --git a/episodes/2016-04-06/index.js b/episodes/2016-04-06/index.js new file mode 100644 index 0000000..cafb21b --- /dev/null +++ b/episodes/2016-04-06/index.js @@ -0,0 +1,126 @@ +export default { + title: `JavaScript Frameworks: Angular`, + guests: [ + { + name: 'Brad Green', + twitter: 'bradlygreen', + links: [ + ], + tips: [ + ], + picks: [ + ], + }, + { + name: 'Igor Minar', + twitter: 'IgorMinar', + links: [ + ], + tips: [ + ], + picks: [ + ], + }, + { + name: 'Miško Hevery', + twitter: 'mhevery', + links: [ + ], + tips: [ + ], + picks: [ + ], + }, + ], + description: ` + Angular is the most widely used JavaScript framework in the world and there's a reason for that. Angular 1 changed the framework landscape and Angular 2 is shaping up to do that again. Join us with some of the core team members to talk about this amazing piece of JavaScript tech! + `, + hangoutId: 'cikahchraiqcname9ghsi5j1bh0', + youTubeId: 'naDNy5VBQuA', + podbeanId: '', + shortUrl: 'http://jsair.io/angular', + host: { + links: [ + ], + tips: [ + ], + picks: [ + ], + }, + panelists: [ + { + twitter: 'dan_abramov', + links: [ + ], + tips: [ + ], + picks: [ + ], + }, + { + twitter: 'drboolean', + links: [ + ], + tips: [ + ], + picks: [ + ], + }, + { + twitter: 'getify', + links: [ + ], + tips: [ + ], + picks: [ + ], + }, + { + twitter: 'kwuchu', + links: [ + ], + tips: [ + ], + picks: [ + ], + }, + { + twitter: 'linclark', + links: [ + ], + tips: [ + ], + picks: [ + ], + }, + { + twitter: 'mzabriskie', + links: [ + ], + tips: [ + ], + picks: [ + ], + }, + { + twitter: 'pamasaur', + links: [ + ], + tips: [ + ], + picks: [ + ], + }, + { + twitter: 'tylermcginnis33', + links: [ + ], + tips: [ + ], + picks: [ + ], + }, + ], +} + + diff --git a/episodes/2016-04-06/mhevery.png b/episodes/2016-04-06/mhevery.png new file mode 100644 index 0000000..b9c12f1 Binary files /dev/null and b/episodes/2016-04-06/mhevery.png differ diff --git a/episodes/2016-04-13/index.js b/episodes/2016-04-13/index.js new file mode 100644 index 0000000..8114a54 --- /dev/null +++ b/episodes/2016-04-13/index.js @@ -0,0 +1,116 @@ +export default { + title: `Transitioning from REST to GraphQL`, + guests: [ + { + name: 'Lee Byron', + twitter: 'leeb', + links: [ + ], + tips: [ + ], + picks: [ + ], + }, + { + name: 'Nick Schrock', + twitter: 'schrockn', + links: [ + ], + tips: [ + ], + picks: [ + ], + }, + ], + description: ` + We've heard about [GraphQL](https://facebook.github.io/react/blog/2015/05/01/graphql-introduction.html) [quite](https://www.youtube.com/watch?v=cr4QB3j8qFc) [a](https://www.youtube.com/watch?v=gY48GW87Feo) [bit](https://www.youtube.com/watch?v=S0s935RKKB4). We know that there are problems with REST and GraphQL solves many of those problems. But now we have a new problem: Transitioning from REST to GraphQL. Let's talk about what it takes to do that well and how services need to adapt to this new way of thinking about data access. + `, + hangoutId: 'cbu3fh4too4a6iot5psgo9cl4d4', + youTubeId: 'RFvwLifhxDg', + podbeanId: '', + shortUrl: 'http://jsair.io/rest-graphql', + host: { + links: [ + ], + tips: [ + ], + picks: [ + ], + }, + panelists: [ + { + twitter: 'dan_abramov', + links: [ + ], + tips: [ + ], + picks: [ + ], + }, + { + twitter: 'drboolean', + links: [ + ], + tips: [ + ], + picks: [ + ], + }, + { + twitter: 'getify', + links: [ + ], + tips: [ + ], + picks: [ + ], + }, + { + twitter: 'kwuchu', + links: [ + ], + tips: [ + ], + picks: [ + ], + }, + { + twitter: 'linclark', + links: [ + ], + tips: [ + ], + picks: [ + ], + }, + { + twitter: 'mzabriskie', + links: [ + ], + tips: [ + ], + picks: [ + ], + }, + { + twitter: 'pamasaur', + links: [ + ], + tips: [ + ], + picks: [ + ], + }, + { + twitter: 'tylermcginnis33', + links: [ + ], + tips: [ + ], + picks: [ + ], + }, + ], +} + + diff --git a/episodes/2016-04-13/leeb.png b/episodes/2016-04-13/leeb.png new file mode 100644 index 0000000..25c7374 Binary files /dev/null and b/episodes/2016-04-13/leeb.png differ diff --git a/episodes/2016-04-13/schrockn.png b/episodes/2016-04-13/schrockn.png new file mode 100644 index 0000000..9cf6878 Binary files /dev/null and b/episodes/2016-04-13/schrockn.png differ diff --git a/package.json b/package.json index cead747..890786c 100644 --- a/package.json +++ b/package.json @@ -22,10 +22,12 @@ "dev": "nodemon --watch src --watch sponsors --watch episodes --watch shared --watch generate --exec npm run build -s", "dev:home": "nodemon --watch src --watch sponsors --watch episodes --watch shared --watch generate --exec npm run build:home -s", "dev:episode": "nodemon --watch src --watch sponsors --watch episodes --watch shared --watch generate --exec npm run build:episode -s", + "dev:episodes": "nodemon --watch src --watch sponsors --watch episodes --watch shared --watch generate --exec npm run build:episodes -s", "dev:guests": "nodemon --watch src --watch sponsors --watch episodes --watch shared --watch generate --exec npm run build:guests -s", "dev:deals": "nodemon --watch src/pages/deals --watch data/deals --watch shared --watch generate/deals.js --exec npm run build:deals -s", "dev:contributors": "nodemon --watch src/pages/contributors --watch sponsors --watch data/contributors --watch shared --exec npm run build:contributors -s", "dev:css": "nodemon --watch resources/css --ext css --exec npm run build:css", + "dev:data": "npm-run-all --parallel dev:home dev:episodes dev:guests server", "description": "babel-node other/generate-episode-description", "eslint": "eslint .", "server": "http-server", @@ -72,8 +74,10 @@ "lodash": "3.10.1", "marked": "0.3.5", "moment": "2.10.6", + "mv": "2.1.1", "nodemon": "1.8.1", "npm-run-all": "1.5.3", + "plop": "1.5.0", "postcss-cli": "2.3.2", "postcss-import": "7.1.3", "postcss-mixins": "^4.0.0", diff --git a/scripts/compress-image.js b/scripts/compress-image.js index d11e231..cd8a105 100644 --- a/scripts/compress-image.js +++ b/scripts/compress-image.js @@ -1,12 +1,18 @@ /* eslint no-console:0 */ import Imagina from 'imagina' import path from 'path' +import mv from 'mv' const inputImagePath = process.argv[2] +if (!inputImagePath) { + throw new Error('Must provide an input image') +} +const outputFilePath = process.argv[3] const imageDir = path.dirname(inputImagePath) const imageExtension = path.extname(inputImagePath).substring(1) const imageFilename = path.basename(inputImagePath, '.' + imageExtension) const resizedImagePath = path.join(imageDir, imageFilename + '.resized.' + imageExtension) +const finalImagePath = path.join(imageDir, imageFilename + '.resized.png') const im = new Imagina() @@ -21,9 +27,11 @@ resize(function onResizeDone(err) { throw doneErr } console.log('Conversion done') + move() }) } else { console.log('no conversion necessary') + move() } }) @@ -42,3 +50,15 @@ function resize(cb) { im.resize(inputImagePath, resizedImagePath, '180x180', params, cb) } +function move() { + if (outputFilePath) { + mv(finalImagePath, outputFilePath, function onMoveDone(err) { + if (err) { + throw err + } + console.log(`Resulting file at: ${outputFilePath}`) + }) + } else { + console.log(`Resulting file at: ${finalImagePath}`) + } +} diff --git a/sponsors/index.js b/sponsors/index.js index 3400854..f99c7c9 100644 --- a/sponsors/index.js +++ b/sponsors/index.js @@ -57,6 +57,13 @@ const sponsors = { tagline: 'Authentication Made Simple', startDate: '2016-02-17', }, + { + imgSrc: '/sponsors/trading-tech.png', + name: 'Trading Technologies', + link: 'http://jsair.io/trading-technologies', + tagline: `Building For What's Next`, + startDate: '2016-03-22', + }, ], appreciationSponsors: [ { diff --git a/sponsors/trading-tech.png b/sponsors/trading-tech.png new file mode 100644 index 0000000..ee8f707 Binary files /dev/null and b/sponsors/trading-tech.png differ