414: The Front-End Ceiling, Emacs, Permissions, and Writing Better Words

Download MP3

We're back doing a Rapidfire through your questions including: Is there a way to control text in the prompt for user permissions? Have we tried Emacs? How do you write better words? When is it appropriate to add a new framework to your resume? Do you think there is a front end ceiling?



Chris Coyier and Dave Rupert in silly sunglasses and a sign that says Shawp Tawlkk Shough DOT COM

Chris Coyier and Dave Rupert

This episode is with just Chris & Dave, ShopTalk Show's hosts. Chris is the co-founder of CodePen and creator of CSS-Tricks, and Dave is lead developer at Paravel.

Time Jump Links

  • 01:14 Is there any way to control the text in the prompt the the browser displays when asking the user to grant permission?
  • 14:17 Sponsor: WooCommerce
  • 16:04 Have you ever forayed into using Emacs?
  • 27:30 Writing more better words
  • 42:12 Sponsor: AWS Amplify
  • 44:03 When do you think it is appropriate for someone to add a new framework to their resume?
  • 50:37 Do you think there is a "Front-End Ceiling"?


[Banjo music]

MANTRA: Just Build Websites!

Dave Rupert: Hey there, Shop-o-maniacs. You're listening to another episode of the ShopTalk Show, a podcast all about front-end Web design and development. I am Dave Rupert and with me is Chris Coyier. Hey, Chris. How are you?

Chris Coyier: Oh, I'm doing darn good, you know, for the world's reopening party. Now the world's, I should say. The world is in very different places, but our little town is a little hyper-excited about having some things open again.

Dave: I think hyper-anxious would describe my current point of view but, hey, that's fine. We'll get through it, hopefully.


Chris: Speaking of where you are in the world, we're going to do a little RapidFire here. The first question happens to be the fact about how you can ask a browser where you are in the world. Did you know that?

Dave: Oh, hey! I've used it before, so I have a little experience in this domain, but Shane O'Sullivan writes in. "Hey, homies!" Thank you.

Chris: [Laughter]

Dave: "I got used to navigator.geolocation. I got to use navigator.geolocation for the first time today and it made me wonder. Is there any way to control the test in the prompt the browser displays when asking the user to grant permission? It would be very nice to let the user know why we want to know where they are, sort of like native apps do."

Ahh. Maybe you're familiar, Chris. Have you ever messed with geolocation?

Chris: Only in the days of -- I don't know what I mean by days. You know when it first started coming on the scene, I think it was pointed to as a really cool thing for progressive enhancement. It's like this API. What could you do if you had it? everybody was coding around that, like, let's code up a form that asks people where they live and then we'll show them the Home Depot that's nearest them. But you could enhance it by using navigator.geolocation or the geolocation API to just say, "Hey, can you just let me look quick and I'll tell you where you are in the world? Then we'll show you the Home Depot," without you having to type in a single word there.

In order for that to work, though, there needs to be some level of trust. For people that don't want their browser or the person, the companies, URLs, and IP addresses that that browser is talking to, to be able to have that information, which is very legit, the browser can't just cough up that information without asking you if it's okay. There's an "if it's okay" prompt that comes up.

I believe that's what Shane is asking about. Can you control what that "Is this okay?" prompt says? I don't know the answer, but I would bet you $50, easily, that you can't.

Dave: Yeah, I don't think you can. You can see the security vector here is very, like, it has to be the browser's text, like very predictable because, otherwise, it would be like, "Hey, do you like cool stuff?" You're like, "Yeah!"

Chris: Click yes.

Dave: Click yes.

Chris: Yeah.

Dave: Or, "Are you a bad person?" No, I'm not. "Oh, okay. Great. Cool. I have your private, personal geolocation information in my stalker computer."

Chris: The middle ground would be like you could add some prompt and the browser would show its default text too. It would be like bonus text or something.

Dave: Right.

Chris: To some degree it's like, you can give developers things they can screw up. You can screw up anything in programming, so what's the difference here? Well, the difference here is, it would only be abused.

Dave: Oh, only.

Chris: You know.

Dave: People make fake notification dropdowns. That's the same permission system.

Chris: Yeah.

Dave: It's like, "Hey, do you want to get cool updates, my guy?" You're like, "Yeah, I like cool updates." It's like, "Cool. I'm going to bother you every 22 seconds with a new Business Insider article."

Chris: Yeah. I think the best you can do here is the design of the site itself and be like, "Hey, the site is about to pop up a thing that asks you for permission. We're doing that because we're Home Depot and we want to help you find our store. If you want extra help there, click okay. Just know that you're sharing your location with us and that we don't do anything with that data. We don't store it or anything." You know. It's got to be baked into the copy and the UX of the website.

But the actual control that the browser pops up, like I said, I can't guarantee this because I'm not looking at the API docs right now, but no way. No way are they letting you change that.


Dave: Yeah, it would be cool if there was a prompts API or something. You know maybe that's something the browsers could do one day where you could add, like, chuck in additional text. But even that, are people really going to be like, "We're going to store your location data forever, every time you log into the website"? No one is going to offer that little factoid. It's a vector for social engineering or just straight up lying your way into stealing people's data.

It used to be you could use geolocation without GPS. The same with the gyroscope and stuff like that. Now you have to ask permission for all that stuff, so you don't just get it. You used to have gyroscope access, but then advertisers were like--

Chris: I'd say I'm 50/50 on websites when they ask for stuff. If it's notification related, it's an auto-no. I know you're on Windows now, David. The latest update of Mac OS is really strict about notifications.

Dave: Mm-hmm. Mm-hmm.

Chris: Catalina, it's so satisfying to update because all these apps were like, "Can we show you stuff? Can we show you stuff? Can we show you stuff?" I was like, no, no, no, no, no, no, no. Now, months later, after that upgrade, I'm just a happier person.

