Kyle Simpson: I also do a lot of conference speaking. I won't belabor this too much, because I'm already talking too long about myself. I don't want to waste your time droning on about myself. But I do want to highlight just one quick thing. These are some of the conference talks I've done over the last several years, and there's all kinds of video and slides up online if you're interested.
But I'll highlight just one of them, it's the browser versions are dead talk. And if this is at all interesting to you, this topic when I explain it, there's a video of that talk up at browserversionsaredead.com. And I highly recommend that you go, take a brown bag lunch, take 45 minutes at lunch at work some day, sit down with your team, and listen to that, and you can totally decide that you disagree with everything I say, but, I hope that it will spark some good conversation.
The premise of this talk is that our industry for the last, more than a decade now, has been guided by a set of lies and misconceptions that have been forced upon us by actors from outside of our industry. People like marketing departments, sales departments, CEOs, clients, people that don't understand how the platform works, have been trying to dictate to us how the platform should work.
And as professionals I think it's time for us to start pushing back and asking some difficult questions and saying maybe that's not how we should be letting our platform run. The first of those questions, the first of those lies and misconceptions is that the browser version even matters.
You hear all the time the people say, I'd love to do that but I still have to quote unquote support IE 6 or fill in the blank with whatever particular browser version or browser vendor that is your hated one at the moment, and I think that actually leads to this misconception that the browser version matters, because in reality it's just an arbitrary marketing label attached to an arbitrary set of features.
What we should really care about are the features themselves. We should be talking about what features we require, what features we support, and any other software discipline besides the web platform has embraced that for four decades or more. If you look at Linux programs that were written 30 years ago, they were feature testing every single thing that they used, but that's sort of a relatively new mindset that we've adopted in the web and I think we need to do more of that.
You shouldn't rely on a production feature unless you're feature testing for it. You shouldn't assume that because you're in IE7, you have some feature or not. The other bigger, important lie that I think we need to attack is this idea that a site or an application should be designed and built in such a way that it works, feels, and behaves exactly the same in all browsers and all versions.
Because, again, this outside of our platform that's a ludicrous concept for you to suggest I wrote a piece of software today, and I expect it to work the same on a Linux server from thirty years ago. That's not the way that the rest of the software discipline treats software.
It's an evolving thing. Different features get turned on and turned off and things. So I think we should build our sites and applications to be responsive to the environments that they run in. If you have a file upload feature built into your social network and you're running in a browser that doesn't have file upload, instead of just blocking users and saying sorry you can not come into my social network because you're on a crappy browser, which is what a lot of people do, I think we should just simply hide the file upload feature.
And it doesn't take a lot of extra effort to think about layering your applications to turn things on and off, provide fall-backs, and so forth. So these are questions that I'm trying to push back on and give you questions to ask and push back on those key players.
Now, the reality is that 99% of the time, when you push back and you tell your client, we don't want to build it that way, here's a better way to build it. They're going to tell you, that's all fine and good, but you still have to do it. So, you're going to lose that battle 99% of the time.
But I like to tell people that you will lose 100% of the battles that you never fight and only 99% of the ones that you do fight. So, these are questions that we need to, as professionals, we own this industry and we own our platform. It's all of us and we need to ask those challenging questions and push back so that we can, like I said, and stop living 10 years in the past and start living 10 years in the future.
So I'm writing them in the open and then O'Reilly has been gracious enough to agree to professionally edit and publish those. The second title is already complete in terms of draft. The editing is in its final stages, and that should go to publish within the next few weeks, hopefully.
There's a plan for five titles in the series. And it's very aggressive, but we're hoping that all five titles should be out before the fall. So, there's quite a bit of writing that I'm doing on this series. Most of the stuff that I'm going to teach you today comes from these books.
The whole first section that we talked about, about Scope and hoisting and all. If you've read the book or if you know anything about the book. Basically, the books are sort of the written form of the trainings that I give. So it's all sort of typed together and these books are a good place to go and read further beyond what we teach today.
That's it for stuff about myself. That was long and really boring. Let's get to more interesting stuff. Let me make a couple of other recommendations. I don't get any benefit whatsoever, no kickbacks, but I do recommend both of these books as fantastic books. The first one is High Performance Java Script by Nicholas Zakas.
I don't agree with everything that's written in these books, but they're fantastic books to read. So I highly recommend you check them out, really smart guys that wrote those.