417: RSS Feeds, MMO Games, DnD, and Custom Fields

Download MP3

We're talking RSS feeds, Gemstone 4, MMO games, DnD, Jekyll vs Eleventy performance, email newsletters, Github and Microsoft, and strategies for dealing with Jamstack page jank.



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:42 RSS
  • 13:07 Jekyll vs Eleventy
  • 19:48 Sponsor: X-Team
  • 22:05 Gemstone 4
  • 41:31 Sponsor: JetPack
  • 43:25 Microsoft buying GitHub
  • 53:21 What are strategies to deal with page jank in Jamstack?


[Banjo music]

MANTRA: Just Build Websites!

Dave Rupert: Hey there, Shop-o-maniacs. You're listening to another episode of the ShopTalk Show. I'm Dave--at home with the kids--Rupert and with me is Chris--comfortable in the booth--Coyier. How are you, Chris?

Chris: I'm doing all right. Thanks, Dave.

Dave: I only say that. It's not -- I'm not -- it's not a problem. My kids are greater.


Dave: I want to give the listener the expectation, the 90% probability that one kid will run in here and say they have to poop.

Chris: Oh!

Dave: I just want to give everybody the right frame of--

Chris: What's your poop percentage? If your kid says, "I've got to poop," you pick them up, put them on the toilet, are you talking 100% in your household?

Dave: Oh, 100%, yeah. They hold it for multiple days.

Chris: [Loud laughter]

Dave: So, you know it's there if it's--

Chris: We're down. We're under 50%, I think.

Dave: Oh, so it's false alarm town.

Chris: Yeah.

Dave: Well, that's -- kids. Kids, man. It's funny. I'm sure like all the people without kids are, like, "This is disgusting," and I agree. But the minute you have kids, like 80% of your life is about bowel movements.


Dave: It becomes -- you are now up to speed. It's a majority of you and your partner's conversation.

Chris: Mm-hmm. I wouldn't have it any other way, Dave.

Dave: Hey, it's good.


Chris: You mentioned RSS a little bit, RSS being -- [Laughter] Oh, just a hotter topic than you'd suspect, over the years. You know, with most people in the world not caring at all and some people caring very heavily. I've just always had an RSS feed for the sites I produce. You've probably always had an RSS feed. Not only do I have them but I have them because I like it, because I like to read other people's sites in that way. It just seems to be the only way to do that in a good way.

I have literally hundreds of sites that I subscribe to and I cannot just visit them tab by tab every day. It's not happening. To have a technology that aggregates all those feeds together and allows me to read it is wonderful. There are so many apps that allow you to do that. It's just kind of fun, too, to experiment with the different apps.

You said you just tried Reader, but we'll get to that. What were you on before? How were you reading feeds?

Dave: I do Feedbin.

Chris: Oh, the website.

Dave: I pay $5 for Feedbin.

Chris: Yeah.

Dave: The website. But then they have an app, right? The app is just your classic RSS looking app. It's the list of feeds.

Chris: I didn't know they had an app.

Dave: Well, yeah. It's there.

Chris: Is it a progressive Web app or whatever?

Dave: I assume it's like a Web app because it's very similar. It's a list of feeds. Then you get the list of the summary excerpt or title thumbnail kind of list. Then the article column, the big, almost like an email app or whatever.

Chris: Oh, I see. They do. If you go to their website /apps, it suggests two other apps before their own.


Chris: Which is kind of funny.

Dave: That sort of is telling.

Chris: Yeah.

Dave: I was just using that because it was the one, you know. It was the service I was using.

Chris: Right.

Dave: I just was like, this is great. But I was having -- I found myself pulling out the laptop rather than the iPad because I just was like, it is easier for me to use JK, forward back.

Did you know most RSS feeds or readers have VIM key-bindings? Did you know that?

Chris: Uh… No, but I -- no. I guess, no. But I use key commands, generally. I expect that they're there but I don't think of it as VIM-like.

Dave: You can J and K to go forward and backward through the list or whatever, like up and down.

Chris: Sure. Sure.

Dave: I'm usually doing that in an RSS app. I just was like, "Oh, it's just so much easier if I do that." Then I was also frustrated because part of the whole reason I bought the iPad was to consume -- do my reading. I'm Steve Jobs on the chair reading the iPad.

Chris: [Laughter]

Dave: That's why I bought it. I was getting RSI almost feels from trying to operate the app because you had to scroll all the way through the post to go to the next one.

Chris: Hmm.

Dave: The column was too far away to use my thumb to navigate through posts. I just was like, I'm going to try another app. I did Reader, which is kind of a classic iOS or Mac app, right? Reader 4.

Chris: It's been around awhile, yeah, and 4 was a big update for them, I think, and it's great. I use Reader too.

Dave: It's great and it syncs with Feedbin, which is perfect. Now I'm just firing through.

The other day, it was maybe Sunday or something. That's usually when I do that. I plowed through 1,300 RSS articles in one go. Most of it is The Verge and headlines, but I just was like, "You know what? I’m just going to get through this. I'm going to go through it." Pew!

Chris: Yeah. Do you have these, like--? I feel like I have running totals in my head that's like, "This feed displeases me a little bit," but not enough to unsubscribe yet. If it displeases me next week, then I'm going to actually prune it. How pruney do you get?


Dave: I wish I was more and this is the problem I hit probably ten years ago with Google Reader. You just kind of become--I don't know--attached to the subscription. Kottke is a really great example for me. I like his posts but I don't read them every day and they pile up. Now I have 200 or 500 Kottke articles.

Chris: Oh, my gosh. Really?

Dave: I like Kottke. It's not the issue. But I know a lot of his are a mix of video or even it's kind of a high investment post. His content is usually, like, "Here's a video I watched. It's 22 minutes long." I'm just like, "That's not what I can do right now. That impedes my progress," so I let those pile up.

That would be one I could let go and then probably be happier. I like the little pieces of content, but I would maybe just be happier if I didn't know about red pandas in Southeastern Tibet. You know? Whatever. [Laughter]

Chris: I'm a bigger fan. If I see a Kottke post I'm like, click. I love them. Not that you don't. I know what you're saying. It's just a different vibe, but he's definitely not on my cut list.

