Javascript Jabber show

Javascript Jabber

Summary: A technical discussion of JavaScript related topics. Things like Node.js, Web Frameworks, JSON, CoffeeScript, Event and Object models and much more.

Join Now to Subscribe to this Podcast
  • Visit Website
  • RSS
  • Artist: Charles Max Wood, AJ O'Neal, Jamison Dance, Joe Eames, Tim Caswell, Merrick Christensen
  • Copyright: (c) Intentional Excellence Productions, LLC

Podcasts:

 009 JSJ Testing Javascript with Joe Eames | File Type: audio/mpeg | Duration: 45:40

Panel Joe Eames (Pluralsight bio) Charles Max Wood (twitter github Teach Me To Code Rails Summer Camp) Jamison Dance (twitter github blog) Discussion TDD Unit testing Community driven development patterns Selenium Selenium Web Driven Integration Tests UI Tests BDD Tests are only as good as their authoring javadoc Typed.js Heckle Mutation Testing mocha jasmine qunit test anything reporter browser testing landing strip test reporter mocha does well with asynchronous code qunit is like xunit YUI teamcity Continuous Integration jsTestDriver Can you run DOM tests without a browser? Phantom.js sinon.js Spying on functions Test doubles Start with stubs Move to mocks where needed Given-When-Then Outside-In Mocks aren't Stubs by Martin Fowler Don't mock objects you don't own Abstract away libraries you don't own TestDrivenJS.com TestDrivenJS.com Resources page regressions Picks unmute (Jamison) GoodReads (Jamison) Bootstrapping Design (Jamison) Apparat (Jamison) Things (Chuck) iPad (Chuck) Last Will (Joe) Psych (Joe) The Tower of Fear by Glen Cook (Joe) Touch (Joe) Transcript CHUCK: Hey everybody and welcome to episode 9 of the JavaScript jabber podcast. This week, we are going to be talking about Testing JavaScript with Joe Eames. Joe do you wanna go ahead and introduce yourself really fast and then we'll do the rest of the introductions and start talking? JOE: Sure. Thanks Chuck. My name is Joe Eames and I've been a web developer for a very long time and I'm the creator of testdrivenjs.com it’s kind of my own personal quest to bring better unit testing and test driven development to the JavaScript world. That’s pretty much me. CHUCK: All right. Thanks, Joe. I've actually had lunch with Joe a few times. I organized lunches for the JavaScript group here. And yeah so I’d organize them up in Murray -- which is a suburb of Salt Lake City and yeah, Joe and I have had one-on-one lunches twice now, I think. JOE: Yup. CHUCK: Yeah, so I might just start scheduling lunch with Joe and then stop scheduling JavaScript lunches at Salt Lake county. [Laughter] JAMISON: That will probably be really romantic though. CHUCK: Yeah we should have lit a candle in the last one. JOE: We should have. CHUCK: Yeah absolutely. Anyway, we also have Jamison Dance on the podcast. JAMISON: Hi I'm Jamison Dance. I'm a web developer and JavaScript developer in Utah. CHUCK: All right. I'm Charles Max Wood form teachmetocode.com. I guess were all from Utah this week. JAMISON: Oh, yeah. CHUCK: Yeah so anyway… so really interesting, for me anyway, is that I used to complain a lot that I would write JavaScript and then I couldn’t test it because I'm pretty accustomed to testing my Ruby code. And so, Joe did a presentation at the… was it the last meeting that we were at or the meeting before that? JOE: The last one. CHUCK: Yeah about doing TDD with JavaScript and I'm sitting there going, “Ooh, this is speaking right to me.” And so, I'm a little curious Joe what your take is as far as how TDD works with JavaScript versus maybe doing TDD with other languages or frameworks? JOE: Well it’s pretty interesting, the difference in opinions and views. It seems like there's  very large amount of people that are realizing, “Oh we do need to unit test JavaScript,” but very few people are saying we need to test drive our JavaScript the way that many people are saying we need a test our middle tier code. So I think the biggest difference by far is in the community. Having them a fair amount of test driven JavaScript, I would say that there's some differences for sure; where some of the tooling is lacking still especially from the stand point of being… from the perspective of doing test-driven JavaScript, the tooling is lacking. But in the end, there really isn’t any difference. In fact,

 008.1 V8 and V8 and Dart with Lars Bak and Kasper Lund – Bonus Content | File Type: audio/mpeg | Duration: 25:48

