BRIEFS logo BRIEFS

Concerning Libraries and Frameworks: Build or Install

01/21/2021 , 2m, 56s

Hi there so today I wanted to talk about the merits of a framework I get this question quite often like when do I decide to bring in a framework or even just bringing in libraries versus just build it yourself. And so first on like the framework side of things if you're building something that's like basically a HTML page or you're doing some surveyor server template thing and you just need to enhance your app a little bit with some JavaScript so therefore it's more of a website than an app.

Then yeah, you probably don't need a framework the browser differences are pretty.Smooth to over by now and yeah you may not need a framework in that case, but like my audience of the the people that I'm working with mostly are very primarily focused on building web applications and for that if you don't want to build or use a framework and and they're legitimate reasons to not want to use a framework, but if you don't what is going to happen is you're going to build a framework for yourself.

Eventually, you'll build abstractions for everything. And the difference between your framework and one of the more popular andTry to true frameworks is your framework is used by only you and it is not battle tested. It is also maybe not even tested. It hasn't gone through the rigor of being deployed to production by lots of other people and so there are a lot of bugs that you just don't know about.

And so I would really strongly advise against building your own framework unless you have just some very particular needs that none of the other frameworks can satisfy. And I would suggest that 99.9% of applications the,That you would build for the web there's a framework that is well suited for the task And in fact most frameworks can cover 90% of the needs of most web applications today.

I'm sure. So even deciding between which framework is less of an important point at this point, they can all pretty much do what you want them to do. And so as far as like libraries when should it just bring in libraries? I mean, there's always the risk of you know, some security vulnerability.

There's there's this article a while ago about somebody who's been stealing credit card credentials because they published something to.NPM which of course that was not true they'd hadn't actually done that but they were saying this is a thing that I could have done and it absolutely is and it's terrifying but do you want to build a product or do you want to build a bunch of libraries.

Because ultimately if you don't use libraries to do things you're going to build your own and there's nothing wrong with that. You can like copy some code and and put it into your vendor directory or something like that. Like there's nothing wrong with that. You can totally do that.

But it is a trade-off and you just need to acknowledge that fact. So, I can't give you a solid answer on that but hopefully that was at least thought provoking for you. Have a nice day.

Why I Have 0 Followees

01/20/2021 , 2m, 18s

Hey folks so I guess I need to do this because people keep on bringing it up and so I'm just gonna mention it. If you aren't aware a month or two ago, I unfollowed everybody on Twitter and now I follow zero people on Twitter and I changed to lists and so the reason that I mentioned this is because a lot of people see this as some sort of power move or some nefarious purpose.

I've done this. I don't know. I don't understand why people have yeah and I know that not everybody has but several people have assigned some now intent to the fact that I don't follow anybody on.Twitter I use lists and so it's not like I don't keep track of what people are doing or whatever I just found the the reason that I did this was because the Twitter algorithm just messes up my list or my my home feed really bad.

I just didn't like what the Twitter algorithm was doing and so I said, hey, well, I'll just unfollow everybody and I'll use a list instead and it's been great. I use tweet deck and it I'm able to segment the people that I'm quote unquote following and I I like it way better and Twitter's.

Them is not impacting me at all And so that's the that is literally the only reason why I unfollowed everybody it's not some sort of like I don't need to follow anybody. I'm so awesome. That's stupid. Anybody who would do that? I think is is that's not a good luck or anything but for me.

I it's not some sort of flex or power statement or anything like that. It's 100% just because I didn't like the way that Twitter's algorithm worked with the the people that I was following. So, I just don't followed everybody in and switched to using lessons data and it works out great.

And that's literally all that it is So, I don't know. I'm just gonna make a short URL for this and I'll reply. So if you got here because you made some sort of comment and I gave you a short URL. Sorry that I didn't answer you specifically but I this is what I do when I answer the same question over and over again because I make I answer it once and then I send it links to people instead of having to answer them or having to just ignore them, which is what I often do.

So anyway, I hope you're having a stellar day and we'll see you around.

Use ASTExplorer.net to deepen your understanding of JavaScript

01/19/2021 , 2m, 48s

Hi there friends So today, I wanted to talk about understanding the syntax of JavaScript. Now, I most of us when we're learning JavaScript, we are introduced to each part of syntax and some of its capabilities and we just kind of learn about that syntax through experience of working with it and there's nothing wrong with that approach that's pretty like the the best way to learn anything is really just practical application.

But there are often things that you skip over when you just focus on practical application ofThe of knowledge And especially if JavaScript is the first language that you learn maybe because it does borrow syntax from other languages. Maybe there are things that you just don't know are possible or don't really have a good good grasp on because you don't understand the fundamentals of that syntax in particular.

So what I'm going to suggest to you is that anytime you see some syntax that you're not super familiar with or you think it's one way but things aren't working the way that you expect or something like that. Anytime you see something syntax? I want you to copy that code.

Into a tool called AST Explorer dot net. It's AST is an acronym for abstract syntax trees, which does sound pretty complicated but I promise you that it's nothing magic. It's something that you can learn but go to AST explorer.net paste in the code on the editor on the left and on the right side, you're going to see a representation of that code in what's called an abstract syntax tree.

You can represent it as like an JSON object or something. And each element of syntax.Has a particular node name and a type and as you click around you should be able to see the name of the AST node for the part of the code that you're looking at.

And so AST Explorer can be a really great way for you to get an understanding of what the different parts of the code represent for the computer and it can also help you get an idea of like, oh this is called an import specifier, but then when I do this with an object that's called an object pattern.

So, maybe those two things like the structuring and imports are not the same.Thing which they aren't So you can go ahead and try some of that. And you'll get a little deeper understanding. The other nice thing about this is that it makes those things Googleable. So instead of saying, hey what's that thing at the import statement or whatever.

You can say I want to learn about import specifiers and then you can Google around about that. So, hopefully that's helpful to use kind of interesting to play around with AST explorer.net. I wish you the best of luck and I hope you have a stellar day and we'll see you in the future.

Use TypeScript any/unknown/casting when you're getting started

01/18/2021 , 2m, 54s

Hey there friends. So today I wanted to talk about TypeScript again, and I want to talk about adopting TypeScript. So when I first started into TypeScript I was working. I I'd been doing flow for a long time and then I switched over to TypeScript. This is at PayPal. And one of the first projects that I used TypeScript in was this project called PP React, which is short for PayPal React.

It was a component library. And I I was working with a lot of abstractions as my first and my first foray.Into TypeScript and when you work with abstractions sometimes you the typings for those things can be a little bit more complicated than when you're just like doing everyday consuming of abstractions or calling functions or making reactant components or whatever.

And so it was a little bit more challenging but then I made it even more challenging because I tried to make an abstraction for some of the the components that I was using that was a higher order component and if you have experience with types and higher order components, you know that it's just really hard.

It's a disaster. So anyway, I was,Doing this and I developed this opinion where I'd say, you know, what I think that it's better. And I actually ended up giving up on the HOC. It didn't really add a whole lot of value anyway. But I developed this opinion where I think that it's better when you're just barely adopting a typed language or you know, something like that.