He's been doing this thing lately where there are all these posts. Every day it's like four links Thursday noonish, or whatever. Have you seen those?

Dave: Yeah. Yeah, I've seen those.

Chris: They're just the headline and I kind of like it, but it seems like -- I don't know -- not my favorite experience. I like the context that he provides and there's no context in these link dumps.

Dave: Yeah.

Chris: Yeah, this probably isn't as appealing to you as a Windows person, but I know Reader only works on iPhone/iPad and Net Newswire does too. You may be interested. It also syncs with Feedbin. Feedbin seems like the new hub. Whether you use it for its actual app or not, it syncs with lots of stuff.

Dave: Mm-hmm

Chris: It's good that way. Net Newswire is nice, although, I tried it on iPhone and I think they did a good job but Reader is still ahead. What's appealing to me is that New Newswire, on my Mac, is really good. It feels like, you know how this is -- this is a little Steve Jobs-y in the chair too. Some apps just feel like Mac apps.

Dave: Mm-hmm.

Chris: They adhere to the vibe of that spirit. Is that for Windows too, like, this feels like a Windows app?

Dave: Uh… Yes and no. I would honestly say that's one of Windows's biggest problems because, if you think of Windows Vista, there are still apps out there that look like that, like old tech.

I use this thing called Riot Image Optimization. It's for image optimizing. It's basically image optim, but kind of less good looking. It also does PNG, Alpha, or whatever, Alpha like the changing opt of PNG.

Chris: Does it look like a Windows app or not or it's a weird--?

Dave: It looks really much like your stereotypical Windows app you downloaded from a shareware site. Then there's this whole section of apps in the Microsoft app store that look like Windows 8, which was a very distinct, like big blocks of primary colors, you know. They are not great to use, in my opinion.

Then, a lot of the RSS readers are that because they were coded as some, like--whatever--learn how to program on Windows demo. A lot of those RSS readers in the store are from that era.

Now, there's this new Windows 10 UI. I think they call it -- what it is -- UWP (Universal Windows Program).

Chris: Okay.

Dave: It's sort of this fluent UI, which you've maybe heard floating around in the design system world. It's this sort of like mature app-like interface. I would say most apps have not translated over to that yet and it's a bummer.

Chris: There's no feed reader influent yet, probably?

Dave: Not that I know of. It would be so cool if there was.

Chris: Feedbin on the desktop. Do you read -- feed reading is exclusively in the chair away from--?

Dave: It's just Web. Feedbin, I go to the URL in my browser.

Chris: Yeah. Yeah.

Dave: I can PWA it.

Chris: It's good.

Dave: It'll PWA and I can install it to my desktop. I think I have one. I used to have it in the doc, but not anymore. Maybe it's on my laptop.


Chris: Do you do the newsletter? Do you send your newsletters to Feedbin or do you let them come right to your inbox?

Dave: I send my newsletters to Feedbin and it's great.

Chris: Me too! I love it!

Dave: Unfortunately, I have ten cassidoos just sitting there, but I know she writes a quality letter.

Chris: Oh, she's the best. Sometimes, depending on my mood, I'll go right for the joke because she does a joke at the bottom of each one--

Dave: Oh, good. Yeah.

Chris: --and they're always real daddy. Cassidy, you'd be an excellent father. [Laughter]

Dave: [Laughter] You. You have proven yourself for dad-hood.

Chris: Yeah, she's at Netlify now, so congrats there.

Dave: Yeah.

Chris: Still writing the Stack Overflow newsletter, so an influential person out there.

Feed reading, wonderful. I'm on the desktop, largely Net Newswire, sometimes the Feed Minutes. I get the newsletters in there. Love all this stuff. You have a feed. Feeds are just not hard anymore, you know. I don't do anything special hardly with the feed. Although, just saying that, the one site that I really have to doctor up the feed for is this podcast.

Dave: Oh, yeah.

Chris: The reason is because we decided to long ago, and I absolutely do not regret this, is to do all of our data entry for these episodes with advanced custom fields in WordPress. Meaning that instead of just the title and post content, we use the title but we've moved everything else into custom fields like who are the guests. That's a repeater field and the repeater field has guest name, Twitter profile, yadda-yadda-yadda. The time jump links are its own custom area. The links from the show are its own custom field. It just feels like that's how the CMS should go.

Like if we were using Craft CMS, we would have had to do that. You design how you want the data to be entered and then enter it in that way. The WordPress version of the Craft approach is basically custom post types with advanced custom fields. It's a nice way to work, but the default RSS feeds have no idea what your custom fields are. That data doesn't just turn into an RSS feed, so you've got to get fancy-dancy in there and do it.

I'd almost think that'd be a nice advance custom fields plugin is some kind of UI or something for, put this field in my feed too. But you need to kind of drag and drop, almost, because you need to be like, this one should be first and this one should be second and blah-blah-blah. You know?

Dave: Yeah.

Chris: That was a lot of info.


Dave: Yeah, it's funny. You start using WordPress as a CMS and then you get another problem. You're like, "Ah, shoot! I have to go solve that problem."

Chris: Mm-hmm. Are you still on Jekyll or did you do the switcherino?

Dave: Oh, man. I am on Jekyll, but I have a fully done branch of migrating to 11ty, which is great. But do you want to know what my one hang-up was?

Chris: Didn't it turn out to be actually slower somehow?

Dave: It was slower but by, like, 0.5 seconds or something. [Laughter]

Chris: Oh, so who cares? Yeah.

Dave: It should be a "Who cares?" but Dave Rupert, the scumbag, is--


Dave: Yeah, scumbag Dave Rupert does think about that. The difference was if you hit save, it was a -- you want it to happen as quick as possible. You sit save. The site recalibrates or you know.

Chris: Yeah.

Dave: I had tuned Jekyll so hard that it was very, very fast. I think I can get 11ty to that speed or whatever, but I was also waiting for my new computer or new Windows update. I'm now on WSL2 on my big machine.

Chris: Oh! Oh.

Dave: I can give you those numbers. Are you ready?

Chris: Yeah.

Dave: Jekyll before was 8.9 seconds, so 9 seconds to compile.

Chris: Every time you hit save?!