Discussion Dart Jabber? Shared Worker DOM Interactions problematic in large projects HTML5 HTML Library in Dart Chrome Automatic Updating Dart's Type System Multithreading - Icelets Dart executes the same code on the client or server side Dart editor Closures in Dart "Stupid questions" Basic standardized async support in Dart's core library Callbacks last ARM port, soon Read the license agreement How is Dart source stored/transferred No per-module overhead in translated versions Dart objects aren't necessarily simple JavaScript objects Dart snapshots Developers are listening to feedback Transcript JOACHIM: All right. Maybe it’s going to be “Dart Jabber” next? CHUCK: [Laughs] You have no idea how many people come to me and go, “I would really love a podcast like this on…“ and then they name a technology or a language. And so, I think the most popular one at this point that I get that I'm not doing is iOS programming. JOACHIM: Well it’s an amazing thing, right? I mean Apple has really… I mean yeah, saying the obvious, they’ve turned a lot around, right? CHUCK: Yeah. JOACHIM: Shoot AJ, shoot! AJ: [Chuckles] So I've been messing around just for the first time with the shared worker, and first of all, do you guys had any dealings with that, either in the standardization of it or implementing it in the browser? LARS: No, not really. So of course V8, or at least in Chrome, you get around these shared workers but I haven’t personally been involved in and the design of that part. AJ: All right. JOACHIM:  So the thing that kind of struck me is that the problem with many applications that I've made that are of a larger scale hasn’t actually been JavaScript performants, it’s been DOM interactions and reflows and CSS and redrawing in the browser. And that’s still the case. So are you really trying to fix the right thing? Does Dart improve the DOM interactive situation? LARS: Well, now I have a system; we have a number of [unintelligible], right? When we started V8, JavaScript was certainly a in terms of execution, it will slow down the browser if you have too much logic. That’s not the case anymore. But I think that you have to be aware of that if you don’t have the speed, nobody will use JavaScript. And I think by now, there's room for putting more logic in the client. It is of course true that many web applications are constrained by the performance of the DOM, but a lot of that is also by addressed by other teams --  many of them here at Google. So I think it’s sort of a never ending game in speeding up the old browser. And I think that will continue for a while. We are however adding new APIs to the browser as part of the HTML5 standardization process. And I think all in all, what that would help is doing more advanced applications in the browser -- and it’s good for users. AJ: So does Dart provide its own DOM-type thing or do you still have to use the old school DOM with Dart? LARS: Well, the DOM interface is not very pretty. So we have put a little bit nicer interface on top and we call it the HTML Library in Dart and that has a cleaner interface to the DOM. It’s not much smaller in the DOM, but it’s a little bit cleaner. What we are also doing is we are putting a sort of a widget system on top of it, so you can program at a higher level if you want to; but that’s all up to you, right? It’s a matter of what kind of library you want to use when you build Dart applications. AJ: So transpiling Dart to JavaScript, one gain I might get is just being able to use the Dart DOM library and have it work on all browsers? Or will I still have to work around that? LARS: No, it’s the same API, but we are not… the current release of Dart will not work on old browsers, so we are focusing on modern browsers. AJ: Okay. So what is “modern“ enough? LARS: Internet Explorer 9, the newest version of Opera and FireFox and Safari and Chrome.

 008 JSJ V8 and Dart with Lars Bak and Kasper Lund | File Type: audio/mpeg | Duration: 47:36