Yeah, basically when you're adopting TypeScript, it's you're you're better off focusing on getting like not focusing on getting everything perfect. So, you don't want to enable strict.Type checking right from the get-go You're really bad at TypeScript when you're just barely getting started. And so it's way better if you just embrace that fact and say I'm going to use any or I'm going to use unknown as my argument type here.

And I'm joined I'm going to cast all the types all over the place and whatever. And maybe you're not getting all the value out of the type system that you can you you aren't when you do that. But you're not going to be spending so much time trying to make the types perfect with your imperfect knowledge of TypeScript that

Default to "Yes"

01/16/2021 , 2m, 51s

Hello everyone, so today I want to talk about saying yes more so and maybe yes is a default. So yesterday I was talking with my sister and I was just over at her house and and her son came over and asked if he could have a soda and she said yes and I we continue talking and I said, oh man, it just feels so nice to be able to say yes to your kids right and she said yes, or I really nice and and she said I tried to say yes as much as I can and yeah the way that I feel about it.

Is like my kids will sometimes ask me why I say no all the time and I say no you got this backwards you just ask me questions that I'll say no to all the time that's the problem and and so anyway, I've just been thinking about this and I feel like more of my default should be to say yes as a default so I I should be like the burden of proof should be on the no answer so it should be more of like why should you why would you say no rather than trying to justify the yes and the reason that I'm sharing this with?

You all is not because I know the you're not all parents and stuff um, but because I feel like this is like parenting is a really great example or am an what's the word I can't think of the word I'm looking for but like it it relates very closely to relationships in general and um as much as we like to pretend it's not software is a lot about relationships, especially when you're working at a company and so if you're a team.

Lead or you're managing a team of engineers or something like that you want to default to guess and so rather than just kind of seeing these people that you're you've got a relationship with as you know, it's somebody that you have to endure or appease or whatever you should be trying to see how like how you can help them be happy and satisfied with the relationship and that I I think defaulting to yes, most of the time is a good practice and so,For a lot of the time I default to know with my kids if they want to ask me something I'm automatically thinking okay, how can I say no but I'm I think that it is better to switch that up and instead think how can I say yes and focus more on finding reasons to say yes and there should be more weight on the yes than on the no so anyway hope that's kind of useful to you in whatever you're doing relationships are awesome and have a wonderful day.

Real World Debounce

01/15/2021 , 2m, 53s

Hey there friends I've been making notes of different things that I do or like see in the real world that is like a good analogy for programming concepts and one that I thought about recently was the programming programming concept of a deep bounce and scanners at the grocery store.

So, I don't know about you but I I haven't used an actual like person skinning in my groceries for years. I use the self checkout now. I like that a lot better and even though maybe it's not as fast. I don't know. I just like doing it myself.And one thing that you notice when you scan something in is that you can scan it and then it will wait like let's say that you have you bought like two pieces of chapstick and so you're gonna scan it in and you can scan the same piece and so if you you scan it and then you have to wait for a second before you can scan it again because they've implemented a debounce and so basically the use case for a defense is like well this scanner can scan probably once every millisecond or something is it's very fast, but because people,Can't move that fast or rather they're like putting the barcode up to the scanner.

So quickly in it can get those values in so quickly we don't want to actually scan it all the time. So what we're going to do and this is actually a reverse debounce. Normally you do it in the other direction, but what we do is as soon as we call that function or whatever to actually do the scan, we're not going to call that function again until a given amount of time after that first call.

And that's why it's a reverse debounce because a regular deep.Bounce is going to say once it's going to be called actually wait for a second to see if we want to to be called again thereafter. So another use case for this sort of thing would be if I'm typing in an input to do some sort of search or filter and that process is really expensive or something like that.

Then we're going to wait 200 milliseconds before actually executing the async call to go get the data response or something like that. And so we're going to wait until the user stops typing. And so yeah, anyway, that was just kind of an interesting thought that I had of like a real world.

Physical experience of you know, scanning things in with a scanner. It's a reverse debounce so we go ahead and scan it right away and then wait for a certain amount of time with the input like a search input. We're going to wait 200 milliseconds first or 300 milliseconds or whatever before we actually execute the the function.

So interesting concept debounce. It's actually a fun thing to implement on your own the simple case is pretty easy to do. So go ahead and give that a shot today. See ya.

Use event.currentTarget rather than event.target most of the time

01/14/2021 , 2m, 56s

Hey there friends so I've been doing some live streaming through discord a live stream at actually I'm on zoom and then I live stream it to YouTube and then we chat on Discord. It's a fun time if you haven't joined us then you should because it's a good time.

So anyway yesterday I was live streaming and I made a discovery thanks to some of the folks who were hanging out with us in the live stream. So when you respond to a change event or on submit event for a form or something we're talking about react here or just vanilla JavaScript Dom APIs when youYour event handler that gets called is going to get called with an event object and that object is going to have a target and it's also going to have a current target.

Well, I always thought that Target is pretty much what you want all the time and I just realized because I was moving some stuff over to TypeScript and that's what I've been live streaming is moving my epic react workshops to TypeScript. And I realized that when you do event.Target with TypeScript, it says, hey, I realized that this event is on an HTML input element.

But I don't know what event.Target is going to be so you're going to have to do some sort of casting or something like that. And that always bothered me for a long time. Well during the live stream somebody mentioned that I could use current target instead and that would always be the input element and and so I tried it and of course it worked and and then it it dawned on me the implications of how these things work and and using TypeScript in general and so now I pretty much just use current target pretty much all the time.

So I've switched from default to target and use current target when I need to I've,Switched that now I default to current target So let me just describe that really quick A target is the element that triggered the event. So let's say you have a button and inside of that button you have a span that says like a side one and then another span that says side two and then you click on the side one.

Target is going to be the span inside of the button, but if you put the event handler on the button itself and then current target is going to be the button itself. So the current target is going to be where the event was bound and target is going to be where the event happened.

Well most of the time in react you're going to like that value is going to be the same either way like especially when we're talking about inputs and and buttons and stuff most of the time what you really want is the button itself or or the input is what we're typically looking for or the form.

And so only if you're doing like your own version of event delegation, do you want to use target? So that's something that I learned yesterday kind of interesting. Use event dot current target instead of event dot target by default. Hope that's helpful. Have an awesome day. We'll chat with you later.

Work on that following first, then sell the courses and books

01/13/2021 , 2m, 55s

Hey folks I was just thinking about something that yeah, I get questions about how do I break into the content creation world and stuff like that pretty regularly and something just occurred to me that I thought was kind of interesting and that is that I occasionally will see people with a handful of followers on Twitter and and like no sense of a newsletter of any kind or anything publishing books and making courses, you know, paid courses and things like that.

And I think that I mean, I'm I'm not sure maybe that is working out okay for them, but IThink that's a little bit backwards You need to be able to earn the trust of the people that you're asking money from before you start asking money from them. And it's indicative to me that they haven't actually done that if you don't have any sense of a following of people or some sort of newsletter or some sort of tribe I guess of people who are committed to you and your content.

And so what I'd recommend for people is before you start going out selling content, I mean feel free to do whatever you want and you can sell content maybe make.A couple backs but if you want to be successful at this you need to find a way to get the trust of the people that you're trying to reach.