Dave: Every time I hit save. This is for build, so I guess saving would be a little faster but building.

Chris: Hmm.

Dave: Then 11ty was six seconds.

Chris: Oh!

Dave: 11ty was faster before.

Chris: Okay.

Dave: But now, my Jekyll on my big machine is 1.1 seconds.

Chris: Holy crap!

Dave: 11ty is 2.3 seconds to build the whole thing. Again--

Chris: Massive improvement but, still, it's--

Dave: Massive improvement, like 3x, 4x on the 11ty.

Chris: Just because your operating system changed?

Dave: Well, the whole way Windows does Linux all changed, so now it's in kind of like -- they call it, I think, a micro VM or something like that. It's basically a VM that's running on your machine. It's very tiny. It's not spinning up a docker or anything like that. It's very, very quick and fast. It happens in 200 milliseconds or something like that.

Anyway, these are all -- I'm splitting hairs over a second and I really shouldn't because there are things I want to do. I want to start getting into GitHub actions and running auto, running my site through Lighthouse and things like that.

Chris: Yeah. Yeah, dude.

Dave: That's stuff that if I'm in the node ecosystem is just easy. It's built for that, right? But if I put my code up and do a GitHub action, well, now I've got to do all the Ruby crud to get the Ruby gems to make my site. That's okay. I can do that but then I've got to do the node stuff too. I'm balancing two systems.

Chris: You're in two worlds. Yeah.

Dave: I'm trying to smash two systems into a CI, and so I don't want to do that. I want to get out of that lifestyle.

Chris: Ruby is just endless trouble, unfortunately, as much as we both kind of have sweet spots for it.

Dave: I love it! But if I can get out of it, if there's a way -- I still don't think there's--

I tried out Redwood because we had Tom Preston-Warner on. I liked Redwood quite a bit. It did give me Rails feels, but there's still not a Rails in JavaScript completely. This is pretty close, but it is--

If I was building an application, I would still maybe choose Rails. That puts me in a big Ruby ecosystem and probably only deploying to Heroku because that's the only thing that really understands it.

Chris: Well, yeah. If it's in a docker and stuff, it seems a little safer. I think you get the most trouble when it's like, I'm just going to run it on my main machine just off global Ruby and use RBN vanilla. Then you're like, "Um…"

Dave: …you have problems.

Chris: If it's isolated, it's cool. Yeah, you're going to have them.

You're still tempted to switch despite the slowness?

Dave: Yeah, it's a second or let's say one second.

Chris: Yeah.

Dave: But I feel like if I can move into my wheelhouse, there's a lot I can do from there. I've seen Wes Bos. He does auto-generated thumbnails for every post. I don't really want to get that deep.

Chris: Ooh, I do. [Laughter]

Dave: But I thought -- well, but I just thought, like, that would be something I could do if I had just a node wheelhouse. If I'm just -- I wanted to stick it in one wheelhouse, basically.

Chris: Right.

Dave: Simplify that, so I will probably switch and I just need to pull the trigger. I was really waiting on the Windows update to kind of come through.

Chris: Which one do you think will get incremental builds first? I mean that's what really unlocked the speed, you know.

Dave: They both have them now. Jekyll has it on by default in Jekyll 4, I think, because it does a bunch of cached building. You'll see a Jekyll cache folder if you build it.

Chris: Mm-hmm.

Dave: That's where all the speed is coming from and it uses Liquid C, so your Liquid is run through a C binary, not through a JavaScript C or Liquid library, a JavaScript Liquid library. A small thing there, but I think that is literally the speed difference.

Chris: Hmm.

Dave: That said, I know 11ty has incremental in beta now where you can just turn on the flag. I don't think they promote it that much.

Chris: Nice. Yeah, that's big, you know. The sites I use it on, they build 25 files or whatever, like this new Christopher Schmitt site I'm working on maybe will end up having maybe 100 high-end and it's real fast. You have a lot more than that, blog posts. You don't want to see it build all of them every time. It's not a useful use of CPU cycles.

Dave: Yeah, it does. When you see it happen, do everything on save, you're like, "Well, that was a waste."

Chris: Yeah. Yeah.


Dave: I could have told you what to build.


[Banjo music]

Chris: This episode of ShopTalk Show is brought to you in part by X-Team. You've got to check them out. This is so cool. It's literally Love dashes in domain names, of course, by the way.

Let me explain it. You can hire them. They have this tribe of developers and, those developers, they'll parachute in and help your team do stuff. Like, "Gosh, I need some more developer help on this thing. Where do I turn?" Go to X-Team and you hire them to help you build your thing. That's cool, but that's almost not what I'm talking about here.

They're also looking for developers to join their team to be one of those developers that goes and helps other people. It's a completely 100% remote company so, by parachuting, I mean figuratively, you know. You don't actually parachute in. You just help them remotely.

You help them scale so if a company is like, "We've got to scale right now!" they're going to reach out to X-Team and you're going to be one of those developers that goes and helps those companies, which help really awesome companies like Riot Games who make "League of Legends." Wouldn't that be cool? Kaplan, Coinbase, Fox Broadcasting, Beachbody: who knows what you're going to work on, but they have a bunch of cool clients. Chances are, you're going to work for multiple of those cool clients.

You can, if you choose, live and work in one of their roaming hacker houses. Probably not right at the moment with the pandemic and all, but that's a thing that they have. It changes locations monthly. I don't know. It just gives you a chance to explore the world, explore beautiful locations, take part in their adventures, and share a passion of coding with other people you live with. Pretty darn cool.

There are all kinds of great benefits too. They give you $2,500 a year just to spend on doing things that you love to be healthy, energized, and all that. Go to conferences, buy some video games, buy some cool photography equipment. $2,500, just bonus bucks to spend on stuff, that's pretty cool.

Anyway, X-Team seems very cool. I guess check them out for either reason. Do you need to get some devs on your team real quick? You hire them to do that. But the important thing is, does that lifestyle sound cool to you? Do you want to be a part of a team that does that? Go! Do it! Apply! Be a developer like that. It sounds awesome to me.

[Banjo music stops]


Chris: I have Windows. Windows 10 is still the latest Windows, right? Showing my ignorance here.

