The Changelog: Software Development, Open Source - HTML5 Boilerplate and JavaScript (Interview)

Episode Date: August 19, 2011

Adam and Wynn caught up with Paul Irish of Google’s Chrome developer relations team to talk about HTML5, JavaScript, CSS3, polyfills, and more....

Transcript
Discussion (0)
Starting point is 00:00:00 This week's show is brought to you by Paste Interactive. Paste Interactive makes apps that help people perfect their lives. They create a jump chart for wiring content into websites, Staction for staying on task together, and Paprika for tracking your text and to-dos. Check out Paste at PasteInteractive.com. And by Gobble. Gobble has a job opening I want to let you know about.
Starting point is 00:00:22 At Gobble, you can write code that feeds people, learn a lot, and deploy every day. Gobble.com connects people with neighborhood chefs, and the engineering team at Gobble is looking to hire programmers that are dedicated to good code, learning, and skill sharing with each other. They achieve continual learning through weekly retrospectives, code review, and the occasional pairing session. If Rails, RSpec, Haml, Sass, and jQuery strike your fancy, apply today. Gobble is located in Palo Alto, California,
Starting point is 00:00:52 and they're open to relocating people from around the country. Welcome to the ChangeLog episode 0.6.7. I'm Adam Stachowiak. And I'm Winn Netherland. This is the ChangeLog. We cover what's fresh and new in open source. If you found us on iTunes, we're also on the web at thechangelog.com. We're also up on GitHub. And if you head to github.com slash explore, you'll find some trending repos, some feature repos from our blog, as well as our audio podcast. And if you're on Twitter, follow Changelog Show and me, Adam Stack. And I'm Penguin, P-E-N-G-W-I-N-N. For an episode this week, talk to Paul Irish over at Google
Starting point is 00:01:40 about HTML5 and other stuff. Other stuff for sure. We're a couple of fanboys since we, I guess, talk about this stuff all the time. You perked up a bit on this episode. It's actually, you know, a lot of the shows, I mean, RVM, I get that, right? But you go to BDSM and I'm lost.
Starting point is 00:01:57 And thank God for Steve to come on that show because that wouldn't have been my place. But shows like this I can have fun with. For sure. I had a week off. We took a week down at Lone Star Ruby Cuff down in Austin. Got to meet our buddy Steve Klabnick face-to-face. He brought the house down
Starting point is 00:02:14 with his talk on shoes and how we need to support those that give to open source, like Wayne and some others that we've had on the show recently that have just poured out their blood, sweat, and tears into apps that we use every day and just give props to folks that make our lives easier. And I think that's what we're trying to do here on The Change Log is just shine a light on folks that are giving away software. That's right.
Starting point is 00:02:37 Shine the spotlight on the people that are moving and shaking this world. Absolutely. Back to the web this week with Paul, but if you've got other ideas for who we should have on the show, let us know. Hope to get some no sequel in the show soon. And I'm trying to track down the folks behind Tmux and some of the other command line goodies that you and I have gotten into lately.
Starting point is 00:02:58 So hopefully we'll switch gears a bit. That little session we had today in the terminal was pretty fun. So that'd be a fun conversation. I wowed you with the Tmux, didn't I? You did. Fun episode this week. Should we get to it? Let's do it. Chatting today with Paul Irish from Google. So Paul, for those that don't know you, why don't you introduce yourself a little bit about your role over there. Sure. So I'm on the Google Chrome developer relations team. And essentially what I do on my team is I engage with the wider web developer community
Starting point is 00:03:40 and make sure that everyone knows kind of what's capable, what are the capabilities of browsers, Like what are the features inside there, what you can get away with and basically like what, what can we do to make really like engaging, compelling experiences. And then, uh, I also publish a lot of tutorials, guides, screencasts, uh, and, and, and software to help people do that kind of stuff and do it well. So that's kind of pretty much what I do. I got a glimpse of that at Southwest. I guess you had the Google event down there where you were doing some demos up on stage.
Starting point is 00:04:16 Yeah, totally. Yeah, I got to talk about, give a brief overview of the HTML5 Umbrellas feature set and then also talked a little bit about some of the newer features in the Chrome developer tools. Yeah. You might be the best person to define this. Now we'll stop hogging the mic in a second. Adam asked a question, but HTML5, what's it mean to you?
Starting point is 00:04:38 Ah. Uh. Uh. Uh. Uh. Alex. Uh, uh, uh, uh. Alex, so I think, I think like Dion Almeyer said that it was, uh, HTML5 is everything after HTML4, um, which is nice. I, in general, like the, I'm not too pedantic when it comes to the definition of HTML5. I certainly don't think that it's what's in the spec.
Starting point is 00:05:04 Um, I'm fine with clarifying that CSS3 is not HTML5, but certainly don't think that it's what's in the spec. I'm fine with clarifying that CSS3 is not HTML5, but it's really hard to make a HTML5 demo without using CSS3 because you want it to look good. Like you're not going to release something with web sockets and local storage and not make it look good. So anyways, they all kind of get mixed up and I think that's okay. HTML5 is the term that kind of like carries the flag and has the logo and like, and that's what all the excitement is about. And sure, it's a little bit messy, but I don't think it's like, it's very harmful that we use the term HTML5 to mean things that are not technically HTML5. So I'm pretty fine with an ambiguous definition there. I'm curious how HTML5 has that military stripe logo. The CSS3 is like Air Force. Yeah. The Army and the Air Force. What's
Starting point is 00:05:52 that about? I don't know. I actually saw, where was it? I saw someone made a new CSS3 logo and they took the typography of the five and then made a three out of it and put it on like a blue badge instead of an orange badge. And it actually looked really, really good. Um, I don't know what the iconography is about. Uh, I don't, I, I, I like the HTML five logo, the other, those other smaller icons. I don't really have much of a use for myself. Um, so whatever. When you're quoting Dion, I thought you were going with the quote that he said, HTML5 is a jewel that we need to cut into a weapon.
Starting point is 00:06:33 Oh, yeah, yeah. Yeah, it's Yehuda Katz's Twitter bio. Right. HTML5 is the gem that we need to cut in. Yeah, yeah, yeah. Yeah, it is the gem that we need to cut in. Yeah, yeah, yeah, yeah, it is. Um, the gem that we need to cut into a weapon. Um, but I agree, like, uh, I think a lot of us, uh, a lot of developers are, are really engaged, uh, and really excited about the web platform. And I think, um, I think it's important that we make the web platform be, platform be competitive with what people are doing on
Starting point is 00:07:08 native mobile platforms. And, you know, I hate it when people think that native apps look and feel better than what we can do with web apps. I think that's like, that sucks. And I think that, you know, web apps, certainly, a lot of people are completely delighted by web apps. It's terrible when you hear things like that because in general I think that not only have people experienced web apps that have changed their view of what you can do in a browser, but the capabilities that someone might not even know are there. Like I was talking to one of my old friends and she was like,
Starting point is 00:07:51 yeah, I'm thinking of making an app, an iPhone app. And I was like, why? And she's like, well, it's going to be like a to-do list, something, something. But I want it to work when I'm not connected. And I was like, well, it turns out you can make a web app that works when you're not connected. And she's like, really? I was like, yeah. It might seem weird that you would open up Mobile Safari on your iPhone to access a web app even though you're not connected.
Starting point is 00:08:12 I can understand the cognitive disconnect there, but there's certainly capability that we're not exploring as developers right now. Well, the browser certainly expanded to do far more than i think the very first iteration of it was intended to do so it just makes sense that as the web progresses and as technology progresses and as the back end meets the front end and all these things start to collide as we go into this newer space of the web and how it's morphing from app to web app to you name it, that the browsers catch up and allow for a more native experience.
Starting point is 00:08:48 Yeah. Yeah. And I think it's actually interesting. GitHub is a really actually interesting example because there's conversations around websites versus web apps. And GitHub is like half and half. They were the first to really make use of HTML5 history and push state to, to do the cool URL rewriting with a state change in the transition
Starting point is 00:09:09 looks really good, works extremely well, um, falls back. It's like the most progressively enhancement-y friendly thing ever. Um, and it works, but like, I don't want to call GitHub an app because it's not just a single-page app. There are certainly pages. But it's not just a straight-up site. It's almost like a hybrid, but I don't want to call it a hybrid. It just delivers a good user experience. And that's what they're focused on.
Starting point is 00:09:35 So making a good user experience is more important to them than qualifying their product as an app, which I think is rad. Yeah, not to go too deep on GitHub and glorifying those guys because they are awesome. We do know that. But I about did two backflips yesterday when I realized I could push. What's the key win? E, to go into the editor. Right.
Starting point is 00:09:55 I was like, wow, that is just insanely sexy. And there's many times I want to just edit a readme or just do one simple commit to help somebody out. And you either don't do it because you don't want to just edit a readme and or just do a one simple commit to help somebody out and you either don't do it because you don't want to pull the repo down and do the change and push it back up and do the whole you know terminal slash push scenario then you got to just in the web browser just sexy it's just awesome but um Paul I think you're probably most known for or at least that's what I knew you for at first was, uh, HTML5 boilerplate.
Starting point is 00:10:25 What's the story behind that and how did it come about? Sure. Uh, well, so before I was here at Google, I, uh, worked at a interactive agency, um, in Boston, it's called Isobar. And, uh, it is, we, we made web, web apps and websites for everyone, everyone, for Nike and Nikon and Reebok and things like that. And I, you know, over the course of making a number of different web projects, I realized that I was always taking clever snippets files of HTML and CSS and JavaScript that made a lot of sense to just like use as a default. Kept on growing that and we kind of made it the default way that we built sites inside the agency. And then I was like, I decided that we should probably, you know, share that externally. For a while it was called front end, no, pro front end template, I think. Which is very accurate, but I didn't feel it had a really good name.
Starting point is 00:11:39 And so I was trying to find a new name. HTML5 boilerplate, because it was somewhat HM5-y, though it's mostly a front-end developer's thing. It's not specific to HM5. And it's certainly not boilerplate as far as the definition of boilerplate code goes. It's not the minimal amount that you need, but it works. It's a reference library, more or less, right?
Starting point is 00:12:03 I mean, well, so I'm fine. I think it works. Um, it's a reference library more or less, right? I mean, I, well, so I'm fine. Like, I think it works really well. And, and the idea is that it's not too codependent on, on each other and you're completely free to like pull things out of it. Um, it's documented well enough so that you can feel comfortable, um, pulling parts, but, um, but I think it works really well just like as grabbing the whole boilerplate and deleting a few things that you might not be too keen on and just using it from the start. You know, I think the important thing is to understand what you're pulling and what you're leaving. As developers, I think we are more prone than any other profession to cargo cult. Yeah, totally. Like, yeah, there's plenty of things that have just like been kind of good practice or the thing you do, uh, or the thing you don't do. And, and a lot of times we don't really understand why. Um, so yeah, it's interesting
Starting point is 00:12:57 because HMF boilerplate, you know, I, I created it and I released it as a way to save people time when starting a new project. And, um, and what it ended up, uh, also having an effect on is, is more of like an educational thing. There's a lot of techniques in there that, um, uh, a lot of people have worked on refined and, uh, and, and are smart. And we, we made sure to keep things documented well enough so that you understand it. You can go and find the links about it, read more, and figure out, like, understand the justification why you would want to do something like this. So HTML5 bullet plate, you know, it's this thing you can kind of pull things from. But at the same time, you've got some other kind of cool little niceties that fall in there as well. You're using Respond.js in there.
Starting point is 00:13:42 And something I thought was kind of cool, too, because I've been using a reset for a number of years now, but Wynn and I kind of bashed brains the other day and we're like, why do we keep resetting our CSS to this complete reset, but then we have to go back in and add bold for certain things. So you also brought in normalized CSS for that
Starting point is 00:13:59 as well. How long has normalized been in the HTML5 boilerplate? It's only been shipping uh with uh boilerplate for the last i don't know was it three weeks i think three weeks ago is when we when we shipped 2.0 boilerplate um but it was in github for the last uh four or five months how did you find out about it well uh so the the long story about it was that, you know, people have been doing resets for a long time. And the first time I started using resets, I was really keen on it. And the number of edge case bugs that popped up in only one browser, that dropped to zero so quick when i started using resets and i just like
Starting point is 00:14:46 i really knew that this was a lot better than um than not resetting at all um but as time went on then you realize you know it is kind of annoying that we have to uh put font weight uh bold on our b's and our strongs all over again and our headlines and And it's like, this is kind of silly that we're like bulldozing everything, building it all back up. And so of course the better approach and what's at the foundation of normalize is only change the things that are different and make sure that they're the same.
Starting point is 00:15:19 But what that means is that you need to take inventory of the default way that every browser styles their elements by default and then change them accordingly. And so that requires quite a bit of research. WebKit and Gecko, since they're open source, you can just go and find their default user agent style sheet. But for IE, it takes a little bit more work and same with Opera. So Jonathan Neal, who actually does the music for the Yequery podcast, but he's also a really talented front-end developer. He started digging into this. He did a lot of the research. If you go to iecss.com, you can see the default style sheets of the IE browsers and also the other browsers as well. And then Nicholas Gallagher, who's a London-based developer, started digging into this as well. So it was a
Starting point is 00:16:18 collaboration between the two of them at start. And then Nicholas took it on, uh, as his own project later on. Um, and so it's basically, yeah, it's, it's finding out the differences between the user agent style sheets only changing what you need to, uh, at the end of the day, you get a, uh, uh, style styling file that is smaller than a reset. Um, plus, uh, because you don't have to uh you know build all that styles back up and uh and it also feels a lot nicer um i think i think people are we're kind of getting tired of of feeling so redundant in uh the reset approach of styling well i i'm sad because i was just so close to being almost as famous as you because i was just about the release on reset oh yeah yeah that's a joke to like you know reset it and then there's a separate project to unreset it i was because
Starting point is 00:17:18 that's what i did every time i was going crazy every time i would reset this our styles for a new project i'd be like right i'm putting bolds and all these other things that you really do want. But, you know, I was so close. It's like Yahoo had a reset and they had a base.css, which was basically an unreset. And it's funny because it duplicates all the effort that the user agent style sheet already does.
Starting point is 00:17:44 The thing that I actually like most about the project is that now when you're looking inside Chrome DevTools or Firebug and you select an H1 or whatever or a P tag, there's not this enormous list of cascading rules that all got overridden and things like that. It just goes back. There's maybe two styles that are inherited that you see on the right-hand pane,
Starting point is 00:18:07 and that's it, which makes for a much more cleaner developer experience. I like that. And I guess probably the next thing that comes along with HTML5 Bulletplate is Modernizer, and that is such a cool project that I don't think I fully understand
Starting point is 00:18:24 and or tap into. I'm not really sure why, but I think Adobe has done something pretty cool with it recently. But how did Modernizer come about? It's funny, Modernizer. So I work on it with Farouk Atesh and Alex Sexton and Farouk launched it maybe two years ago or three years ago. I'm not sure. And I remember when it came out and I was like, I don't know.
Starting point is 00:18:51 It just has a pink website and it says it modernizes. I was like, all right, sounds cool. Whatever. And then like two months later, I was doing some work with some CSS3. And I was probably like doing something with a box shadow, and I put a box shadow on, and then I was, like, thinking about what happens when I'm in a browser that doesn't have native box shadow support. I probably actually want to do something a little bit differently. And I was like, hmm, how to do this? I wonder if, like, I could use JavaScript to, like,
Starting point is 00:19:21 figure that out. And then I, like, went back and I looked at the modernizer site. I was like, oh, it does exactly that. And I was like, cool. And then, and then I, I looked at the JavaScript behind it and I was like, oh, this is terrible. This is no. And then, so me and my friend Ben Allman, we rewrote the entire thing, um, and told Farouk and he's like, oh, cool. Okay. And then, so then I joined the project,
Starting point is 00:19:46 uh, after telling him that his code was terrible. Um, but now, yeah, it's really good. So modernizer basically detects all these sorts of CSS three things and lets you kind of style the page differently if you're, if it's not there. And it also does a really robust detection of all sorts of HTML five and other features that you want to know that are there. And it gets tricky. Like, user agent sniffing gets a really bad rap, and much of that is deserved. But one of the trickiest parts, I mean, one of the worst parts about user agent sniffing is because everyone does it their own way. And a lot of times when
Starting point is 00:20:25 you do things your own way, you do it wrong the first time and the second time. And, uh, with feature detection, it's, it's, it can also be quite similar. Um, a lot of times writing your own feature to text, you're going to do it the wrong way. Um, like detecting for HTML5 forms, um, a lot of the published techniques for that are flawed at this point. And so Modernizr is kind of the clearinghouse for feature detects. And we make sure that our detects work across everywhere that we can and tackle all sorts of edge case bugs that pop up in like, there's a really nasty one in IE8 that runs on Windows Server 2000 without the entertainment media service pack installed. You'll get an exception if you look for an audio elements can play type function.
Starting point is 00:21:19 It'll just blow up in your face. We've been using Modernizr in the changelog for a while. When we first put it on there, we were getting a lot of complaints about it trying to test for local storage. Ah, yeah, yeah. Because it tweaked that. Yeah, we changed that. There was a Safari setting that, well, there's two ones.
Starting point is 00:21:42 There's one, a Firefox problem Firefox problem. If you have your security settings really high, um, and we nerfed that. And then there was also a Safari preference where if you change your preferences, then it always asks you if, if you, uh, if this thing can use your local storage and you have to say yes. And that's equivalent to like, okay. And every single cookie that gets placed on your browser. So I don't know. But the cool thing now with Modernizr is that there is no default production ready version. It's like, you know, jQuery has the new minified version. You grab that, you're good. There's nothing like that for Modernizr. So with Modernizr 2, which we put out a few months ago, your build will be custom.
Starting point is 00:22:26 You select only the features that you want to detect. We make the file as small as it can be. And so it goes as fast as it can, and the file is really tiny. So I really like that method of distribution for now. Just curious if you've seen Rack Modernizizer from Marshall Yount, friend of the show? Yeah, yeah. There's actually, I think there's three total projects that take Modernizer and kind of enable
Starting point is 00:22:54 that visibility on the server side. And I think that's a really cool approach. It's like the old browse caps, except not doing user agent sniffing and feature detection. Yeah, yeah. I really like that. I think that's really a wise way. You have a lot
Starting point is 00:23:08 more control so you don't have to rely on JavaScript to manage everything for you. That's really cool. I think the first time that I came across your name in a memorable way, I'm sure paths crossed before that was, did you coin the term Fout or did you? Yeah, I did.
Starting point is 00:23:24 Flash of unstyled text yeah totally um that i got i got really into web fonts a few years ago and um and at the time the the behavior for web fonts in firefox was uh to um that you would get a default you would get a default, you would get a like Arial or Times New Roman or something font. And then the web font would download and then you would get the new upgraded font. And there was that little flash of going from the regular boring font to the new font. And a lot of people hated that. And a lot of people actually prefer that because the WebKit behavior is that it's all invisible and then you get the new one what's really cool is that there so there's a lot of conversations around this because people felt strongly in different ways and so
Starting point is 00:24:12 now moving forward there's a new kind of hybrid approach so what was adopted in Firefox this ships in Firefox 4 and will actually be landing as a modification to the behavior in WebKit soon, is the text is invisible for three seconds. And after three seconds, if that web font has still not downloaded, then it goes back and it goes to the fallback font and then eventually to the web font whenever that's ready. But so it's like invisible up to a certain threshold. And then you're like, okay, I actually
Starting point is 00:24:45 want to read the text on this website. It finally gives it to you. Um, and so you're, you're pretty much covered. Uh, so that's kind of where things are going. I'm convinced that the, uh, the CSS three spec is kept, uh, JavaScript developers employed more than anybody else. You know, we have the Google font loader, umader that can load fonts both from Google Font Directory or your own or Typekit.
Starting point is 00:25:08 Yeah, right. Does some of that as well if you need a polyfill for your other browsers. So speaking of polyfills, is the universe growing or shrinking? Are we needing these less or are we finding more ways
Starting point is 00:25:20 that we need these things? More, probably more. like I just saw yesterday. Uh, what is that? It's IE web GL.com. It's a plugin that, uh, enables the use of web GL content in IE, uh, which is pretty cool. And apparently their performance is really great. Um, although thinking about it, like if you're going to have your user, your IE user install a plugin to view your WebGL content, you might as well make that plugin Chrome frame so that it's so that they get all the other benefits beyond just WebGL. But I think, you know, to be honest, so I maintain this list of polyfills on the Modernizer wiki. And a lot of stuff comes in there that give you functionality of HTML5 stuff and CSS3 stuff. A lot of it's really cool.
Starting point is 00:26:10 Like I like using input type equals range polyfills so that I get a slider in Firefox instead of a not a slider. But the polyfills that I use the most are actually, uh, ECMAScript polyfills. So I really like, uh, function prototype bind and I like, um, my array extras and I like object dot keys, um, and things like that. I end up using those, uh, polyfills quite a bit, uh, more, probably a considerable amount more than the, than the more robust HTML5 and CSS3 ones. You mentioned the input type range. I've found lately I've had to adjust CSS selectors when doing forms and things.
Starting point is 00:26:53 Used to, you could just get by with the input type text and a text area. Now, it seems like you need to select anything that has a type and then opt out of input type button or submit or reset. There's just a growing number of those now. Yeah. Yeah. Styling form controls is really tough. And I mean, that's styling form controls is the reason that, uh, because it is so tough. That's the reason that, that Mozilla has not yet, um, implemented some of the new form types is because they want to make sure that you have the ability to make those look like you want. And so once they figure that out,
Starting point is 00:27:25 then we'll be seeing a few more of those coming into Firefox. So prior to moving to Google, were you a WebKit guy or a Firefox firebug guy? I both. What's the biggest jump moving? I'm assuming at some point you were a firebug. Like most of us started out moving from Firebug as your everyday development tool to WebKit. I'm assuming you're camped out in Chrome for the most part now.
Starting point is 00:27:53 Yeah, yeah. I was an enormous Firebug advocate. I gave presentations on how to use Firebug more effectively, and I collected every single tutorial that was ever posted on Firebug online. I was all about it. Because to be honest, there was a lot of features that people didn't know about in Firebug, and it was incredibly powerful, even three years ago when I was all into it. But I think the way that it's happened for a lot of web developers is they end up switching over to Chrome because, uh, they'd really liked the browsing experience.
Starting point is 00:28:30 And, uh, and then what, since they're already in it, then they open up the dev tools and then they figure out if, if they can make that work. And for a while I came for the JavaScript console, just, I found it the autocomplete a lot better than firebug. I hated the CSS inspection and things that's got a lot better lately yeah uh the one thing that still bugs me and i don't know if it if it's just me is user error what it takes me about 10 clicks to actually select element style we were supposed to click in there to put styling on a particular element over in the inspector. Yeah, it takes a good amount. So yeah, there's a few things that we're thinking about.
Starting point is 00:29:13 One of the things that we're thinking about is, so it certainly has gotten a lot better. Like a year and a half ago, if you said that you hated manipulating styles, I would totally agree with you. But now we have autocomplete on everything and tabbing between property and value is a piece of cake. And a lot of that has gotten quite a bit better from a usability standpoint. One of the things that we're thinking about doing, a small little difference in behavior between what people have seen in Firebug and what we have is that when you're clicking to
Starting point is 00:29:43 either with elements, you're manipulating attribute names and values, or in the styles, you're playing with styles. In Firebug, it's only a single click, and then you're in edit mode. And always in the WebKit Inspector, it's always been double click to enter into edit mode. And I wonder if single click is better um and so we're we're
Starting point is 00:30:08 thinking about kind of experimenting with that and seeing if that makes for a more usable product that's funny you say that because it's it's something that i kind of battle recently i like win said i pretty much camp out in either firefox and or chrome Chrome or Safari and pretty much in a WebKit or a Gecko browser more or less. And I'm using either Firebug or the DevTools in Chrome. And I find that now that you just say that, now I realize why I think Chrome is a little unusual for me is because that one small thing, it's not a huge thing, but I think sometimes I have an element selected, like I have it highlighted in blue, and then I want to jump into an attribute and like a single click should work then.
Starting point is 00:30:46 But this isn't a stage for me to give you feedback on that particular feature, but I do see that disconnect. How much of that is Chrome's influence? How much of it do you share with WebKit and Safari and every other WebKit browser? So the large majority of the commits that are going into the WebKit inspector are coming from the Chrome team right now. But pretty much 95% of their work, the work that that team is doing, is going into the WebKit level. There are a number of features that are specific to Chrome, like our heap snapshots for memory leak detection or the ability to live edit JavaScript is unique to how we have V8 working.
Starting point is 00:31:35 But most, pretty much everything else is happening at the WebKit level, which means that Safari gets that and all the mobile WebKit ports as well. So one of the features that we announced at Google I.O. was remote debugging. So you have the ability to basically your host browser or your client browser can run a little web server, which hosts the dev tools,
Starting point is 00:32:04 and you can open up the um, the dev tools in your desktop machines browser and, and then look at like the network info or like do full script debugging, um, that's happening on your, on your, either your phone or your tablet. So the, yeah, the BlackBerry playbook is already shipping with that. Currently, no other devices are. But if you're on a BlackBerry Playbook, you can totally just use your machine and debug the JavaScript on that tablet, which is really rad. And we're expecting, you know, since it's at the WebKit level, every manufacturer that ships that can have that functionality. So the next year or so, we're going to see a lot more devices with that. Switching gears a little bit to use Wynn's phrase so eloquently.
Starting point is 00:32:55 A little inside joke there. I can tell that you're a little bit into CSS3, at least from what I can tell just from your social profile. Sure. And you've created a few pretty neat tools one css3 please and the other one mother effing text shadow that's a pretty cool little website there and you kind of dive into these fun little ways to uniquely show off some very skilled design talents from what i can see too but these make micro apps look huge yeah i mean this um i like i like this for one of the styles i'm
Starting point is 00:33:26 going to compliment you there but what i want to come into is the state of css3 um and just kind of what is really fun after the people are really just using well what what is over defining in css3 and what is what is to come from css3 uh i think you know so i think you forgot mother effing HSL Which is also pretty rad I really like HSL as a way to pick colors Way better than RGB So check that out if you want Our favorite actually is HSL Picker
Starting point is 00:33:57 I don't know if you've seen that one Whatever That name sucks, man Need some work But anyways Some of the most exciting things are happening That name sucks, man. I need some work. But anyways, some of the most exciting things are happening. Yeah. Because you said that you can't even use HTML5 bullet plate and or do an HTML5 demo without including CSS3.
Starting point is 00:34:25 So there's got to be some fun things that are just being bolted on to the design experience we now have and now are capable of with this brand new tool that's being far more supported than in the past. It was just difficult to even get the most oddities of bugs fixed in your obscure browsers. But it's a whole different world there now. Yeah, totally. And we're finding a lot more bugs, I think. Because the styling possibilities are getting so crazy, you know, like I actually have a fixed landed today and web kit that I've been watching for a while, which was if you put a 2d transform, a scale on an iframe, there's some really weird clipping behavior. Oh yeah. Well, what I had is like, I do all my
Starting point is 00:35:01 slides, my presentations, my slide decks are in HMO five and on each slide, sometimes I would like just iframe in a website and it'd be like talking about, you know, modernizer for instance. So I would have the iframe, but I would want to shrink it down so that it fits inside the slide. So I do a scale like 0.7 or something. And so it looks perfect inside the slide, but there was this weird behavior. Um, so like there are edge case, uh, situations where things don't work the way that you'd expect and those get fixed, but there was this weird behavior. So there are edge case situations where things don't work the way that you'd expect, and those get fixed. But there's a lot of exciting places. One of the things that comes to mind
Starting point is 00:35:31 is Lea Beru's CSS Gradients Gallery, which showcases a lot of gradients that she's made and other CSS experts have been making. In gradients, there's just linear gradients and radial gradients, and yet they're able to make these incredible like plaid patterns and patterns that come from pottery and really impressive stuff and so I really like the people who who decide that they're just going
Starting point is 00:35:56 to take you know a small feature whether it's like box shadows or gradients and like really explore the boundaries of it yeah i was doing that i'm writing a chapter for the the sass book on uh drop shadows and so i was trying to see what shapes i could make so even from one circle i was able to create like the old simon says game via just different color drop shadows yeah i was curious on uh mother effing tech shadow here how come i can only go in one uh one axis what you can go in four axes. Yeah, one at a time. Oh, hit the WTF checkbox. Ah, okay. Well, then, yeah.
Starting point is 00:36:30 Okay, there you go. Okay, nice. Clearly, yeah. Yeah, did you make sure to hit the all the way button? Oh, the rainbows? Yeah. That was nice. And you're also welcome. We have content editable on that text, so you can just click into the text and change it to changelog.
Starting point is 00:36:48 Yeah. That looks pretty good. That's definitely going in the show notes. Oh, yeah. One of the things that I'm really, really excited about in CSS3, or CSS4, actually, is what it's going to be, is filters. Filters are coming in kind of from the SVG side of things, but it's going to be is filters um filters are coming in kind of from the svg side of things but it's going to be really pretty trivial in css so we'll be able to like in regular styles we'll be
Starting point is 00:37:12 able to say like blur uh 20 pixels and we'll get a 20 pixel radius blur on that content which is like blur is something that we wanted in css for a while or like, we'll be able to like desaturate the colors of whatever HTML content that is. Or like, do all sorts of like, the filters that you know from Photoshop, we were able to do in like just a line of CSS. I'm really excited about that stuff. Somewhere the IE team though is laughing at us.
Starting point is 00:37:41 Oh yeah, and their filters? I mean, they were right up. I mean, that API was absolutely horrible, was laughing at us oh yeah and their filters i mean they were they were right i mean that that api was absolutely horrible but true that feature set was super cool there's got to be some you know newbie developer that's getting into this and they're seeing some sort of uh you know polyfill for doing some of those things in older browsers older versions of i and just think to themselves what is direct x yeah there's there's a lot of legacy that's a bad word so on the notion of css3 i think this is kind of cool that you have mother effing tech shadow and you've got css3 please but the first thing that comes to mind
Starting point is 00:38:19 since win just mentioned his sass book he's writing is the fact that we're both just SaaS lovers in general. And these tools are always useful to us, but they don't give us SaaS mix-ins to this stuff. That's what kind of drives me crazy, that all this stuff just spits out as CSS, and it's almost as if the CSS3 world just doesn't appreciate, doesn't look at, doesn't care for what SaaS is doing for CSS3?
Starting point is 00:38:47 Yeah, you know, so I do. Okay. I really like the authoring experience that SAS gives. I love the feature set that Compass provides. I really like authoring in that SAS gives. I love the feature set that compass provides. Um, I really like, uh, authoring in SCSS. And I think that, and, and, and you might've seen that, uh, there's proposals from the WebKit, uh, team to bring a lot of the same types of things of variables and mix-ins, uh, hierarchy, uh, into WebKit's implementation of CSS
Starting point is 00:39:26 and getting that specified so that other browsers can do it. And so there was recently a face-to-face meetup of the CSS working group, and they spent a lot of time talking about if they can make that happen in the standards process. So that's moving ahead. Um, I think part of it, as far as the CSS community getting on adopting SAS and learning how nice it is and how much time it saves is like, you know, people are scared, scared of the command line. I think that like that takes care of pretty much 90% of the problem. Um, but, but, uh, but I totally agree that, um, those tools are extremely valuable, especially for this type of work.
Starting point is 00:40:15 So it sounds like you're a SAS and compass user then. Uh, um, sort of, no, I mean, sort of enough. Yes. Not often, but I would, if I needed to server side code, you sling. Yeah. Uh, Oh, I don't, I don't sling any at all. I know JavaScript and I don't know anything else. Um, not even node. Well, I mean, I could write Node. I've done like three hours worth of Node work. So there's that. But in general, I really like being inside of a browser.
Starting point is 00:40:57 And so that's where I spend my development time. I feel the same way. Switching gears to one other thing, it seems like also with propping up HTML5 bullet plate, you're really about – the core is about standards more or less. And you've got this very cool website I just found because we're doing this interview with you, which is W3Fools. And then not only that, but you also have – what is this one called? It's Isobar?
Starting point is 00:41:25 Yeah, the Isobar Web Standards and Best Practices document. I love this. I mean, is this pretty well kept up and current? Yeah, so that was with my old agency, but they've been maintaining it, and they released a new version of it like two months ago or so. So that's being maintained. That was developed around the same time that the genesis of HTML5 boilerplate
Starting point is 00:41:47 was kind of percolating. And it just has kind of coding guidelines and things that make it easier for a team to kind of write maintainable code because they all kind of follow the same practices. And I think that's wise. But yeah, you know, I think it's important that, more important to me than the semantic class names.
Starting point is 00:42:13 I don't really care for semantic class names a whole lot. I care about, is this maintainable for me in the future? Is this maintainable for the person that takes over? And if I'm developing this on a team, I want to make sure that the team can develop it without asking all sorts of questions and that it makes sense. And so I think a lot of that is documentation
Starting point is 00:42:30 and the spreading of best practices, not only within your team, but of the entire community. Right. Yeah, from your profile, it's linked to as Front End Coding Standards, which I think is maybe a little bit better name than Isovar, but that's the name of the company.
Starting point is 00:42:45 But W3 Schools, I think, I hope nobody listening to this podcast actually uses W3 Schools, but from what you say here that they're in trouble and that they refuse to swap the name because they are not in connection with W3, I think that's just super wild. But, I mean, from a standards point of view, what is it that drives you crazy about people that do things like this or don't even follow standards or just don't have any ideas about what standards are? Like you said, semantic classes. And when people talk standards, that's nine times out of ten what they're talking about is a semantic class name or something like that. Yeah, well, you know, it's really complicated.
Starting point is 00:43:18 So I think a lot of us got into believing in web standards and learned that XHTML was the right way to do things. Tables were terrible. You should write it in XHTML. All your class names should be semantic, those sorts of things. I think that now there's a lot of people finding out that that might not have been the best use of their time. And, and so there's an interesting thing there, uh, where kind of people are running into the reality of what, uh, front end authoring means and what are actual, the consumers of, uh, that, of what we're working on. Um, and so, yeah, so I'm actually really, you know, excited about people doing things the right way and doing things the best way in a way that's time efficient for them and has a big payoff. And so I want to make sure that people are developing in the most effective way.
Starting point is 00:44:15 At the same time, I don't want to see them waste time. So I don't want to see them waste time with bad documentation. And that's how the W3Fools site came about. I should say that W3Schools has gotten better. We kind of were their bug tracker for a good number of months, and so they fixed things up, and now at the bottom of every page on W3Schools is a, if you find an error on this page, please submit this form,
Starting point is 00:44:38 and it's right there on every single page, which is a huge improvement. Before, it was just an email address that was really hard to find. So things actually are better there. At the same time, I'm still a huge proponent of people looking up documentation on Mozilla's Developer Center. I contribute to it almost daily, as do many, many other really smart people. So that's where I think people should get their reference information from. Game for some questions from Twitter? Sure.
Starting point is 00:45:09 These are always interesting. When will Chrome add View Source to the View menu? Joe Devon wants to know. Wow. I guess that makes sense. It's there if you're under Developer. Yeah, I'm looking. You view Developer developer and then
Starting point is 00:45:25 you have three options one of which is view source i i think using a mouse is pretty slow bro it's command alt j right uh command alt u for the for the source view source and then j for the i'm always going to the javascript console exactly so i don't. They're not, is my answer, and learn the keyboard shortcut and stop clicking. Red Dirt JS wants to know if you'll come and speak. That sounds like in the middle of the country somewhere, right? Oklahoma. Cool. It's just north of Texas.
Starting point is 00:46:03 I'm down to come speak as long as I can. Sure. Okay. We'll convey the message that you're down. I'm down. Brian, the coder wants to know who's going to win the GOP nomination. Wow.
Starting point is 00:46:15 Um, uh, uh, wow. Did you guys see that? Ron Paul? Yeah. You guys see what's home girl something O'Donnell-y?
Starting point is 00:46:32 The girl who walked out on Piers Morgan's interview? She was like, I don't like interviews. I'm going to stand up now. I think she's going to win it. Rosie? She's got tact with. Sure. Is that Rosie? Rosie O'Donnell?
Starting point is 00:46:45 No, no, no. Oh, a different one. She's like tact with... Sure. Is that Rosie? Rosie O'Donnell? No, no, no. Oh, a different one. She's like a Delaware Tea Party. She's not actually running. But she's got promise. DJ Combs wants to know, any chance HTML5 canvas CSS sprites will allow native animation?
Starting point is 00:47:09 Adam, you want to take this one he's got a nice uh we may have been rickrolled with this one he includes a youtube link to a mickey mouse video yeah i was i i saw this beforehand i was a little curious i really native web animation right animation, right? I mean, you can, you can animate. So CSS animation, which is in WebKit and now Firefox, uh, you can actually animate a background position of an image sprite and make it animated. And you can like have like a little contra character walking across the screen and he's like walking and you can do it only with CSS. that's pretty cool and that's native web animation of course you can animate on a canvas you can animate uh anything with css transitions so we we've seen web animation for a while now i guess what's the scoop on webM? WebM is... WebM? Dang near killed him.
Starting point is 00:48:11 I don't know. So we have WebM support in Chrome, in Firefox, in Opera. We don't have it in Safari or IE. IE and Safari support H.264. And Chrome still does, actually. But Firefox and Opera do not. And if you're doing video that you want to distribute via HTML5 video, you need to be encoding in those two formats. And those two formats only. And that's just how it you need to be encoding in those two formats and those two formats only.
Starting point is 00:48:47 And that's just how it's going to be. It's like, I don't know, just like make sure that your workflow makes it really efficient to always be encoding to two formats because that's just how it's going to be. Unless you want to like manage the the flash fallback or like or whatever um which is totally an option as well if you want to do that um but yeah or you're not going to get it on ios i suppose so it takes a little bit of work to be honest like um zen coder i know zen coder and there's a few other video serving uh video services that kind of you give it one file and it makes hml5 video work everywhere for you. Those services are actually really nice.
Starting point is 00:49:29 Save you a lot of headaches. It's like web fonts. Web fonts are also really a pain. There's a lot of edge cases. And so using things like Google Web Fonts saves you quite a bit of headaches. So, yeah. So speaking of HTML5 audio and video, what can we expect advancements in the shadow DOM and some of the below the surface things we can style? Yeah. So there's a shadow
Starting point is 00:49:55 DOM set up in WebKit, but right now none of it is really developer-facing at the moment. There is some really exciting stuff going on. It's very much related. It's called the component model. And if you check it out on the What We G, the What Working Groups wiki, you can dig into the component model. And it's kind of a new way of structuring elements into reusable components.
Starting point is 00:50:26 It's kind of what we've always been doing, but it's basically baking it into the browser as a native way to build components. And I think it's really, really exciting. So right now it's being proposed kind of to the standards community. I'd love to see developers take a look into it and see if it makes sense and post their feedback if they think there's, uh, changes that should be made or whatever. Um, but it looks really promising from here and looks like a wise way to move, kind of move the web platform, uh, forward. What about WebKit support for styling those, uh, HTML5 validation bubbles?
Starting point is 00:50:59 Ah, yes. There's a, uh, on the, uh, so the wiki, sorry, the WebKit bug tracker is hosted on track and track has a wiki there. And there's this one page called like styling form controls on the WebKit track wiki. And it has all the details on styling those things. So I know Nathan Smith who made formalize. He was working a lot on those validation things. I pointed him to that page, and he was able to figure out the last of his styling woes. So that's the page that you want to check out. Sadly, I've turned them off on our page just because Firefox doesn't allow you to style them.
Starting point is 00:51:41 Although they do look nicer by default, the black ones on Firefox, the ugly pink things that come back with WebKit. So I've just kind of turned those off for now just because they're not styling. That's fine. To be honest, I'm not too aggressive on adopting HTML5 form validation right now. I think that I would not yet really go all crazy on that just yet. All right. So we're,
Starting point is 00:52:08 we're near the end of our show, which is, has just been a pleasure to have this chat with you about HTML five, CSS three, and all these fun, fun things with browsers and the future more or less. And I particularly liked when you mentioned CSS four. So that was,
Starting point is 00:52:21 I did a back. Yeah, man. CSS level four, man. It's already in draft. It coming there you go so i imagine you have to have some sort of hero out there that you just are either dying to work with on a project or throw up one of these microsites like you do for these fun tools you make like you mentioned uh mother effing hsl and tech shadowing and uh even css3 please. So sites like this are just fun things that you do.
Starting point is 00:52:47 Is there anybody out there that is just a hero to you or somebody that you like to pair with that you can mention here on the show? The person who has been blowing my mind recently is Chris Coyier of CSS Tricks. Chris has just been dominating for the past four years, writing on his blog about totally crazy advanced CSS and also like CSS fundamentals and like tackling the entire spectrum of like, uh, of web design and development professionals. And, um, really just like puts a lot of effort into sharing everything that he learns. And I think it's really inspiring to me
Starting point is 00:53:23 that he's so, um, big into publishing everything that he learns. And I think it's really inspiring to me that he's so big into publishing everything that he learns. That's something that I try and do. And he excels at that. So he is at the top of that list right now. What do you think about that new skin he's got on his site? Oh, yeah, it's hot. I told him that. So when you resize the browser, there's all these kind of transitions when it switches into the media queries. And there's all these kinds of transitions when it like switches into the media queries. And, and there's all these transitions when things kind of rearrange and the search box at the top has a 1.2 second transition as it moves from the left to the top and back again. And I was like, Chris, you really, that's 1.2 seconds is really long. And, and, and he like vetoed it. I told him and he's like, veto. So he's not changing that.
Starting point is 00:54:06 But aside from that one terrible, terrible thing, the site's really hot. It is pretty hot. It uses the new modernizer. It uses Respond. It uses a bunch of tricks from HMPly boilerplate. It's got a lot of good stuff going on inside of it. Good stuff.
Starting point is 00:54:22 Well, I think the other question we asked, and we probably have at least one more second to do it, is there anything besides HTML5, CSS3, and the common things that you mentioned that you're well known for? Is there anything else out there in open source that if you had extra time or a free moment, you're just dying to play with
Starting point is 00:54:38 that we haven't talked about today? Anything out there in open source that I'm dying to play with? Sass, Compass Yes, both of those I would also point out that one of the projects that I don't talk about too much That I'm really keen on I have a repo on GitHub
Starting point is 00:55:00 It's called LazyWebRequests And it's just things that would be really helpful for the developer community if they existed, like a screenshotting service that you could just pass it like, um, screenshot thing.com slash, and then you pass it a URL and you like say what the width is and then it gives you a screenshot back in that width, and it takes a screenshot with a really good browser so it can handle everything. There's Jeffrey Grossenbach doing that on the Peep Code blog, except he's doing it in the command line with the WebKit to PNG.
Starting point is 00:55:37 Okay. Yeah. Well, that uses pretty old legacy stuff. I posted this as something on Lazy Web Requests, and someone actually made it with PhantomJS and Node like three days ago. So that idea is already taken. But on the repo is a bunch of other stuff
Starting point is 00:55:57 that would really help everyone. So it's kind of like a bunch of weekend projects. And what's the repo called again? Lazy Web Requests? Yeah, yeah. And so there's a lot of good stuff in there, and a lot of the projects. And what's the repo called again? Lazy Web Requests? Yeah, yeah. And so there's a lot of good stuff in there, and a lot of the projects have already been, people have taken them on and basically finished them.
Starting point is 00:56:12 And so I kind of have to clear out the bug tracker because a lot of the things are done. But there's still plenty of cool stuff in there. So if you're looking for projects. Because young programmers, a lot of times, when we first get into this, you're like, I've got all this energy. I feel like I've got some skills, but what do I make?
Starting point is 00:56:28 And as I get older, I'm like, when do I have time to do half the ideas I come up with? This is awesome. And it's actually all issue-based, and they can respond to it and do a fork and check it in. It closes it out. Yep. I love the way that GitHub has grown. I mean, give them more kudos, why don't we? But I know for a while in our day job,
Starting point is 00:56:49 we used, at least the first month, we used their issue tracking in lieu of deciding to move to Pivotal Tracker. And it worked well for us. It did its job and on commit closing issues. And they've just done a phenomenal job with this in general. Very cool. Well, Paul, I think I speak for Wynn
Starting point is 00:57:06 and probably everybody listening to this podcast. We certainly appreciate the efforts that you put into your work and your passion around it and we appreciate the mother-effing things that you do, whatever they might be out there. Just thanks for coming on the show. Cool, yeah. Thanks a lot, guys. This has been awesome

There aren't comments yet for this episode. Click on any sentence in the transcript to leave a comment.