And the best way that I found to do this is to create a silly amount of free content. And because people, you know, this is their hard-earned money and they want to know for sure that this is going to be worth their time. It's not just their money. You can offer like a 30-day money-back guarantee, which I do.

But still people are like, it's not like everybody takes it to to see if it's gonna work out for them because it'sIt's not just money It's time It's the amount of time that it takes people to go through the material to see if it's worthwhile for them. And so what I would suggest is you spend a lot of time creating free content and this takes a lot of time.

If you're like if you've been working on this for a couple months and you're frustrated because you only have a 300 followers or something keep at it, it takes a multiple years really to build up a following but it's if this is what you want to do, then it's worth your while I think.

So yeah, we're work on creating.Really good high quality free stuff as much as you are able and then you'll gain the trust of some people develop some sort of tribe. I actually there's there's this book that's like tribes why we need you to need to follow you or something like that that I would recommend but yeah get a base of people who trust you and share your material and then once you have that base then you can go and start asking for money from people and they'll trust you they'll know you that your call your content is good.

So, I hope that's helpful. Good luck. See ya.

Productivity and Relationships

01/12/2021 , 2m, 26s

Hey there friends. So today I wanted to talk about something that was just on my mind yesterday. I was meeting with one of my learning clubs friends who were going through Epic React.dev and it was just so fun to talk with them and things and they asked me about how I'm productive and and get a lot of things done.

And I mentioned that I I pretty much like over the last several years have just made sure that everything that I do is has a I increase the value of the impact and I've got a blog post.About this on my blog. It's how I am so predictive and it's interesting read you should go take a look at it but one thing that I thought was interesting is as I was talking with them.

I realized that maybe like three years ago or something. I would never have agreed to do a like a small group chat without recording that chat and putting it on YouTube. This was like, I don't know there was seven or eight people in this chat and it was just us talking it up and I I would have agreed to it as fine years ago, but IAlways always would have recorded that so that I could increase the impact of the value that I was creating.

And I think there's something to be said for that but there's the reason that I bring it up today is because I think there's something to be said for just having genuine experiences between you know, just a handful of people. So, you don't have to maximize the the impact of the value that you're creating all of the time.

I think that it's really valuable to to do so and maybe have some sort of deliverable out of things like you can take notes or something. But,And yeah it was just it occurred to me that I just really enjoyed spending that time talking with them, you know, and they're going through my material and everything and so we're all kind of in the same context of what we're talking about.

So anyway, I guess the the takeaway for today is yes be productive yes increase the impact of the value that you're creating but don't forget to be a human to and just have enjoyable relationship building experiences with other people because there's a lot to be said for that sort of.

Experience too. So, I hope that you're having a stellar day and I'll chat with you tomorrow.

Single Letter Variables (and Types) Considered Harmful

01/11/2021 , 2m, 31s

Hey there friends Today is January 11th 2021, and I want to talk about single variable names in TypeScript. Well think of variable names in general, but for some reason in TypeScript when we're making like generic types or type names whatever we've just I don't know where it came from.

I guess people say it came from C sharp and stuff they do this, but using the letter T to denote the type force like a generic or something. Pretty ridiculous. I mean, there are some situations where it's obvious that like what what the types are.And there's no real better name necessarily assuming that everybody understands the convention that T stands for type.

But there are so many cases where you've got a couple of different types that you're providing. Each one has a unique purpose and we could just communicate that purpose with a actual variable name but instead for some reason we're using single letter variables. I'm not sure where this came from but it does need to stop please stop doing this and just use a descriptive variable name.

And now like this is more like in general, I just noticed.This a lot with TypeScript definitions you know And it's fine if it's like you're inside of your own little function and you know like with a map or something we are mapping over some data and you use D or whatever.

I don't really care about that. I'm just talking about when you're exposing types to consumers. You wouldn't have like a single letter function that your consumers are calling or or like objects with single letters for D is duration, like nobody knows that. So given an actual variable name so that people know what they're working with and what they need to pass.

As those arguments and we're better I don't like I feel like we don't need to have this conversation because it's kind of one of those things that we just everybody knows a single letter variable names not a good thing. Types are no different make your types longer variable names so that we know what those things are for.

It's kind of a rant but I yeah just keep in mind that people if you're going to expose something as like for other developers to use the developers are going to use them and they may not know what you're talking about when you.Using single letter variables. So yeah, that's all that.

I have to say about that. I hope you have a stellar week and we'll catch you all around. Bye.

Why I'm Going 100% TypeScript in OSS and Teaching

01/09/2021 , 2m, 57s

Hello friends it is January 9th, this is a Saturday and I guess I'm recording this on a Saturday, okay, so um, I wanted to talk about today type script and why I am starting to think that I'm gonna be doing my material and typescription stuff so first of all, I started using TypeScript right toward the end of my time at PayPal we had been using flow for a long time and and I liked it it was okay, but it was very clear that TypeScript was gonna be the winner of this game and so I decided let's switch over to type.

Script so I made PayPal scripts completely. TypeScript supporting project and everything and and then the template I made default to type script and everything so like I was all in and I type script the PayPal or PP React. React component library that I was working on was completely in TypeScript and then I went full-time educator and I stopped using TypeScript and the reason that I have never used or I had never used TypeScript in my open source or in my instructional material is because I didn't wantIt to be a barrier for people So with open source I didn't want it to be the sort of thing that people couldn't contribute to open source because they didn't know TypeScript.

And for my my educational content, I didn't want to make it so that people couldn't enjoy my educational content because they couldn't they didn't know type script. And so like it would just drastically limit the number of people who could benefit. So a few things have changed for one for the whole time with my open source stuff.

I always use that as an excuse like no, I don't want to be a barrier for people butLike I knew that was bogus because anybody who's going to contribute to my project also needs to write some tests and that's basically what TypeScript is So they are going to need to learn how to write the tests and so yeah, it ends up being six is anyway, like if they don't know how to write test they're going to commit it and will help them write the test that'll be the same with text script.

And for my educational content, I talked with Ryan Florence about this and he told me that a long time ago, they went full on TypeScript and a big reason was because a lot of them were like a lot of the people they were teaching were already using TypeScript and also it like you don't have.

To go full on TypeScript on the educational material so like the people who don't know TypeScript they don't have to add types if you configure TypeScript correctly and then those of you or those people who are using TypeScript regularly and know it they'll get the editor hints and everything and and even if you're not using TypeScript yourself, if you're consuming an API that exposes types you get editor hints and everything's really nice.

So it ends up being a better experience for everybody and so that's why I'm gonna be switching completely over to TypeScript and I'll probably have something there to help people who don't know TypeScript yet as well. So anyway, hope you have aSplendid day. Bye.

Remix means I'm not excited about React Server Components

01/09/2021 , 2m, 58s

Hello there. Friends, it is a little late for me. I was hanging out with the family today, but I did want to get my three minute podcast in for today and so I'm doing it while I am changing laundry. So what I wanted to talk about today was just a little bit about reactor server components and that thing that everybody's super excited about I think we have good reason to be excited.