Dave: Windows 10 is the latest. May 2020 update is the latest. It's Windows 10, but it's really like Windows 10.10, if that makes sense.

Chris: Oh.

Dave: They don't really advertise those version numbers, but it's literally generations ahead of Windows 10 when it came out.

Chris: Okay. Okay. Well, I own a copy of Parallels, which is this Mac software for running VMs, which is funky because you're like, "Why don't you just use VMware? It's free." There are other ways to do their virtual box.

I like Parallel's just because it just seems a little smoother or something. It has some niceties that just does it for you like, if you want to use your microphone, fine. It just works somehow. I don't know. It just detects stuff. You plug in a USB thing and it pops up this thing that's like, "Do you want to connect it to Windows or your Mac? Pick and remember."

Dave: Mm-hmm.

Chris: It's just kind of interesting that way. All the networking stuff just kind of works between the two, which is kind of cool. It has a shared desktop, so the stuff on my desktop on Windows is the stuff on my desktop on my Mac.

Dave: Oh, wow.

Chris: It's kind of cool.

Dave: That's kind of miraculous. Yeah.

Chris: [Laughter] Yeah, and it keeps stuff in sync that way. I bought a copy of Windows 10 just like two weeks ago just to run it in there. I did it for video gaming reasons because I wanted to play this game. Theoretically, it works on Mac too. This is an old school video game. I probably will talk about it more at some point because I think it's kind of interesting. It's so old school that it's text-based. It's literally one of those games--

Dave: Okay.

Dave: --where you're like, north, northeast, you know, get broad sword from my sheath. Attack cob goblin kind of game. You know?

Dave: Whoa! What game? What game?

Chris: It's called Gemstone 4.

Dave: Gemstone 4.

Chris: It literally debuted in 1988, and it's still online. It still has an active player base today. It's 30-plus years of stuff. It's a paid game. It's MMORPG. Everybody is logged into the same instance. There are a couple of different instances based on, like, do you want to buy the expensive one? There's like a no rules version where you can kill each other and all that.

For the most part, everybody is logged into the same instance of the game and playing it. These days, though, it's evolved. Not a lot, but a little. One of the expectations these days is that scripting has got so good for it. If you want to move from one place in the game to another place in the game, it might be 100 rooms away. That's a lot of movement. Go hallway, open door, that kind of stuff.

Dave: Yeah.

Chris: It's all scripted, so you type ;goto and then a room ID or something. The script, which is a Ruby script, will run and move you to the right room.

Dave: Okay.

Chris: There are thousands and thousands of these scripts, so you have to get it installed. It's not only that these scripts run. It's also the script is connected to a server online, and so that's how players chat with each other in-game through this script running. These scripts do all kinds of fancy stuff.

It has to be running. You start up the scripting engine and then play the game through it. It's all in Ruby, but it was written a long time ago. There are not a lot of active maintainers of this project. I'm trying to install it on my Mac, but I think it worked in Ruby 2.5 and then broke in 2.6. Somebody made a patch, but now Ruby 2.7 is out and it has protected variables, yadda-yadda. There's a problem, but it's not a deep problem. It's just like, one gem is too new and you've got to roll it back or something-something-something.

Dave: Mm-hmm.

Chris: I cannot get it running on my Mac. I just don't have the Ruby chops to figure out what the heck it is. Of course, it works a little better on the Windows side because, I mean, you know.

Dave: Wow. Okay.

Chris: That's why I buy Windows and run it to spin up and play the game. I haven't given up on my Mac yet, but I'm willing to play on Windows for now.

Dave: This is why you DM'd me on Saturday morning asking me about RBW files or whatever.

Chris: Yeah! Because an RBW is a Ruby executable.

Dave: Yeah. Almost like an exe or something or a DLL or something. Yeah.

Chris: Yeah. Right, but I was running Parallels and Parallels, unfortunately, is too smart, so it saw that RBV and it wanted to open it with x-code on the Mac side. It was interfering too much. You solved my problem, by the way.

Dave: [Laughter]

Chris: You had me install this Ruby installer thing, which then, kind of, Windows was like, "Don't worry. I'll handle these RBW files now."

Dave: Yeah.

Chris: Double-clicking it performed the correct action and I was able to get in.

Dave: Danger, man. That's cool.

Chris: Ugh!

Dave: That's fun. That's big nerd stuff, man.

Chris: Oh, man. You don't even know.

Dave: Ruby-based -- I don't know -- dungeon crawler.

Chris: Right.


Dave: I know a lot of the -- WoW used to use LUA, which was kind of Ruby-esque, I believe.

Chris: Oh, that's how you could script WoW?

Dave: That's how you scripted WoW, so there are a lot of kids with just intense amounts of LUA knowledge, you know. [Laughter]

Chris: Yeah.

Dave: LUA maybe isn't ultra-practical.

Chris: Did you do WoW at all?

Dave: No, I never did.

Chris: Never once?

Dave: No, never once. I just know it's a time sync. It's a grind game, you know, and I've fallen into that grind game pits and I just have to tell myself, "No," because Dave Rupert is cool, but I also get mad at myself.

My biggest thing, I'll go into a World of Warcraft. You're a Starcraft player, so you get it. But I go into a World of Warcraft bender. Not World of War -- Warcraft bender--

Chris: Right.

Dave: --every once in a while.

Chris: Like Warcraft 2 or 3?

Dave: Like 3, yeah.

Chris: Yeah.

Dave: Two or three. That was my, "I like this."

Chris: Oh, yeah! Yeah!

Dave: I like the older one because it's just simple, right?

Chris: Mm-hmm.

Dave: It's less crud.

Chris: Two is funner than three, I think. Three had the heroes. That was weird. Anyway.

Dave: Heroes and introduced the tree orcs or whatever they were. But what I like about it, I liked playing it but I would inevitably get to a place where I spent all Saturday on a level and I did not have a good save point and I lost. I'm in a lose state at my last save point. You know what I mean?

Chris: Ugh.

Dave: I'll waste a whole Saturday or a whole weekend on Warcraft. Then I'm just like, "Never again!" That lasted about ten years, that banish.

Chris: [Laughter]

Dave: I'm banished from the realm for ten years.