Dave: Yeah.

Chris: You know?

Dave: Just living life.

Chris: Forget your updates. I do not want them.

Dave: Not getting growled at.

Chris: See how I am?

Dave: Yeah. I do not want your notifications, Sam I am. I would not eat them in a can.

Yeah, I have quite -- I guess my mail app just notified me. It's just getting mad at me. Yeah, notifications are so distracting. I took them off my phone. Every app, I'm like, no.

Even geolocation, I'll just say no. I'm looking, checking inventory at the local Best Buy, Target, or whatever. It's like, "No, you don't need to know my house." I like Target. I like Best Buy, but I'm not going to give you my house. I'll give you my zip code. It's okay if you know a customer is in your zip code, but you don't need to know my exact house.

Chris: Yeah.

Dave: I don't need that.

Chris: That would be the only time I would and even then it's 50/50. It just depends on if I'm feeling extraordinarily lazy and click that button.

Dave: Yeah.

Chris: But that's it.

Dave: It's like I'll give it to Uber or Lyft, my exact location.

Chris: Yeah.

Dave: Which is kind of just to use the thing or Google Maps. But then they do stuff with it. They're going to do stuff with your data. I tell you what.

Chris: [Laughter] I know. That's the thing. It's like the chances of Home Depot doing something nefarious with your location data, you know, I'm not very tinfoil hat-y about that. It's probably pretty low.

Dave: [Laughter]

Chris: You know, like, whatever. They just want to fricken' get you to Home Depot.

Dave: Like tenpenny nails are very popular on this block.


Dave: We ran the data and this block is very into 2x4s.

Chris: But at the same time, their security team isn't probably super world-class either. Sorry. Maybe it is, Home Depot, but I doubt it. Sorry. Your core business is selling home stuff, not Web security.

Dave: Well, yeah. The incentives are to sell you more things. You know what I mean? You've got to look at that stuff. They care more about selling you more things than they do protecting your personal privacy, unfortunately.

Chris: Yeah, isn't that wild? You do got to follow the money there and see the incentives. That's why sometimes -- it's interesting to look at Apple and I'm sure they've screwed up on plenty of stuff, but it's easier to see why they are actually incentivized to make things secure and to protect their data because they're just not in the advertising business.

Dave: Right.

Chris: They sell no personal data. They're just not in that business, so it actually behooves them to lock that stuff down more and that's nice to know. It's kind of cool.

Chris: All right, well--

Dave: Yeah, hopefully, that helps, Shane. I agree it would be cool to customize it and be like, "We're trying to give you relevant data," or something. You know, whatever.

Chris: Yeah, it could be a chance to beg. "Show me!"

Dave: Yeah, I mean think about Craig's List. It's like you go to Craig's List and it's like, "In Austin" or whatever. You're like, "Yeah, but which hour away part of Austin are you talking about?"

Chris: [Laughter]

Dave: It would be cool to sort by distance or something like that. There's cool … Daytrip.


Chris: Craig's List just knows somehow. It must be IP related. Oh, yeah, Daytrip.

Dave: Yeah. Yeah, we use it in Daytrip to get the actual distance away. Actually, we do a little math because you can do the exact location like Google Maps, but that's an expensive bunch of API calls to go, like, "Oh, we're one street over, one street up, one street over," to get the exact distance. Then if you go as the crow flies, just a diagonal line, that's going to be way too short.

I read some papers. You can kind of, depending on how rural or whatever, it's usually distance times 1.4 or 1.8 or whatever. It does kind of ballpark the actual distance. Anyway, you can use that.

I think you mentioned IP addresses. You can use these IP address services to kind of ballpark where they are. I know Best Buy does that to me and they think I'm in South Austin, which is fine. I don't mind if they think I'm in the wrong place, but I do have to reset my store every time. You have these tradeoffs, but you can ballpark with like an IP block.

Chris: Yeah. The IP being that you don't have to ask anything. You just can do it.

Dave: You don't. Yeah.

Chris: Yeah.

Dave: It's public-ish information.

Chris: You know it does get creepy. Once in awhile, I'll go to some website and there'll be one of those things in the bottom right corner. I don't know. What are we calling those, like, reverse crawlers or gravity crawlers?

Dave: Toast. Toast.

Chris: Okay.

Dave: Aren't they the Toasts?

Chris: I think of Toast as the upper right, but I guess you can position them anywhere you want. But, like, "Do you want to chat?"

Dave: Oh, that thing.

Chris: Or, like, "Hey! Can we help you?" There must be some double IP plus intelligence because I'll go to one once in awhile and it'll be like, "Hey, Craft CMS. How are you doing? Good to see you again?"

Dave: Oh!

Chris: I'll be like, hmmm, because they must know that for awhile we had the same IP address when we shared an office, so they match IP to business name too. I'm like, hmm, I didn't type nothing into this website and you're guessing that I'm Craft? That's--

Dave: I've worked with a company that leveraged those services before. It's -- yeah.

Chris: [Laughter]

Dave: They did not make the service; they leveraged it. Yeah, those services exist. Yeah, you can abstract where it goes from there but if you're like, every time Chris visits the website they're like, "Ooh, another Craft CMS-er just visited. Oooh-hoo. Guess we're getting close to sales." You've got to be careful out there. It's enough to get you a VPN.


Dave: Just right there, you're just like, I'm using a VPN.

Chris: Do you VPN?

Dave: No. Occasionally, clients will have some. That's funny too. I had a client based in Kentucky - Louisville, Kentucky.

Chris: Yeah.

Dave: And so, all my YouTube ads are for Louisville.


Dave: I get Louisville politicians and I'm just like, this couldn't be more off but they think I'm pretty Kentucky.

Chris: The algorithms are a real issue.

Dave: I think even my Twitter trending topics are all skewed to Louisvillians' or Kentuckians' political perspectives.