Panel Lars Bak Kasper Lund AJ O'Neal (twitter github blog) Charles Max Wood (twitter github Teach Me To Code Rails Summer Camp) Joachim Larsen (g+ github website) Discussion Dart V8 Virtual Machines Strongtalk Java OOVM - Embedded Smalltalk Beta Google V8 is implemented in C++ Who's behind Dart JIT Adaptive compiler Node.js V8 source code Palm phones based on V8 NPM Mobile considerations such as resources and speed Strict mode the "with" statement deleting a property is "dog slow" Why Dart? Maintaining big applications in JavaScript is hard JS closure compiler More declarative Startup time Peak performance Snapshots 10x faster startup Dartium Dart to Javascript translator Is Google anti-JavaScript? (Not really) Dart vs CoffeeScript non-local return Scripting and Web development gives you instant gratification VM's targeting the native language will almost always be faster Native Client Go-lang Picks Bloggers (AJ) Class-Central.com (Joachim) Memrise (Joachim) This is Your Life Podcast (Chuck) Fitbit (Chuck) dartlang.org (Lars) Silent Sleep for Android (Kasper) Transcript CHUCK: Hey everybody and welcome to Episode 7 of the JavaScript Jabber podcast. This week on our panel, we have some guests. But before I introduce them, let’s introduce the regulars; we have AJ O'Neal. AJ: Yo, yo, yo, coming at you live from the Orem, Utah. CHUCK: [Chuckles] We also have Joachim Larsen. JOACHIM: Hey. CHUCK: And I'm Charles Max Wood from teachmetocode.com. Our guests this week are Lars Bak and Kasper Lund from Denmark. LARS: That’s correct. Thank you for inviting us. CHUCK: They’ve worked on a few small projects like the Dart programming language and the V8. What is it? A virtual machine or JavaScript implementation? LARS: Are you referring to Dart or V8? CHUCK: V8. LARS:  V8 is just a small JavaScript engine that makes JavaScript code sort of reasonably fast. CHUCK: Okay. All right. Are the two connected in anyway? I'm a little curious. LARS:  Absolutely not. Well, to be honest, we first did V8 and given our experience with JavaScript, we decided to do Dart; so that’s sort of related. CHUCK: Okay. KASPER: But they are not related on the implementation side. CHUCK: Okay. JOACHIM: So I mean you guys built the whole career basically on building great VMs is that right? How did you guys started on that? LARS: Oh, that goes all the way back to ’86 you were probably not born at that point in time, but that’s when IE started building virtual machines for program called BETA, which was sort of a  success— [Crosstalk] KASPER: It was Google’s first project missing the whole thing where Google’s programs are always in beta. Anyway, sorry go ahead. LARS: [Laughs] That was funny. It was the BETA programming language; that was a success up of the -- 67 that was my first virtual machine. And after that, I got a taste for it. It’s very interesting to just tune the black box making a programming language run fast. And then I joined afterwards a project at Sun Microsystems research lab. And then that was at that point the most interesting implementation project I could find where they came up with very interesting ideas to make dynamic languages run really fast, and I came up with adaptive compilations, polymorphic and stuff like that. That's like when you do fast implementations today. And then I went to a start up in Silicon Valley where with did a system called StrongTalk which is a variant of Smalltalk with optional steady types. And then Java came along and we decided in the startup to spend most of our time doing a Java implementation. JOACHIM: So just a quick question – sorry – so Strong talk development was basically geared towards mobile and embedded platforms. Is that right? LARS: That’s not true. That’s four projects later; that was a Smalltalk system called OOVM.

 007 JSJ Online Resources for Javascript Developers | File Type: audio/mpeg | Duration: 30:45