Chris: It's got to be the journey though because I look at video games like, there is no end state of this game that means anything at all - nothing.

Dave: Yeah.

Chris: Whatever the journey is, it has to be enjoyable on the way. In this Gemstone game, I'm talking about, literally, there is no ending of it. It's just not.

Dave: No. Yeah.

Chris: There is a level cap like, wow, you get level capped. Then you can still kind of play and the game tries to find you reasons to not cancel your subscription.

Dave: Right.

Chris: Is there endgame dungeons that are still fun? A lot of it comes from, there are other people there.

Dave: Mm-hmm.

Chris: If you're inclined to role-playing, that will keep you there. There are events that will keep you there. There's your ability to help other people and your knowledge of the game mechanics is interesting. I'd almost promise you there is almost no game more complicated than this one I'm playing right now.

Dave: [Laughter]

Chris: It's 30 years old, written in Ruby.

Dave: Yeah.

Chris: The mechanics of the game. Now I'm starting to be involved, right? I'm on the discord chatting with people in-game. I'm supporting their Patreons and talking with them that way. They've got all these email threads going. I'm talking to the people who make the game just because I wanted to dig into this because it was a formative part of my youth was playing this game. I'm like, "I'm back, baby! Having fun!"

Dave: I'm like, okay. I have a picture of a meet-up, a conf, or something. It's all people over 35.


Chris: Yeah.

Dave: It's like 100% over 35. That's cool.


Chris: The journey, to me, is the understanding of these mechanics, in a way.

Dave: Mm-hmm.

Chris: The community is so small that I'm finding it unbelievably nice.

Dave: Yeah.

Chris: It's almost like people's goal in life is to be helpful in here, for the most part. It's making me nostalgic of, like, almost way earlier Web days. Whereas, I'm like, nah, it's not like the community is bad, but it's kind of bad. You know? It's definitely not as fun. It's not like, "We're all in this together. Let's solve problems together. Let's help each other as a matter of course."

Dave: Yeah. No, that's cool. I play DnD.

Chris: Sure.

Dave: I used to play online with Lon Ingram and Sue. I forget Sue's last name -- @deathbearbrown on Twitter. She's a very talented developer. This guy Bill and a few other people, Kyle Farren. We used to play online. Then that group kind of disbanded as DnD groups do.

Then went over and started playing in-person with friends. Then Corona hit, and so then we kind of had to go onto Zoom. It's fun, but I like the -- I've discovered I like the group storytelling aspect of DnD. Then you roll some dice to add some luck and unexpected events into the story.

Chris: Sure. Sure.

Dave: But it's like discovery, and I'm really bad at all the investigation stuff. The DMs will be like, "Do you want to investigate anything?"


Dave: I'm like, "No. No, I'll just walk through that door, I guess." [Laughter]

Chris: Yeah. I hate to say this, but it kind of bugs me about the DnD world is that you need a really talented DM to make it work. What I like about the online, the MMORPG thing is that it's like that. It has the roleplaying aspects. You're still literally talking and acting and smiling and jumping and there must be 10,000 verbs in this game I play. But that there's a game engine behind it so you don't have to literally roll dice to see if you killed the monster. There's a combat mechanic still involved that it's like you are literally fighting this monster. There's no person's opinion that's like, "Okay, you won I guess."

Dave: Right. Right. It's kind of more -- yeah. Yeah, I think that's interesting because you're playing strictly against sort of the machine. You're playing against the machine.

Chris: Right, and I could see not liking that. The in-person aspect to DnD is also wonderful. That's real.

Dave: There's some flexibility.

Chris: Yeah.

Dave: It depends on the DM too. You're right that it all hinges on that person because I've heard people say, "Oh, my DM has all these extra rules," or, "The guy I play with is very good, but I think he enjoys the rules like, 'You can't do that because of this.'" That's fair because I think a game is a system of rules. That's what games are.

Chris: Right, but you've got to enforce them in the right way. That turned me off a little bit too. When you're creating a character, you do roles for your strength, your dexterity, and all that. Then you write the number on a piece of paper. It's like, I'll write the number on it.

Dave: Right.

Chris: I'll write whatever number I want on the fucking piece of paper.

Dave: Well, and the more you play, it's just make them up. Here, use 13, 12, 50.

Chris: Yeah. [Laughter]

Dave: [Laughter] Oh, you're playing a monk? Use 13, 18, 9, 7, 9, or whatever. Yeah.


Chris: This is a part of my childhood, right? I was -- [Laughter] This is so fascinating. I was a kid, middle school, early high school. I had a brother and then my brother's roommate was this guy, one of the Raffel brothers, and Raffel brothers made Raven Software. Raven Software made Hexen and Heretic.

Dave: Oh, wow!

Chris: These old baller doom-like Windows games.

Dave: Kind of dungeon crawler games.

Chris: Yeah. Yeah! They were really good, and they're still around today. They make Call of Duty for cripes sakes, which is amazing. Raven is a big name now, so Steve was just this guy that worked at the print shop with my stepdad, like pulling screens, making t-shirts and crap.

He's like, "Oh, I'm also a computer genius, so there's that." This kid comes to town, my age, starts at my middle school, a kid from California, kind of rough and tumble. "I'm a baller from California. It sucks I have to live here in Wisconsin. Meh."

But then you realize he's just a kid and he's cool and he's a nerd.

Dave: Ah, he's just a Californian. I think you just described California.

Chris: Yeah.


Chris: He starts to embrace it. Whatever. His name is Jeff. His dad came to town because he was going to work for Raven Software.

Dave: Oh, wow.

Chris: Then it turns out they split ways or whatever, but he's like, "Well, my whole family is here in Wisconsin now and I have all these connections. I'm going to start my own computer game business." He gets a contract with -- Wizards of the Coast owns DnD now but, at the time, it was somebody else.

Dave: DnD, yeah.

Chris: Who was the original creators of DnD? Um… they were in Wisconsin, too.

Dave: The guy? Oh, okay.

Chris: Well, there's Gary Lomax [sic] or whatever his name is.

Dave: Yeah. Yeah.

Chris: Gygax.

Dave: Yeah.

Chris: No, but this is post that.

Dave: Okay.