Chris: That's great. I like that town.

Dave: It's a good town - nice, little town. Good whiskey. Decent barbeque.

Chris: I have one, but only because we do one at work. We just need to for various reasons and stuff. It doesn't send all Internet traffic through it. It just sends our work stuff through it. Yeah, we could configure that. We just didn't. I don't know. I don't know. I haven't been compelled to use a VPN for all things just yet.

Dave: Yeah, well, it depends. Different security, different ways.


[Banjo music starts]

Chris: This episode of ShopTalk Show was brought to you in part by WooCommerce. WooCommerce is a plugin for WordPress that brings all the e-commerce abilities to WordPress. It's free and open-source, which is pretty cool, so that makes it super popular, probably the most popular way to sell things online in the world. I use it. I think it's awesome.

There's the ability to sell things on a website and then there is like, okay, now I've done that. now I need to do marketing. Now I need to get people to this site. I need to do all the responsible stuff to keep the juices flowing in a store like this.

Marketing is a big deal, so this is a fairly new landing page for them that's super useful, A nice URL, huh? Go there and look at the kinds of things you can do with WooCommerce with marketing.

For one thing, you can do coupons. Coupons is a part of marketing. Coupons draw people to the store. People are obsessed with coupons. You know that. It's just built into WooCommerce, so you can learn about using coupons, setting them up, and getting them…. That's nothing. That's still free.

The way that WooCommerce is a business is that some of the add-ons for WooCommerce are paid. For example, let's say you want to have free gifts. You want to offer free gifts to your customers for making purchases in the shop. That's a plugin that you can buy from WooCommerce. It's $49 and it's offered right through WooCommerce.

That's how WooCommerce works, right? There's certain functionality that's above and beyond the already robust functionality of WooCommerce that you pay for. The gift plugin is one of those.

If you want to take money with Stripe, that's a free plugin, but there might be other payment-related things that are up and over.

You want to have a point system, like give points to your customers for their purchases and they can spend those points? That's a plugin. That happens to be a paid one that you can buy. All this is part of marketing.

Email is a massive part of marketing. There are all sorts of email tools that go above and beyond what WooCommerce already does with emails. Get it all hooked up to MailChimp.

Do something like recovering abandoned carts. That's a huge one for e-commerce, right? People put some stuff in the cart and they got cold feet, they got distracted, they forget, or whatever. Let them know. Be like, "Hey, you put this stuff in your cart but you didn't check out." Just let them know.

It's the type of thing that is super effective because people don't generally mind. They'd be like, "Oh, yeah, I did do that." Or they can be like, "Yeah, I know. I left you." Archive email. No big deal.

Okay, so WooCommerce, marketing, it's a thing. Awesome. Check it out.

[Banjo music stops]


Chris: Code Rufkins writes in. He's wondering if we've ever forayed into Emacs and, if so, what was your experience like?

Dave: Well, Code, if this is your real name, you are in the right business.


Dave: I have never used Emacs on purpose. I've used Vim.

Chris: Yeah.

Dave: I've used Nano because Vim didn't work in my Visual Studio code. It doesn't work that well in there, so I just used Nano instead. Emacs, I think I've tried before but it wasn't my thing. Yeah, I don't think I've really used it. How about you, Chris?

Chris: Never once. Never once have my keys touched a keyboard in which the Emacs was activated. Vim, of course, because once in awhile it comes up. Your SSH'ed into something or whatever. I get that was the original heart of Vim.

Then I know some people that picked it because of that, because they spend so much time SSH'ing into servers and doing things that having the rest of the code that they edit in their life also be in Vim felt natural to them and they're like, you know, "Why learn two things when I'm already comfortable that way?"

But then I get the spirit that the real Vim lovers out there love it because of how powerful it is, how there are these two different modes, the insert and not insert, and there are just a zillion key commands for shuffling text around and stuff. Once in awhile, I'll see somebody that is very good at Vim and singing the praises of Vim and be like, "That's neat." You know?

All of us do so much typing and the manipulation of code that it feels like the fundamentals. It feels like you're practicing your dribbling or whatever. We're all watching The Last Dance, right? It's so good. Have you seen it? No?

Dave: No, but I've heard about it. I've heard.

Chris: Yeah. [Laughter]

Dave: Yeah.

Chris: But it's like, you know-- Then I get over it. Then I don't, so I don't use Vim either. Sorry to any super Vim lovers out there. I know there are a lot of you.

It seems like Vim and Emacs are in the same category, right? A little bit. I know that they have different approaches and stuff, but they're for deep text editing nerds and I always felt pretty powerful anyway. It doesn't feel like a limitation to me, how I write code.

Dave: Yeah, so I think knowing a command-line base, and Emacs should say -- and Vim as well with Neo Vim, you can get a downloadable, executable app or exe that has a little bit of a GUI or whatever. Those things exist, but I think we're talking primarily command-line usage.

I think knowing how to use one is a skill because you're going to run into that and you have to use it at some point. Like you're saying, your SSH'ing some box that's breaking or running out of memory and you have to restart it every two days or whatever.

There are just things you have to do as part of our jobs to get into a server and do something. I think that's something you have to learn how to do. Editing config files, I don't want to spin up. I can just edit a config file or a Bash RC or something like that.

Chris: Yep.

Dave: I think you need to know how to do that and have that as a skill. I don't know why. Maybe there are good reasons on Emacs. I know it's quite a holy war, but I just don't know why.

I have decent feelings about Vim. I've never set it up, though. I know Andy Bell and lots of other people, like a lot, a lot of people have.

Chris: Doesn't it work in VS Code? The fact that that is true, that's a whole other ballgame then, right? Then you can bring your Vim.