It I'm not going to explain exactly what it is. So you have to go Google it and and get an idea there's a video with.Stuff. But yeah, my initial reaction to it was pretty met just like huh. And what's interesting is that like this is probably not not quite as big as hooks at all but it is like some progress on the whole solving the problem that suspense and concurrent mode is supposed to solve or at least helping solve some of those problems.

And so it is a big deal and there's a lot of cool things that it does. But the reason that I was so just like,Not impressed or not super interested. It isn't because it's not impressive and it's not like great in whatever but because I discovered solutions to most of these problems that it's intended to solve just a few months ago when I started using Remix and a remix if you haven't heard is Ryan Florence and Michael Jackson's business that they're working on this this paid software project.

That's a framework for react and it is phenomenal. Seriously, it is so good. I'm really happy with it and it's currently like pre-beta like Alpha stage software so you know, I'm actually paying to as like a developer preview sort of thing to to use this and and learn about it, but anyway, yeah, it just solves all these these problems so if you haven't given a remix of solid look yet and then I would advise that you.

Do you don't have to become a developer preview, you know paying subscriber anything. It is not software that you should ship to production and necessarily but it is going to really shake things up I think. So yeah give remix a look it solves many of the problems that react server components are going to solve and it does so in a way that I just think is remarkable really good stuff.

And yeah, I feel like there's something else I was going to say about that, but that's that's it. That's my,Three minutes. Hope you're having an awesome day and we'll catch you later. Bye.

Consider Long-Term Impacts and Deletability

01/07/2021 , 2m, 57s

Hi there friends So today I wanted to talk about how a water damage thing that I discovered in my house and it relates to software. So a few days ago, we discovered in two of our closets in the basement that we have some water damage on the baseboards and the carpet.

And we had no idea where this came from or how long had been or where it came like what the cause of the the problem was. So, I eventually found out that it was our water or not our water heater, but the furnace and it has some condensation and so there's this.

Pipe that will take that condensation out of the house and there was a leak there just a little small little leak that it would drip like maybe once a minute not very much but this had clearly been going on for months and we just never noticed and eventually, you know, really damaged our baseboards and and the carpet and everything.

So that would that's super annoying because now we're gonna have to you know, replace a bunch of stuff and it's gonna be expensive and we have homeowners insurance but yeah, what a pain. So I always thinking about how this is related to software.And that like there are often little things that you may or may not know about in your software that like little abstractions that grow over time or little things that you need, you know, you need to deal with but you never make time for them because by themselves they're not like a really big deal.

Like for us we we didn't know about this, but there was this little drip and it really wasn't a big deal but after a long amount of time that turns into something just so much worse. And it's always this balancing act ofDo I invest a bunch of time into making this thing not so bad.

So like how do I spend some time fixing this problem or do I just let it continue to be a bit of a problem because it's not that big of a problem. It doesn't justify the time that would take to make it better. And like you with software like with the house that's that's a little bit different but with software you can so easily just throw stuff away and so you need to also consider like if I work on this and and make this aspect better.

Will that actually return on my investment or do we end up to deleting that feature completely and get rid of all of that code and stuff. And so my investment into making that code better is just gone. And we don't really do that with homes, but yeah, it was just something that was kind of on my mind of a you know, it's something to keep in mind that when you do have little problems that seem, you know, the subtraction is in all that great and so you slip through a code review or whatever.

But think about the long-term impact of those things and also consider the deletability of things. I hope that'sAt least interesting. See you later.

Why I don't have tests for my blog

01/07/2021 , 2m, 55s

What is up my friends so I'm a little bit late today, sorry but it is January 6, 20 21 and I'm excited to talk about testing so I had a bug on my website kidsdance.com slash contact where you'd fill out a contact form and one of the things that happens is server side validation, so that uses a serverless function that I have running on Netlify, it is great, it's awesome the way that it works but yeah one of what it does is it uses a,NPM module called OW to do validation and on my website.

I pretty much just like every week when I write a blog post I just update all the packages sometimes. I'll take a look at some of the breaking changes like major version bumps and stuff but often I just like I pull up and ship it because I don't really care and that's actually kind of what I wanted to talk about is.

I I do have some tests on my website. I have one or I,Handful of unit tests and then a cypress test that just makes sure that you can pull it up and and click on this on a link and stuff so I know that at least it does open but I didn't have any sort of test for my contact form which is why this bug slipped out but here's here's the reason why I haven't invested any time into testing my own site, which is kind of like a lot of people would think that's paradoxical like hold on a second can't see.

Dodds doesn't even test his own website, well the thing is that I think that it's important that you measure or that you think about.The things that you have to do all relative to one another and that includes tests so tests is just another task on your list of things to do and you need to think consider things relative to their return on the investment and for me writing some tests for my website has a pretty low return on investment frankly, like if something breaks it's not a huge deal.

I'm not like taking people's money there or storing their you know, secure information or anything like that, it's not like a big deal of something breaks and that was the case here somebody sent me an email and said, hey your contact form is broken and that's why I sent you.

Direct email so yeah maybe I missed a couple of contacts you know people saying trying to contact me but actually I don't really care how much so yeah so it ended up not being a big deal. I fixed it and I pushed that out and hopefully the context form is working now but I just wanted to talk about that.

I do have a blog post actually about this, you know, whether you should fix the bug or write a test, you know, just how you prioritize testing and for me, I prioritize it like everything else that I do just consider the return on investment and focus on the highest return hope that's helpful have a wonderful day.

Watch your own talks

01/05/2021 , 2m, 47s

What is up friends it is the fifth of January Tuesday 2021 and today I want to talk about why I watch my own talks and workshops and listen to my own podcasts and all that stuff so I know a lot of people who give talks and say that like one of their least favorite things to do short of talking in front of people is listening to themselves talking front of people and I I don't share that feeling.

I I don't dread listening to myself talk on like,Podcasts or wherever I but I I it's not like I just do it as a what's the I can't remember the word so many just loved myself whatever that word is but um, the reason I was thinking about this was just because in my blog post that I was yesterday, it was my review of 2020.

I mentioned how like I think it's important to review your you know, how things go and so I said that I watch almost every talk and video.Cast that I produce and I use that as an opportunity to identify ways to improve and I think that that's really important so if you're the type of person that just like hates hearing yourself talk or whatever I think that I mean, that's that's fine but maybe get over it because how can you identify ways to improve the way that you deliver a talk or the way that you created a video or the podcast that you recorded whether you're the host or the guest how can you identify ways to improve if you don't.

Review that material so this is just an invitation to you to find some content that you've created or whatever and give it a little review and try to look at it from the eyes of somebody who doesn't know the subject matter and see if or or yeah really just look at it through the eyes of your intended audience and see if you deliver the material in the way that your intended audience needs it to be delivered and maybe you can take notes.

I don't really take notes.When I go through this stuff, but maybe you could and see ways that you could improve that so anyway. I hope that's helpful to you and I hope you have an awesome day and do check out this review of 2020 on my blog KCD to IM / blog and then you'll find 2028 review okay, that was fun happy day, we'll see you around bye.

Things Change Constantly

01/04/2021 , 2m, 56s