Panel AJ O'Neal (twitter github blog) Charles Max Wood (twitter github Teach Me To Code Rails Summer Camp) Jamison Dance (twitter github blog) Discussion Using HTML tags to attach handlers to something onLoad with a function in the global scope onClick="someFunction();" Unobtrusive JavaScript eval type things setTimeout will eval your code closures jsfiddle browser console MDN If you see a bad example, provide a better example eval is evil due to global references eval is also ambiguous Javascript Weekly Follow the instructions on the library website jQuery Ender jQuery swallows errors W3C Google references MDN Quirksmode.org caniuse.com HTML5rocks Javascript Show Reddit Twitter github_js javascriptdaily Brendan Eich Yehuda Katz Paul Irish David Herrmann YUI Blog Dave Glass Douglas Crockford Design Patterns Cartoon of browsers as kids (browser wars) Javascript the Good Parts Isaacs (Node) nodejs.org Picks Browser Wars (AJ) Mailplane (Chuck) Fluid (Chuck) Prizm (AJ) ExpressJS (Jamison) Guillermo Rouche (devthought.com) (Jamison) blog.nodejitsu.com (Jamison) Functional Javascript post by Sean Hess (Jamison) Transcript AJ: Yo, yo, yo, this is Vanilla Cream with the remix! JAMISON: [Laughs] That’s how we got to start up the podcast! AJ: In the song, they are like in the chorus and then I just throw the volume up, THE REMIX! [Laughter] JAMISON: Yo, yo, yo, this is JavaScript Jabber Remiiiiix! CHUCK: Hey everybody and welcome to Episode 7 of the JavaScript Jabber podcast. This week, we are a little short; our panel is just three of us, but we are going to see how far we get and what you all think of this. So today’s panel is made up of AJ O'Neal. AJ: Howdy. CHUCK: And Jamison Dance. JAMISON: Hello! CHUCK: And I’m Charles Max Wood from teachmetocode.com. And this week we were… well, this kind of started awhile back. AJ started making a loud and unfavorable noises about w3schools (not to mention any names), and you know, just some of the poor practices that they propagate on their website. And so, we kind of thought it would be interesting to go into what some of these resources are that we use and why we like them or don’t like them. And maybe pull out some examples of why the documentation is or isn’t very good. We are probably going to name specific sites in here, sso that you can kind of get an idea of what resources are there. And then we’ll kind of move along from there. So AJ, I’m a little curious about… you pointed out a few things about W3Schools, but what particular bothers you about them? AJ: There's just very naïve examples on there. I think that one of the things about JavaScript and reasons that it was designed the way it was is so that people with very little discipline can get in and do things, but I don’t think that if you are professional that you should be teaching other people the undisciplined way. And so, the W3Schools just their examples are the naïve way; the way that's going to get you into trouble a lot of times, rather than the way that I would teach someone or that somebody who's got a little bit more under their belt would introduce someone too, I think. CHUCK: Right. So is there a particular example that you can give? I mean, some of the things that they do that are a little bit naïve and are a little bit sloppy? AJ: Using HTML tags to attach handlers to something. So like having an audio tag with an on load in the HTML, rather than in the JavaScript. CHUCK: I’m not sure I follow. AJ: So like say— [Crosstalk] JAMISON: It’s using the on load elements of an HTML tag, right? Is that what you are talking about? AJ: Yeah. So you get on load and pass it a string which is the name of the function that’s somewhere in your JavaScript application. JAMISON: Or even better, an actual anonymous function. AJ: Yeah and so,

 006 JSJ Chrome Dev Tools with Paul Irish | File Type: audio/mpeg | Duration: 51:26

Panel Paul Irish (twitter github website) AJ O'Neal (twitter github blog) Charles Max Wood (twitter github Teach Me To Code Rails Summer Camp) Jamison Dance (twitter github blog) Joachim Larsen (g+ github website) Yehuda Katz (twitter github blog) Discussion Chrome Developer Tools Chrome Canary Dev Tools settings Disable Cache Enable Source Maps Ctrl-Shift-R is not reliable in refreshing without the cache Require.js Webkit Inspector Persisting live changes Live Edit Revision history on live edits Right click and save to disk on changed JS files Autosave extensions chrome-devtools-autosave autosave-changes-chrome-dev-tools Scripts Panel Pretty Print button (two braces) Breakpoints Right click function references to get function definitions Chrome Canary Script Navigator Chrome dev channel Chrome beta channel Single click edit Firebug Peter Beverloo's blog Chromium Bugs Webkit Bugs Inventing on Principle processing JS Lea Verou Color Picker Mother F***ing animated GIF You can use the Dev Tools on the Dev Tools Minification Build Processes CoffeeScript Source Maps spec node.js library Mozilla Google Closure rake pipeline eval uglify Ryan Seddon Node Inspector Chrome is Chromium with extras Chromium source DBGP debugger protocol Box sizing/border box Dart Dartium Cloud9 IDE Remote Debugging Node.js debugging with Chrome Dev Tools HTML5Please CSS3Please Move the Web Forward HTML5 Boilerplate Shepherd.js Chrome on innovating the web in speed and new standards Picks MITX Course on Electronics (Yehuda) Open Courseware Courses (Yehuda) Gilbert Strang (Yehuda) Inventing on Principle (Jamison) CodeMirror (Jamison) D3 (Jamison) HTML5 Provo Group (AJ) Local Business (AJ) three.js (Joachim) Quake 2 Web GL (Joachim) ThemeForest.net (Chuck) Echo.net (Paul) Zero fill right shift (Paul) Dom mutation observers (Paul) HTML5Rocks (Paul) ToDo MVC (Paul) Transcript JAMISON: Hello? CHUCK: All right. AJ: Hey Jamison, are you on the right Wi-Fi? JAMISON: I switched to the closet one, so I think I am now. AJ: Yeah that’s why you were dropping off. JAMISON: Yeah. PAUL: Get out of that closet. [Laughter] CHUCK: Hi everybody and welcome back to the JavaScript Jabber podcast. This week on our panel, we have a special guest -- that is Paul Irish. PAUL: Hello! Hi guys. CHUCK: Do you wanna introduce yourself for the two people out there that don’t know who you are? PAUL: [Chuckles] Sure. So I’m a front-end developer. I work on the Google Chrome team and I do developer relations. I also, manage the projects of Modernizr and HTML5 Boiler Plate and launched projects like HTML5Please and Mother F***ng Animated GIF and all sorts of good developer facing fun stuff. CHUCK: All right, awesome. We also have on our panel, AJ O'Neal. AJ: Hey! Glad to be here again. CHUCK: And Jamison dance. JAMISON: Howdy. CHUCK: And Joachim Larsen. JOACHIM: Great to be here. Good company as always. CHUCK: And Yehuda Katz. YEHUDA: Hey, excited to be on today. Great to be here. CHUCK: Yeah, me too. And I’m Charles Max Wood from teachmetocode.com and this week, we are going to be talking about “Chrome Developer Tools” and I think we are all going to figure out real quick that there's a lot to know. So I’m a little curious as we get started, Paul, what features you find that most people request the most often that’s already there? PAUL: A lot. One good one is that… okay so this is probably the best one which is, “Why can’t you guys just have those check boxes for disabling styles on the left like every other tool?” CHUCK: [Laughs] PAUL: This has literally been number one request for 2 years [chuckles] and as of about 24 hours ago, it’s there. [Laughs] That one’s a little not so obvious because in Chrome Canary,

 005 JSJ Javascript Objects | File Type: audio/mpeg | Duration: 53:15