Dave: Yeah, you can get key bindings over from VS Code to match the Vim bindings and stuff like that. I think people who have their dotfiles all set up and just have fully tweaked out their Vim setups, I think that's very inspiring. I wish I had that, but I just don't. I don't want to spend time.

People would probably laugh at me for even my VS Code setup because it's so basic. [Laughter] I install plugins I need, but I'm not the artisanal VS coder.

Chris: Mm-hmm.

Dave: I'm not writing my own themes or anything.

Chris: I wanted to be for a minute. I signed up for some newsletter that was supposed to teach you how to get a little Zen with your VS Code. The first couple of ones were really about ripping everything down.

Dave: Yeah.

Chris: Just very few sidebars, headers and footers, UI, and anything. The end result looked neat as a screenshot. Then as I started to do it, the vibe of it was, well, we're ripping this UI down so, now, if you want to use any of what that UI offered, you have to set up some bespoke key commands to bring it back. I was like, oh, I'm worried about my muscle memory there. I'm worried.

Dave: Yeah.

Chris: Then I switched to some other computer and those aren't there and whatever. Sometimes it's nice to run a stock machine, you know, as they say.

Dave: Yeah. Yeah.

Chris: Try not to get too fancy because that way you need to pop to some other machine or whatever or things change in your life; it doesn't become a massive pain in the butt otherwise. I feel the same here. I'm different than you. I think I probably have a good amount of plugins. Once in awhile, I'm compelled to be like, "What are people using? I want rainbow brackets." You know?

Dave: [Laughter] Yeah.

Chris: I get the rainbow brackets going. Other than that, I draw the line at too extreme of modifications.


Dave: Probably my Achilles heel, and I'm just really discrediting the ShopTalk Show here, is between machines - no consistency. I'll have some plugins over here, a different theme over here.

Chris: Yeah.

Dave: It's a wasteland, dude. It's bad. Then even per project, some projects will have a proper editor config with two spaces or two tab spaces. I save. It autoformats.

Other projects, nothing happens, dude. I can type all the garbage I want. I have no common thread, you know, and I'm trying to figure out the linting. I'm trying to self-enforce better linting on all projects. That's something I have to do. You know that's time. It takes setup.

Chris: It does. It does.

Dave: Every time you hop into one you're like, "I'm going to do it a little better this time." [Laughter] Then you spend two days. You're like, "What did I do? I did nothing and now I can't select text," so I don't know what I did.

Chris: [Laughter]

Dave: But that's where I'm at.

Chris: The worst setup you can be is -- I feel like, any time you change anything like that, you've got to take the time to run all the same crap over your whole project and have it all fixed up. Then commit that and say, "This is my--whatever--lintation fix. I know linting is a little different than auto-formatting kind of stuff because linting is trying to tell you about problems and stuff.

Dave: But it's that whole system. It's style lint, ES lint.

Chris: Yeah.

Dave: Prettier.

Chris: Prettier, yeah.

Dave: Getting it all to just, on save, beautify. Right?

Chris: Yeah. But then if it's a little off, then you're the guy who opens up a file to change a typo and it changes the white space in the document because your setup is a little bit different. To me, it's not okay. I don't want to see your gnarly ass code commit.

It depends on the kind of project you're on because I just did some commits to the ShopTalk Show website where that happened because I had activated some format PHP in HTML thing. The more you work in JSX, which I work in a lot, the autoformatting of that HTML in there does great. It does a perfect job in Prettier. JSX is a first-class citizen of Prettier.

Then you move to something where your CSS is formatted, your JS is formatted, but your HTML isn't anymore because, to be honest, autoformatting HTML is just a harder problem because white space matters in weird ways in HTML that you don't know. You know what I mean, right?

Dave: LIs.

Chris: Sometimes a space matters. LI is a big one. I want it, so I install crappier plugins to do it. Even my ERBs--

Dave: You go to back -- you're in the--

Chris: Yeah.

Dave: You went behind the curtain. You're in the backroom.

Chris: It's bit me now like three times, this PHP one, just terrible. It didn't deal with these tagged literal things the way I wanted it to. PHP has a version of template literals. Did you know that? You have to use three angle brackets in a row.

Dave: Hell, yeah. Yeah, yeah. Okay.

Chris: Three angle brackets in a row and then you give it a name. Then you have to say "end" and then those three digits or whatever. It's a way to just -- you know, template literals are great.

Dave: Yeah.

Chris: Rather than string concatenation, which is just the worst in PHP or JavaScript. But my ERBs aren't autoformatted either in Rails and it just annoys me after a while, but there just is no good solution out there.

Dave: There's not.

Chris: Please write in if you have a perfect autoformatting ERB situation.

This PHP one, it does okay-ish with the HTML but then it has opinions about how your PHP should be formatted. It's weird. It does the one where, like, the function name and then it opens the curly brace for the function on the next line. I hate that.

Dave: Oh, yeah.

Chris: That's my least favorite. [Laughter]

Dave: Oh, yes. Uninstall. Just immediately uninstall.

Chris: Yeah, there are no options, so that's kind of a goner, but it broke the template literals, too. It literally -- my server is really funky with how it wants those formatted.

Dave: Man, there's so much here. I have so many stories.

Chris: [Laughter]


Dave: This is just a well. This is Dave Rupert's zone. Yesterday--

Chris: Yeah.

Dave: Yesterday, I'm making a little Nuxt app at Paravel. All my deep links were dead, so you'd go to whatever pages/1 and just nothing. Nothing shows up. You're like, well, certainly this works, right? Nuxt would not ship this broken or whatever, right? Right? Right?

Well, it turned out, when you use the router, it passes the ID as an integer. Okay?

Chris: Yep.

Dave: But then when I was like, okay, now get all my posts or pages and then find where page_id=params_id.

Chris: Mm-hmm.

Dave: When it was going through the router as an integer because my was an integer, it was like, "Yeah, thumbs up, I got it." But when you direct link to it, the params ID, because it was in a URL, was a string.