Hey there friends. This is your friend Kent on Monday January 4th 2021, and today I just wanted to talk about how things change constantly. So I was updating the bookshelf app the app that we built together on Epic React.dev and just realized that there are a handful of well actually.

I think only one major thing that has changed since I released this and that is React query version 3 came out. And it's just it would there are so many videos that that impacts.Even though the impacts themselves are relatively small it just like destroys so many of the videos I had to re-record all of those.

And yeah, so I was just thinking about how things change and not only do our dependencies change but like the way that I recommend to doing things change and also like there's another one of the workshops the testing react apps in there. I have one exercise where we're dealing with a hook that allows you to get the geolocation of the current user.

And so we're mocking that out, of course, you wouldn't be able to do that in a test because like,If you run it locally on your machine it's gonna be one place and if you run it on CI it'll be a different So even if it was supported in the environment you're gonna want to mock it out.

Anyway, so the way that I approach doing that was a little complicated because you had to use act directly and somebody just recommended hey, why don't you use wait for element to be removed you wait for the spinner to go away and and then you don't have to use act directly and so like little things like this come up all the time and and I say well, you know the way that I showed works and and I would like it.

It's it's a reasonably good way to solve this problem.But your suggestion is is arguably better. So I would suggest going with that. And so yeah, we've got things that change because just developers make cooler new things and then we've got things that change because the ideas are new and things and testing JavaScript has gone through this as well.

And it's I guess I don't really have a whole lot positive to say about this, but it's it's just something to keep in mind that things are always going to change and you can't just wait for the next thing to to come out.All ways because you're always going to be waiting It's like waiting for you know the new addition of the best car You're always going to be waiting.

There's always going to be a better car. So you just buy the one that you can afford right now that accomplishes your purposes and then just close your eyes anytime there's the new one out or something like that, but we've got to bet on technologies at some point and you've got a bet today.

So just make the best decision and know that it's impossible to make a perfect one and do the best which with with what we have today. I hope you have an awesome day. We'll see you all later.

New Year, Daily Planning

01/01/2021 , 2m, 55s

What up friends this is Kent C. Dodds on three minutes with Kent and I am here it's a 21st or the yeah 2021 the first of January and I've been thinking about a lot of things, you know, you've got New Year's resolutions and stuff and my New Year's resolution my word of the year is planning so what I was in fifth grade, I was homeschooled and by my mom she has a degree in elementary education, so she homeschooled me and my two sisters that right my little sister and sister.

To just older than me and we it worked out really well for me at some point after a month or so of of going through homeschool. I started wanting to get my school done really quickly and my mom was just like well, I've got to take care of your sisters too, so I'll just write down a list of all the things that you have to do and then you can do them whenever you want because I was I was pretty like a self-starter and so yeah, she would write it down the night before and then in the morning I would wake up sometimes around like,Four or five I'm not not too much later than that though and I would get working I would stop for a little bit to have breakfast with the family while the rest of the my siblings went to school and stuff and then I get back to it and I'd finish my school for the day like nine or ten in the morning and then I have the whole day to do whatever I wanted unfortunately at the time lots of what I wanted to do was hang out on the computer playing games and stuff which are not proud of but it like I changed a huge amount during that time.

I became much more of a self-starter and and a very task-oriented.And goal-oriented it made a huge impact on my life, so yeah, I was just super productive so I've been thinking about that and just kind of wanting to have that level of productivity back and so for this year.

I'm gonna be I I have a notebook that I'm gonna be using to write down what I'm supposed to do and the next day just like my plans what the things that I want to make sure I do and it's not like super planned out or anything like not the time of day necessarily but it's just like here the things that I'm going to accomplish tomorrow.

And I've tried it the last couple days and I haven't been like working or anything it's been like family stuff but it's been working pretty great so that's what I'm gonna be trying to do. I hope you all had a wonderful new year so operation and have a great start to your new year.

I think one of the things that I'm gonna try and plan is every weekday. I'll I'll do something here on the three minutes with Kent podcast, so if you want to subscribe and keep up with my journey, it'll be around like coding topics and just life topics and stuff like that three minutes on hope you have a wonderful day bye.

Automation

02/07/2020 , 2m, 57s

An Argument for Automation

Checkout the record and livestream scripts I wrote on GitHub.

Making Process-based Goals

02/06/2020 , 2m, 58s

Going off-script a bit for this one, but hopefully it helps you think intentionally about the types of things you want to accomplish. Good luck!

AMA: Virtual DOM vs DOM

08/29/2019 , 2m, 57s

AMA: Learning and Teaching

04/24/2019 , 2m, 53s

AMA: Visual Regression Testing

04/18/2019 , 2m, 55s

AMA: How did you start?

03/25/2019 , 2m, 53s

#640

Read the extended story here: #1

early bird pricing for "Learn React Hooks" remote workshop and more!

03/21/2019 , 2m, 57s

This discount is over in a few hours so don't miss: https://ti.to/kent-c-dodds/learn-react-hooks-with-kent-2019-04-17/discount/early Keep up with my upcoming workshops here: https://kentcdodds.com/workshops/

And make sure you're subscribed to my mailing list to not miss announcements about more remote workshops coming soon: http://kcd.im/news

AMA: How did you become a member of the TC39 Committee?

03/19/2019 , 2m, 53s

#630

Notes:

Note: I'm no longer a delegate to the TC39 because I'm no longer employed by PayPal.

AMA: What's the difference?

03/14/2019 , 2m, 58s

626

AMA: Company to work remotely

02/11/2019 , 2m, 58s

AMA: Capability of unit tests

02/01/2019 , 2m, 56s

AMA: How do you test for mobile?

01/31/2019 , 2m, 49s

AMA: Your thoughts about CSS in JavaScript?

01/28/2019 , 2m, 57s

#560

Here's the YouTube video I referenced: https://www.youtube.com/watch?v=R1_nGU0x3Wk

AMA: Impostor Syndrome and self doubt

01/24/2019 , 2m, 57s

#546

Transcript:

[00:00:00] Hey everybody today is January 24th, it's a Thursday and I am running late today. Had a couple of things going on. You know taxes and stuff had to do this morning. But today I'm answering question number five hundred and forty six. The question is titled Imposter syndrome and self-doubt. The Oscars name is Ritchie from Melbourne Australia. And the question asks about or says I've been in the industry for 10 plus years and it's only recently I began doubting myself as a developer. How or have you or do you know somebody who has experience imposter syndrome. If so how did you or they overcome it. So I think that everybody like imposter syndrome is something that a lot of people can relate to. I have definitely felt imposter syndrome. Sometimes I especially early on in my career I was like I'm literally just spending all of my time asking other people questions and I feel like that's probably the same anytime you try something new. Even with 10 plus years experience you find yourself spending just a ton of time asking people questions. But at the end of the day you're probably pushing out some stuff that is helpful to people and that's one of the cool things about software is that once you have it written it can continue to provide value even when you're sleeping and you can create a lot of value. So imposter syndrome how do you deal with that. So I don't know. [00:01:28][87.4] [00:01:28] I think that you need to place your value in things that you can control and be mindful of the emotions and feelings that you're having if you... Yeah if you focus mostly on you know I did better today than I or like I. I worked hard even though I made no progress on my ticket or whatever I'm working on I worked hard and that's all that I can expect. Definitely don't compare yourself to the rest of the world like often we can think hey there are two people in this world it's me and everybody else and we lump everybody else into this category and so then when we compare ourselves to this other person on the planet which is everybody else we like obviously fall short and we'll never reach the level of experience and intelligence that they all have but that's like totally not a reasonable comparison at all. And so focusing mostly on not comparing yourself to other people but maybe comparing yourself to yourself and continuously improving and being mindful and compassionate toward yourself I think can really help you overcome self-doubt and imposter syndrome and yeah just focus on in improving yourself. And definitely don't compare yourself to other people and you'll get there. It's great. We're doing good things. I hope you have a wonderful day. And I will see you all later. I mean I won't see you but I'll hear you all or you'll hear me. Good bye. [00:01:28][0.0] [87.4]