Panel AJ O'Neal (twitter github blog) Charles Max Wood (twitter github Teach Me To Code Rails Summer Camp) Jamison Dance (twitter github blog) Joachim Larsen (g+ github website) Yehuda Katz (twitter github blog) Discussion Objects are basically hashmaps Calling 'new' Constructors Javascript creates an empty object and hands it off to the constructor Functions are sort of like classes ES5 (strict mode) arguments.callee Old SproutCore used arguments.callee to implement super Prototypes The new object inherits the function's prototype Prototypes are referenced, not copied Don't monkey with Object.prototype Should you override native prototypes? Object.keys vs for x in y Premature optimization Property iteration Namespaces es-discuss 3 paradigms new literals function newX() Object.create(prototype) (contributed by Yehuda in the backchannel) Data privacy jQuery uses the prototype system Don't be over obsessed with privacy Functions create closures Closures carry the context they were created in Scoped variables in closures are also referenced, not copied. So, changes to those variables are reflected to everything else in that scope. Closures can make memory management and scoping problems worse, but are generally a good thing Waterfall pattern: keep functions in the same scope/indentation level and call the next when one finishes Array syntax creates an object that inherits a specific prototype Object keys can only be a string How to think about OO EMCAScript 5 Objects and Properties Closure in action More issues with closures Add behaviors to objects or static clases with 'mix' Code example - Prototypeal Inheritance Understanding JavaScript Function Involcation and 'this' Picks Once Upon a Time (Yehuda) Pseudopod (Jamison) EloquentJavascript.net (Joachim) JSFiddle.net (Joachim) Carrabba's (AJ) Requiem (AJ) Heil PR-40 (Chuck) Shure SM-58 (Chuck) Blue Snowball (Chuck) XENYX 802 (Chuck) iMic (Chuck) Roland R-05 (Chuck) Adobe Audition (Chuck) Transcript CHUCK: We’re trying to maintain a clean rating, so if you can help it that will be nice. JOACHIM: All right, well I am naked. [Laughter] CHUCK: Aaaah! That’s like Avdi in his gold bikini. JOACHIM: Obviously I’m not just going to you know, blurt it out. JAMISON: I can actually hear that you are naked on the podcast. So you might wanna edit that. I can tell it through your voice. JOACHIM: I’ll eventually, hang on. JAMISON: Oh, gosh. [Laughter] CHUCK: Hey everybody, welcome to the JavaScript Jabber podcast. This is Episode 5. This week on our panel, we have AJ O’Neal. AJ: Hey, guys! CHUCK: We also have Yehuda Katz. YEHUDA: Hey, hey. CHUCK: We have Jamison Dance. JAMISON: My name is Jamison Dance and I have a problem. CHUCK: [Chuckles] JAMISON: Oh, wrong podcast. Hi. CHUCK: And we also have Joachim Larsen. JOACHIM: Hey all. CHUCK: And I’m Charles Max Wood from teachmetocode.com. Real quick, I've been accused of not letting people know that I have other podcasts, so I’m just going to tell you really quickly; we also do rubyrogues.com that’s the Ruby Rogues podcast, where we talk about Ruby; and rubyfreelancers.com where we talk about freelancing -- same format as this one. So anyway, this week we are going to be talking about “Objects in JavaScript,” which is kind of not as straightforward as you might think or want it to be. And since I’m not the expert here, I’m going to let somebody else go ahead and jump in and start us out. AJ: What do you wanna know? CHUCK: [Chuckles] Well, okay so— JAMISON: Everything. CHUCK: Okay so basically, I've been reading ‘JavaScript: The Good Parts’ and so the first thing he talks about is your general objects which most people kind of equate to do a dictionary or a hash, but it’s not exactly the same thing.

 004 JSJ Backbone.js with Jeremy Ashkenas | File Type: audio/mpeg | Duration: 54:33