Chris: Hmm.

Dave: Then my linter was like, "Oh, we don't do double equals. We're a sophisticated JavaScripter."

Chris: A triple equals.

Dave: We do triple equals in this house and I said, "Okay, well, we do triple equals." That broke my deep linking because now it was comparing an integer to a string.

Chris: Oh, my god. And you didn't parse it or whatever because why would you.

Dave: Why would you? But I just ended up doing dot to string on both of them because it's the easiest thing.

Chris: Oh! [Gasp]

Dave: I did a bad to make the parser happen.

Chris: This is funny. Alex called that acquiescing to the linter. Yeah.

Dave: Yeah.

Chris: Yeah, acquiesce is the word there where you write code that you wouldn't otherwise just to pacify this stupid linter. Just get it to do what you want.

It bugs me to some degree, though. That's not the code I would have wrote.

Dave: Yeah. No, and I talked to Eduardo from Vue. It's fixed in Vue Router 4, or whatever. It's always going to be a string because params -- URLs are strings and params are strings.

Yeah, that's a hard thing to test, too. It's like, go to this -- to write a test for that. It only works when you go straight to a URL. Anyway, that blew my mind, but I fixed it. Now we have deep links in the app. It's like, great.

Then the other -- oh, man. I have so many stories, but that's my most recent one. I'll stop there. Getting things set up is just so tough and, you're right, there's no ERB linter that works. It just--

Chris: No, and definitely not PHP and HTML.

Dave: It crushes the whole thing.

Chris: Yeah, but there are Ruby ones. I run RuboCop on Ruby and it's fine. It's a little slow but it's fine.

Dave: Is it written in Ruby? It's probably written in Ruby.


Chris: Yeah, probably. Yeah. It yells at you about good stuff. I'd say that, for the most part, it's like, "Oh, that actually is not how I should have written that." It's good at teaching you Ruby.

Dave: Mm-hmm.

Chris: But then once in a while, it's like, "That string is too long." You're like, "I don't care."

Dave: Yeah.

Chris: Who cares? You know?


Dave: Yeah. Well, and so kind of bringing it back to this Emacs thing, we're griping about our editors or whatever and our plugins yelling at us, but I don't know if I could do a command-line only thing because I have a lot of weird plugins I use in my editor. I use a grammar one called Write Good for blog posts.

Chris: Oh, yeah?

Dave: My grammar is terrible, but it's called Write Good and it's a linter, so it'll give you a green grammar squiggly. It's like, "This is passive voice. You shouldn't use that."

Chris: Wow!

Dave: Yeah. Write Good Linter.

Chris: I've got to look at that one.

Dave: Spellcheck, stuff like that, I use that all the time and I don't know if I could easily get a similar environment in Vim. Maybe it's totally possible.

Chris: I wish that it was more native in VS Code, like when you spelled something wrong it would just have the regular squiggles like a text area would have on a browser or something. But it doesn't and, if you don't know that and don't have anything installed, you're really susceptible to copy typos, which is a problem.

Dave: Mm-hmm.

Chris: I have one that's okay, but the only indication is there's a little lightbulb in the gutter. You have to know to click the lightbulb to fix the typo or whatever, which I don't. That's what I mean by not native. I don't really like that. It'll be interesting to see what this Write Good.

Dave: Write Good Linter, man, I like it. It's almost like a Grammarly in your text editor.

Chris: Yeah.

Dave: It only works on Markdown files or only scopes to Markdown files, so that's kind of nice.

Chris: Oh…

Dave: One other thing I do, and this is a hack -- do you want to hear my cool hack?

Chris: Mm-hmm.

Dave: I'm not good at grammar. Don't get me wrong. I'll pull up my post, my draft in Edge. Edge has this thing called Read Aloud. You right-click a word in Read Aloud and it'll read your post back to you using--it's an AI--a voice, like a robot voice or whatever, but it's a very humanized robot voice.

I'll have the browser read my post back to me and that helps me catch these really bad misspellings, sometimes. Not all the time. It has me catch pretty obvious -- hearing it spoken out loud catches pretty obvious grammar errors.

Chris: I like that. I think I get worse over time in that stuff. I had a day where I really had to almost sit down and breathe. I had three typos that weren't just typos but that impacted, that made me really look dumb and bad.

Dave: Yeah.

Chris: I was like, "Oh, my god. I need to start looking at what I fricken' write before I hit return."

Dave: Yeah, I do push posts out and then tweet and then go through a--I'm just going to fix things--process. If you ever want the good version, don't click my article right when I post it. Wait about 20 minutes.


Chris: Yeah, that's cool.

Dave: That would be my advice.

Chris: Edge, that's a cool feature of Edge. We're definitely in that mode where Microsoft needs to be evolving and doing stuff like that a lot.

Dave: Yeah.

Chris: Otherwise, the reasons to use Edge are going to slip away. Maybe not for you, but I think for a lot of us it's like, "Why? It's just a slapper around Chrome. Why bother?"

Dave: Yeah, you need to find the -- these browsers are going to have to differentiate. I like this Read Aloud feature. It's like the killer feature for me. It has a built-in reader. I'm not an Edge -- this isn't an Edge commercial.

Chris: No but look. I just saw a post….

Dave: A built-in reader mode, which not all browsers have. It has this collections feature I don't really use. What's my other favorite feature? I don't know. I forget. [Laughter] It has a lot of good features.

Chris: Well, there's a blog post just from the other day. Everything new from Microsoft Edge at Build. Build is happening now, right?

Dave: Mm-hmm. Yeah.

Chris: Build is their big conference. The blog post is -- blog posts like this aren't for one person. They're for lots of people, so maybe some people can read this blog post and be like, "Oh, holy crap. That's awesome." I go through and am like, "I don't see anything in here that I care about."