AMA: Thoughts on GraphQL and Apollo?

01/23/2019 , 2m, 54s

#547

Transcript:

[00:00:00] What does up everybody today is January 23. It's a Wednesday. And the snow is starting to melt. We are going to be talking about question number five hundred forty seven. Thoughts on graft GraphQL and Apollo. This is from somebody named John bebb. Sorry should have practiced that before. And there are questions about graft you on Apollo. They say that they've been building stuff with GraphQL on Apollo and they really liked it. apollo-link-state for local state management and react and a bunch of stuff to feel like it's a really good way to separate the front end from the back end to have it more flexible on the front and you can make changes really quickly without having to necessarily go to the back end to make some changes. And they're just wondering like what my thoughts are about that and if they're missing something. Pros and cons. So I'll preface this first by saying I have not used Apollo at all. I have definitely used GraphQL a little bit and the I've used. What is it called a graphql-request I think is the package graphql-request on npm and I use that because it's small. So yeah I don't really typically. I haven't had a real use case for something like Appollo which is actually very large. So what are my thoughts. [00:01:24][84.0]

[00:01:25] I think that's probably the biggest thing Apollo and GraphQL client-side libraries are enormous typically mostly to handle caching and the merging of GraphQL queries and stuff like that and so it would... I'd Have to really be doing a lot of GraphQL queries and stuff for it to justify the size. But other than that I am super super gung ho about GraphQL and I'm really excited about the opportunities that we have for building front ends that are totally separated from the back and I feel like that's the right architecture for most apps. Now if you're building an app that is really SEO like super super important with SEO or something it's not logged in or whatever then I would strongly recommend Gatsby. In which case you can still use GraphQL and things but it has the server rendering aspect and even if it's SEO is not a huge concern then Gatsby is still probably a really awesome bet. I'm really excited about Gatsby. And there are only a few cases where Gatsby probably isn't enough. So yeah. GraphQL. It's awesome. Separating in front end from the back end super super great. Yeah I'm really excited about that. It's something that we're investigating heavily at PayPal as well. And yeah thank you so much for the question. And I will be in your ears tomorrow. Goodbye. [00:01:25][0.0] [84.0]

AMA: Your opinion about A.I.

01/18/2019 , 2m, 57s

AMA: What do you wish you were asked?

01/08/2019 , 2m, 56s

#537

  • My Book Shurlan (https://kcd.im/shurlan)
  • My faith
  • Can I give you a million dollars?
  • Can I translate your articles?
  • Anything that I can turn into impactful content.

I'm not huge on answering questions about specific coding issues for free. I am willing to do consulting, but I'm a little expensive.

AMA: How do you practice patience?

01/07/2019 , 2m, 47s

#520

@kentcdodds I really admire your patience when it comes to putting in the work and waiting for results

umm, how? πŸ˜…

  • losing hope too quickly
  • optimising for the short term (with maybe poorer results)
  • not undertaking long projects at all

AMA: TypeScript era

01/04/2019 , 2m, 47s

#522

Now that you started migrating your personal projects to TypeScript, I some questions for you:

  1. What are your recommendations on moving from flow to TS?
  2. When developing a library, what should I take into account regarding build process?
  3. Will you be updating your testing JS course with TS?

AMA: How to code faster?

01/03/2019 , 2m, 42s

AMA: What's it like working at PayPal?

05/14/2018 , 3m, 1s

Someone asked me a few questions so here's my answer!

react-router and some implantation details

11/16/2017 , 2m, 32s

Another answer to a question on my AMA about react-router.

Questions about babel-preset-env

11/16/2017 , 2m, 59s

This is an answer to a question on my AMA about babel-preset-env.

Links:

  • browserslist - The library babel-preset-env uses to know what browsers support.

Using and making new tools

11/16/2017 , 2m, 42s

My answer to this question on my AMA.

React Questions

06/15/2017 , 2m, 56s

Someone asked me some questions about using React and here are my answers :)

Newspaper Code Structure and Function Declarations

06/01/2017 , 2m, 52s

In this episode, I talk about my blogpost Newspaper Code Structure and Function Declarations. Enjoy!

React Testing Patterns

05/31/2017 , 2m, 51s

I had a friend send me this testing code:

describe('handleChangeStatusConditionSearchText', () => {
  test('should handle changing status search text within FormWizard', () =>
{
    const wrapper = shallow(<FormWizard />);
    const state = {
      ...wrapper.instance().state,
      statusConditionSearchText: 'poop'
    };
    wrapper.instance().handleChangeStatusConditionSearchText('poop');
    expect(wrapper.instance().state).toEqual(state);
  });
});

And I had a few concerns with it, so I decided to record my thoughts :) (Learn more about enzyme and shallow rendering, and then never shallow render again... πŸ˜‰)

Classes - A Premature Optimization

05/30/2017 , 2m, 58s

Just some ramblings for my personal feelings around classes in JavaScript. I'd much rather just use objects and closures :)

Wicked

05/24/2017 , 2m, 58s

Some brief and deeper thoughts about Wicked.

Why Open Source?

05/22/2017 , 2m, 58s

Just some thoughts about why I open source my stuff by default. Links:

Have a nice day!

The Utility of ESLint

05/19/2017 , 2m, 56s

I had a friend help me out on a project last night. His PR had a few linting issues so I asked him to fix some of them and later saw him on twitter expressing frustrating that ESLint can get in the way of building stuff. I agree with him to a point. This is how I feel about ESLint.

Links:

See you all around!

Adopting prettier-eslint at work

05/18/2017 , 2m, 54s

Back in January, James Long introduced us to his new JavaScript code formatting tool prettier. It gained popularity quickly and just two days later I released prettier-eslint. Since then, a bunch of tooling has been built around these tools to make the experience and workflow really awesome. I'm excited to say that we're now using it on my team's project at PayPal!

In this brief, I talk a bit about the challenges we've faced so far adopting prettier-eslint. Fun stuff!

An Argument for Automation

05/17/2017 , 3m

Here's a quick synopsis of my blog post An Argument for Automation. I also talk about my yeoman generator kcd-oss which has been really influential in me getting new high quality projects spun up really quickly.

See yah!

babel-plugin-tester

05/17/2017 , 2m, 55s

I created a library to make the testing lesson of my babel egghead course easier (to learn and teach).

Scaling OSS Management