Chris: There's a company. Anyway. Whatever. He gets the contract with this original company to make the very first Windows app for character creation. You'd buy this app in which, ultimately, your goal is to print out -- what's your character's name? I can't wait.

Dave: Oh, I got -- do you want the … birdman bard named Tiln Barderson from the Barderson family?


Dave: You know the Barderson family is well-known bardic family.

Chris: Sure. You'd type that in and you'd type in your extra stuff. It would roll the dice for you. You'd pick your skills and all that stuff and print it out. What a -- you know, my god. My friend's dad is making the DnD, the first DnD app. It was called Core Rules, I think, too. The reason you'd buy it is because it was also computerized versions of the player's handbook in the Dungeon Master's Guide.

Dave: Oh, yeah. Okay. Yeah. Big.

Chris: With all-new illustrations and all that cool stuff. Anyway, we were just nerds. Of course, we barely even played DnD. We were into Magic the Gathering.

Dave: Yeah.

Chris: Sorry but--

Dave: You forsook the game. No.

Chris: [Laughter]

Dave: No, that's cool. Wow.

Chris: I don't even remember where I was going there but there was something nice about a computer telling you that your character is approved, not like you just kind of figuring it out.


Dave: Right. You didn't. Yeah, yeah. I just did Roll20, so we're on Roll20. If somebody works at Roll20, please get in touch with me. I want to help you out big time with your project.

Roll20 is kind of the de factor, online, let's play DnD. What I decided, I just was like, I don't want to manage the character. This is the same reason I don't play John Madden football games or whatever. I don't like the managing. I do spreadsheets all day at work. I don't want to do spreadsheets when I'm playing. I just did their character builders.

Chris: Okay. Yeah.

Dave: I just was like, I just want it all automated. If I don't get what I want, that's fine. I'm not going to actually care because I just really, like, I don't want to manage spreadsheets, like you were saying, or enter wrong numbers or make those up.

Chris: Yeah. Right.

Dave: I just want it done for me. Anyway--

Chris: Yeah. Yeah. Yeah, I don't know. But the computer games that don't have any element of randomness and the MMORPG thing is just a big deal to me that there are other people there, too, and they're experiencing with me is a big deal. You didn't do WoW, but did you--?

I once knew a kid who said everybody has got one good MMORPG in them. You only get one.

Dave: Ah, that's a good -- I don't know that I've found mine yet other than possibly Overwatch, which is a shooter game.

Chris: Yeah. That kind of counts, I think. Yeah.

Dave: But it is like you're slowly -- you're not adding -- but like, I do it for a long time and it directly involves you with five other randomized people who are just terrible human beings. [Laughter] You know, there is all that, but I think that would be -- that's maybe my biggest, longest sort of like MMO, you know, or just multiplayer game.

Chris: Okay. Yeah. EverQuest? Nothing? Remember that one?

Dave: Never did that. Never because, again, I've seen -- I've lost friends to EverQuest.

Chris: Yeah. Right.

Dave: [Laughter] The guy who--

Chris: Don't want to hang out anymore.

Chris: Wouldn't hang out because they had a guild meeting or whatever, which is fine. No judgment zone. I just know the time sink, which is a credit to the game. It's actually pretty -- that's a big deal.

Chris: …that hard? Yeah, and that you pay monthly to do it, so I bet the economics of it are great. I bought the Final Fantasy 7 remake. I've been playing through that.

Dave: Mm-hmm. Yeah. I heard that's good.

Chris: What was it? $60, something like that.

Dave: Whoof.

Chris: That's a lot of money, you know, for a video game. My god. I've been looking through because I have the PlayStation 4, like what other games. There's some dumb game where you drive trucks really slowly, but it looks good enough. Literally, really slowly, like you're stuck in mud and you have to get out.

Dave: Was it Death Stranding? Is that the game? [Laughter]

Chris: Maybe. It looked good but it was also $60, $70. I'm like, are you kidding me? To drive trucks slowly? That's crazy.

But anyway, so you get $60 out of you. Poof. Screw that. WoW gets $30 out of you every month for years.

Dave: For years. Yeah.

Chris: That's way more profitable, you know. [Laughter]

Dave: Well, that's why rule number one is, never pay for video games. I think that's like, you've just got to never pay. [Laughter]

Chris: Sure. Good luck with that.

Dave: No, I'm just kidding.

Chris: Can you even pirate a PS4 game or an Xbox game? I don't even know if it's possible.

Dave: I'm sure it is possible but we don't talk about that on this show.

Chris: [Laughter] No, I'm just fascinated by it, in general.

Dave: That's for shoptalk.tor.


Chris: ShopTalk at Night.

Dave: Shoptalk.onion or whatever those websites are.


[Banjo music starts]

Chris: Hey, ShopTalk Show listeners. This episode is brought to you in part by Jetpack. Man, they've been doing some cool stuff lately. You know Jetpack, right? It's a plugin for your self-hosted WordPress site that brings you the powers of Automattic, you know, all kinds of powerful cloud-based stuff. We've talked about that a bunch of times.

There's lots of stuff that Jetpack can do, but they've been moving more towards a pay for what you need model. For example, they have search, right? I use it on our sites. I use it on CSS-Tricks. It has awesome search that happens off your site in the cloud, indexed by Elastic Search. You have a bunch of control over it. It's super powerful. Absolutely love it.

That's a la carte, meaning you can just buy it. You know you had a la carte lunches. I always think of that, like middle school. You could just get a tray lunch and you just get to have whatever they have or you could buy just an apple for a dollar, just a slice of pizza for $1.50. You know? [Laughter] I don't know why. It's what I think of.

You can just buy search if you just want search and you want Jetpack to do nothing else for you, but they have new ones. Backup is the same way. You just want backups from your WordPress site and it backs up everything: your database, your files, your media, everything. It's super trustworthy. Love that. You can just buy that if you want.

Their brand newest one is Jetpack Scan. If you're just concerned about the security of your WordPress site, which Jetpack does a bunch of stuff anyway for, but this is literally looking at the files and the database of your site to make sure there are no problems. If it detects problems, it lets you know if there are problems and most of those problems you can fix with a click. It knows how to repair it and does. How cool is that? Jetpack Scan, if you just want that, if you're just like, "I need more security for my WordPress site," you can just buy it. It's $7 a month. Pretty cool. Thanks, Jetpack.