Dave: [Laughter]

Chris: Nothing. You know?


Dave: There's one feature in there. I know the post you're talking about. It's the switch profiles feature.

Chris: Mm-hmm.

Dave: You know how in Chrome or any browser, you have your little head icon and you click it. You could be, "Login as," whatever -- my … account. [Laughter] Now all your browsing is in your other account, right?

Chris: [Laughter] Uh-huh. PG-14.

Dave: Yeah. It's your work account or your normal account, usually. Right?

What this has, because it's Microsoft, it has a lot of Active Directory kind of tuning. If you have ever worked with a company where everything goes through Active Directory, like a lot of enterprise companies do and a lot of my clients do, you can actually switch to the profile to go to the internal page that you need to see or your internal whatever. Elysian uses Active Directory or can work with that. Office 365--

Chris: Can you do it per tab? That'd be kind of cool, wouldn't it?

Dave: You can do it per tab but what's neat about this switch profiles is it'll actually detect like, "Hey, it looks like you're trying to sign in to this instance but this other profile is the instance for that domain."

If I just type whatever, Azure or something, it'll be like, "Oh, do you want to use the enterprise account that you have?"

Chris: Oh!

Dave: "Would you rather use that?"

Chris: Props. Nice.

Dave: It'll pop up a little dialog and it's saving me 100 minutes a week just from like, "Oh, shoot. I've got to switch profiles, open up a new thing, copy/paste that URL or go back to the email program and click the link." It's saving me a lot - a lot of effort and stuff like that. It's really cool if you have Active Directory. If you don't have Active Directory needs, it may not be useful for you but I know a lot of people do. A lot of people, their work, company, or whatever has that all locked down so you have to be all signed in for all that all the time. Anyway, it works really well.

Chris: What do you think the vibe is over there? It used to be its own engine, which needed a whole slew of employees to work on it. You know? Now we're, what, a year later or two after the announcement -- not two, but something.

Dave: Yeah.

Chris: The vibe at the time was, "Oh, this is just only good. Nobody is losing their job. Everybody is just going to keep working on browsers. It's just only going to be better for it."

I guess it is, right? I mean I don't know. Aside from the browser diversity things, which we had probably too many shows on-- [Laughter]

Dave: Yeah.

Chris: --what's the vibe now, separated from this? Is market share up? Did no one lose their job? Is everyone just committing to the Chromium project and that's just happening?

We can just ask, you know, get a guest on or something. But it's like, what's your vibe from the outside? You know?


Dave: I think we should get somebody to just ask and get the official point of view. I watched some of that Build conference. I do know that Edge has committed an enormous amount of commits to the Chromium engine, like fixing things.

Chris: Yeah.

Dave: Things that, I guess, were never prioritized.

Chris: That's the best possible outcome here, I think.

Dave: I was going to try to find it because I feel like there's a blog post or something somewhere, like that one you were referencing. It's like an enormous amount of commits. I want to say 300 or 3,000. I know those are very different numbers, but it was like--

Here. Yeah, 3,000 commits have been made to Chromium since 2018, so 3,000 commits landed in Chrome. That's a lot. If you even just divide that by two years, that's dozens of commits a month.

Chris: And if a lot of them were things that Edge did well and Chrome didn't, that'd be kind of rad. That was the loss is that Edge was the leader in some regards, in a few things, and if those things could be brought over then that's kind of great, you know.

Dave: I think they're doing that and then even Microsoft just through Satya and stuff has a big focus on accessibility. I think they're prioritizing that work pretty well, like high contrast mode and things like that. Those sorts of specs and specifications are kind of being worked on.

Chris: Yeah, cool.

Dave: That's another trick, too. I think we learned with Brian Kardell and stuff like that. It's not just like, "I have an idea. I'm going to put it in the browser." You've got to get a little bit of consensus to put stuff in the browser. Jen Simmons would say the same thing.

Chris: We started the show with talking a little bit about the "follow the money" kind of thing. Where is the incentive? I guess that's what I'm latching onto is why do they -- what is Microsoft's incentive anymore? Why do they even care about this?

Dave: See, I don't know that answer at all. I think, from an outside perspective, they've always had a browser. I think that's something.

Chris: Right. It'd be way too weird for them to not have one. [Laughter]

Dave: Wouldn't it?

Chris: That's not even an option.

Dave: Or like enterprise customers probably demand they have one or something.

Chris: Yeah.

Dave: Otherwise--

Chris: It's the worst look in the world to be like, "Oh, no, we don't even have a browser. Do you want to use a browser? Just use Google." Because there's some pretty generally wide mistrust of Google, I would say there's some market share of Edge probably is just the fact that it isn't Google.

Dave: Yeah, and I do know that they rip some Google-y pieces out, but it's like Play Store and Google Talk or whatever APIs and stuff like that.

Chris: Yeah.

Dave: You know there's -- yeah, again, I'm not the person to talk to, but I am just an Edge user. I'd be curious to see and talk to somebody and see what kind of the sitch is; see how things are moving forward there.


[Banjo music starts]

Chris: This episode of ShopTalk Show is brought to you in part by AWS Amplify. You know AWS, Amazon Web Services. It powers most of the Internet, it feels like.

There are a ton of things that go in the AWS bucket like EC2 allows you to spin up servers of your choice and has all kinds of configuration, S3 is for file storage, and Lambdas is for running cloud functions - all kinds of stuff that, individually, you can set up, use, and are great, but there's so much more than that. There's a ton of different things AWS does.

AWS Amplify is kind of a package of tools to help you build full-stack apps for the Web. It's like, just give me the stuff that I need that usually you need to build an app.

Amplify is hosting. You need Web hosting; it's got that. It's got authentication for logins for your users. It's got GraphQL as a first-class citizen of it. It's got serverless functions like I need the Lambda thing. I want to run some code in the cloud to hit APIs and do whatever else I need to.

