REG:
I’m old enough to remember when you needed a forklift to tilt a computer sideways. Hardy-harhar.
[Chuckles]
[This episode is sponsored by Frontend Masters. They have a terrific lineup of live courses you can attend either online or in person. Their upcoming course is JS Framework Showdown with Brian Holt from reddit. You can also get recordings of their previous shows like JavaScript the Good Parts, AngularJS, CSS3 In-Depth, and Responsive Web Design. Get it all at FrontEndMasters.com.]
[This episode is sponsored by WatchMeCode. Have you been looking for regular high-quality video screencasts on building JavaScript done by someone who really understands JavaScript? Derick Bailey’s videos cover many of the topics we talk about on JavaScript Jabber and are up on the latest tools and tricks you need to write JavaScript. He also covers language fundamentals, so there’s plenty for everybody. Looking over the catalogue, I got really excited and I can’t wait to watch them all. Go check them out at JavaScriptJabber.com/WatchMeCode.]
[This episode is sponsored by Component One, makers of Wijmo. If you need stunning UI elements or awesome graphs and charts, then go to Wijmo.com and check them out.]
CHUCK:
Hey everybody and welcome to episode 113 of the JavaScript Jabber Show. This week on our panel, we have AJ O’Neal.
AJ:
Yo, yo, yo, coming at you live from Provo, Utah.
CHUCK:
Jamison Dance.
JAMISON:
Hello friends.
CHUCK:
I’m Charles Max Wood from DevChat.TV. And we’d like to welcome back Reg Braithewaite.
REG:
Hello from Toronto, Canada.
CHUCK:
So, if people missed you last episode, do you want to give a brief introduction?
REG:
My name is Reg Braithwaite. I work with GitHub. Known I guess for various blog articles and some libraries, mostly written in either Ruby or JavaScript. And what can I say? I’m a life-long lover of programming and anything to do with it.
CHUCK:
Awesome.
REG:
That’s it. That’s my resume.
CHUCK:
Very nice. Short, sweet, and to the point. We were emailing back and forth a while ago. And you mentioned that you might want to come on and talk about the community dynamics with JavaScript. And I thought that was a pretty interesting topic. And everybody else agreed. So, we brought you back on to have a discussion about the JavaScript community and some of the currents and things that are going on there. I’m curious. How long have you been involved in JavaScript and what parts of the community are you generally involved in?
REG:
I go back actually a fair ways in JavaScript, way back to DHTML days. And in the earliest days actually, I got back long enough to remember when it was LiveScript. And boy, I should have prepared for this, because I could have told you the name of the, there is a book I read which in fact recommended working with [Tickle] and with Netscape servers. And at that time, LiveScript was a server-side programming language. And simultaneously, I was working at a consulting firm and we were interested and also [inaudible] thing. There was this new thing called JavaScript that was a really cool way to build dynamic things happening in the browser. So, at that time, Java was what you used in the browser. And LiveScript later became JavaScript, was what you used on the server. And of course, we’ve seen that completely flip over to Java on the server and JavaScript in the browser. And hopefully one day, I will live long enough to see there being no Java anywhere. [Chuckles]
REG:
But I think JavaScript has a much better shot outlasting then Java does.
JAMISON:
There’s kind of a renaissance with Java right now though.
REG:
[Chuckles] So, this touches on communities and the lifespan of products and the lifespan of companies. I see Java as playing defense whereas I see JavaScript is still playing what you might call offense. Now, Java is the JVM as well as Java the language. And the JVM has much longer legs. You’ve got interesting things like Clojure script and Scala and so on going on the Java Virtual Machine platform. But Java, the language itself, you’ll see some [inaudible] here and there. But my bet is that they’re playing defense. They’re trying to prevent projects and people from defecting to other languages. And all of their stuff, like adding lambdas and so on, I believe it’s all organized around trying to protect their existing [inaudible], their existing mindshare, as opposed to trying to recruit new people. That’s my perception of the dynamic there.
JAMISON:
That makes sense.
REG:
So, JavaScript is, I feel still a bit of a balance. I think it’s, beyond it, they’re trying to convince people that it’s worth programming in this language. I think there’s a balance. Some of the ES 6 stuff that we’ve seen recently, is in my opinion much more defensive than offensive. It seems to be more about copying things from other languages and they’re to prevent people from saying, “This is stupid. This is brain damage,” and a little less about trying to invent the future, which is fine. But if it continues to trend in that way, it will end up being a defensive language. There’ll be new languages. Everyone will realize that [inaudible] are an incredibly good idea or that copy-on-write with immutable data structures as are common in the Clojure community are a good idea. And people get excited about that. And suddenly there’ll be, ES 7 will have support for these things baked in or something. And it’ll be a very reactive process. And that’s usually the sign of a company playing defense, like the General Motors as opposed to a Tesla, again in my humble opinion. And I think it’s interesting to watch this transition. I myself had been [inaudible] about some of these moves and disappointed about other ones.
CHUCK:
So, I’m a little curious. It seems like just like in any community, there’s the overall community where people like the language. They like certain aspects of the language. And then there are other people who generate their own communities around different things, like Express or Node or frontend Angular, Ember. So, I’m a little curious. What do you think about this? It seems like the smaller communities sometimes refer up to the larger communities and sometimes they don’t.
REG:
I think that’s a good assessment of the situation. JavaScript itself is a rather sparse language. And I believe that this accentuates the balkanization of a community because it’s relatively easy to reach a part where you think that you have a complete handle on the language and not need any help from people to explain how function.prototype.call works or something. But something like jQuery or Ember or Angular, you can spend a lot longer reaching the part where you feel competent. I’m not saying that you are competent very quickly in JavaScript or that you aren’t competent very quickly in Angular or Ember.
But I believe the perception amongst most people is that the language itself is fairly easy to get up to speed on, but most of the bigger frameworks and so on take longer. As a result, people probably perceive that they have a larger investment in jQuery or Angular or Ember than they do in JavaScript, the underlying language. So, they probably, I’m speculating here, I’m not authorized to speak for Ember devotees or anything, but my feeling is that this is what leads people to identify very strongly with a particular framework or technology.
We saw a similar thing with Rails in Ruby. There are lots and lots of Ruby programmers. And then Rails came along and it was good enough. But it was also big enough and I believe the word is opinionated enough that you could end up having people wander around saying, “Well, I’m more of a Rails guy than a Ruby guy.” And I don’t think anyone would ever look at something like this, micro-frameworks like Camping or Sinatra and say the same thing. Whereas over in JavaScript it seems like all of the frameworks have this flavor of being so big and so opinionated relative to this tiny little language that people identify themselves more with the [inaudible] than they do with the language.
CHUCK:
Now, I want to take us back to the offensive and defensive thing that you were talking about a minute ago. Does this tend to draw people into the language or push them out?
REG:
Well, it’s really interesting. I think the defensive moves are there to protect people from defecting from the language, because when you first fall in love with something and you’re in your honeymoon, it’s very easy to gloss over irritants. When you’re first falling in love with Java you can really, when people are saying, “Blah, blah, blah, lambdas and functional programming,” you can just quote some cliché thing back at them like, “Well, a closure is nothing more than an inside out object and an object is nothing more than an inside out closure. So, you know, it’s really just the same thing and so my language has objects. Yours has closures. I’m not that impressed by your functional programming thingy.” And then after you’ve been using it for a while, you begin to feel irritated by some of the ways of which not having a closure is holding you back.
And then a funny thing happens. Some other language gets a killer application. So, if you look at something like Ruby, you can look at Ruby when you’re a Java programmer for a long time and not really care about it. But then when Rails comes along and it’s not just a language, but there’s this wonderful thing built out of it that you feel jealous of because Struct is terrible and then you [inaudible], and then you notice the connection that the language’s features actually made that other thing possible, then you really begin to feel the lack.
And I think a similar dynamic is going to happen to JavaScript, that if you say to me, “Well, Python has generators and JavaScript doesn’t,” and you say, “Well, CoffeeScript has comprehension, a different feature from Python. CoffeeScript has comprehensions and JavaScript does not,” you can shrug and not care about it for a very long time. But if somebody builds an entire framework where generators are built in and become part of the thing or they build a framework where comprehensions, like CoffeeScript framework, the comprehensions are built in and really fundamental to its magic, then you start to chafe about using vanilla JavaScript.
I think defensive moves like copying things from other languages prevent you from chafing, even if they haven’t been announced yet. It serves like Microsoft, “Well, it’ll be in the next version of Windows.” So, right now ES 6 is hardly here. You can play along with some of the features in Node and there are shims and so on. But you really can live with the idea that if there’s any one particular feature that people are crowing about, well it’ll be in ES 6 and that’ll be around eventually, and feel very happy.
So, I think that defensive moves to help to keep people in place and prevent them from saying to themselves, “Oh, this is terrible. I really have to move along.” I think a number of these things, there are features in other languages, static typing, strong static typing, immutability, lazy evaluation, and so on, that are very powerful. But they’re not that persuasive because nobody has done a really good job of holding up a Haskell framework or something like that and saying, “Look at this awesome thing that we built with this that you can’t even think about doing in JavaScript.” But if that were to happen, then people would probably clamor for those features in the language. And the standards committee would have to think long and hard about whether to include as the next feature of the language. That’s how I feel about defensive moves. Does that answer your question?
CHUCK:
Mmhmm.
JAMISON:
So, JavaScript comes from a weird place traditionally because if you wanted to develop applications in the browser, you’re trapped on a desert island and JavaScript was the only palm tree on the island. You had no other choice if you wanted to use something. So, I wonder if that hid some of the selective pressure on JavaScript so it didn’t need to evolve as much. But now there’s this proliferation of transpilers and compile-to-JavaScript languages which have already influenced the language. I wonder if it’s feeling the pressure more now because there’s more choice where before there wasn’t really any choice. You had to use JavaScript in the browser.
REG:
Well, I think you’re very correct. And this phenomenon has been noticed before. Again, I should probably have a source. But I remember, and even a decade ago, people saying that every successful programming language is once the scripting language of a successful platform.
JAMISON:
I love that your source is your memory. That’s great. [Chuckles]
REG:
Yeah, but I can’t remember who said it. [Chuckles] I have to google it. But yeah, that has proven to be the case for everything. COBOL, [Fee on PDT, another machine], everything, or sorry, [Fee] on Unix, and moving right toward BASIC on practically everything. [Inaudible] Windows, the Excel macro language, everything we do, the really big, successful languages all ended up being part of a monopoly. Sorry, I was just trying not to say the word monopoly because the correct work is duopoly, similar to the “Wintel” duopoly that we saw for decades. Successful languages are from part of a duopoly. Ruby is the programming language for Rails. So, Rails’ success is Ruby’s success and Ruby’s success is Rails’ success. And as you pointed out, JavaScript was part of the browser duopoly. So, the two work in concert to freeze everything else out.
If you’re a JavaScript programmer and you’ll need to make a desktop app, you often go to your corporate overlords and say, “You know, it would be so much easier to deploy and manage this app right in the browser.” And if you have browsers you say, “It’s so much easier to write a JavaScript app than to try to shoehorn an applet or something else, or Flash into it.” And the two things work in tandem to support each other. So now, as you pointed out there are options. There have been options for some time. But now there are more options especially transpiling to JavaScript. We have ASM.js, we have I think the LLVM compiler backend can compile to JavaScript as well. So technically, Apple’s new script language, it should be possible to compile some set or subset of it to JavaScript. So, the pressure will definitely be on.
I believe the dynamic will be similar to the dynamic we see on the JVM where other languages yes will take chunks of market share in the browser and on Node. I don’t know that any of them will displace JavaScript just as things like Scala has not yet displaced Java, and not for lack of trying.
But that’s just my guess.
CHUCK:
So, I do wonder though. JavaScript, you say a lot of these features are defensive and Jamison rightly pointed out that JavaScript is basically the option in the browser. You can write in other languages and then transpile to JavaScript, but then essentially you’re still running JavaScript. So, I have to wonder a little bit, how defensive do they really have to be in JavaScript? And then the next question is, what features have they added to ES 6 that you see as defensive as opposed to others that are just being put in there for convenience’s sake.
REG:
I actually believe that they do have to be extremely defensive. You say, “Well, it’s in the browser. It’s everywhere. So, it’s a slam dunk.” However, we’re on a night phase. It may not appear that way. But if you look at something like Safari, if Apple decided that Swift was an alternate programming language for Safari and then preached to its large iOS user base that they could use one language to compile both iOS applications to compile the way dynamic content would work in a, I forget what the, NS Web frame view or web view or something. I forgot the exact thing that it’s called when you embed weather maps to a webpage inside of an iOS app. If you would have that same app thing, if your app needs to have, I use Haiku Deck for a lot of my presentations, and they have both a web app…
CHUCK:
It’s UIWebView.
REG:
UIWebView, right. So, Haiku Deck has an iOS app and it also has a web app that you can use to edit your presentations. And if Apple one day called everyone to WWDC and said, “Look. Swift runs in Safari. So, you can reuse a lot of your same technologies and so on in your iOS app as well as your web app,” that would be extremely compelling. Likewise, what would happen if Chrome went to people and said exactly, Google that is, went to people and said exactly the same thing about Chrome and whatever language it is that Google feels like pimping this month? Perhaps Go, perhaps something else, that they want to get behind and said, “Everything on Android, everything in Chrome whether it be in a Chromebook or anything else, are all going to run this one new application language that we are promoting.” They’ll still run JavaScript of course. But you can also use this other language and get this cross-platform capability. That would be very persuasive.
I feel that the JavaScript language people, TC-39 I think is [inaudible] names, Mozilla especially that’s trying to keep it open, cannot rest on their laurels and just say, “Hey, we have a monopoly or half of a duopoly and we can just do whatever we like.” I think that they do have to make sure that the option of trying to replace JavaScript in the browser for these big, ginormous, multi-gazillion dollar corporations, Google and Apple especially, that it is unattractive to them to try to displace JavaScript.
CHUCK:
I can see your point to a certain degree just in the fact that I remember back in the day when I was much newer to programming in the browser, Microsoft had a whole bunch of custom events and things that ran in Internet Explorer. And so, if I was trying to deal with something from one person or another and they had used one of those, then it wouldn’t work when I went over to use Firefox. And so, it could segment things and make the web a little bit less friendly I guess.
REG:
Many people forget, but there was a time when Microsoft was actively trying to do this exact thing and very aggressively pushing their ActiveX technology which was not just a competitor to Java applet but it was also core to their desktop application technology. It was all integrated. And that was precisely their selling point. Hey developer, you can use the same tools on the desktop as in the browser. You can build ActiveX things that talk to the server the same way your corporate desktop applications that you’re deploying out across thousands of seats in your company work. Their vision of the future was exactly that. Internet Explorer, ActiveX, that you do your banking in an ActiveX container. That would be able to do stuff like secure your communications. And today we just say SSL which we now know to be less than ideal.
But you know, their pitch was that you could do things and secure things with cryptography that might be difficult otherwise, or work within your own blank-specific systems already. Yeah, there was a time, it may seem silly today, but there was a time when people were unsure whether the open web would succeed. I would say that we beat back that battle. But that does not mean that there are no further battles to be waged. We should talk about something optimistic. I’m beginning to feel like the [inaudible]. [Laughter]
REG:
Forecasting doom and gloom. [Laughs]
JAMISON:
I had a question. I was talking with a friend on Twitter the other day and he mentioned that he was active in the Ruby community, but he felt like the JavaScript community was a little harder to feel a part of in the same way. And I think he was getting at the fact that it seems like there’s a core group of speakers and conferences and locations that all click together. You have this in every language to some degree. But do you think it’s more or less in JavaScript that other languages? Or what do you think about that?
REG:
That’s a great question. If it helps your friend any, I’ve spoken at a handful of JavaScript conferences and they seem to like me. But I’ve never felt like I’m part of that inside group. I know what your friend is speaking of. There seems to be the cool cats, well Y. Katz, people who are working on stuff like Ember and so on, John Resig and Dave Herman who’s a triple genius. I think I recommended his book the last time I was on here. Sorry about the knocking in the background.
There are some renovations next door exactly on the date that we’re doing JavaScript Jabber.
JAMISON:
You just got to let the prisoners out of the basement. [Laughter]
REG:
No way. I’ve got a half-dozen consultants in three-piece suits down there and I can’t let them run havoc.
JAMISON:
[Chuckles]
REG:
But getting back to community, it certainly appears that way from the outside. However, even though I feel like I’m not one of them, I’m speaking at conferences and people read my essays. I think although it may appear that way that the massive middle class of JavaScript programmers who Reddit or Hacker News or wherever they get their blog posts and so on, are eager for new content and are not, “Oh, I’ve never heard of you. I’m not going to read your essay.” I think they’re very open-minded.
I think people are excited to follow you if you have a follow me on Twitter button on your essay and they read it and they like it. They’ll follow you on Twitter and you’ll get followers. If you write a book and people like it, they recommend it to each other even though you’re not one of the JavaScript gurus. So, I’m not trying to invalidate your friend’s feelings and perceptions from the outside. But I would say that my experience has been that the community as a whole seems to be very open to new people coming along and sharing ideas and sharing experiences with each other.
JAMISON:
In any group of people, there will be people who get more fame or infamy or more popularity or whatever. But my experience has been there are always friends who write JavaScript. And you don’t have to be popular just to talk to your friends about a programming language. It’s still enjoyable to me. I don’t know.
REG:
The internet, twitter, Hacker News, Reddit, these things have an interesting effect community-wise in that on the one hand they do tend to exacerbate the winner-takes-all popularity contest thing where you can get someone like a Jeff Atwood with over 100,000 followers. I don’t know what he’s up to now. Or Scott Hanselman or any of these other superstar blogger type people. And things like Hacker News or Reddit have this massive magnifying effect.
But the internet also provides this massive long tail, so that while it hasn’t changed the fact that a few people are going to clean up nearly all of the attention that you may care to measure, there’s still plenty to go around and there are still plenty of avenues for small people to get something. If you compare to maybe 25 years ago, I remember in developing software, things were at that point, it was a shrink-wrap software business. It was dominant on the personal computers. And if you did not get distribution, you got none of the market. There was no long tail. There were some early shareware thing, and some mail-order stuff. But it was scant, scant picking, because the distribution, the middle men of distribution locked things up. You had to be able to go to, I think the companies were called things like [Maricel] I think was one of them, a big, huge distribution company that sold to all the various computer stores in chains. And if you didn’t get them to carry your product in a catalog, you were a not-starter. Mom and pop computer stores were not going call you up directly for you to ship them a physical box.
And Amazon is trying to do this now with Bits where they become, sorry not with Bits, with [Atoms]. But we’re not in the Atoms business. We’re in the Bits business. And there is disintermediation so that yeah, you can listen to something like JavaScript Jabber and you can say, “Yeah. I have a question for Reg. Let me look up his Twitter handle or let me look up his email address and let me just email him.” And it might a little while to get back to you, but I’ll probably get back to you actually and answer your question. The friction has been taken out of it so that although some people will be superstars, that they can’t occupy 100%. Even a determined clique of oligarchs, of information oligarchs, cannot occupy 100% of the mindshare. And there will always be a small slice and a small opportunity for people to talk, whether it’s to each other or to the entire world. And find that very, very, very exciting about this particular time that we’re alive and active.
JAMISON:
I think that is rad.
CHUCK:
Yeah.
REG:
We’re doing it right here, right?
CHUCK:
[Chuckles]
REG:
How many millions of dollars were invested in this radio station that you built? None, right?
CHUCK:
[Chuckles] Yeah, not many.
REG:
Exactly. How exciting is this? Honestly, 20 years ago, you’d have had to buy radio time or something, or buy your own radio station to just talk on the air and give your opinion. You’d have to be Rupert Murdock. But you don’t today. That is rad, absolutely.
JAMISON:
I value Chuck’s time at a million dollars an hour. So, a lot of millions of dollars have been invested.
[Laughter]
CHUCK:
There you go. Oh, I wish I could find more people who would value my time at millions of dollars.
JAMISON:
I value it at that, but I can’t pay that rate.
REG:
When you’re on your death bed, you’d gladly pay a million or more for another hour.
JAMISON:
[Chuckles] Yup.
CHUCK:
That depends on how tired you are, I think.
REG:
[Laughs] We’ll try to keep this lively so that nobody’s in that frame of mind.
CHUCK:
[Laughs] Yeah. I think going back to the discussion over the different communities within the JavaScript community, I think there are a lot of people looking for people like them. So, there really are the frontend folks and the backend folks is really the largest, I don’t want to say division, but dichotomy I guess between developers. And sometimes people don’t always know where they belong and that’s something that I have seen in the JavaScript community. So, it’s like, “Well, where do I go to learn more about JavaScript?” and the answer is, “Well, that depends on what you want to do with it and what areas you’re interested in.” And then even within the web groups, again we have the different frameworks. We have different agendas and things like that. And so, it is interesting to try and get somebody into the community and push them the right direction and encourage them to get involved when you’re not really sure where the best fit for them is in the community.
REG:
I agree with that. In addition to, obviously the Node community is this massive thing that just works on the backend you might say, there’s obviously a huge group which are really the Ruby/JavaScript community who work typically in Rails on the backend and JavaScript on the frontend and are very familiar with making those two things talk to each other. But the, “I’m new. I don’t know where to fit in,” what I find interesting about that is there’s this massive, if I tried to describe all the people in the JavaScript community, I’d probably only be describing the part of the iceberg that’s visible above the water, because there’s a massive number of people who if you ask them wouldn’t even use the word. They wouldn’t even say I’m a JavaScript programmer.
To them, they’re just trying to get something done. JavaScript is a way you get it done. The same way if you said, “Hey, are you a Git guy?” I say, “Well, I work at GitHub and obviously I use Git all the time but I’m not a Git guy. It’s not part of my self-identity.” And I think there’s a lot of JavaScript programmers who are exactly like that. It’s in the browser. It’s what you need to do to get something done. But it’s just not part of the consciousness. They don’t think about JavaScript in the shower. And there are probably 10 or even 100 of them for every one person who reads Reddit/r/javascript. Or I recommended a book the last time I was here. I’m going to recommend hopefully a different book this time. I forget which book I recommended last time.
But if we took all the JavaScript books and then went out to all the people who programmed JavaScript, let’s even say that involves paycheck to narrow it down somewhat, how many people have even read a JavaScript book? I would guess that maybe 10% of the people who program in JavaScript have ever read a book, any book, about JavaScript. Most of them I think do web searches, can has codes. They go to W3Schools to get tips and they just muddle their way through. And are they part of the community? They’re users. They’re involved. Could you say they’re not part of the community because they don’t have a social self-identification? Or would you say they are part of the community but they’re just part of a lost tribe wandering in the desert because nobody has grabbed them by the elbow and said, “Hey, come on. Come on over here. We welcome you. We want to talk to you, want to help you.”
AJ:
That’s an interesting perspective, lost tribe wandering in the desert.
CHUCK:
He’s been watching me code JavaScript.
REG:
[Laughs] Well, I kind of got that from Jeff Atwood. There are many things we disagree about, but on that one we’re both in solid agreement, which is that the people who care of about programming form a bit of a bubble. But it’s not a large bubble. It’s not even the majority of the people who program. The vast number of people who program don’t read any blog. They would probably only read a book if they’re forced to read a book. But they program for their job and that’s it. And then they play Call of Duty or whatever on their computer, but they don’t care. And finding out a way to reach them, and there’s probably nine of ten of them for every one person who reads a blog post or gets on IRC or goes to a conference.
So, if you’re part of that group of people who care, you listen to podcasts, you talk on podcasts, we’re still, we’re like the one percenters, at most ten percenters of the total share of market or group of programmers. And those other people are the huge upside opportunity for making the world a better place. Those are the people for whom you reach out and give them a tip about how to make web applications more secure and it’s like, boom, the world’s a better place. We give them a tip about how to make programming better that will save them some time and make life less frustrating, boom the world’s a better place. If I could just reach out and whisper to them, “JavaScript Jabber,” the world would be a better place. I just don’t know how to reach them.
[Chuckles] Telling them about it on JavaScript Jabber obviously isn’t going to do it.
CHUCK:
So, I have one more area that I’ve noticed quite a bit in the JavaScript community, much less so in other communities. And that’s this, I’m not sure what the right term is, the hobbyist or hacker group. And what I mean is there seems to be more people in JavaScript than the other communities that I talk to that are into things like robotics. In fact, there’s a whole RobotsConf. And then there’s this, it was put on by the same people that put on JSConf. And then there are other groups that are out there that are about Raspberry Pi. And you get Node on there and you do cool stuff, or some other JavaScript interpreter and do cool stuff. It just seems like the JavaScript community has embraced that a lot more than the other communities. And it adds a really interesting flavor, I think, to the JavaScript community.
REG:
I agree that it does add an interesting flavor. This is, my umbrella term for them is the NodeCopter people. You’re right, it could be Raspberry Pi, it could be something else. But just, what’s the most outrageous thing you could do with JavaScript? Then they think of something and then they do it. If it hasn’t already been done, it’s only a short matter of time before someone tells me how you can program devices in Minecraft with JavaScript. There is this weird porter to everything everywhere.
And yeah, I wish I could get plugged into that. It sounds like a place where I would just quit my job and play fulltime. [Laughter]
REG:
You know, the internet of things, just like the world of programmers is much larger than the world of programmers who listen to podcasts and read blog posts, the internet of things is way larger than the internet of tablets, phones, and computers. And finding ways to reach out and touch those things is going to be awesome. It’s insanely stupid that there are thermostats or smart thermostat, you can go out and spend a bunch of money to have Google stick a monitoring device to your home now and but a nest.
But we really need completely open thermostats running stuff like JavaScript so that people can make their own applications, trade applications, upload applications to GitHub, plug, plug. It’s just the idea of having all these proprietary devices that have microcontrollers. And some of these things have computers more powerful than, my toaster’s probably smarter than my first computer. Why is it that I can’t program it in JavaScript? It would be incredibly cool. I’m not sure what I’d do with it, but I’d do something. Or I’d download an app that somebody wrote that does something.
Yeah, that’s a super exciting area. That’s rad. And we need more of it.
JAMISON:
So, that’s probably my favorite thing about JavaScript. I do real work for a living to make money and then I go home and I do stupid things that could never possibly be valuable except for people to laugh at or get some enjoyment out of. And it’s so fun. I was thinking about that while you were talking and why that seems to happen more in JavaScript. It’s not only JavaScript, but I agree with you Chuck, it seems like it might be happening more in JavaScript than in other language communities. And I don’t really know the answer. It’s not a size thing, because there are large armies of C and Java programmers and I don’t know. It’s not just a numbers thing. I wonder what it is about JavaScript specifically that encourages that.
CHUCK:
I think there are certainly some things about JavaScript itself that lend to it. But I don’t think they answer the entire equation. One is that anybody who does anything on the web deals with JavaScript at one level or another. And so, it’s probably one of the most ubiquitous languages out there that people already know. And then the other thing is that you have this system, in particular Node.js, that you can pull into basically any system that you can compile C on and on some systems that you can’t. And you put it on there and it doesn’t take an incredible amount of resources to run it. And you can do interesting things with it. And so, I think putting it on Arduino or Raspberry Pi or things like that, it’s not incredibly difficult. But I don’t think that’s the whole equation. I think there’s something in the mindset of the community that makes them want to hack on it. I don’t know how to quantify that.
REG:
Well I think it’s, I don’t know. I know what I’d like it to be. I don’t know if it is. But when Ruby, the design, allegedly one of the values espoused, not allegedly, Matz has said it many times, was to create joy for programmers. And JavaScript certainly, Brendan Eich has never said that that was his motivation but there are a number of people who appear to delight in doing weird stuff with it both in the language itself, I know myself I’ve fooled around with all sorts of combinators and stuff, and other people have done things that are almost like art projects. and when people have a certain mindset towards the language or any language or tool that they enjoy working with it, then they are more likely to work with it in their spare time and do stuff. And they are more likely to be, there’s an architect that lives up the street from me, Nathaniel Gray, and he loves to work on building his own house, designing his own house. He doesn’t hate architecture. He loves architecture. He just does it round the clock. Some of the time, he’s on somebody else’s clock and getting paid for it and some of the time, he’s doing it for himself.
And to me, this is a very high form of self-actualization. If somebody works in finance, (I’m picking a complete stereotype. I’m not suggesting all people that are in business are like this), and they make money and then they take the money that they make and take a [inaudible], a typical thing they’ll do is they’ll actually pay a large amount of money. They’ll take a [inaudible] plane up to [inaudible] country in [inaudible] so that they can go fishing on a special kind of fishing boat. What are they doing? They’re basically taking the surplus, the time that they don’t have to spend hunting, gathering, and protecting themselves and their family, and spending it on a mindless, unproductive pursuit, fishing. But it’s meaningful to them. That’s how they choose to spend the surplus.
And if a programmer is able to earn enough in 40 hours, 50 hours, 60 hours, however long they work in a week, and have time left over and then they go and do something like make NodeCopters than can play catch with each other and a ball or whatever else it is that they want to do, make a, and I see the other day what was really interesting, I don’t think this was programmed in JavaScript but this is an idea in the same playfulness, somebody made a LEGO Mindstorms thing that could solve a Rubik’s Cube in a couple of seconds. Basically, you’ve generated surplus and you’re using it. And that is what we humans do. We have our surplus and we use it on productive pursuits. Some people try to be more productive but ultimately you end up with some surplus.
And to my mind, there’s no difference. It’s no less laudable to make a LEGO machine that solves a Rubik’s cube or to make, somebody made a Turing machine in Minecraft. I myself, what do I do with my spare time? I programmed both in CoffeeScript and then again in JavaScript a hashlife implementation, without getting [inaudible], where you can do stuff like look ahead billions of generations to see how things turn out just because the algorithm’s interesting. To me there’s no difference between that and going to play golf or going to watch football on TV. You’re using your surplus for recreational pursuit.
It’s just that you find hacking with JavaScript in a piece of hardware or something more interesting than hitting a ball so it drops into a hole. I’m not going to say that what you’re doing is more useful. It might be. Maybe it is more useful than dropping a ball into a hole. But it certainly makes you no less human than these, business people call it, [inaudible] and others that our society admires for putting on ridiculous clothing and going and playing golf.
JAMISON:
I think it’s that they’ve been driven mad by years of dealing with browser hacks. [Laughter]
JAMISON:
So, their only defense is to make circles that when you touch them on the computer, it causes a robot to what you in the face with a Cheeto.
REG:
[Laughs] I saw that. I thought it was hilarious.
JAMISON:
Yeah.
CHUCK:
Cheeto-bot huh?
JAMISON:
Yup. It reflects the absurdity of the world.
REG:
Well, in the 70s, I saw an art project that was done in cooperation with some MIT engineers. And they had one of those robot arms, the really old school ones that it can only move within a cube of space. And it has wires and things overhead. And so, it reached out, picked things up, moved them over, and dropped them somewhere within the coordinate grid. And they had all these foam cubes. And the robot arm had a kiddie camera. And what it would do, it would pile the cubes up into a little stack, a stack of cubes. And then it would stop. But what they’d also done is they’d also put a bunch of gerbils in the cage. It would run around knocking the cubes down.
And there was a huge amount of programming involved with the time and machine vision and programming and so on. And the code was written in Lisp. I think it was Terry Winograd’s SHRDLU or something. And Marvin Minsky has a book ‘The Society of Mind’ which is about goal seeking and problem solving software that they were writing in those days. And they put all of these great minds and leading edge technology at the time to work on piling up foam cubes just so that gerbils could know them down again. And it’s always been one of my favorite pieces of art, remembering back to it, because it pretty much describes what I do every day where you write these things and they become obsolete. They’re like soap bubbles. They look beautiful for a little while and then they pop. That’s okay.
CHUCK:
I thought you were trying to imply that your coworkers were gerbils.
REG:
Absolutely not. [Laughter]
CHUCK:
No, I know some of the GitHubbers. They’re pretty sharp people.
REG:
Yeah. GitHub is not a good place to take your impostor syndrome. [Laughter]
REG:
It’s very easy to feel intimidated. But they’re good people and I’m very grateful for that.
CHUCK:
So, any other hijinks in the community that you guys want to talk about?
REG:
Should we talk about my picks?
CHUCK:
Yeah, let’s go ahead and do the picks. Go ahead, Reg.
REG:
I have three picks which I have up my browser. So, the first one, it might be the same as I did before. I picked a book. I picked a library. And I picked a video. So, the book is Michael Fogus’s ‘Functional JavaScript’. I’m sure it’s been discussed. He may even have been a guest here. But I bring it up because I read it when he first wrote it. And then I’ve been doing some work in the area and so on. And then I came back and re-read it again and it felt almost like a sixth sense. “Oh, wait a second. There’s this whole other part of the book that I’m sure I’ve read these words but they didn’t strike me the same way.” So, my message to anybody, if you have already read it but it’s been a while, read it again with fresh eyes. And if you haven’t read it, get the first one in so that you can read it again six months later or a year later. So, that’s my first pick.
My second pick is a library when I was at the FutureJS in Barcelona. David Nolan who’s a big ClojureScript guy speaking of compiled to JS languages, he was talking about the benefits of having immutable data structures. And there’s a huge library built into Clojure and ClojureScript that’s really awesome. It’s more than just, oh yeah, a Lisp that compiles to JavaScript. But it’s almost like a programming 101 exercise. However, a Lisp that compiles to JavaScript with this massive immutable data structures library attached to it, aha! Anyway, David Nolan also wrote something called mori which is a part of the ClojureScript immutable data structures library to JavaScript. In other words, it takes what is already there and then it’s wrapped with a bunch of JavaScript APIs so that if you’re not into programming with ClojureScript you can use these.
I think A, that it’s a good idea to use this. And B, even if it’s inconvenient for you to use this, it’s an extremely good idea to read about it and to read about immutable data structures, not just from a functional programming perspective but even if you are working with nonfunctional paradigms. This is really, I think the word I’m looking for is a fertile area to read about. You can’t help but read about it and start thinking about other things. In my own case, when thinking about this from a data structures perspective, it led me to start thinking about things like instead of monkey patching, as we call it, classes when doing things [inaudible] programming, what if we just made a copy of the class or made a wrapper that goes around the class. So, the original isn’t touched but we have a new flavor or version of the class that has these changes in it. So, I think it’s a really fertile area to think about. And thus, I recommend mori as a library that’s interesting and I think may interest listeners.
And finally a non-JavaScript video. I was just at the Norwegian developer’s conference in the city Oslo. And they had a full-functional programmer track I was in the JavaScript track. And Joe Armstrong, the creator of Erlang, was speaking there. He is an industry treasure. And he gave an amazing talk called ‘The mess we’re in’ talking about systemic problems with the industry. And although it’s not JavaScript specific, I think this is a good one for people who just want to step back for a second and get a fresh perspective from someone’s who’s been involved in the industry for a long time and has one of those really fresh, Erlang was a really fresh new take from a completely new direction, not just a mishmash of the same old, same old. It’s a functional programming language but it’s not a direct descendant of the ML family of languages or the Lisp family. It’s its own thing. And Joe has a really fresh perspective and I really recommend taking the time to watch this video from start to finish.
CHUCK:
Very cool. I’ll have to check those out. Jamison, what are your picks?
JAMISON:
I have four picks. My first pick is a Chrome extension called TabCorral. So, I have tab ADD. I now have dozens or hundreds of tabs open. But I never go back and read them. If I really need it, I can find it again. So, TabCorral is just an extension that automatically closes tabs after you haven’t been to them for an hour. You can put whitelists too, so you can leave your email open if you want or if you need a certain domain to stay open no matter what. But it really helps me realize when I actually care about things or when I want to care about things. If I think I need to care about something, I’ll just leave the tab open but never read it and TabCorral tells me, “Nope. You don’t actually care enough to read that. I’ll close it for you.” So, that’s helpful.
My next one is just a cool CodePen demo I saw someone tweet about. It’s just CSS3 Parallax. I am envious of people with amazing CSS skills because I do not have them. So, it’s just some really cool parallax schooling with CSS kitties as pictures. So it hits all the sweet spots.
My third pick is a book called ‘Creativity, Inc.’ It’s been going around. People have been talking about it and it’s because it’s really good. It’s by the president of Pixar. And it’s like a business book, so there is some clichéd stuff. But it’s a pretty good one. And it’s a glimpse into this company that shaped my childhood, because I really loved Pixar movies growing up. So, that’s a good read.
Then my last pick is [chuckles] it’s this anime called Kill La Kill. I don’t watch a lot of anime, but someone recommended this to me. If you’ve ever seen an episode of Dragonball Z and thought, “This is ridiculous. How can they not know how stupid this looks?” Kill La Kill is an anime by someone who thought that and then was like, “I’m going to make a joke anime about how ridiculous anime is.” Yeah, so it’s really good. That’s it.
CHUCK:
Aright. AJ, what are your picks?
AJ:
So, I don’t think I’ve mentioned this before on picks. But Google has an image resize service, resize and caching service. And sometimes when you’ve got a bunch of big images and you don’t really want to run ImageMagick or whatever, you just want things to be good enough for now, you can prefix your image URL with Google’s image resize URL, then you get small images and they load fast and it looks cool. Because if you’re ever trying to demo a site to somebody and you have the big hi-res images and then it takes 6 seconds for it to load, it’s not as cool.
So, I took that and then I wrapped it a little bit and I’ve started using it in my blog that I only update once a year now. [Chuckles] I need to get back on that. but I created a repo that’s Resize as a Service where it will download the image for you in case the site, in the case of a blog, if you’re using it on a site or grabbing an image from a site that maybe that site at some point no longer wants to give you that image, then you have a local copy of it. But then it serves it through the Google image resizer. So, guaranteed to have the image and guaranteed to be a lot smaller.
Other than that, Firefox OS is something that everybody should look into. It’s kind of cool. And one neat thing about it is if you build your web app in the Firefox OS with their build tools, it will work on Firefox OS. It will also help you package it for iOS and for Android. And then it will work as a
regular web app as well.
CHUCK:
Alright. I’m going to pick a couple of books. The first one is the ‘Steve Jobs’ biography by Walter Isaacson. I’ve really been enjoying it. I just fine business people fascinating. And Steve Jobs was rather unique. And so, I wanted to know a little bit more about how that went. So yeah, I’m really enjoying it.
The other book is called ‘The Miracle Morning’ and it’s by Hal Elrod. And it’s basically a series of practices to start your day that make your day better. And I’ve been doing it for a few days and it’s just been really good and makes my days just go a ton better. So, I’m not going to give everything away. It does involved getting up early and doing a couple of things right. And I highly, highly recommend you go pick it up and read it. So, go check that out. I’ll put links to all this in the show notes. And thanks for coming again, Reg.
REG:
My pleasure. Thank you so much for having me as a guest.
CHUCK:
It’s always fun to talk to you. And you always have a great perspective on things. So, we look forward to talking to you again.
REG:
I’m looking forward to coming back. Be well, everybody.
CHUCK:
Alright. We’ll catch you all next week.
[Hosting and bandwidth provided by the Blue Box Group. Check them out at Bluebox.net.]
[Bandwidth for this segment is provided by CacheFly, the world’s fastest CDN. Deliver your content fast with CacheFly. Visit CacheFly.com to learn more.]
[Do you wish you could be part of the discussion on JavaScript Jabber? Do you have a burning question for one of our guests? Now you can join the action at our membership forum. You can sign up at
JavaScriptJabber.com/jabber and there you can join discussions with the regular panelists and our guests.]