Panel Jeremy Ashkenas (twitter github blog) AJ O'Neal (twitter github blog) Charles Max Wood (twitter github Teach Me To Code Rails Summer Camp) Jamison Dance (twitter github blog) Joachim Larsen (g+ github website) Yehuda Katz (twitter g...

 003 JSJ Build Tools | File Type: audio/mpeg | Duration: 45:01

Panel AJ O'Neal (twitter github blog) Charles Max Wood (twitter github Teach Me To Code Rails Summer Camp) Jamison Dance (twitter github blog) Yehuda Katz (twitter github blog) Discussion Jamison's Wishlist giant donut write code same node / browser - require, syntax dev mode - hot reload prod mode - compile to giant file pluggable (connect-like) pipeline Model the problem as a regular build problem Source URL document.write semantics minification CoffeeScript CSS/LESS Rails' Asset Pipeline Sprockets Rake Performance Don't assume runtime Big Javascript Apps vs mostly HTML Apps NPM Browser code vs Server code Download and deposit method vs package manager Should browser code be in NPM? AMD Common JS Ender Require.js Ember.js Use synchronous requests when you can. Ruby and Python vs JavaScript for server scripting Browser Community vs Node Community Picks Eliazor ... Harry Potter and the Methods of Rationality (Jamison) Exercise (Jamison) LivingSocial (AJ) DropShare (AJ) Debt: The First 5,000 Years (Yehuda) Flint (Yehuda) MailPlane (Chuck) Speedo Aquabeat (Chuck) Transcript JAMISON: Hey save it for the podcast, you guys. YEHUDA: Fight, Fight, Fight! CHUCK:                   Yeah. Hi everybody and welcome to the episode three of the JavaScript Jabber podcast. This week on our panel, we have AJ O'Neal. AJ:            Hello! CHUCK:                   We also have Jamison Dance. JAMISON: Howdy doody! CHUCK:                   We have Yehuda Katz. YEHUDA: Glad to be here as always. CHUCK:                   And I'm Charles Max Wood from teachmetocode.com and this week we are going to talk about build tools with JavaScript and the there's a lot to talk about. Does somebody want to kind of start us off and talk about some of the build tools that are out there and what types there are and then we can kind of dig into why they use them. JAMISON: Okay, so I have a wish list and my goal for this podcast is to figure out if this exist or not. To have someone make it (or maybe me make it). So first on my list, is like, maybe a giant doughnut in my hand right now. But second after that is like I want to be able--- YEHUDA: (MMMM DOUGHNUTS!) JAMISON: So I wanna be able to write my code in the same way on Node and in the browser. And be able to require it with the same syntax and use the code in the same way. I would also really like to have, like a development mode, where I don't have to do any kind of compilation or anything. I can just reload my page after I make changes to my code, but then be able to actually compile it on to one giant file, to cut down the number of HTTP requests. And it will be sweet if there is some kind “pipeline” that you could plug things into, right, because we are going to talk about all of these, like minifiers and compilers and things. But right now, it seems like there's a bunch of discreet tools that all kind of do one part of that, but they don’t really work together really well. I mean, I know things that solves each of these problems individually, but is there something that does all of this together? YEHUDA: So first of all, I wrote something like that. But it's written in Ruby, which probably means most of people in JavaScript will not want to use it. But I wanna say, with regard to the development of production thing, I'm definitely of the religion that, instead of trying to make a thing that will use like, HTTP through file system and development and then you compile in production to one file, I'm definitely of the religion that you should just make your development mode be smart and fast in doing the compilation for you, so that you're basically dealing the same exact environment in production and development. And a lot of people stop me right there and say, well, that means that you’re going to have,

 002 JSJ The Right Way to Build Web Applications | File Type: audio/mpeg | Duration: 48:46