It's got file storage if you need it. It's got some machine learning stuff in there if you need it. Amplify is this easy to use, full-stack framework for getting started quick with building Web apps. It's really cool.

The auth stuff alone is cool. It's just a few lines of code in there.

GraphQL has taken over the world of how to get things from a database, put things back in a database, really front-end development-friendly way to do database stuff. Love GraphQL. It's just built-in as a first-class citizen. It's this scalable API. You don't have to provision your own servers. It just does it up for you. Pretty cool.

AWS Amplify is really cool. Definitely worth checking out, especially as a front-end developer. Check all that out.

[Banjo music stops]


Dave: Here we go. Craig England writes in, "Since there are many job descriptions asking for React, Vue," insert JS framework here, "as required skills, when do you think it's appropriate for someone to add one of these frameworks to their resume? For example, I recently finished a couple of React projects at my current job working closely with different back-end developers. However, I can't pluck up the courage to add React on my resume."

Chris: Aw…

Dave: "Is having two projects under your belt enough--"

Chris: Yes.

Dave: "--or it is better to describe my role on the projects so that potential employers know what they mean when I say, 'I know React,' etc."

Chris: Pfft. I'd put all that crap on my resume. I've never even really used Vue. I'd put it on there.

Dave: If you've used Microsoft Word, you just put "proficient in Word" on the resume.

Chris: [Laughter]

Dave: It doesn't even matter, man. No.

Chris: No. Are you trying to get the job or not, man? Who cares. If you fail the interview, fine, but don't rule yourself out at the resume level. You know?

Dave: Yeah, I mean two projects seems like a lot to me. Somebody had asked me, "Do you do React?" I was like, "Well, I've done one project." As long as you're transparent about it. If they kind of grill you on it, just be like, "Well, I've only done two, so I have a lot to learn."

Chris: Well, what are you looking for? You're looking for somebody that knows the deep internals of React because you have this complicated project that runs around React all crazy style, or does it just happen to be the framework that you generally build stuff in at the job? If that's the case, you barely even need to know it to begin with.

Dave: Yeah.

Chris: I don't care about these frameworks. If something came along where I absolutely had to work in Angular or something, I would just figure it out and so will you, Craig. It's not that hard.

Dave: I've worked in Angular. I don't use Angular. [Laughter] You know?

Chris: [Laughter]

Dave: I've worked on React projects. I don't really do React. You know?

Chris: Yeah. Look in the package.json. See what scripts are to run. Find in project. Find the stupid string you're looking for. Follow the thing. Read the manual. Whatever. Put whatever you want.

Dave: Make your thing look like another thing. It's not super rocket science, but I think you could put it there.

One thing I'd heard -- I read a blog post. I wish I could remember the source. It was about how to do a technical resume. Maybe that's something you should look into. There've been some good posts on that. Oh, man, I'm blanking, but it was, don't just say, "I know React." Talk about your job, like what you did. You said you did two projects or whatever. Say, like, "Implemented 27 views or whatever over 18 components or whatever in React," however you want to describe that work, whatever you did, or made a complete, multi-whatever user authentication system. Say what you did at a high level. You can't really probably get specific on a resume but find your bullet points. Get your top three bullet points on what you did. Don't just say, "I did React."

Chris: Do you think that? Why is that, though? Do you think that it works? I get conceptually why you would do that because it makes for just better reading. It's just more interesting. It's more honest. It just seems like the way to go but seeming like the way to go and having it actually land you jobs can be at odds, you know.

Dave: Well, for me, it's context. I worked at Apple. Here are two truths and a lie about Dave Rupert. I worked at Apple and I worked at Microsoft. Those two things are different but, at Apple, I was a technical support like AppleCare support caller, like you'd call into Apple.

Chris: Is that true?

Dave: Oh, it's true, true as day, in Austin, Texas.

Chris: I didn't know that.

Dave: Yeah, and so people would call me about their broken iPods and I would help them try to figure it out. Usually, we were like, "No, you have to go buy a new iPod." [Laughter]

Then for Microsoft, I redid their homepage in 2012. Two dramatically different things, so don't just say you worked somewhere or you used React somewhere. Say what you did there because those are two different things.

I worked on design systems. It's like, okay, what do you mean? Did you pick colors or did you build every component? Did you contribute back to component? What role did you do in the design system? Explain what you did. Don't just super high level it.

React is not a binary skill. If you do React, it doesn't mean you're good at all the other, like React and friends, work. You know? It doesn't mean anything. But maybe you are, so I think you have to describe the context in which you are experienced.

Chris: Yeah, okay. I would like to read that. Let's just assume that that works, you know. [Laughter]

Dave: Yeah.

Chris: I wouldn't care if you did two projects in React and that was on your resume. That is more than enough. In fact, I'd just assume people are kind of lying about it because what does it even mean anyway?

Dave: I mean any more, yeah. Isn't that the thing, too? It's like, say you do it and then if you get the interview, well, sign up for old Wes Bos's course and just binge crash. Just crash it until you feel like you don't look like a total idiot when you walk into the interview.

If I ever had to interview and people were like, "Oh, do you know algorithms?" It's like, "Oh, yeah, man. I know algorithms." [Laughter] Big algo over here, you know.

Chris: Uh-huh.

Dave: Then I would basically just have to binge some com academy to figure out whatever a tree sort is. It's silly. It's all smoke and mirrors, the whole industry, y'all, so there you go.

Chris: Do it. Do it. Do it, Craig.


Chris: Let's see. Let's do this last one. This one is from swyx. I believe I pronounced it -- I always struggle with that, Mr. Swyx. I know your name is Shawn Wang, but of anybody on the Internet that has a really known Internet special handle, it's you, in my world. Everybody refers to you as that, but I don't know. I tend to, in my blogging, refer to people by their name. It's rare that I have to do a handle thing anymore, but you're so into the handle that I don't know. Should I just say swyx in blog posts? I don't know.