05/15/2017 , 2m, 58s

One of my best internet friends Sarah Drasner recently tweeted something really nice about me:

IMHO the contributions @kentcdodds makes are huge because he teaches people how to contribute to OSS. That's time investment that scales πŸŽ–

I really appreciated that validation and those kind words and I want to talk about it a little bit more so here are my thoughts on that.

In addition, here are some resources:

  1. What open source project should I contribute to?
  2. How to Write an Open Source JavaScript Library
  3. MakeAPullRequest.com
  4. First Timers Only
  5. How getting into Open Source has been awesome for me

See ya'll around!

When to use Snapshots πŸ“Έ with Jest

05/11/2017 , 2m, 55s

I get a lot of questions about when it's appropriate to use Jest snapshot testing, or why you wouldn't use snapshots for pretty much everything. This brief is my answer.

If you're unfamiliar with Jest snapshot testing, it's really great and you can learn about what it is and how it works here.

I hope this is helpful! See you around!

Why I don't normally use scoped packages

02/21/2017 , 2m, 56s

This is another answer to a question on my ama: Why not use a scoped package for nps?

Maintainable Tests

02/16/2017 , 2m, 43s

Just some thoughts on how to structure tests (specifically setup) in a way that makes them easier to understand in the future.

Learning new tech and working on side projects

02/10/2017 , 2m, 47s

I got a question on my AMA asking me how to learn new tech and work on side projects. Here's my answer.

Links:

See you all on twitter!

Learning Codebases

02/10/2017 , 2m, 43s

I got a question on my AMA asking me how I read and learn codebases. Here's my answer!

See you all on twitter!

AMA: TypeScript or Babel?

02/09/2017 , 2m, 54s

I got a question on my AMA asking me about whether I prefer TypeScript or Babel. I prefer Babel because it has better interop and a wider community. For more, listen to this 3 minute podcast :)

See you all on twitter!

Change the pace of your day-to-day

01/19/2017 , 2m, 38s

I've recently been working on prettier-eslint and an accomanying cli and it's been a lot of fun. I really think that doing this kind of thing can really change the pace of your day-to-day and encourage you to do the same!

See you all on twitter!

Q&A: Deploying and Build Process

08/23/2016 , 2m, 51s

David asked me about my Deploy/Build process and it was easier to answer in audio form :)

Links: What we can learn about testing from the wheel (my talk at Ignite Fluent 2016)

See you all on twitter!

Lodash Tooling and Optimizations

07/13/2016 , 2m, 58s

My co-worker asked me about why the babel-plugin-lodash module is useful and I explain that and the lodash-webpack-plugin too :-)

Testing and Transpilation

06/24/2016 , 2m, 59s

I got a question about why we test our pre-transpiled code (or rather, instrument that code for coverage) rather than our post-transpiled code. So here's my answer. I reference babel-plugin-__coverage__ (use this with karma) and nyc (use this with tests run in node, like with mocha or ava).

Good luck!

My Daughter, JavaScript Air, Pam Selle, and Diversity in Tech

06/08/2016 , 2m, 56s

I had an enlightening experience today after hearing my 4 year old daughter Becca's response to watching some of the JavaScript Air episode on webpack today. Pam Selle is a regular panelist.

Q&A: Thoughts on TDD (Test Driven Development)

06/07/2016 , 2m, 57s

I was asked on my AMA about my opinoin on Test Driven Development (or TDD).

Q&A: Aphrodite vs. Radium

06/06/2016 , 2m, 48s

Alex Booker asks:

Hi, Kent

I've seen you advocating Aphrodite on Twitter and noticed you're using it for the JavaScript Air site

Just wondering what drew you to Aphrodite over it's competitors (most notably Radium)

I have a small amount of exposure to both and they seem to accomplish same thing but Radium is more mature

Thanks

P.S. I hope you're having a nice trip, mate πŸ˜€

Also, you might be interested in this CSS in JS comparison. (Note this PR)

I hope this answer helps!

Nested Unit Tests: An Anti-Pattern

05/25/2016 , 2m, 58s

At first I was really bothered that AVA didn't have support for nested tests, but now I consider nesting tests to be an anti-pattern.

Here's an example of the kind of thing I mean (see this in a syntax-highlighted gist here):

Mocha with nesting (don't mind the actual tests, just imagine what this would be like with a larger test file):

import Customers from './Customers'
import getMockCustomers from './Customers/mocks'
describe('Customers', () => {

  let mockCustomers

  beforeEach(() => {
    Customers.setCustomers([]) // initialize to empty for most tests
    mockCustomers = getMockCustomers() // have mock customers available
  })

  afterEach(() => {
    Customers.setCustomers([]) // clean up just in case
  })

  describe('getCustomers', () => {
    beforeEach(() => {
      Customers.setCustomers(mockCustomers)
    })

    it('should return the existing customers', () => {
      const customers = Customers.getCustomers()
      expect(customers).to.be.eql(mockCustomers)
      // questions you must ask if you're not familiar with this file and
it's bigger:
      // - where does `mockCustomers` come from?
      // - what make `getCustomers` return the mockCustomers?
    })
  })

  describe('setCustomers', () => {
    it('should set the customers array', () => {
      Customers.setCustomers(mockCustomers)
      const customers = Customers.getCustomers()
      expect(customers).to.be.eql(mockCustomers)
      // question you must ask if you're not familiar with this file and
it's bigger:
      // - where does `mockCustomers` come from? What is it initialized as?
    })
  })
})

Here's what it would look like without nesting (with AVA, though you could mostly do this with Mocha too):

import test from 'ava'

test('getCustomers: should return the existing customers', t => {
  const mockCustomers = initializeCustomers()
  const customers = Customers.getCustomers()
  t.deepEqual(customers, mockCustomers)
  cleanupCustomers()
})

test('setCustomers: should set the customers array', t => {
  initializeCustomers([])
  const mockCustomers = getMockCustomers()
  Customers.setCustomers(mockCustomers)
  const customers = Customers.getCustomers()
  t.deepEqual(customers, mockCustomers)
  cleanupCustomers()
})

function initializeCustomers(initialCustomers = getMockCustomers()) {
  Customers.setCustomers(initialCustomers)
  return initialCustomers
}

function cleanupCustomers() {
  Customers.setCustomers([])
}

Like I said, this may be a bad example. Don't be distracted by the tests themselves. Just look at the it blocks above in the Mocha tests and compare it to the test block in the AVA tests below. The difference is that with the it blocks, you have to keep in your head what's going on in a beforeEach and that relationship is implicit. In the test block, there is a level of abstraction, but it's explicit so you don't need to worry about keeping it in your head because it's in front of your face.

I hope this is helpful!

OSS Licenses

05/25/2016 , 2m, 22s

Check out the Open Source Definition. A license is required for your project to be considered Open Source. I recommend you choose a license.

Generators, Boilerplates, and Starter Kits

05/25/2016 , 2m, 21s

There are thousands of generators, boilerplates, and starter kits available on npm right now. While these tools are super handy to get started, using them will bite you in the long run. I recommend that you make and use your own, and only use others as a reference.

The value of an AMA

04/27/2016 , 2m, 42s

I was just thinking about my AMA and decided that I'd talk about how I've found it to be valuable and encourage you to start your own!

Here's mine: https://github.com/kentcdodds/ama Here's Sindre's: https://github.com/sindresorhus/ama

Aphrodite vs BEM (CSS)

04/21/2016 , 2m, 51s

I was talking with my good friend Jamund Ferguson today and he mentioned that he just really likes the simplicity of using regular (non-preprocessed) CSS with BEM and here are some of the reasons I still prefer Aphrodite.

I didn't mention in this that I also love that Aphrodite automatically vendor-prefixes everything for me as well.

Hope this is helpful!

JavaScript Air Stats celebration (100k downloads!! πŸŽ‰)

04/18/2016 , 2m, 59s

JavaScript Air just passed 100,000 downloads on the audio podcast hosted by podbean.com πŸŽ‰ 🎊

Things are going really well for the show so I wanted to share a bunch of stats about the show with you today. Here are the promised stats screenshots: http://jsair.io/stats-2016-04

See you on twitter!

Q&A: Aphrodite vs CSS Modules?

04/08/2016 , 2m, 58s

My friend Matt Winchester asked me what I think of Aphrodite compared to css-modules. Here's my answer.

Here's an example of me migrating from CSS (processed with PostCSS) to Aphrodite: https://github.com/javascriptair/site/commit/d8b8bf349f6c94a1d00539bb285240615baf5b7d

Oh! And one other thing I didn't mention as a benefit of Aphrodite that can be a killer feature is because your CSS is colocated with the components that are using it, you can ship only the styles that are needed and used, rather than shipping ALL of your styles. A lot of problems go away when you have an explicit relationship between your styles and your components πŸ‘

I hope this is helpful :-) Feel free to ask more questions on my AMA