Panel AJ O'Neal (twitter github blog) Charles Max Wood (twitter github Teach Me To Code Rails Summer Camp) Jamison Dance (twitter github blog) Yehuda Katz (twitter github blog) Discussion JSON Build the API first Resources Serializer Gem (Ruby) Efficient for widely used browsers Ember.js Ruby on Rails Data Binding Backbone.js Truth in DOM Events MVV vs VVV vs MVC Knockout.js Spine.js Angular.js Batman.js REST HTTP Spec Picks Mike Burbiglia (Jamison) Inu (Jamison) Oh Darling - Plug In Stereo (AJ) Parse.com/docs/android_guide (AJ) The Yellow Lighted Bookshop (Yehuda) Mou (Yehuda) Mountain West Ruby Conference (Chuck) Outliers (Chuck) MacVim (Chuck) Janus (Chuck) Transcript YEHUDA: I now have to make a thing that's probably going to live with me forever. CHUCK: Disclaimer, this is Yehuda’s opinion and only Yehuda’s opinion. So, if you don’t follow it, you are stupid. CHUCK: Hi everybody and welcome to the JavaScript Jabber podcast! This is Episode 2 and this week on our panel we have Yehuda Katz. YEHUDA: Hello, great to be here again. CHUCK: We also have Jamison Dance. JAMISON: Howdy! Nice to be here too. CHUCK: We also have AJ O’Neal. AJ:  It's Wednesday and we're so excited! CHUCK: And I'm Charles Max Wood from teachmetocode.com and this week we're going to be talking about How To Do Web Apps Right (or something like that). YEAHUDA:  Yeah, it’s hard. CHUCK: Yes it is hard. JAMISON: [crosstalk] – some PHP right? YEHUDA: Things are good. CHUCK: Absolutely. Well you kind of bring up a good point there, is that everybody kind of has their own way of wanting to do this. I mean, some people, they just kind of throw out layout together and they do a big JavaScript front-end. Other people tend to use something like Ruby on Rails or PHP or something to build an API, that then the JavaScript front-end can use. And then there are other people that just do it all with like page refreshes and hairy AJAX calls. YEHUDA: Yeah I believe 37Signals does the AJAX calls and page refreshes based on what--- CHUCK: So I think there are a lot of different ways like you pointed out to do it. But what is your preference? Or what are you guy’s preference? AJ: My preference is to actually build the API first. It seems like a lot of sites have API as an afterthought. So if you're going to build it anyway, why not build the API and then use your API in your app, so your API is tested because you're the one using it as well. YEHUDA: Yeah I think as more people are building other front-end, so if you are building iOS or an Android app, you're going to need an API anyway. I think treating your web front-end as the equivalent of an Android or iPhone app, --- to say, but if you can do something like that, that that's a big one I think, along the lines of what you just said. CHUCK: Right so when we talking about APIs, are we talking about something like JSON APIs since this is a JavaScript show or XML API or does it matter? AJ: JSON. YEHUDA: Not an XML API. [Laughter] No, so I am not going to be controversial by saying I prefer JSON APIs, but part of the reason why I prefer JSON API is that, I actually like to have my front and my back end—(let me back up)... So a lot of people who build API do like handcraft APIs where every resource that they build, they are like, “Okay what things should I expose? What should I name everything? Where should I attach my associations? And what should happen with these errors.”  I like to build applications where the answer to all those questions for every resource is always the same. So I built “Serializer Gem” that enforces that. But basically, if that is the case, if everything is the same, if the answer for associations is a long side and the answer for errors is an error sash and if your frond-end is JavaScript, it’s really nice to be able to just basically just say,

 001 JSJ Asynchronous Programming | File Type: audio/mpeg | Duration: 43:56

Panel AJ O'Neal (twitter github blog) Charles Max Wood (twitter github Teach Me To Code Rails Summer Camp) Jamison Dance (twitter github blog) Peter Cooper (twitter github blog) Yehuda Katz (twitter github blog) Discussion The Javasc...

Comments

Login or signup comment.