Dave: It's like Prince. It just transcends.

Chris: Yeah.

Dave: The brand transcends the person.

Chris: I know. S-W-Y-X, yeah. "I've anecdotally noticed that most VPs of engineering and higher come from an engineering background, back-end engineering background. It's hard to get real numbers on that kind of thing but it feels right. Do you think that there's a front-end ceiling, like many companies view back-end dev as a sufficient qualification to become a manager? That group includes front engineering but not vice versa."

I don't know. I don't know. I don't know. It seems rare to have a VP of engineering be a total front-end person. Maybe -- gosh -- I don't know. That's a weird one, isn't it?

Is it also skewed towards people with comp sci degrees and stuff too? They tend to be schooled in that way as well.

Dave: Yeah, and they have extra letters next to their name and that gets them the qualifications to be a CTO or a VP or whatever.

Chris: I hate to admit that I buy into it a little bit. I almost feel like if you were a really high level, you know, you're a CTO kind of person that I almost want you to understand the back-end stuff more, like the architecture of the heart of the thing. It's not that I undervalue front-end. I think it's obviously mega important. It's absolutely the world that I live in. But, if that's all you knew, I don't know that a CTO is right for you. Ew -- I hate to say that.

Dave: That's interesting. No, this is a good question. We should get Shawn on to talk about it on the show. This is a good question because I think, in companies, a lot of people associate the back-end with the money maker. Oh, that's the money-making machine.

Chris: Mm-hmm.

Dave: That processes the credit cards. That's the architecture. That's the infrastructure. That's the business. People don't really see the front-end as that even though that's your portal. That's your door. That's the person who designed the shop. That's everyone's first experience is when they hit the website. Yeah, I'm trying to think through, like, my head, or just experiences I've had or whatever where somebody was very high up came from a front-end background and I don't have a lot of examples in my brain.

Chris: No.

Dave: That could be age and bias. Does that make sense too? Somebody who is a VP of engineering is probably--I'm going to just pretend--in their 40s, 50s, or something. Does that seem fair? Not necessarily.

Chris: Sure.

Dave: Let's say that. [Laughter] Let's say that. They probably -- where they cut their teeth in their 20s, 20-30 years ago, the majority of the work was back-end. There wasn't a lot of focus on the front-end, even since we started this podcast.

Chris: Yeah, okay. Timeline-wise, that makes sense.

Dave: Yeah. If you look at our podcast, if you go back to the beginning episodes, we were like, "Hey, is front-end even a thing, Chris?"


Dave: Front-end is still a relatively new term. It was something we were still kind of inventing even eight years ago.

Chris: I get it. The older people that have time to climb the ladder and get to those roles just came from an era in which that back-end was bigger. Aside from that, let's say we rule that out as a qualification, do you want a VP of engineering that you go and be like, "Hey, the server is down," and be like, "I don't know. What's a server?" Or, "I don't know. I don't do that."

Dave: I don't know.

Chris: You don't want that. Do you want that? Can there be a VP of servers and a VP of front-end too?

Dave: I think there probably should be.

Chris: You can still have a high-level role.

Dave: I think there are a lot of VP of products or something like that but usually that person has a business background or something. What if there was VP of user experience or client experience or something?

Chris: UX. Yeah.

Dave: UX. That could kind of transcend any app. I would assume some skills are transferrable to like the iPad app or the iOS or Android app. Yeah, I don't think there has to be, but I think there maybe is, is maybe how I want to answer this question, if there's a front-end ceiling.

Chris: Yeah, there may be, though.

Dave: There maybe is right now because I think there's -- because I think it's not very mature yet and we don't have a big -- I think front-end still exists under the engineering and people, the dominant thought of engineering is that it's all back-end, full-stack.

Chris: I want to ask more quests this question too. The front-end ceiling, I love it.

Dave: Front-end ceiling.

Chris: This could be a whole series.

Dave: All right.

Chris: Certainly not in entrepreneurialism. I think there are a lot of startups where the startup happened because somebody involved was highly skilled in front-end. Because front-end is so powerful lately, we're seeing that more and more that businesses get spun up because of highly talented front-enders.

Dave: Yeah, and I think there are a lot of even those highly talented front-enders might even fall under a design umbrella.

Chris: Sure.

Dave: Which is kind of different, but there's all the kind of design-led companies and things like that. It could kind of work in that favor but, specifically VPs of engineering, yeah, I think it's part survivorship bias just like the year which that person started coding. But I'd be curious to see when it would change.

Chris: I wonder if it doesn't even skew. I wonder if it's 100% skewed. I wonder if there are any VPs of engineering out there that are just HTML and CSS people.

Dave: I mean there's going to like Dave Rupert is the VP of engineering at Paravel, but I have back-end experience, so I don't know. What does that make me?

Chris: Yeah, you do, so you're ruled out. You're already--

Dave: Dang it.

Chris: That's what we need, well-rounded people anyway.

Dave: Yeah. Well, good question.

Chris: Well, that was fun.

Dave: We should power it down. Man, it's good to just talk here. Thank you all for listening. We've had just a great slew of guests. It's been a lot of fun. I encourage you, if this is the first episode you've tuned into for a while because you don't like the guest episodes, go back and listen to those because they're great. We've had Vitaly and Gerry McGovern and all kinds of people come on and share their knowledge with us. It's been really wonderful. Tune in. Check those out.

Yeah, thank you for downloading this in your podcatcher. Star, heart it. That's how people find out about this show. Follow us on Twitter, @ShopTalkShow. Tons of tweets. That's all there is.

If you hate your job, head over to and get a brand new one because people want to hire people like you. Chris, do you got anything else you'd like to say?