Q&A: Recording audio/video for JavaScript Air

04/07/2016 , 2m, 10s

Adam Morgan asked me how I record audio and video for JavaScript Air. Here's my answer.

Links:

I hope this is helpful! Feel free to ask me more questions on my AMA

How JavaScript Code Coverage Works

04/06/2016 , 2m, 53s

Just a quick explanation of how tools instrument your JavaScript code to record and report code coverage. Common tools:

You may also be interested in this video + this repo where I go through setting up code coverage with ES6, Webpack, and Karma. Just replace where I use isparta with using babel-plugin-__coverage__ (like this) and it should work great πŸ‘

I hope this is helpful!

See you on twitter!

Working from home: Snacks

04/05/2016 , 1m, 35s

Just a quick pro-tip for those of you working from home. Keep the snacks outside of arms reach! And drink lots of water!

Automating JavaScript Air

04/05/2016 , 2m, 54s

I've automated a ton of stuff for JavaScript Air. There's definitely still more to do, but I'm pretty happy with how much is automated. You can find most of the automation stuff in the npm scripts in the package.json in the repo. Many of these reference scripts found in the other directory.

Automation is great. In fact, this very episode used some of the automation found in this repo to make it mono and compress the audio. As I often say: Saving time is not the only reason to automate workflows.

See you on twitter!

From vim to Atom + vim mode

04/05/2016 , 2m, 58s

For the last 24 hours I've been using Atom with vim mode and so far I'm liking it a lot. Here are the plugins I've installed so far:

See you on twitter!

Our Community is Like a Fire πŸ”₯

03/09/2016 , 1m, 28s

I was talking with some of the other Fluent Conf speakers this evening about one of my favorite features of our community: The more we share with each other, the better it is for everyone.

See you on twitter

Go to meetups/conferences and meet new people

03/08/2016 , 2m, 26s

The best part of going to meetups and conferences is getting to know new people you haven't met before and learn about their perspective and experiences. It will make you a better person and software developer πŸ‘

See you on twitter!

First things first

03/05/2016 , 28s

Today I'm playing with my kids and I'm reminded how important they are in life. I am giving two talks at Fluent Conf next week and doing a live JavaScript Air show and I have a lot to prepare and practice. However today I'm focusing on one of the most important things in my life: my relationship with my children. Don't forget what matters most.

Gifs in PRs

02/29/2016 , 1m, 31s

When making a pull request it's often really helpful to take a screenshot of before/after, make an animated gif, or do a screencast. Here are some handy resources about this:

See you on twitter!

Lessons learned broadcasting live at React Conf

02/23/2016 , 2m, 52s

I just finished the show Live at React Conf. This is just a few lessons learned from this experience.

See you on twitter!

Why I can't do your job for you

02/23/2016 , 2m, 52s

Got an email asking me to help someone by basically doing their job for them. I realize that this crazy world of the web can be a little exhausting with all the tooling and stuff, and I'm really motivated to help people learn. But I just simply don't have the time to help everyone that asks me for help. Here's a little bit on why.

Angular and Webpack for Modular Applications

See you on twitter!

React's New Versioning Scheme

02/20/2016 , 2m, 59s

Just my opinion on React's new versioning scheme in which I reference semver.org.

See you on twitter!

Ignite Talk Proposal: What we can learn about testing from the wheel

02/19/2016 , 2m, 43s

I just made an ignite talk proposal about testing that I think could really help clear up the question about what and how to test your applications. Here's a little teaser of what it's about.

Submit your own proposal here.

See you on twitter!

Sharing your learning: Egghead a day

02/18/2016 , 1m, 50s

Every weekday I tweet at the hashtag #eggheadADay. I share this with my co-workers and we have a discussion about the lesson of the day. It's a great way to keep your skills sharp. Here's the Google Doc I use.

See you on twitter.

New maintainer(s) needed for angular-formly

02/18/2016 , 2m, 54s

This explains the what, why, and how for me requesting a new maintainer (or several) for the angular-formly project. Links:

See you on twitter!

Got a PR Merged into ReactJS πŸŽ‰ + Tips

02/18/2016 , 2m, 51s

Super excited that my first pull request to the ReactJS project was merged last night! It was based on this issue I filed. So excited to have something I've done help the React community :-)

Big thank you to Dan Abramov, Paul O’Shannessy, Jim, and Facebook Community Bot for iterating on the PR with me :-)

In this show I give a few tips about contributing to open source projects and reference my (free) Egghead.io series: How to Contribute to an Open Source Project on GitHub. Also check out my blogpost What open source project should I contribute to? This gives tips on how to identify how you can contribute.

See you on twitter!

Refactoring Big React Components

02/17/2016 , 2m, 21s

Been refactoring a big react component into smaller stateless components to make it easier to understand dependencies for the different pieces of the component. Merrick Christensen demonstrates how to do this in his Egghead.io lesson Extracting Private React Components

See you on twitter!

Workshop Tips

02/16/2016 , 2m, 31s

Last week I gave a workshop about using the AVA framework to test React. One thing that I tried is this idea from A better way to teach technical skills to a group by Dean Hochman which utilizes post-it notes in an interesting way.

I also utilized a little emoji I affectionately call Terry the Tiger 🐯 to direct people to the actionable items in my thorough workshop instructions

See you on twitter!

Let's be nice

02/09/2016 , 2m, 57s

In this first episode of 3 minutes with Kent, I talk about the value of being nice in our industry.