351: Dudes and Their Emails, Moral Quandaries, and Sass on Windows
We're chatting about how to get your name out there - and how not to get your name out there Jimmy John John. We also talk about indie publications, updates on Dave's office situation, and we dust off the Trello board for a mini-RapidFire on questionable projects, and building with GraphQL.
Chris Coyier and Dave Rupert
Time Jump Links
- 01:07 Dudes and their articles
- 04:29 Getting your name out there
- 17:00 Working with Wired Magazine
- 20:55 Sponsor: NativeScript
- 22:09 Update on Dave's office
- 31:45 Sponsor: CodePen
- 33:14 Dusting off the Trello board
- 35:03 Question: Moral dilemma projects
- 45:02 Question: Sass on Windows?
- 53:02 Transcripts of episodes available
- 53:40 Question: Building with GraphQL
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 frontend Web design and development. I'm Dave Rupert and with me is Chris Coyier. Hey, Chris.
Chris Coyier: Yeah! That's right. It's me. It's just you and I today, yeah?
Chris: Sometimes guests cancel because their family is having a baby, too. That's an incredible reason to cancel.
Dave: That also has happened to us. It's fine. Everything is fine. We're running a professional podcast.
Dave: Just two white dudes having a podcast.
Chris: I know. It's so rare - so rare.
Dave: I know.
Chris: It's terrible. Some dude wrote an article and sent it to me to look at. I love that when people do that. I'm like, "Thanks! I want to see your article. I don't mind. I'm happy to look at it." No obligations, you know.
I look at it. I'm like, "This is pretty good. It's pretty interesting," you know. Cool. It's on my radar now. Maybe I'll share it. Maybe I won't. I don't know, but I read it. Whatever. That's what email is all about.
Then he emailed again. He emailed again. Then he emailed again. Then he DM'd me on Twitter. Then he @ replied me on Twitter. Then he DM'd three more times about the article. Then he emailed three more times. Every time it was like, "Hey, what do you think? What do you think? What do you think? Here's a gif of something in the article."
I was just like, "Wow!" I don't know why I bring that up. Just because it's kind of like obviously that's bad behavior, but this is one in a million so, of course, there's going to be idiots out there or whatever.
I was just like, imagine; it takes a certain type of human to do that. It made me think, like, I just couldn't imagine a woman doing that. You know?
Chris: It would just be so needy and weird. I feel like gender does play into it in some interesting way that this guy is so, like, "You will not ignore me! I wrote an article!"
Dave: Yeah. I've come across personalities like that in the past, just really headstrong where you just keep asking, asking. For me, it's not even contributors to my blog. Sometimes it's like, "Will you add a link to my site?" those kind of spam emails. I think you joked about doing a podcast with only those people.
We, as a podcast, we get people who solicit us like, "Hey, you should have Jimmy John-John on your show because Jimmy John-John is the director of technology at some company you've never heard of." [Laughter]
Chris: Well, it's incredible how many emails you get like that, right? Like they hired somebody to do PR for them and they REALLY want on your podcast but, of course, Jimmy John-John is too busy to possibly reach out himself.
Chris: I get people are busy, but it's such a turnoff. It's like he's telling you, "I want on your podcast and I don't have time for you," at the same time.
Chris: It's like -- go to bed, Jimmy John John.
Dave: Well, but then there's the brand that's like, "Hey, I saw your article on configuring WSL to render Ruby on Rails. I think this link would be really great if you included it in your site." I just delete them because I'm just like, "No way this is real." [Laughter]
But then they follow up on you, and they're like, "Hey, did you read that email I sent?" or, "I see you've read that email about me putting that link to the thing," and I'm like, "What?! Get out of my inbox." But, you know, they have the tracking gif.
Chris: Read receipt tracking thing.
Dave: Yeah, they have the tracking gif that says if it's read or not.
Chris: Does that still work? Funny. I guess it would. I thought there was something weird about Gmail. I guess that would presuppose they used Gmail, which perhaps you don't. I would assume that you don't, actually.
Dave: I use the native client on Windows, so yeah.
Chris: Yeah, so maybe it would work.
Dave: That's probably my fault.
Chris: But they cache weird stuff or something.
Dave: Yeah. Yeah.
Chris: Anyway, okay, that was a weird way to start this.
Dave: Yeah, it was, but let's talk about getting your name out there. What do you think is a good way to get your name out there?
Chris: That's a good question because I did kind of just say, I do like it when you email me, not that I'm some gatekeeper of sharing this, but if you want to tell me.
Dave: Your reaction was purely to the volume of assertiveness.
Dave: You probably had a negative response to that.
Chris: Well, and it's a really dramatic curve because it's positive at the first, like "Thank you." Then as soon as the second one comes, it is already a nosedive into negativity, like whoa.
Chris: Whoa. Whoa.
Dave: Right. Right.
Chris: One is fine.
Dave: We're popcorning around here but, at some point, is it kind of like I should follow-up and be like, "Hey, Chris, it's been two weeks. Maybe you saw." What's that threshold for when it's safe to email CSS-Tricks and be like, "Did you all get my submission? Is there any feedback?" or whatever? Is there?
Chris: Yeah. I suppose tone would help a lot there, you know.
Chris: Then being a little clearer about what you want. If the message is, "Hi, I wrote this. I'd like to take a look at it."
Chris: Yeah, but if that's the goal is, I wish you would share it, then say, "I wish you would share it." Then I know what your goal is there. That is a little needy.
I'm just speaking for myself, but I feel like other people would react in the same way. When you're asked to share something, it feels very -- I'm almost never inclined to do it. I'm more disinclined to do it if you've straight up asked me to do it, unless you're my buddy. If, David, you asked me to share something, I would just immediately do it, a tireless supporter of my friend.
Dave: I've got a pyramid scheme I'd like to -- [Laughter]
Dave: --tell your followers.
Chris: But even a more casual acquaintance, if we talk to each other a number of times, sure, I'd be happy to. I love it. But when you're a rando, it's just a bad look. It's just not acceptable to me.
Dave: Okay. Let's abstract that to some ground rules.
Chris: Ground rules.
Dave: Let's say you have no relationship with the publication, like no friend of a friend, so you are welcome to submit. You should submit things to CSS-Tricks. That would be awesome.
Dave: But, editorially, you don't have to take everything. Now, if you knew somebody--
Dave: --or there was already some goodwill afoot, it probably works, right? How does somebody who hasn't broken into the game, how do they break into the game?
Chris: Yeah, and that's the ultimately question, isn't it? I don't want to discourage people from sharing.
Dave: Whatever that game is. [Laughter]
Chris: Yeah, that's the thing.
Dave: I just assume that is in the game.
Chris: What is the game? What is the game? Do you just want to get your claps up on Medium or something? Why do you care, exactly?
Dave: You like claps. Sometimes GitHub stars are better than a resume, so that's good. Maybe I want GitHub stars.
Chris: It's it more important that somebody read it than shared it? I don't know. Then it seems like, well, your goal is page views or something. If I share it, then those page views are up and somehow that equals money or something. I mean it does, but abstractly and only over a long period of time.
Dave: What kind of articles are you looking for on CSS-Tricks?
Chris: Well, I mean there are different. Is this something that's worth sharing because you've written it elsewhere, or are you trying to literally submit something for guest posting? That happens pretty regularly, that guest posting stuff. You'd be surprised at how amazingly good people are at this.
First of all, we have a page for it on our site that says, "Are you interested in guest pointing? Read this," which talks about what you should do and what we expect of you, that type of thing. People find that and read it. When they respond, they indicate that they've read it. That's really wonderful.
There's some baseline stuff in there like, "What's your idea? Who is it for?" Then I have some overall principles like, part of what we're looking for.
If we're going to pay you to write something for CSS-Tricks, literally give you some money to do this and nobody is getting rich, but I hope it's worth your time and money. It's not like $10. In fact, it's $250, generally. I say generally, like 90% of the time. Unless it's way above and beyond and you had to do a bunch of research or it's a big, multi-part article that required above and beyond work, then we can always talk about, but pretty much it's a flat $250, which I hope is worth an hour or two of your time to do it. It might be a little bit more than that because there might be a little bit of back and forth.
The vibe is, I don't necessarily want your editorial because we get a bunch of that, like, "I just want to say something. Here are my words on it."
Chris: You know?
Dave: Okay. Yep.
Dave: Those are opinion pieces, and those are good enough for newspapers for free, I think. Yeah.
Chris: Yeah. Rather given to newspapers for free. I often say, "We don't publish guest editorials, usually." There's a kind of version of editorials, like I want, say, something, but I'm going to quote eight people to give flavor to this story, you know, that kind of thing.
Dave: A sum up, a roundup, a conversation.
Chris: Sure. You're proving that you're listening to the world and that you're aware that there's a bigger world around you. That's nice. That's research. That's journalism. That's interesting to me and I'd be happy to publish something like that, even if it is kind of opinion-based. There are a lot of submissions that are just like, you know, "There is no such thing as backend," or something. I got that submission the other day.
Chris: I'm like, I kind of get what you're saying, but that's weird and I don't want to have that be -- that's just you just spouting some stuff. Give me more than that.
What I'd prefer to pay you money for, and this is just my site, this isn't all sites in the world, is that you're giving me some referential content. You're helping expand our almanac, which is technical documentation. Or you've Googled something and you've not found something. You struggled through something, and you've come to a good solution. I'm going to write that up because I can imagine somebody else Googling it in the future. That's what I want to pay you to write.
Chris: Whatever. We're a little business and that's the deal.
Dave: Yeah, I mean I think I got burned on my last submission to a popular list blog.
Chris: [Laughter] Okay.
Dave: Yeah, it was totally rejected. [Laughter] In some ways, it was a good thing. I just was like, "What more do you want from me?" you know? Like, you asked for submissions, I submitted, and then you said you didn't want this. It was like -- I was a little burned, a little sour by it. But to be honest, it kind of kicked me off on blogging on my own site because I just was like, "You know what? [Laughter] You lose out, popular blog. I'm going to do my own." You know?
Chris: [Laughter] Sure.
Dave: That's it, you know. That's all to say, I've written that publication before. That's why I was surprised when I got basically denied….
Chris: Some sites are a lot harder to get into. There is probably some that are really that'll just take any old damn thing that you write for them. I'd like to think we're medium at CCS-Tricks, like I don't have time to be a real true editor where I'm just going to give you the nines on your article and just subject you to the hellfire of editing, which is good. A publication will do that for you. I feeling this site would.
I don't know. Then they're just asking a lot of you to write this post whereas we're kind of medium, like it's going to go through editing. It's going to probably go through at least two editors, but a lot of it is, hopefully, it's good to begin with. If it's not pretty good already to begin with, I'm just going to tell you no.
Dave: Is one a grammar check and one is a tech check?
Chris: Right. It's not often that I'll be like, "Why don't you rework this whole section here and actually move section three to section two because I think the flow is a little better," and stuff like that. I generally don't do that just because I kind of don't have time.
Chris: It's not really my expertise, anyway, but I will tech check it for the most part. I may not NPM install your entire thing and whatever, but I'll look. I have some experience with technology, so I kind of know what's going to work and what won't. I'll look at the demos carefully and things like that.
Then sometimes that's just not good enough. I'll have a flub where there was a major accessibility problem with the thing. It's like, "Oh, that's egg on my face for letting that get by," but hopefully we learn from those things and stuff. You know what I mean.
Chris: I'd say the bar is not particularly high for CSS-Tricks. We're always looking for stuff. I'd say right at this moment it's a little higher just because I'm out a month with guest posts, so that's as long as we ever get out.
Chris: Yeah, it's nice.
Chris: Geoff Graham is the lead editor at CSS-Tricks, now. He has been for over a year.
Dave: And doing a good job.
Chris: Yeah, it's nice because, for me, I get to step back a little bit and do some of the stuff that I'm better at doing, which is maybe even soliciting authors once in a while and being like, "Hey, come write for us. You're good." That kind of outreach stuff is sometimes more valuable to me than just sitting back and seeing what we get. If you want to have a good publication, you probably have to do a little more work. Anyway.
Dave: That's, I think, back to asking a magazine. You're maybe not as -- desperate is not the right word, but something along those lines. You're not desperate for content writers. You've even brought people on for regular columnists like Robin Rendle or Sarah Drasner. They're kind of contributing somewhat regularly.
Chris: Right. We almost think of them as staff writers, really.
Chris: Yeah, not desperate at all, I'd say. Even if nobody submitted anything, there's nothing in the queue, and there was nothing from staff writers or anything, I still wouldn't think it's that big of a deal. I have promised to nobody. It's not like a daily newspaper where there better as heck be a newspaper on your front stoop in the morning otherwise people get weird about it.
It happened to us last year. We subscribed to the newspaper here in Bend, Oregon. It was like a one section newspaper and a slip paper in the front of it that's just like, "Whoa! Sorry, bro. We just couldn't get our crap together to make a real newspaper today."
Chris: I was just like, "What?!"
Dave: It's just like one page for like maybe news, kind of, plus….
Chris: Yeah, it was just like--I don't know--here's the weather and some comics, or whatever. [Laughter]
Dave: Yeah, some comics and lawnmower ads. Yeah.
Chris: it turned out it was a little more complicated than that. It had to do with some kind of printing issue or something.
Chris: It didn't read like that at first.
Dave: Hey, we tried.
Chris: Yeah. You made a promise. People subscribe to that stuff. Nobody pays CSS-Tricks for, like, "You better publish two articles a day." Even if we missed a day, it wouldn't be the end of the world, and I'm fully capable.
I am the lead writer. I write over half the content for CSS-Tricks. I don't even know how the numbers break down. Historically, I've written much more than half of the content all over the site. Week-by-week, now, it's probably not half anymore. But if I had to, I certainly could write. It's kind of my thing.
Dave: Paravel worked with WIRED Magazine.
Chris: What?! Did you really? Recently?
Dave: Well, surprise! I don't think we ever told anyone, but we did. Yeah. [Laughter]
Dave: The work that's up there now is similar to the work we had done in prototyping stuff. It was really cool to kind of get inside Conde Nast and see how they kind of do things.
Dave: They're even saying, volume-wise, it's 40 to 60 pieces of content a day, or something.
Chris: A day on wired.com?
Dave: A day. Yeah, and some magazines are even more and some are less.
Chris: I would have thought it would have been many. If I had to guess, I would have been like, a couple, three, four. It depends on what the size of the thing is. Why is that number so high?
Dave: I don't know. I think maybe it was the specific year or something. You're competing with Tech Crunch and people like that.
Dave: They're like, "Whatever startup got $5 on the sidewalk." [Laughter] They just kind of post whatever or any sort of news.
Chris: I suppose it's because people don't read every article, right? If you post 40, you need to post 40 to get somebody to read 2, or whatever.
Dave: Yeah, you have to cast kind of a broad net, you know.
Dave: I think you look at The Verge and Polygon.
Chris: That makes sense.
Dave: Once you kind of hear that number, you kind of actually see it. You're like, "Oh, okay." I think companies like WIRED have amazing editorial flow.
Chris: Well, it's the best.
Chris: It's the one print magazine I still get. It's so good.
Dave: Right! It's so good. I mean so good. I like The Verge and Polygon. I like their editorial. They've done a lot of video, too, I like.
Dave: You know it takes a lot of people. If you want to have very good quality, it takes a lot of people full time writing articles, picking up stories.
Chris: Maybe my calibration is off because it's so niche. I'm sure people don't read every article I publish. I'm sure it's far from it.
Chris: But I like to think that they do. I write such that they do in that kind of trucking along narrative like, "Oh, yesterday, we talked about," kind of thing. I don't do that a lot, but I do sometimes and, in my head, I'm imagining the readers that read every article because we don't publish that many things. It's so niche to begin with that I hope you care enough to read pretty much every article.
Dave: Yeah, you at least want to scan the headline and the first paragraph and see if you want to dig into FE matrixes.
Chris: Sure. Right.
Dave: No, I think -- yeah, I think it's really interesting--I don't know--that world of publishing.
Chris: Well, that was a lot on publishing stuff. Thanks for giving me an opportunity to blast off on that stuff.
Dave: I think it's cool. I don't run a publication but I don't know. It'd be fun to contribute, so maybe I should cook up some CSS-Tricks articles.
Chris: I feel like I've been trying to get you for ages, not that….
Dave: Oh, yeah.
Chris: I don't think you have a single byline on CSS-Tricks.
Chris: Do you? I have to look.
Dave: Oh, my gosh!
Chris: I know.
Dave: This is a shame!
Chris: I hope this works out because it hasn't been published yet, but I have an Eric Meyer piece kind of in the queue.
Chris: I've been like, "Oh, my gosh! Get a Luminary like Eric on there. I'm going to start bugging other people to see if….
Dave: Get at least one, Chris. Get an official. [Laughter]
Chris: There you go. Right.
Dave: Getting the official CSS publication. [Laughter] No, Eric is…. Oh, man.
Chris Enns: This episode of ShopTalk Show was brought to you by NativeScript. NativeScript is a great way for frontend developers to start building native iOS and Android apps. You might have heard about NativeScript on ShopTalk Show before, but this time they've got some exciting news.
NativeScript now officially supports Vue.js for app development. If you're a Vue developer, you can now build native mobile apps using the same framework you use on the Web while leveraging the power of NativeScript to tap into powerful mobile APIs. You can try it today at NativeScript.org. Of course, they've got support for TypeScript, CSS, and popular frameworks like Angular as well.
NativeScript lets you build awesome mobile apps with technologies you already know. You can start coding today with the NativeScript Playground, which is a 100% Web-based resource to help you get started in minutes. The NativeScript CLI is there for you when you're ready to take that next step.
They've got a great tutorial on their website and then you can also get started playing with some sample apps like an animated search, a login form, music streaming apps, social fitness trackers, swipeable cards and animations, charts, tab bars, restaurant menus, flight booking UIs, moving listings. There are ones that show how to build a Tinder-like swipeable card UI, putting a native dialog box in front of the user, animated rotating menus, carousels, et cetera - lots and lots of stuff to check out.
Be sure to visit NativeScript.org to get started today. Our thanks to them for sponsoring this episode of ShopTalk Show.
Chris: You know somebody wrote in and asked you because, in your old house, you used to have an outbuilding for your office.
Dave: Oh, yeah.
Chris: That's gone all of a sudden because you had to move, which that's personal news for you. [Laughter] I didn't mean to bring it up on the podcast.
Dave: We don't talk about that now.
Chris: The shed is gone.
Dave: Yeah. I can read the question. It is from Bill. [Laughter]
Chris: Native Apps.
Dave: Native Apps. Is that really your last name? "Dave's backyard shed office was a huge inspiration for me to carve out some sort of habitable office space for myself. Then Dave bought a new house. What's Dave's office like now? Has he talked about it on the podcast?"
I have not talked about it on the podcast and, yes, I did buy a house. My family, wife, two kids, dog, and cat, we were filling up our two-two house in South Austin. We looked around and tried to find, but then we were just like, "You know what? Let's move north. Our kids are about to go to school. We just want to make sure it's a good school district," stuff like that.
We moved and got a cool house. We love our new house, but it's a four-bedroom house but with no backyard office shed. At the old place, I had a backyard office shed.
It was a prefab from Kangaroom Systems, which I can say is a decent product, maybe terrible company to contract with. [Laughter] Eh, is that liable here on the show? [Laughter]
I would say, get the walls from them but don't have them finish it out. Hire somebody yourself or get your uncle or something.
Chris: I wonder what is liable. You're allowed to say that you didn't like a contractor.
Chris: That would be weird to say that--
Dave: Yeah. Yelp. I guess I don't know. They get really punchy in their Yelp reviews, I've seen. [Laughter] People were like, "They took forever." They're like, "No, your face took forever." You're like, "Whoa!"
Dave: You know? Like, what?! Anyway, the contracting experience -- contracting is so bad, right, just in general, but it was not a good experience. Anyway, the product is decent.
We moved to the new house and I am working out of a spare bedroom. It's kind of a big room, kind of like -- I don't know. It's kind of a front room. We think it used to be a den because there's a fireplace behind my computer, like behind the wall in the drywall. We think it was actually kind of a den sort of thing.
Working inside the house has been, to be honest, super difficult and mostly because my daughter is now three and a half. She's loud kind of all day. She's home. She only goes to school three days a week or something for like daycare. She's pretty loud.
Chris: Are you needed at home, though? Can't you just do the WeWork thing or something like that? Is that just not appealing to you?
Dave: That's not appealing. I could. I think coworking -- I think I would thrive in coworking. I think my only issues with coworking is I have to be on phone calls and I have to talk with companies. It's not like my projects are super-secret, but I can't just be--I don't know--yapping with Microsoft in the middle of a WeWork space or something. Then I'd have to go get a private room, I guess. I don't know.
Dave: Then I do podcasts. I'm like, ah, I'd have to schedule a booth for that. I like having a setup at home, but I think it's been harder. My kids -- I think I personally am productive in the afternoons, like from 2:00 to 6:00 p.m. window.
Dave: But that's when my kids get home from school and they're coming into my office. They're running around making noise. That's all to say, my wife and I have discussed this. She is a stay-at-home mom, raises the kids, but as much as the kids and her are in my workspace, I am also in her workspace.
It's 3 o'clock. The kids are melting down screaming and she has to keep them quiet because dad might be on a phone call. That's unfair because three-year-olds scream. [Laughter] You know.
Dave: It's sort of like not natural that I am in the house being like, "Shush, shush, shush, shush." I think other people who work from home, they have maybe an upstairs room and all the action happens downstairs, or in a basement, or something like that.
Chris: Yeah, which is not exactly screaming proof, but pretty close or a lot closer.
Dave: A lot closer. I'm just right by the front door, so it's like people come in and they just run into here. I could lock the door and shut it, but then it's like super antisocial dad. Anyway, I don't know. I don't want to be that either.
We actually started the process. I started looking at doing another shed in the backyard with the whole thing. Should I do a prefab? I got real close to ordering a prefab. But then I was like, "You know I just don't like it. It's not perfect."
Dave: Then I talked to a contractor, and the contractor was like, "Yeah, I'll build it." We were trying to build in these weird build lines that are on my lot. The day before that guy came to pour concrete, [laughter] I talked to an architect friend. He was like, "Hey, I know I'm the architect, but if it was me, I would spend the time, deal with the city, and get it just right."
That's ultimately what we kind of went with. We are like, "Let's do it right. This is going to be our house for 20 years," I think. We're in the right part of Austin for us. We can see our kids growing up here. I don't really see my--
Chris: I love that. That's great. That's how I feel now too. Isn't it a good feeling to be like, "Oh, we're living in a house that's like the last house"? [Laughter]
Dave: Yeah, like emptying out my savings account to put a down payment on a house was definitely, like, "Oh, my God. What did I do?" It was stressful, but moving into the house, you're like, "Wow, I'm here for like 20 years. Holy moly." It's a weird perspective, right? You're just like, "Oh, man. I'll be almost 60 when I'm ready to move on."
Dave: Anyway, we're going to build a little office in the back through an architect, so that doubled the cost already. That's bad but, again, we're going to kind of plan for the future. It'll be like a full mother-in-law, so if something happened health wise with a grandparent or something, we could take them in.
If--I don't know--we have family come visit, we could kind of shift things around. My brother is in South Dakota, and so if they ever came down, we could house them for a week or whatever, stuff like that. Yeah, I got a drawing over here. You want to see a drawing?
Dave: Here we go. This is good for podcasts.
Chris: Yeah. I'll describe it to you. It's a white piece of paper.
Dave: This is great for podcasts. It's going to look like this, kind of, like a little shed, little patio going out to the shed.
Chris: Wow! That's like 100x fancier than I thought it was. It's beautiful.
Dave: It's getting pretty bougie.
Chris: [Laughter] I like that there's a cracked tile walkway.
Dave: Yeah, a big flagstone walkway. It's going to be pretty cool.
Chris: I don't see any cactuses, though. I'd recommend some giant--
Dave: Ooh, all right.
Chris: Don't forget your flora.
Dave: I need the proper flora and fauna. Yeah, so anyway, I'm building a new, new office and mostly because working inside the house is getting tough. I love my kids, obviously, but kind of back to that productivity window. My afternoon productivity is super sunk because it just isn't quite working the same. I think I got really used to it at the old place.
Chris: Well, you should definitely do that. It's going to solve a lot of your problems, increase the value of your home, be a wonderful place for you to work.
Dave: Yeah, it should work. Hopefully. Again, hopefully it's not a nightmare, and hopefully it happens within the year and doesn't take five years.
Chris: The money that you earn from ShopTalk Show will pay for at least the stairway, maybe.
Dave: I know. Yeah, I was like, I could get a couple flagstone out of this, which reminds me. We should cut over to the money zone.
Chris: This episode of ShopTalk Show was brought to you by CodePen. That's right, the app I work on. Gosh dang it, I've been working on it for years and years and years and years, and I'm going to keep working on it for years and years and years for you because I love working on CodePen.
There's just anything you can do in CodePen and it's great. That's why my pitch for it is pretty generic. It's just like--I don't know--it's a little coding environment. Just use it for whatever you want.
The longer you use it, I think, the more value you get out of it. Obviously, I'm one of the first users of CodePen ever. It's like all of my frontend experiments throughout the years are there for me on CodePen. They're really easy to search for and find. I do that all the time because I'm like, "Uh, didn't I play around with this once? Yeah. Here it is. Here's the code. Easy to copy and paste."
You can find my examples and I can find your examples. Of course, you can make stuff private as well but, by default, things are public and open source licensed on CodePen, so it's become this massive hive of millions of pieces of content that you can search for, find, use in your own projects.
I love CodePen. I'd love to have you as a pro member on CodePen. Thanks. Bye.
Dave: And we're back.
Dave: How was that?
Chris: That was really fast for us.
Dave: Yeah. It'll be much better….
Chris: You know what I have? I have a Trello board open. It's been a hot hundreds of years since I've had this open.
Dave: Dusting off the Trello board?
Chris: Yeah, well, we don't do rapid fires that much anymore, although we should actually schedule an actual rapid fire where we actually get through a lot of questions. Although, part of it is in response to that we've just kind of been getting less questions. Maybe just how we've been doing the show lately encourages less of them, but there is a big button on ShopTalkShow.com that asks you to submit questions. That is kind of the heart and soul of ShopTalk Show is a Q&A style show. We'll have to do more of that soon, probably after this miniseries wraps up.
Probably the future of ShopTalk Show is to do more of these miniseries. They've been a little successful for us. They've been kind of fun to do, but broken up, like you said at the beginning of this show.
Chris: It's nice to break it up.
Dave: Break it up when people get sick. [Laughter]
Chris: I have it open because there are questions in here that are sometimes fun to answer. Maybe I'll just pick a few and just throw it at you.
Dave: All right, let's throw some questions.
Chris: Some of these are, of course, "There's something wrong with your website." [Laughter]
Dave: Oh, really? That's all because our website went down the other week. We should be back in action, folks.
Chris: Here's the oldest question we have in this entire thing, which is from Christian Dobo. Who knows? This is probably from years ago, but it's fun. No, it's not. Yeah, it's from like April 2017. [Laughter] Yeah, a couple years.
Chris: I kept them in here because they're good. We just hadn't found the perfect show yet. Now the perfect show has arrived.
Moral dilemma: "Were you guys ever faced with a situation where you were offered a project with fairly good pay but with questionable moral implications? I was asked to create a website for a cancer treatment tea that costs a lot of money and they want to hype it a lot, potentially tricking sick people into spending their last dimes on a bogus miracle cure. At the same time, it has all kinds of certifications and, of course, I could really use the money."
Dave: What do you do here? There is a really good episode of BizCraft, the BizCraft podcast, BizCraft Episode 51, I think. They did an episode on ethics, and I thought it was the best. It's kind of a defunct podcast now. I don't know that they're still doing it.
Chris: Is there an answer to this, though? Are we going to try to arrive at -- whatever? Sometimes you need money, so you have to just do some questionable work, or are we going to say, "No, don't do something that's this far into"?
Dave: Yeah. I think the way they posted or presented it was, they were just like, you know, if you want to be very loose on your ethics, you can kind of make a bunch of money. You can work for that politician you don't agree with. You can work for--I don't know--some very lude content sites. You can do anything if you just say yes.
I think it's really figuring out you and deciding, "Is this against my moral code? But then, is the price right?" Maybe. I don't know. For me, cancer tea, I've had friends pass away from cancer. I would just say no.
Chris: Well, that's right. Me and you would just say, "Absolutely not. No way." Not only, "No way," I might take the job and screw up your business somehow. I might try to screw you because of how bad you're screwing the world. I might do a little vengeance of my own here. You're such a piece of garbage.
Dave: Vigilant deep justice.
Chris: Yeah. Goddamnit. Or try to report it. Do something bad to you if I possibly can because, screw you.
But at the same time, I get it. It's kind of like the "I don't mind stealing bread" kind of thing, right? If you're in hard times, this is your skillset, and you need to feed your family or whatever, oh, my gosh; that increases this dilemma tenfold. Money just arrived on your doorstep.
I would offer you, Christian, if there's something -- how much money are we talking about? How much do you need? How much money? Are you really dire here in which you can throw away your morals? Even by writing this email, you know that you're not for cancer tea.
Chris: I think Mike Monteiro has said in the past, "One youthful indiscretion, one Marlboro ad in your portfolio from 20 years ago doesn't make you a bad person, but 50 do.
Dave: Right. Right.
Chris: If you don't have any -- but maybe 20 years ago, you didn't really think about it or know. You just are kind of like, "Oh, cool, a client. I'll do it." It's not like that's forgivable, necessarily, but there is some innocence to it. It's different if you're like, "I know this client is bad for the world but I'm going to do it anyway."
Chris: I'd say that that number, there is no number there. That's terrible. Can you email me? Can I give you some work somehow? This isn't a general offer for the world, but if somebody is really in a bad situation like that where the only way they can find to make money off the Internet is to do a cancer tea website, email me at least. I've got to find something else for you because you can't do that. You can't do it.
Dave: Yeah. Yeah, it sounds like if you're emailing us, it definitely is your moral code, sort of Spidey senses tingling like this does not feel good. I would maybe pass. You've got to really listen to yourself.
There are grayer areas too. I saw somebody the other day Tweet about slot machines. They're like, these are a curse. They just take old people's money. I just was like, "Oh, man. It's a really valid point," but I know for a fact, in Austin, we have dozens of slot machine entertainment companies and game developers working on these and finding the perfect sounds that release the dopamine to make you put more money in the slots. I'm just like, "Oh, man, what a quandary."
I feel comfortable saying Facebook really doesn't appear to be an ethical business. I know lots of people who work for Facebook. I'm not asking them to quit their job right now but, after a point, I'm sort of like, "When do you maybe leave that company?" because there's a lot of gross practices there. You know what I mean?
This is something that's interesting to me, too. How far removed from the problem source in a company do you have to be before something that you would quit? Google, surprise, we were putting microphones in your Nest devices and we didn't tell you. That's a huge problem, but I don't know any Googlers who are like, "Yeah, I'm going to leave the company because that was over the line." [Laughter]
Chris: It is funny where the bar is, right? It's almost like, that's worse than cancer tea - almost.
Dave: Yeah. That was spying, like literal spying, [laughter] like bugging somebody's house without telling them. At least cancer tea, I could rationalize it as, "Well, I was trying to give them a tasted flavor and at least give them hope at the end of their journey."
I don't know, man. This answer, I don't think, is clear. I don't think there's a black and white all the time.
We had Mike Monteiro and Robyn Kanner on the show. They definitely, I felt like, saw things in black and white and they could make pretty instinctual judgements, so maybe you are like that and that's awesome. Sometimes, it's a little grayer like, where do you draw the line and where do you pull the ripcord?
Chris: It really is hard, isn't it? It's easier to see things in black and white if you can force your brain to do it. Then I wonder, is that the right way to do it? There probably is.
My brain really wants to draw the line at the cancer tea thing. It just seems like you know what you're doing. The people that made this cancer tea know that they're trying to extract money from people in a dire situation. It seems pretty cut and dry. But like you just did, if you step back and look at different types of moral quandaries, it paints all kinds of gray all the time.
I like to look at the world with all the shades of gray. It's like a dang hobby, practically. But then it forces you to freeze, in a way.
Chris: Then you're like, well, everything is gray, so nothing matters. It allows me to kind of, unfortunately, sometimes walk through life with some degree of apathy and just like, wow, I've got to get mine because the world is too complicated to possibly comprehend, so who cares.
Dave: Yeah. Yeah, and that's why I don't. Yeah, you totally get yourself into this moral relativism quandary like, "Oh, what I'm doing is bad, but it's not as bad as those Facebook guys, thank God, so I'm clear." [Laughter] You know? You know. How do you justify that or whatever?
There are other situations too. It's not always as easy. If you're saying, "I kind of need the money," man, I've been there where you kind of need the money and you need the financial stability. You're just like, "Well, I don't love this but I can make a website and get through the month or whatever."
Dave: Stuff like that.
Chris: Well, if we're going to attempt to go black and white or if we had to for the sake of radio, I'm going to say, "Don't do it!"
Chris: But other than that--
Dave: Don't do it. I don't know. Find better ways to get through to cancer patients and survivors. That would be my advice.
Hey, next question.
Chris: I'm just going to throw them at you and you have no idea what I'm going to throw at you because it's fun for me.
Dave: All right. Cool. [Laughter] Cover my eyes. Here we go.
Chris: This one is from 2016, but it's prescient still today. I don't know if I used that word correctly, but I used it anyway.
Sass on Windows: This is a question for you, Dave. "What are you using to process your Sass on Windows? I'm trying to buy a laptop for coding, but I don't know what I should use to process my Sass. On my desktop Mac I used CodeKit. I've hear of PrePros. Is that any good? What are your thoughts?"
I feel like Victor was in an interesting situation here back in 2016 where I really liked kind of the GUI, do it for me, approach, which I'm sure it still pretty popular, but maybe starting to die down a little bit, at least from my perspective.
Dave: Yeah, the dwindled, the popularity of GUIs. Yeah, PrePros is kind of the Windows one.
Chris: Oh, is it? Good. It's cross-platform, I think.
Dave: Cross-platform, yeah, yeah.
Dave: It's cool but, for me, I use a command line. There was like you could get it up and going by installing Ruby and stuff like that on your Windows machine. To be honest, I just installed using WSL, Windows Subsystem for Linux, which you can get on the Windows app store in Windows 10. It works like a charm. It's just like having a Mac. [Laughter] #itsjustlikeamac
Chris: I would say that it feels like most usage of Sass these days. Like you said, there are probably plenty of people using GUIs and stuff. If you are not, you're using a Gulp build or a Webpack build or something, some kind of build process that integrates it. Sass still is so popular, even in these build processes.
Sass has moved on from Ruby. I think it's even EOL on Ruby pretty soon.
Dave: Yeah, like March, this month.
Chris: Oh, yeah, that's a big deal, and so Dart has become the canonical one, but we'll see. I don't know what the usage of the Dart one is. Its features get ported over to node-sass, which is by a totally different person who I don't even know if is on the Sass team. I don't know what the connection is there, but they're very dedicated to making node-sass awesome, as far as I know.
It is, and it's super fast. It's probably the most common way to use Sass just because it's the one that works in Node, even though it's written in C++ or whatever and has bindings that make it work or whatever. That's kind of the default one. I think if you pull node-sass, you get Libsass.
Dave: Which is the C library and then it compiles your system.
Chris: Yeah, and everybody uses that because it works everywhere. It works in your Node stuff.
Chris: Node has just taken over the world, so that's the way it is.
Chris: Even if your project isn't a node site, you have some build process that's probably Node powered, I would think.
Chris: That gets used, and that's what was always a lingering question for me. Is the node-sass thing, which is just a simple binding to Libsass, going to start pointing to Dart Sass because that will run in Node too? Now Node Sass runs canonical Sass, which seems like the right move, doesn't it? The person who wrote Node is the same person who wrote Libsass, so I think they're not incentivized to do that. They'd rather keeping it pointing at their own project.
Dave: Yeah. I wonder what projects like Jekyll or Rails are going to do when this disappears because, if people start getting like, "Oh, this version of Sass isn't supported in your Rails app," that's going to raise huge alarms.
Chris: Rails has even, to some degree, embraced Webpack.
Dave: Yeah, I think maybe Rails 6 does Webpack, right?
Chris: We use Webpacker, which is their project that brings Webpack to Rails. It's just fine.
Chris: We've used Sass through it somehow. I don't know. It's complicated. We use CSS Modules, but also Sass because Sass works with CSS Modules as well.
Chris: Anyway, that's all through Libsass, ultimately.
Chris: I don't know what the Dart Sass scene is like, really. I'm super glad that it exists and I think it's the right move and all that, but I don't know how many people actually straight up use Dart Sass.
Dave: Hmm. Yeah. I don't know.
Chris: I could be totally wrong. I'm not totally embedded in this community. Please correct me if I'm wrong.
Chris: It's you're on Windows, you can run Node on Windows and nobody on Windows has any trouble running Node Sass/Libsass, right?
Dave: Yeah. I asked about it and I got, like, yeah, it's the active version. [Laughter] It's a very terse response from some Sass folks. I was just like, "Oh, okay. Cool. Just hadn't heard of it," and I'm kind of connected, but whatever, I guess. It sounds like the maintainer of Sass is writing it in Dart.
Dave: I'm just going to assume it works and it's going to be good, so why would you--?
Chris: I think it's 100% compatible with the Ruby one. At some point, I tried to use -- this is a huge deal for CodePen, you know, because we don't offer you versions like some other things do. We kind of do that on purpose on CodePen to keep CodePen kind of simple. You want to write Sass? You pick Sass. You run Sass.
For the most part, miraculously, this hasn't been a ton of breaking stuff with preprocessors. We haven't had to fork a preprocessor and be like, "Oh, shoot, we can never upgrade Stylus or something because, if we did, we'd break half of Stylus pens or something. Fortunately, that's pretty much just never happened because people take the backwards compatibility pretty seriously, and we just upgrade versions.
There are little, tiny, minor stuff that breaks fine, whatever. At one point, we were like, "Oh, we've got to get on Ruby Sass."
Chris: We have to maintain our own Ruby processing server that has its own little box in the sky just to run Ruby on it, and it has a little API to talk back and forth to. Of course, we don't want to do that. We always Lambdas. Lambdas are amazing.
Chris: We use the crap out of Lambdas. Thus, you need something that will run in Node or something. They have just released that Ruby runs on Lambdas now, too, but that's in the last couple weeks.
Chris: That's interesting, but we tried to switch at one point and it broke a ton of stuff. It wasn't compatible, but now it is, apparently, or whatever. At CodePen, I would probably pick Dart Sass. I want a direct connection to canonical Sass. I think that that has the strongest future.
Dave: Yeah, well, and it's easier for you all to be like, "We're using canonical Sass, not weird flavor Sass."
Chris: Yeah. For the record, I don't think Libsass is a weird flavor, necessarily, but it could be. It's not canonical.
Dave: Okay. How about we call Libsass "Sass Code Red," Sass:CodeRed.
Dave: Everyone knows the original whatever, the main branch Sass, which is apparently dark Sass, is the green Mountain Dew or yellow. I guess it's optic yellow. [Laughter] Then the Libsass is now Sass:CodeRed.
Chris: Ship it.
Dave: All right. I think we'll use Mountain Dew naming systems for all libraries.
Dave: What a terrible naming system. All right, we've got one more or what do you want to do?
Chris: We ought to. How far are we into this adventure?
Dave: We're 50 minutes, plus our ads, which, thank you, guys, for shopping at these wonderful establishments. You see that's how old Dave Rupert gets computer bucks to upgrade his ridiculous computer.
Can we mention this? We haven't mentioned it, I don't think. We're doing transcripts for episodes now.
Chris: Oh, that's a good thing to mention, like 100% of them instead of just the once in a while thing we were doing before since we found a good system and so, yeah, very good.
Dave: We're sending it off to our friend Tina at Pham Transcriptions, and she's making it happen. Spread the word. Let people know. I think we haven't really told anyone or many people, but we're starting that. You should have the whole file in the blog post, the episode page.
Chris: Let's do just real quick just because I'm interested to see what your take on all this is.
Dave: Zing me. Zing me.
I like the question. It'd be interesting to talk about it a little bit, but I'm interested. Dave, it seems you play with everything. Have you done this thing?
Chris: Yeah, but then you're like, "Surprise! I worked on WIRED too." You have secret crap going on all the time.
Dave: Yeah, I do. I do, but I do not currently have a GraphQL application, and that's purely just because I think the client data source is not GraphQL, but I'm very interested. I think it's an iteration on REST. I think that you're able to -- I think it's a pain point in a client, at least an API client, where you go fetch this URL, get some data back, and then you look through all the IDs and go fetch the post IDs. That's an inefficient system.
It works if you're like, "Give me a list. Give me all of them, a truncated list, and then I'll view one item at a time. If you're thinking you want to stitch more data sources together or more tables in your database, I think GraphQL works really well for, like, I'm going to describe you the data I want and you, graph machine, stitch it back and send it to me. I think that would be cool.
Just this week, I was on a call or something about people having API versioning as such a big deal, like, "We're connected to v1 of the API and there is a v1.1 that has this other feature we need. If we do v1.1, we end up breaking everything for this other thing." If you have an API, you have to version it, so that’s kind of a lot of work. It's not just easy out of the box.
Dave: This GraphQL--
Chris: That was a talking point early on in GraphQL land was, "Hey, you don't need to version your API for some reason," which I kind of don't get. What if you decide to return different data at a certain different field? Doesn't that mean you still have to version it?
I guess what it means is, oh, you just think of it differently. Instead of returning different data, you start offering a newly named field. If you want people to use that, they ask for that newly named field. That has the new data. Thus, you don't have to migrate anything.
I'm like, wouldn't that be true with REST too, then? You just have some different name or different endpoint? I don't know. It kind of makes sense, but it seems like it doesn't totally remove the idea of ever changing your API.
Dave: Yeah. Yeah, I think the constraint, at least for a client author, and this is even if you're doing jQuery, not just these fancy frameworks. If you need to get data for more than one table, you either need to write some server code to prepare that or you need to get one response and then do multiple responses to get even more data. That's really slow on a client, like a phone. That's a lot of radio tower travel, and so that's not good.
I think GraphQL is awesome because you're just like, "I'm going to describe this data," and then the adapter, the database adapter, the GraphQL adapter kind of negotiates what tables it has to call, join, and do all that. I think that's awesome. I think, if you've ever done data stuff, like Big O notation is a really big F'n deal [laughter] for a database. Is it an O or an ON query? Is it a login query? That sort of stuff starts to come into play when you're doing a database. I'm not even sure I know those notations, but I do know what's expensive. If you do a join and a join and a join, you just murdered the database, basically.
Chris: It blows my mind. My whole experience with it has largely just been as a consumer, even a real basic consumer to the point where I just write a component. I write some GraphQL at the top of it that says what I want and I use it. That's probably the number one use case for GraphQL that I think is just the greatest thing ever.
You can also write mutations, which is just the version of the opposite or a REST API, like I want to change some data and tell the server about it so that I can change it. That's fine. I'm less good at that. [Laughter] But plenty of people do. That's whatever. It's happening plenty at CodePen as well.
Then there's that idea of, "Okay, now I want this other thing. Give me, give me, give me, give me, and I want it sorted like this." GraphQL doesn't solve your problem there. Maybe that's what you were getting at that somebody still has to -- that still has to talk to a database that may or may not be able to give that to you well.
Dave: Yeah. Yeah.
Chris: Just because I want it doesn't mean I can have it. Now, an ideal, perfect GraphQL situation may be that your database admin is amazing and just anything that you could possibly want is yours, but I'm finding that not to be true. I'm finding database admin going like, "Whoa! I can't give you that. That's crazy. That's the worst query every." You know? [Laughter]
Dave: See. Yeah, that would be my concern. That's the cost of abstractions, right? I have a very cheap way.
What was it Rich Harris was saying? He was kind of quoting Tesler's Law, like, complexity at a certain point cannot be reduced, and so you just shift it around. We're making it very easy now on the client to request a bunch of data, but that puts the burden on the database, basically. The complexity now goes over to the DBA, the database admin.
The piecing together has become, "Well, we're going to create our whole site this way. All of our pages are going to be pieced together components. Now that we're making entire pages this way, we might as well do our routing this way. We might as well just have that be our entire site architecture at all."
Now, we're in the browser still, so we're firmly in front-end territory, but the front-end person has become the architect of the entire app. Then it's like, with GraphQL entering the party, it's like, a backend person needs to set all this up, but you're no longer twiddling your thumbs waiting for a backend person to give you the API that you need. There's this global API and you just use it for whatever you want.
Now, you're not waiting. The data layer has shifted to the frontend as well, and not just one way, not just as a consumer, but in writing data back as well. Then, of course, there are all these third-party APIs that exist in the world. The front-end developers become empowered to deal with all those as well. It's like, what the frontend is responsible for has just blossomed into just tons of everything. The decisions are, because this is happening, can we build technologies in which you can't screw up, in a way?
Chris: I think of TypeScript as like, if you build in this way, now I can't even call a function if I call it incorrectly or pass incorrect data to it. It'll just blub. I can't do it. It's totally prevented me from doing that. With GraphQL, I can't even ask for data that doesn't exist or try to do that in some way. GraphQL, not only is it convenience for me and empowering for me, but make sure that I can't even really ship anything that doesn't work or asks for incorrect data because it just won't let you ask for incorrect data.
Then we have styling stuff that's like, if I put my styling here too, and I scope my styles in this component, I can't screw up other components. It won't even let me do it. The styles are too scoped that I can't screw up other parts of the app if I just use this default feature. We're getting more and more frontend abilities and then the frontend is saying, "Well, let's lock it down to the point where you can't even screw it up." Of course, there are ways to screw up anything but, for the most part, it guides you to not screwing up. It's just kind of fascinating to watch.
Dave: There's that CSS in JS post. I don't know how to pronounce the name or the abbreviation, but it was about why I like CSS in JS and referenced the pit of success, which I think was a Joel on Software-ism, but just that you try to guide people.
Dave: Yeah. No, I mean I think that's true. I think there are some benefits. For me, I've been using Vue on a project or Nuxt, specifically. What I like about it is it does some things. It has some structure to it. It's like, "Oh, are you managing state? Are you doing a global store kind of thing?"
You just put that file in the store directory and it automatically registers as a piece of global state. That's just like, "Well, that's handy. I love that." Stuff like that, and a lot of Vue is, there's a lot of first party components that try to help you and everything you need to build an application has already been -- it's already part of the Nuxt or Vue family, like authentication. You don't have to do NPM install passport blah-blah-blah. There's a Nuxt auth component.
It's probably using passport under the hood. I don't know why it wouldn't. But you have a first party thing to kind of get you doing it the Nuxt way. I like that. It's kind of very reminiscent of kind of Rails-y sort of….
Chris: Yeah? Did it feel pit of success-y?
Dave: Yeah. At first, you're like, "I don't know how to do this," or, "I'm not sure how they want me to do it," and then you do Google or Bing. I do Bing. You do a Bing, and then you get the first result is like, "Oh, you use the built-in thing that's already in there. It's already in your code base." You're like, "Oh, okay. I should just use that."[Laughter]
That feels pit of success-y to me because--I don't know. That's the thing, too, is when you look for an answer to a problem. Can you find it quickly or is there a first-party solution to it? I guess that's maybe totally different than the pit of success thing. It's just sort of like, if I am going to use something, how can it lead me towards success, I guess? I don't know. I'm lacking--
Chris: I love that.
Dave: You know what I mean.
Chris: I know. It's hard. Yeah, I don't. But I mean that's why Rails was popular a million years ago. You know?
Chris: That's probably why WordPress is still popular because it has all these "tell you what to do" isms, you know, that people like. People love to be told what to do. It's amazing.
Dave: Yeah, and if it's too hard to do, like when you're young and dumb. You're like, "Yeah, I'm going to do it." [Laughter] But, after a while, I think you get a sense like, "Oh, it's hard to do this thing in WordPress. WordPress probably just doesn't want to do that and maybe I should look for a different tool. I think that's awesome. I think you start understanding the tradeoffs for tools years after using them. I think that's a thing, too, so I don't know.
Chris: Like WordPress.
Dave: Yeah, WordPress. It dumps everything in a post table. It really wants you to write posts, so there you go. Just blog.
Dave: All right.
Chris: We got that. That's a can of worms for another time. Thanks for a lovely chat, Dave. That was great.
Dave: Yeah, this is good. Thank you and thank you, dear listener, for downloading this in your podcatcher of choice. Be sure to star, heart, favorite it up. That's how people find out about the show, or follow us on Twitter, @ShopTalkShow, for tons of tweets a month.
If you hate your job, head over to ShopTalkShow.com/jobs and get a brand new one because people want to hire people like you.
Chris, do you have anything else you'd like to say?
Chris: [Drumroll] ShopTalkShow.com.