[Banjo music stops]


Chris: All right, well, we're 40 minutes in and we barely talked about websites at all. Speaking of Windows stuff, there are some things to talk about there. Somebody asked us about just the fact that Microsoft bought GitHub. That was a big deal thing. Sometimes, big deal things like that happen. They bought NPM too.

Dave: Mm-hmm. Yeah. Wow.

Chris: Then you just kind of forget about it. Sometimes you do. Sometimes you don't. But in this case, I feel like the world largely has. Once in a while, people get mad because right now it's like, well, GitHub had that ICE contract, so Microsoft has an ICE contract. That's not cool.

Dave: Yeah. No, I mean I assume that's all still an issue. It seems like GitHub has maintained a decent amount of autonomy. It's not rolled into Azure or something like that. [Laughter]

Chris: Yeah. Yeah.

Dave: They just had that global -- GitHub Global, I guess, is what it's called where they put VS Code inside GitHub. Did you see that, the code spaces thing?

Chris: Oh, right. Right.

Dave: If you're in GitHub, you can just be like--

Chris: They had it before. It was kind of a rebranding of something they already had, in a way.

Dave: Yeah, but just kind of the online editor, which is just interesting and cool. Again, I'm Dave Rupert. I maybe more traditional, but I have no desire to manage code in a Web browser that's going to crash on me. [Laughter] For some reason, if I manage code in a Web browser that's inside an app on my system, I'm just fine with that. [Laughter]

Chris: [Laughter]

Dave: But then a tab, I feel I'm just going to close it by accident or something like that.

Chris: It's funny how the perception of that can be so different. To this day, we don't use a Web app to record this show because I don't trust it. I just don't have that level of trust to get the--

Dave: I do a podcast that does do it in a Web app and mixed results. We've had a couple crashes. That would be detrimental for us.

Chris: Mm-hmm.

Dave: Like if we had a guest who is a billionaire.

Chris: Sometimes cloud stuff like that, you trust it more because you're like, "I don't know. At least it's in the cloud. At least I don't have to be responsible for this tech." You know? Sometimes else is.

Dave: Right. Right. Yeah, exactly. In theory, it could be the perfect solution. Local backups, online backups, all that stuff, and then it just gets synced, diffed, or something. Yeah, anyway, it's weird. It doesn't feel stable.


Dave: One thing I'm looking for, do you have this on any of your -- GitHub discussions? Have you seen this?

Chris: Well, no, I haven't. I think I knew that it was coming. Remember, they bought or whatever?

Dave: Yeah.

Chris: feels like it's spinning down.

Dave: Oh, really? Okay. I haven't heard that, but yeah.

Chris: Well, it just seems unmaintained and they have a big button that's like, "Migrate this community elsewhere," which basically just turns it off.

Dave: Yeah. Okay. Yeah because it seemed like they had a discussions product or something. It was kind of more like at the organization level or something like that. Now I think you're getting into the repo level. It's only available on open source products or whatever.

Chris: Okay.

Dave: I think eventually it's going to go to the private repo level too. I don't know that for sure.

Chris: Is it like forums, essentially?

Dave: It's basically forums, but it's like the perfect thing for RFCs, request for consideration. This is not an issue. This is just a discussion. You guys use Notion or whatever.

Chris: Yeah, we get that all the time. I'd say most things I open up on other people's products are not actual bugs. They're like "what ifs."

Dave: Yeah, exactly. Right? I just want to, like, "Hey, I'm curious. What if we did this X, Y, Z?" or something like that. We're building a little side project at Paravel. It's just like -- I'm just like, "Oh, we need to think about the onboarding experience or something like that. That's not what we need to do now, but here are my ten ideas for the onboarding experience. I'm just dumping ideas here. We can talk about them at a later date, but they don't need to be issues because, if you put too many issues in your issue feed -- and we just went through it this morning. We pared it down from 28 to something like 14. It's just a breath of fresh air when your backlog is manageable. You're just like, "Oh, I can actually work on this."

Chris: [Laughter]

Dave: Like, "I see what's going on," you know? That's kind of an argument for no backlogs or whatever but being able to digest what needs to happen is such a big deal. I keep Googling when is this whole issue or discussion thing coming to projects?

It seems to me like GitHub, since the Microsoft thing, and I don't know if money, autonomy, or management, KPIs, or whatever the thing is, it seems like they're able -- the things I see leaking out like redesigns of the repo or redesigns of the issues or notifications and stuff like that, all that stuff is starting to happen and it seems like they have, I guess, investment into improving the product. Whereas before, it seemed like for a good five years, GitHub was just like, keep the lights on, you know?

Chris: Mm-hmm.

Dave: Even a few outbreaks like, hey, we need--

Chris: Help.

Dave: --reactions or something.

Chris: Oh, right.

Dave: We need help. I think Cinder Soros or whatever, who is prolific and has 20,000 repos, was just like, "Hey, I need help. I can't do it here if you can't do it."

Chris: Hmm.

Dave: Anyway, yeah.

Chris: Yeah, so it seems good. It seems largely positive. That's the vibe I get, too. I don't think they're going to ruin it.


Dave: Then GitHub Actions is a big thing. I'm sure that it's going to be like, "Oh, now you can just--"

Chris: That's where the world is turning. It's like, do your DevOps here for free.

Dave: Do DevOps here and, oh, what? You want to deploy to Azure? Go ahead. Here's a button. Click a button.

Chris: Yeah. I like that. I like tight integrations when you can, especially when it's like tight integrations that are possible and optional. The product is still good but if you want to, that's cool. We're looking at Azure DevOps at Code-Pen because it's just really good.

Dave: I use, for a client Azure DevOps.

Chris: Yeah?

Dave: I don't know if it's my favorite, but what's nice is it's integrated. Your repos, your issues, your work items, that's all in the same thing. That's all in the same hub and you can have multiple projects in the same hub. The PR, you can build pipelines. It's all visual, added some visual stuff. It's not just like guessing.


