September 20, 2018
Ep. #20, Using ThreadFix with Dan Cornell of Denim Group
In episode 20 of The Secure Developer, Guy speaks to Dan Cornell, CTO of Denim Group, the developer security firm behind ThreadFix, a vulner...
In episode 62 of JAMstack Radio, Brian speaks with Scott Tolinski of Level Up Tutorials. They discuss Scott’s experience creating video content, teaching web development, and leveraging new tools.
About the Guests
Scott Tolinski is the creator of Level Up Tutorials, a free web development tutorial resource that features more than 640 video tutorials on various topics for web developers and designers. He is also the co-host of The Syntax Podcast.
Brian Douglas: Welcome to another installment of JAMstack Radio, on the line we've got Scott Tolinski. Hey, Scott.
Scott Tolinski: Hey, how's it going?
Brian: Welcome. This is a long time coming.
I've wanted you on for a while, I think we might've even chatted about it, maybe in the past.
But regardless, you're here today to talk about Svelte and specifically Sapper, which I didn't even know existed until I saw Chris Biscardi's tweet on Sapper.
That was my introduction, so do you want to give us a--?
Well, why don't you give us an introduction on you first, in case people don't know who you are?
Scott: By the way, we did talk about recording an episode at the JAMstack Conf like two years ago, and we were going to do it there, and then I think I just got pulled away and it just didn't work.
So, my name is Scott Tolinski. I'm a developer, I live in Denver.
I created Level Up Tutorials, which originally started out as a YouTube channel of free tutorials.
Then 2,000-some video tutorials later it's now my full time business. All I do is create video tutorials, pretty much.
As well as host another podcast, Syntax.fm with Wes Bos.
That's pretty much all I do, is teach web development and code myself. LevelUpTutorials.com has been my project, I've built it myself from the ground up, and it's a full stack React project that I absolutely adore working on.
So that's pretty much all I do, is teach and code. I get to use my own site as a little bit of a playground to learn things on and then just grind it out.
Brian: Nice. I remember when Level Up Tutorials first came out, because I remember distinctively that you always had a hat and glasses on for most of the videos.
It must have been back in the day.
Scott: I'm currently wearing a hat and glasses, so yes.
Brian: For the listeners, we're actually both wearing a hat and glasses.
Brian: Fun fact. But I'm curious actually to transition from YouTube, because I didn't even realize that most of your content was on your own site until probably earlier this year.
Because I fell off on watching the videos on YouTube, and then when I went back--
Because I think you had linked something from Twitter, and I was like "I want to learn about that." And then like, I don't know.
Do you use YouTube to tease, and then take it to the website?
Scott: Sort of. That's how we've been doing it for a little while now, I think for about -- Let's see.
I started making the transition into doing this outside of YouTube in 2015-2016. But it wasn't like, I didn't full-on dive in.
It was half in the water, starting to get my feet wet with a little bit of subscription based pricing model stuff, and then I realized I needed to really change the type of value I'm providing.
I basically just dropped YouTube as a full on medium, other than-- I don't want to say "Promotion," like I still drop a lot of tutorial content on YouTube, but I have changed it up a little bit in terms of how I do my tutorials.
Because it was a lot of fast and loose tutorials on YouTube before, and now it's a lot higher production and a lot more planned out.
My subscription model is that I release one video tutorial series a month, like a magazine, and those tutorials series are 25 videos long.
I really honed the craft of creating content, and I have an endless amount of tutorial outlines that I've done for series, and I've just gotten really good at producing a tutorial series every single month.
That's what I do now, and they're exclusively available via the subscription.
Then I'll do additional videos for free on YouTube whenever I can make it happen, outside of doing 24 videos on the other platforms.
So, a lot of recording. Pretty much 24/7 recording.
Brian: Can you explain Sapper, and as well as we actually had Swix on talking about Svelte, so he gave us a good intro.
I forgot the distinction that he made, but it was very good.
It was basically the difference between websites and web apps, and he would do something like a Next or a Gatsby for a web app.
If you wanted to make a website, he would reach for Svelte. Is that a good distinction?
Scott: Yeah, I think Svelte can be definitely used for web apps in any sort of capacity as well.
But as far as Sapper goes, you could really think about Sapper as being the analogous-- As Next.js is to React, Sapper is to Svelte.
Sapper is the server side platform with folder based routing and API routes, and all of those things that you get typically in something like Next.js.
Brian: Gotcha. OK, so it's just batteries included. Is that the term? It's like maybe one of two batteries, or is it full on?
Scott: It's one of two batteries. Everything but the database, really.
Brian: Interesting. Then I'm curious though, because again I have not heard of Sapper until that tweet, probably roughly a month ago.
So is this powered by the Svelte team? Because I noticed the Svelte Dev URL.
Scott: It was originally written by Rich Harris, and I know he took some time off.
He's coming back to Svelte and Sapper, they announced that they're going to be doing some big updates to Sapper to bring it even further far forward.
Which is pretty amazing, because to be honest it's already very full-featured.
You think about something like Next.js which like, just got static site generation. Sapper has static site generation.
In fact, my personal website is done with Sapper with static site generation, and it's very fast.
Brian: Is this like ScottTolinski.com, or something similar?
Scott: Yeah, and it's funny. I like to use all of my web locations that I create things as, as playground's really.
Because I'm a child of the MySpace generation where we learned web development by hacking CSS on MySpace.
So for me, a website or a personal site or any of these things shouldn't necessarily be this polished, beautiful landscape of everything you have to offer.
But it's a playground for me, so my ScottTolinski.com is certainly a playground. I did it fast and loose and it's really funny, I have one page that is just this notion module.
I was writing this interesting package for Svelte that allowed you to use notion as a CMS for Svelte.
Scott: Just because I thought that would be neat.
It's not great, but I just have little pages all around the site that are kind of funny like that.
So, the site is built in Sapper and I just do a lot of fun little things on it.
But it can give you idea, if you look at just the network tab, just how little code I'm shipping for it.
Brian: That's amazing. I like the idea of, I guess your bread and butter, your business is built on training and teaching people and doing those videos.
But the fact that you leverage real life projects, and I don't know how "Real life"ScottTolinski.com is or how extensive it is, but the fact that you're leveraging that to advance the stuff that you can offer, I like that platform.
Because I talk to a lot of new developers and they always have the hard problem of trying to learn consistently but also keep your job as well, and I find having that playground to do stuff but it's not going to be a big deal if you break the rendering on your page at ScottTolinski.com.
Perhaps maybe you miss out on a day of Hacker News, but--
Scott: I ultimately don't care if the site sucks for any given particular reason, or it looks bad on one page or something, because that's really not what it's about for me.
Who knows, because if somebody is going to look at that and say, "I don't want to hire this person because of XY and Z."
If I was applying for jobs actively, yeah, sure. I'm going to tune it up and I'm going to hide some of that stuff.
But at the end of the day, that's the way you learn best, is when you have those stakes in it.
Me in particular, I do that with Level Up Tutorials too. For instance, I have a bunch of animating courses, like animating React on Level Up Tutorials.
All of the stuff I learned about animation, I did first on my site in actual real production code.
I learned, "OK. Now here's how I do these real things, so that way I can teach people real things and stuff that you'd actually use."
Brian: Do you just solve the problem and then do you sit back one day on a Sunday and start thinking about what you learned that week, or something?
Is that how you make the videos? Or do you go to solve the problem with that in mind?
Scott: It's interesting, because I've never really let-- Like to some degree, yes.
I have let community involvement determine where I teach things, but in another degree I let my curiosity drive me.
Like, I checked out let's say, Sapper. Or I checked out Svelte and I thought Svelte looked cool, so just in my personal time I start hacking away at ScottTolinski.com and I think "This is really cool."
And then once I get to a certain point, I say, "This is cool enough for me to make a tutorial series on it."
And as I'm doing it, I just take notes and build a tutorial series out that way.
Like I said, I have a huge list of a repository of things I want to teach like, things that could become full-on tutorial series. Things are just in my brain space, and then if I spend enough time on them and I'm feeling very comfortable on it, I just hash out that course right then and there.
A lot of times I'm just cataloging things as I learn them, things that could potentially become courses later or things that I may become interested in, and then once I really sit down and learn something I typically take notes and--
Look, I've been doing these tutorial series for so long that I know how much can go in each particular video.
So if I have a course, like right now I have a potential course on animating Svelte to keep it in line with Sapper.
So I have a course on animating Svelte, and at ScottTolinski.com I have animated transitions.
OK, now that's a video. I have the basic built-in animations. I have the custom animations that come built into Svelte.
I have spring-based animations, I have whatever.
So I can both use the docs as well as the stuff that I'm actually using to hash it out and create those topics until I flesh out a whole course.
Brian: I like hearing that too, as well.
It's validating for myself, because I know I don't make much videos but I do write some blog posts.
My side project is Open Sauces, which listeners have heard enough of that.
But with that project I take PRs from that project and then I'll map out a blog post.
Brian: Because with the commits and the PRs you can see the evolution of how the code got to where it got there, so then you're able to reverse engineer--
Or, at least I'm able to reverse engineer a blog post out of that.
Then I do this other thing, which I doubt many people do, because maybe not a lot of people are using GitHub projects.
But I use GitHub projects and take that pull request and put it into a project of "This is like--"
I have a-- You can do a project on your profile, so a profile-based project.
Scott: I didn't know that.
Brian: It's the same with orgs too as well, so you could have a project that spans the entire org.
Same thing with your profile, so I just created a profile org-level project and then I just linked that PR there.
Then whenever I get to it, I've got the content to be able to write a blog post for.
Scott: Exactly. I mean, I basically have the equivalent of a project, but it's like a giant Trello notion board.
It's funny, I use GitHub projects for our code base and for code projects, and for some reason I just keep everything that's not code related in notion, whether or not that's the best place to have it or not.
Brian: I hear it's a great product. I still, every time I open that thing I'm just really confused on what to do next.
Scott: Once you learn to really get proficient with it, it's very nice. The only problem is performance.
Sometimes it's a little sluggish once you get a big old database of stuff.
Brian: All right, I'll keep that in mind.
You had mentioned animations quite a few times with Sapper, and I think I followed up after chatting with you through Twitter.
I listened to literally the next podcast episode-- I was a little behind for Syntax, so the next one I listened to you happened to mention animations in Sapper and how great they were.
You basically sold me on doing animation in Sapper, so I actually did tinker around with it a couple of weekends ago.
But can you explain more of what the benefit is with the animations, maybe even if you're able to compare and contrast to something like React?
Scott: Yeah, I think the best part about animating in Svelte overall is that Svelte has animations baked in, which it can do because it's compiled away.
You don't have to worry about bloating the bundle too much.
With React, you can't ship animations into React core because everything you add to React core bloats the bundle.
But since with Svelte you can add things without having to worry about bloating that overall bundle, I mean at least the Svelte itself bundle.
Because you're not shipping a bundle, it makes it--
Brian: Could you explain more about that, with React and the bundling?
Scott: If you think about it, you could do it through a React package that's like React animation, or something.
But you couldn't put animations into core React without proper code splitting, because then you'd be shipping that animation code to everybody that gets it right.
Scott: Granted, code splitting and tree shaking, all that stuff would make it better.
But not everybody has that in their pipeline, so the cool thing is animations are baked in.
You don't have to comb through several different animation libraries, and honestly the animation platform on React is excellent.
You've got Framer Motion, you've got React spring. Those are my two go-to's, and I'm going to use either of those and I'm going to be happy.
But there's still two different libraries, you still have to make a choice between them.
Neither of them are owned by the React team, and because of that there's always going to be a little bit of disconnect there.
Despite how awesome both of those libraries are, so with Svelte you have it baked in.
It's the way to do it, there's no additional libraries, there's nothing else. Just, "Here you go."
The coolest thing that I really like about the Svelte animations overall is that they make it really easy to just drop something in, so you can throw essentially a directive on an element just by saying-- Let me get pull up an example here.
All you would have to do to do a basic fade transition on something is import fade from Svelte /transition, and then essentially on the div you would just say "Transition:fade." That's it.
It doesn't get any easier than that, and that will transition on mount or unmount. The closest you can get to that with React is maybe, let's say a Framer Motion where you have to wrap everything in animate presence.
Then you have your conditional, then you have your actual thing that's tr ansitioning.
So the amount of code that it takes to do a basic fade transition on mount and unmount in Svelte is just so much significantly smaller and easier to parse, easier to do.
Not to mention, if you want to get crazy with it and do your own custom animations beyond what they have their basic ones-- I think they come with fade, blur, fly, slide, scale or draw.
And all of those you can change the delay or the duration, those kind of properties.
There's also baked in spring animations and stuff too, in the same sort of way.
But if you wanted to get crazy with it, you can also basically just pass in a function and that function allows you to manually set basically any property in and out that you want.
It works just basically the same way, and the code that you need to do any sort of general transition is just super slick.
In fact, in GitHub I have my site, ScottTolinski.com , it's open source and it's on GitHub.
But I have a transition for the entire route and it's a custom transition, so it's not even the basic one. It is very simple.
Brian: It sounds very jQuery-esque, right now jQuery is probably a little more complicated than that, where you have multiple versions to do things.
But that's one thing I missed from jQuery is actually just being able to look it up really quickly, add a one-word change and then make it work.
I distinctly remember when I was working at Netlify and we were--
I was trying to animate something on the loading screen and it was taking enough time that we were just like, "Let's ship without it."
Mind you, this was back in 2016, so the React world was a little less mature.
Still mature, but less mature when it came to animations. But since then I've always avoided animating anything on my React apps.
If it's not CSS basic stuff that I can do like that, I just don't do it.
Scott: I'm very into animating all sorts of stuff, especially in React or Svelte or whatever.
Just because I like it so much in terms of like, my dream is to be able to get deeply nested React component unmounting animations.
The problem with React is you can't tell a nested component, let's say a super nested component, you can't say "Delay the unmounting of the parent based on this one, so you can animate it out."
You have to start at the root and Framer Motion makes it a little bit easier with this intimate presence thing, and I really enjoy Framer Motion in that regard, but Svelte really makes it easy.
One cool thing I really like about modern animating libraries, whether that is Framer Motion or baked-in animation libraries, they can finally bring back the "Golden animation" I call it.
It's a stupid thing that jQuery did so easily that CSS can never do for some reason, it's just the basic accordion slide down that animating to height auto.
Animating from zero to height auto, for some reason is-- There's a hex to do it in CSS, where you do overflow heading and you do the max height thing, but come on.
Give this to me all day, that would be my one dream feature in CSS, is a transition that allowed from zero to height auto.
But these ones make it really easy to do, especially like I said, even in React land.
It's easy to do now, but for a long time it hasn't been, so I'm really happy with that state of things.
Brian: I feel you with also the CSS animation stuff, where I feel like I have to-- I'm doing random wizardry and things that I thought would be harder are easier, or things that are easy are harder.
I never know where to start and ho I'm going to end when it comes to CSS- type animations in particular, which is also why this is all timely for me.
I've been working on some Twitch streaming and the actual-- I'm not sure how familiar you are with Twitch and OBS, but each plugin is browser source.
Meaning it's an HTML site.
Scott: I didn't know that. OBS is a beast.
Brian: Yeah, I don't know if you're familiar with Jason Lengstorf. Most people are familiar, he's been on the podcast before.
Scott: Yeah. I'm definitely familiar with Jason. He's been on Syntax, actually.
Brian: Awesome. He's set the standard, at least for me that I've seen, when it comes to Twitch streaming.
I literally just copied what he did. But his alerts, his browser sources are so complicated, that I had to-- I wanted to start from scratch so I could learn.
I'm progressively enhancing my animations in my Twitch overlays purposely so I can learn it.
Brian: But the CSS part is the thing that really yucks my yum, which is trying to figure out all that stuff from scratch and remember what I did five years ago.
Scott: To give you a little bit of context here, my initial career trajectory, I felt like I was going to become a motion graphics editor.
That's what I wanted to do. I used to work for a magazine, Guitar World magazine. I did video editing and graphics for them.
Brian: I'm familiar. Do you play guitar?
Scott: Not very well, but I come from a family of guitar playing people.
My dad played guitar his whole life, and the reason I got that job in the first place is my uncle has been the editor of Guitar World since the 80s.
He isn't currently, but that was his job. So we were always getting, whether it was guitars or whatever shipped to our house.
In fact, when I started working there they basically hand you a guitar and an amp at your desk, and it's like "Here. Just get your work done, but you can play guitar all day if you want."
It's funny because that's what I did, I filmed various guitarists, I would come in and then I would watch their lessons that I recorded and edited myself, and then learn from the lessons that I was editing.
I'd always anticipated that my career trajectory was going to be motion graphics, so I come heavily from a background of animating things in and out and doing the video stuff.
That's always been like a key component to what I like to do on the web, is motion anything.
It's so much to the point where I've really considered wanting to build some after-effects light thing where you could do basic motion graphics for video in the web, and I've actually done it several times where I record a video.
I have a little intro to that video with a song, a little jingle.
I've thought many times, like "Could I just do this in HTML? Or in CSS? That would be really easy to just swap out a couple of text variables, swap out an image or so.
The animation happens automatically." That's one of those rainy day projects that I just sit on, like "I bet I could do that."
Just have an alpha channel on there.
Brian: Have you heard of the Haiku app?
Brian: It's basically if you take after effects and SVG animations , and that's essentially what it is.
Brian: It looks very much like after effects or premiere, but you just import your SVG and then you animate it through a GUI.
Scott: Is this on Mac, or is it a web app?
Brian: It's a Mac app, it's definitely in the Mac App Store. I'll send it over.
Scott: Cool. I'll check this out, because right now what I do to do all my little animations, because like I said motion graphics was my jam.
I was very much and after effects head, but working with SVGs or vector anything in after effects isn't good.
Or at least, it wasn't the last time I checked. So what I use is Principle for Mac, which is primarily an interactive prototyping app.
You would import your Figma, which is what I use.
You'd import your Figma frame and then it's primarily used to-- You click on this and this animation happens to do handoffs for "Here's how the animation should look."
But he added the developer, because I've requested this.
I said, "This would be really great for after effects light if you could export whatever,"and he added 4K exporting to the app just on a whim.
So now I basically just use it as my video motion graphics app, even though it's not intentionally made for that at all. It's fantastic for it though.
Brian: I am probably going to do another deep dive later today.
This is something I've been working on for a bit, as I think most of us have made transitions to being at home all the time, though I work from home.
Also side note, GitHub is like the Guitar World for guitarist, GitHub is the for developers.
Where we could tinker with all these extra features that you can't see yet, which is pretty awesome.
I've been transitioning to doing more video, just because I'm home more consistently, not traveling.
But I'm curious, as far as Sapper goes, is there anything else that people should be aware of in considering choosing Sapper?
Scott: Like we mentioned, it is very Next.js analogous, you have the server-side rendered applications but you also have the API routes.
One thing I really like about Sapper is how they do their API routes.
If you need a server route that goes off and does some stuff, maybe it's serving a GraphQL API or maybe it's just serving even a markdown file or something like that, if you need a server-side rendered route it actually goes directly in your routes folder just like anything else, any other page.
The only difference is-- Let me pop open mine here so I can give you some context. In my site, I have let's say, posts.
They are just markdown files, so if I want to collect those markdown files, maybe do a little bit of filtering.
If you create a specific slug, or if you want to grab a specific markdown file or something like that, the only difference is that you have your Svelte files.
Which are basically your front end files, and then to create an API route file you basically just create a .js file.
It's expressed like where you just basically return whatever that data is going to be from the API, so let's say I had indexed.json. js inside of that folder, I can then take my route and just do that whole rez right head, whatever you're sending along.
Whatever the data is, whatever the post is, whatever. Just based on index.js, and now the server is always going to send that out at that URL.
So it's very simple. I'll post the code, it's always abstract talk about code like this over the radio, but I'll post the link to my repo here.
What I really love is just how co-located everything is. Your API route is right there, your front end code is right there. They talk to each other really easily. Everything you need is basically wrapped up inside of Sapper, and if you want to serve it as a server rendered app, that's cool.
So, I really like it. It's a very simple platform. Also, one last thing about it.
It's not necessarily Sapper specific, but more Svelte related. So you know MDX, right?
Scott: For those of you who don't know, MDX is like markdown with React components in it.
So it makes it really easy to use your React components in a markdown file.
Well, there's a really great NV specs. NV specs is basically the markdown version of this made by Penguin, and it's so nice.
It's just basically Svelte MDX, and between Svelte MDX and Sapper you basically get a much simpler syntax to do everything.
Like my personal site, the code couldn't be any easier, the stack couldn't be any simpler.
The code it spits out is fast and small and tiny. I absolutely really adore the platform overall.
Brian: Awesome. Side note, we had Chris Biscardi on episode 57 of this podcast talking about MDX in great detail.
So, everybody go check that out. Also follow Chris's blog as well.
But yeah, this has been quite educational. Thanks for your Level Up Tuts. I don't know why it's so hard to say today.
Scott: Level Up Tuts, technically it's "Level Up Tutorials" now because some company that is going to go unnamed had a problem with me using the word "Tuts" in the title of my company.
So, I just agreed to change it.
Brian: OK, excellent. For the record, your background in Level Up Tutorials has really proven itself.
I felt educated on Svelte, and with that being said I want to transition to picks.
These are jam picks, things that you're jamming on.
Could be music, food related, tech related, and if you don't mind I'll go first because I've been trying to talk about this the entire time, but I keep alluding to it.
Scott: Yeah, I've got to look up mine anyways.
Brian: So I've been spending lot of time on YouTube.
Definitely pay for that YouTube account, because of advertisements.
Scott: There's so much stuff there.
Brian: They get annoying after a while, but I've started a YouTube series which is called "Get Action Traction" and it's something I've been wanting to do for the past two months.
Finally got some time, some bandwidth last weekend to record a couple episode series.
They're like two to five minutes long, but the whole thing is if you've never used GitHub actions there's a lot of stuff out there, a lot of blog posts, a couple of books now too, as well.
I highly recommend checking out that series.
It's just literally so you can just get your hands on the actions really quickly, and then take out all the fluff.
But after talking to you, maybe I need to create a website and start transitioning to my own proper site eventually once I get super huge.
Scott: If you ever want to do any content for Level Up, we accept outside authors. That's always an option.
Brian: Do you?
Scott: Yeah, totally.
Brian: I had no idea.
Scott: It's not widely advertised. We've had a couple of people do it.
Travis Neilson, who did Dev Tips TV a long time ago, he did one.
Spencer Carly, James Wick have done courses for us, and it's typically pretty highly curated because typically I'm the one doing the course, so it has to be a good enough replacement for me.
Brian: OK, excellent. I'll try to study up on your cadence and your flow, and then I'll sound just like you.
Scott: Exactly. Now I'm going to check that out, I love GitHub actions. I've been really loving them.
Brian: Obviously I'm a big fan, I work for GitHub, so everybody knows that. But I've been using them since V1.
I got the opportunity, so I literally had a child two years ago and--
Brian: Thanks. During that time when I was out they developed actions, so we get five months off of work.
From idea to conception they shipped it, and I came back from paternal leave and it was like, "We have this new feature. Would you like to try it out?"
I was like, "I don't know what to do with this thing."
Then eventually I figured it out, but actions has really just followed my career at GitHub.
But speaking of action, I wanted to also mention one YouTuber I've been watching who's a bass player.
Speaking of guitars, his name's Davie504, this guy's Italian and he has a very thick accent.
He really hams it on for the video, so normally you get bass players or guitars on YouTube and you just watch them play and that's about it.
Like, "What's up? Like and subscribe." This guy, he's a character.
Even if you don't like bass and you like YouTube, I think you'll appreciate this guy because he just basically takes clips of other bass players and says "That's easy."
And then he'll play it deadpan, and then he'll create some impossible baselines.
Which literally he did a video where he did the whole Fiverr thing, which I think it's getting popular on YouTube.
We do a Fiverr video and go pay people to do something, so he paid eight people to play this baseline.
He sent a recording and he said "This is an impossible baseline," and it was like easy part, hard part and then impossible part.
No one got it right, and then at the very end of the reveal, it ends up his girlfriend walks up and plays the low notes.
Which makes it impossible, because it was literally two people playing the bass guitar. But anyway, he's hilarious.
I've just got sucked into him a couple of weeks ago and watched a ton of his videos. So, definitely check that out.
Then one last thing, Sindre Sorhus, he's an open sourcer popular from the Awesome List stuff.
He's also got some other open source projects and Mac apps, he created a project called GitHub Markdown CSS which literally put CSS inside of your markdown.
Which is kind of mind blowing, he kind of cheats a little bit because he's using an SVG, but that's besides the fact.
I'd never even thought to do that, so definitely check that out because that came up in our conversations.
Scott: So you can put CSS on your profile?
Brian: Yeah, you could put CSS in your profile through an SVG, because SVGs technically will take some CSS.
Scott: Cool. I'll do a couple of picks too, I'll do a bass one and then I'll do a non-bass one.
My non-bass one will be this GitHub repo that I found from Paul Henschel.
He does React Spring and React 3 Fiber and a whole bunch of really awesome projects.
He uses this repo occasionally in his demos and I think it's really nice for demos, this repo is called Nice Color Palettes and it's basically just an array of really nice color palettes.
If you ever need, if you're doing a demo and you don't want to go to color or color lovers' or any of these things, you can just install this and just pick one.
You can just even write a thing to pick one randomly, and it's going to give you a an array of five colors that are going to look nice together that you can just drop in your project and it's just going to work.
I think this is a neat little project, and he uses this in a lot of demos.
Sometimes when you're doing demos you just end up defaulting to the same old colors here and there. So I think this is neat.
Then my bass-related one will be a song from Vulfpeck called Daddy, He Got a Tesla. It is really super good.
The bass work on it is fantastic, the bassist is Joey Dart. I went to school with these guys, the Vulfpeck guys.
My best friend in the world did the mastering engineering on this thing, so I really love all of these musicians.
Vulfpeck, really just a fantastic group overall. But check this this song out specifically for the bass work, it is great and the bassist is Joey Dart.
He has his own group, I think it's called the Fearless Flyers or something like that. It's very good.
Brian: I realize, off-air you had mentioned these guys and I realize I do know them. I've definitely heard their stuff before.
Scott: These guys are, a lot of them are graduates of the University of Michigan performing arts technology program that I went to myself.
Brian: Excellent. I appreciate the picks, I'm definitely going to go ahead and probably going to deep dive into a lot of the CSS and some Sapper stuff.
I actually have a livestream later today, so I'll probably just deep dive on that on the stream.
Scott: Nice, cool.
Brian: But yeah, tanks for your time, Scott. Thanks for educating me about Level Up Tutorials. Listeners, keep spreading the jam.