Chris: We solved an issue just this week, Alex did. He's just been on a tear doing all kinds of cool stuff. He provisioned an Azure container that has GPU on it so that we can detect whether a Pen is using WebGL or not and send it to that instance to take a screenshot because, if your computer doesn't have a GPU, it won't render WebGL and you won't get a screenshot.

Dave: Oh, wow.

Chris: That's a pretty specific scenario, you know.

Dave: Wow. Yeah. Wow!

Chris: It turned out, Azure made that the easiest possible choice, which is pretty rad.

Dave: Wow, so that's kind of cool. You just kind of test if GPU gets used or whatever?

Chris: Yeah. We have a couple other tests like that already. If it's an animated Pen, it needs to wait a little longer and stuff like that and have longer timeouts for Pens that are problematic and stuff. It was just kind of a little side journey to get to our percentage of Pens that take good screenshots really high.

Dave: I think that's the quality work, right? That makes or breaks a project or something because there could be a really awesome WebGL demo but I would never know it from the home screen. I'm not going to click through a black box or whatever. [Laughter]

Chris: Yeah.

Dave: You know, or a white screen or whatever.

Chris: Right.

Dave: Those quality fixes are so labor-intensive but so huge. We did this little thing we're building. We had placeholder images, place hold it, or whatever.

Chris: Yeah.

Dave: We went through. We made a fake website. [Laughter] Took a bunch of screenshots. Make a fake little Shopify. Took a bunch of screenshots and loaded up these images. They were real images. It just made a huge difference. It was just like, "Oh, my gosh! I love this!" It turned it from a C to an A.

Chris: That's cool.

Dave: Those little quality buffs make a big difference.

Chris: Let's do one question.


Dave: Hey, one question because we are a question and answer podcast. Let's see. Rory O'Connor writes in, "In a JAMstack scenario where the initial page content is very basic, what are some strategies to deal with page jank when user-specific content is added asynchronously? For example, a splashy, full-page width banner that appears only for the first time visitors, perhaps advertising a discount."

Chris: It's a little weird to wrap your head around right away because JAMstack usually implies that things are prebuilt. But you can't often prebuild user-specific stuff like Dave Rupert's avatar. That's dependent on him being logged in. He can't prebuild that onto the page.

Dave: Mm-hmm. Mm-hmm.

Chris: If you CSS'd wrong and the avatar was just not there at all in the DOM and then some Ajax request happens, gets the avatar, and plunks that IMG tag into the DOM, things are going to move around. The trick is to--I don't know--use your experience as an experienced webpage builder to build things in a more resilient way that doesn't have jank. You know?

Dave: Yeah. No, it's tough. The one trick, at least I'm using a lot of right now, we talked about it when Jen Simmons was on the show is using height and width attributes on your images.

Chris: Yeah, there you go.

Dave: So the browser will draw a box as quick as it can. If you're talking about injecting, like you're loading the page and then you're like, "Oh," and it seems like you're like, "Oh, does this person not have a cookie? Cool. We're going to drop a cookie and throw up a discount banner."

You can do that pretty quick. If you can do that right after where it's going to show, like inline in the DOM, that would be great. But let's say you can only do it at the bottom. If you can do it in in-line script, that would be great too. But if you can only do it in the bottom from another file, there's not much you can do there because the page will hopefully paint, especially in a JAMstack situation. The page will paint and then your script will execute.

Chris: Hmm.

Dave: If you give the browser everything it can, like these height and width things and stuff like that, so any image that shows up takes the amount of space it's actually going to take, I think that makes a huge difference. If you can, like -- that's going to be the biggest thing. But if you can also run that code, even make a Web component or something, shoot, and just put the code you need in this whatever first visit widget or whatever you want to call it, first-visit.widget, and then you check for a cookie inside of there and render it as quick as you can. You could do that with a Web component right inline, just very quickly, and then just render DOM immediately. Again, I don't know.

Chris: Is that kind of the theory of a skeleton component?

Dave: Sort of, yeah, just a skeleton or deliver it as quick as possible or get it to bundle that code, I guess, or get it in the right place as quick as possible.

Chris: You know this makes me think of this. I'm hoping that there's less of this client-side asking for content even if it's user-specific in the future in that you can still have architecture like this but teach a server to do it on the fly instead. I think that's last week.

Dave: Yeah.

Chris: …talking about Cloudflare workers, but they're just early and a good one in the game, but I think a lot of things are starting to make this possible. Hopefully, at the edge level, you can teach a Web request to be like, "Oh, I see. This is Dave asking for this page. I'm going to grab his stuff from APIs and such, and his avatar or whatever, and just manipulate this request before it even gets to the server that has all that stuff in there before it even gets there." It's just going to be good perf that way. It will definitely be faster. It'll be faster for it to make those requests to those APIs because it's this mega-fast cloud computer thing. It'll be faster for the browser to render because it's got everything it needs once it gets there. It just seems like the future. I know the world isn't 100% ready to do it for everything, but if you can explore it, you should.

Dave: No, I think the edge functions, if you're already JAMstack in there.

Chris: Yeah.

Dave: Netlify has them, so you can do that. Spin it up on Netlify, but that would be an awesome example because you have the cookie in request header or whatever.

Chris: Yeah.

Dave: The cookie is there.

Chris: Or it might be in the URL.

Dave: Yeah.

Chris: I don't know. It just is somehow.

Dave: Like from Twitter or whatever.

Chris: It might be a JWT or whatever.

Dave: Yeah. Yeah, you could just totally be like, "Nope. That's a new person. I'm just going to spit this out." That's cool. That's a perfect example.

Chris: Yeah. All right, well--

Dave: Where you want to use the edge.

Chris: We did it. This was fun.

Dave: Yeah, it was fun. Hopefully, everyone enjoyed a little online roleplaying. [Laughter] This is our online roleplaying episode, edition of ShopTalk Show. Thank you all for downloading this in your podcatcher of choice. If you play any weird niche video games, let us know, man. What's your MMO? That's the question.

Chris: Yeah.

Dave: Hit us up on Twitter. I'll definitely look at them if not download them, so there you go. [Laughter] Thank you for downloading this. Star, heart, favorite it up. That's how people find out about the show.

Follow us on Twitter, @ShopTalkShow, for tons of tweets a month.

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?

Chris: [Loud inhale] Go to