Shaving Yaks with Anthony Fu
Yak shaving is a term that refers to a task that leads you to perform another related task and so on, all distracting you from your original goal. While the experience this term describes sounds like a drag at first, moments like these played a central role in some of Anthony Fu’s biggest contributions to the programming community. Anthony is part of the core Vue.js team where he maintains its composition API, has helped build the Wenyan Lang VS Code extension, and he also the author of Vueuse, a collection of composable functions for Vue. In our conversation with Anthony, we hear about his yak shaving adventures and how they led him to create all of his amazing projects. We talk about our different experiences with yak shaving and Anthony shares his take on it. For him, yak shaving is about testing things out that you might otherwise overlook, an approach that often leads to creative discovery. We hear about Anthony’s road into Vue development while at college and how it led him to join the core Vue team. We talk about some exciting new developments in the Vue space and hear about Anthony’s enthusiasm for Vite as well as some of the contributions he has already made to the environment. So for all this and more in a conversation as packed with yak metaphors as it is with Anthony’s cool projects, tune in today!
Key Points From This Episode:
- Introducing Anthoy Fu and his contributions as a member of the core Vue team.
- Anthony’s explanation of ‘yak shaving’ followed by stories of yak shaving experiences.
- Yak shaving experiences of Anthony’s and why he enjoys it more than doing actual work.
- Viewing yak shaving as a form of trying things out to see if they are good ideas or not.
- An explanation of Vueuse, and examples of some of its Vue composition utilities.
- How Anthony got involved with Vue and open source during his college days.
- What Anthony is most excited about in the Vue system looking forward: Vite!
- Features about Vite that Anthony is excited about and his contributions to the space.
- How everybody deals with new ideas; whether they track them and act on them.
- Whether the team get other people to do their yak shaving for them!
- When to go down the rabbit hole or put everything on the yak burner!
- This week’s picks; standing desks, yak shaving videos, and more.
- “Yak shaving refers to attacks that leads you to perform another related attacks, and so on and so on, all detracting you from the original goal.” — @antfu7 [0:01:12]
- “Vue Use is a collection of Vue composition APIs, composable functions that could be reused.” — @antfu7 [0:10:53]
- “I had heard about Vue, but I didn't try it. At that time, I thought jQuery works fine, why try a new thing? Then it tried it. Yeah, after and doing a few other projects, I got obsessed with it immediately.” — @antfu7 [0:18:21]
- Hal replacing a light bulb, Malcom in the Middle
- Cyberpunk 2077 (Xbox One, PlayStation 4, PC, Stadia)
Resources Mentioned in Today’s Episode:
Our picks this week
[00:00:00] AR: This episode is brought to you by Ionic. For more information, please see ionicframework.com/vue
[00:00:20] T: Hi, everybody. Welcome to Enjoy the Vue. I’m Tessa. Today on our panel, we have Ari.
[00:00:25] AC: Hello.
[00:00:26] T: Ben.
[00:00:27] BH: Hello.
[00:00:28] T: Alex.
[00:00:30] AR: Hello.
[00:00:32] T: Our special guest for this episode is Anthony Fu. Anthony, would you like to introduce yourself?
[00:00:37] AF: Hey, everyone. My name is Anthony Fu. I'm a Vue coding member. In Vue, I’m maintaining the composition API plugin for Vue 2. You may also know me as the author of Vueuse, a collection of composable functions for Vue. I'm quite into Vue 2 recently, and I've made a few plug inputs. Yeah. Thanks for having me here.
[00:01:01] BH: Glad to have you here.
[00:01:02] T: Yeah, Anthony. I think that you mentioned before we started recording that you're here to talk about Yak shaving. Does anyone know what that refers to?
[00:01:11] BH: What's a yak?
[00:01:12] AF: Yeah. Yak shaving refers to attacks. That leads you to perform another related attacks, and so on and so on. All detracting you from the original goal. Where you actually need and use the tools. You are more likely to make it great. My idea of turning Yak shaving from detracting to productive is to make the tool just good for your need first. Don't over engineer.
Move on and get back to later to improve the design and implementation. Before making it too, always do some quick research, in case there are something good already there. I also think it’s a good way to make your tool open source. As a problem, you have faced, are likely to happen to someone else, who is the great community you are – even gather your tools improved, then it sharpens. That could have solved more problems for more people.
[00:02:06] T: Very cool. Yeah. I feel like, there's a lot of children's books that are reminiscent of Yak shaving, like the book A Fly Went By, or any of those, where one character is going somewhere. Then by the end of the story, there's a train of characters following them somewhere. I'm curious for everyone in the group, what your examples of, or what have been your experiences with Yak shaving.
[00:02:32] AC: A recent example for me was – I was just doing some regular task, some Vue component. I started my job three months ago. You know how it is, like getting your dev environment fully set up. It takes three, four, or five months. That includes things ES lint configs, in the project. I was getting really annoyed with VS code, because it kept not formatting things the way I wanted it to automatically. I was used to everything being all set up. That led down the rabbit hole of trying to get the ES lint and prettier configs all set up. Only it wasn't going well. I ended up having to just abandon that to actually do the thing I was supposed to do. I went back later and fixed the ES lint configs. That was an adventure.
[00:03:21] AF: Yeah, I can feel that.
[00:03:22] AC: Yeah. Right?
[00:03:25] BH: Formatting is hard.
[00:03:27] AR: Yeah. Recently for us, we've been using a Vuex store to make a lot of API calls. We started realizing that a lot of them were the same format. They made me start working on a new section and I started writing this boilerplate all over again. I said, “Wait a minute. Hold on.” That whole PR became this whole separate thing of I made a system of helpers, so that anytime that you want to do this pattern, you just bring in this thing. Then that turned into well, but then we need to be able to extend it. There became a plugin system to it, because well, some of them need to be auto-refreshed and some of them don't need to be. It was this whole thing. It was just this total rabbit hole. We have this really great system now.
[00:04:18] T: Nice. How about you, Ben?
[00:04:21] BH: Gosh, yeah. When it comes to Yak shaving, I think I am guilty of what Ari brought up regarding, if my editor doesn't look exactly the way I want it, I just see red, and I have to fix it. When I click save and it doesn't automatically put all the attributes on individual lines.
[00:04:38] AC: Don't even get me started.
[00:04:41] BH: God help me if the syntax highlighting doesn't work for whatever reason. I'll just stop working. I think that's my biggest Achilles heel when it comes to doing work. Which is funny, because when I started doing this HTML development stuff, I used to use plain notepad editor and now I'm just so spoiled and never again. What about you, Tessa?
[00:04:59] T: Yeah. I remember thinking that using notepad was somehow a sign of strength, even though at the time, it wasn't like I had any alternatives. I could have downloaded Notepad++. In my mind, that was just another notepad, so why bother? I think there are definitely a lot of things that I do that are Yak shaving-adjacent, but they feel slightly different. Because for example, with the code editor stuff, sometimes I need to get my settings down.
Then sometimes, you have an interview in CodeSandbox and the default font is Dank Mono, and you're just like, “I’ll change that outside of the interview next time.” Or when you're writing a paper and you're like, “I got to nail that typeface choice first.” I just don't like the inconsistency across the letters.
[00:05:42] AC: You're such a Dank Mono hater. Well see, now I'm not going to be able to unsee that. Thanks, Tessa.
[00:05:49] T: I think other areas where I feel my behaviors are similar, but it's not quite the same are, for example, a recent talk I gave where what I really needed to do was get down all the content and the shape of the talk. Because I didn't know what the design style of the slides was going to look like, I found it really hard to just put down the information, because I knew that even though the part that was blocking me was putting down the content, if I put that into the content first and then came back and did the design later, that would be a lot more work than if I just figured out a good enough theme now, and then put in the content and did fine tuning later.
In a lot of community organizing and coding stuff as well, there's a lot of issues like that, where you think you know the thing that you need to work on. Then, it turns out that you're not looking at the right level of the problem and you have to maybe move up or move down a step. Then other times, like when I'm cleaning or something, then I get into, “Well, I need to clean this thing,” but then it'd be so perfect if everything had its own container, which is not realistic. Then I just give up, or I'll see task after task after task and have a running to-do list in my head. I'm like, Yak shaving in the list in my head, but not in real life.
[00:07:03] AC: Yeah, I feel like, cleaning is the stereotypical example that comes to mind for me when I think about Yak shaving in a negative way. Because yeah, an hour later and only a corner of my desk will be clean. Because that one corner is super organized.
[00:07:18] BH: You got a whole corner?
[00:07:19] AC: A bunch of other things are half organized.
[00:07:21] BH: Gosh. I’m jealous you have a corner.
[00:07:25] AC: For me, nothing was done.
[00:07:27] T: Even when you're looking at the clock and it's 7:53. You're like, “All right., I'll get started at 8.” Then you forget, and you look at the time, and now it's 8:03. You're like, “Well, now I have to wait until 9.” Anthony, I'm really curious why you wanted to talk about Yak shaving and what your experiences with it has been like.
[00:07:44] AF: Yeah. I think Yak shaving is the way of me doing things. I am actually more likely to do – more enjoying to doing Yak shaving than actually doing stuff.
[00:08:01] AC: I feel that.
[00:08:02] BH: It feels so productive.
[00:08:03] T: It really reminds me of the famous story about Michelangelo, the painter and sculptor, and how he's talking about finding the figure in the marble, when you look at it in a positive way rather than a negative way. You're trying to identify the solution that's already there. You just don't know it yet.
[00:08:18] AF: Yeah. Right. For me, I would like to do some quick prototype or something that's get it to work and release out to see that how people react to it and others really need it. If that's went well, that you are more likely to evolve more time to improve it and make it better. If that's like, no one like it, you’d probably – and bad idea. You can just move on. You can just leave it and move on. Take what have you learned by making it, but just think about it in a different ways. It's more like that.
I'm thinking that I have done a lot of yeah, a lot of Yak shaving, too. I did several that I've read several NPM package that lets really do some experimental things. For example, one of that is making the Vue composition APIs just looks like jQueries. I will call it jQuery, that I replace very brief and the compute is into dollar signs. Sometimes I think that I would like – give a try, but that is not necessarily to be being the production, but I'm really enjoying doing that and some of them might – you may later on realize that’s maybe a good idea, so you can stick on other improvements.
I like to take an example, like Tailwind, that everyone will always think that Tailwind is a bad idea before using it. Yet, sometimes I've seen that some of the things that you – well, they really need to try to get to see if it's a good idea.
[00:10:12] BH: I think it's incredible, what you call Yak shaving. It's very productive Yak shaving in a way, right? Because you're solving problems as you go and experimenting with it, which I think is nice, because it's like you said, when you have an idea, sometimes just getting it out there, it offloads it and allows you to see and interact with it in a way that's tangible, versus this thing that's just hanging in the back of your head constantly. I think it's so cool that you take these ideas and prototype them. To your point, sometimes it's just an experiment, and it's going to – no one's ever going to use it. Then you have the libraries that you've created that are super popular, like you use. I think that's amazing.
[00:10:50] AF: Yeah, thank you.
[00:10:51] T: Yeah, what is Vueuse?
[00:10:53] AF: Yeah, Vueuse is a collection of Vue composition APIs composable functions that could be reused. You can think it’s the Lodash for Vue composition APIs.
[00:11:10] BH: Basically, if you think of it another way, too, it's like, Anthony has taken really common things that you want, like pulling out mouse position. Rather than you having to go create your own composition API function that looks at the browser API, that pulls out the mouse position, then extracting it out, you basically call a use mouse and then you get your X and Y position on your mouse. That's it.
It's done according to browser spec. Some of the examples on the docs, when you go to this NPM is like, you plot whether the user prefers dark theme by just doing use preferred dark and it's just a [inaudible 00:11:41]. It basically does some of that abstraction for you, so you don't have to – You suddenly could go low level, but just in a very Vue ethos, which I love about it is it extracts the common stuff that we always like to use into really easy to use functions.
[00:11:59] T: To use, do you mean makes them available in a reactive way?
[00:12:02] BH: Yes. Yeah.
[00:12:59] AC: Now, I haven't used Vueuse and I'm currently stuck using Vue 2. Can I use it?
[00:13:05] AF: Sure, sure. You can use it. That's the important things for me too. When I was making Vueuse, other times the Vue 3 is not ready yet. I just think, there's a quite important for Vueuse to make the transition from Vue 2 to Vue 3, mostly. I figured out a way to make it acceptable to work for both versions. After a while, I realized there are some developers have a similar needs adopting to their libraries to Vue 3. I got an idea to extract the logic from Vueuse, to suppose that feature and it becomes Vue demi, which is another yak I have saved. Today, there are quite a few libraries is using it for their code to be an isomorphic code against to both versions. Yes, you can definitely use Vueuse in Vue 2.
[00:14:07] AC: Can someone define isomorphic for me?
[00:14:11] AF: Yeah. Isomorphic is like the things you could use the same code base for different targets, or different usage. Yeah. This is quite a release for developers. If you want to suppose Vue 2 and Vue 3 in two different code base, which means that every change, you need to do it twice. Every pull request made, you would need to cherry-pick to another versions that will add up a lot of the workloads. Yeah. I would choose isomorphic if it's possible.
[00:14:50] AC: Yes. As someone who used to have to cherry-pick every commit to another branch for months on end, don't recommend.
[00:14:59] BH: Yeah. I loved how you kept the French theme going, because for those who don't know, demi means half in French. It's cute that the Udemy gets half Vue 2, half Vue 3 in that regard.
[00:15:10] AF: Yeah, kind of like. I was thinking that Vue commodity is embracing the French world.
[00:15:18] BH: That means embracing the French word. Then the Vue community follows along with it. I still got people going like, “Is it vite?” I’m like, “No, it's Vite.” They’re like, “Why is it pronounced Vite?” It’s like, “It’s French.”
[00:15:31] AC: For fast.
[00:15:32] BH: Yes. For fast.
[00:15:36] AR: I'm looking at the docs right now. I'm just blown away by this. This is so cool.
[00:15:46] T: Oh. Hey there, Alex.
[00:15:47] AR: Hey, Tessa.
[00:15:50] T: What's got you so down?
[00:15:52] AR: I need to write a native mobile app, but I’m just a simple Vue developer and I don't know how.
[00:15:58] T: Oh. Well, have you looked at Ionic?
[00:16:02] AR: The Alanis Morissette song?
[00:16:06] T: No, silly. Ionic. Ionic is a platform for building mobile apps with the web.
[00:16:13] AR: Whoa! What is happening?
[00:16:15] T: With over 100 components and pre-build animations, Ionic gives you building blocks to make awesome apps with ease. [00:16:22] AR: Oh, no. We're trapped in an ad read.
[00:16:25] T: Best of all, it integrates with Vue, so getting up and running is easy. You can use your existing skills to ship native iOS apps, native Android apps and progressive web apps without any hassle.
[00:16:39] AR: Wait. I can use Vue to write a mobile app?
[00:16:42] T: Yeah, that's what I've been saying this whole time.
[00:16:45] AR: Well, hot dang. I guess, it's high time I give Ionic a try.
To get started, visit ionicframework.com/vue.
The heck was that?
[00:17:00] T: Just the narrator. Don't worry about it.
[00:17:02] AR: Oh. All right. Okay. Be sure to tell Ionic, you enjoy the Vue!
[00:17:16] BH: Speaking of Vue, Anthony, I think, I can't be the only one here, I am really curious to hear about how did you get involved with Vue and open source? What's the story behind that?
[00:17:27] AF: Yeah. During my freshman year, that I'm trying to make my own website. That's my first time doing that web developers and that. Yeah, at that time, your immediate pick is jQuery. I started with jQuery for sure. I have a backend using Python.
[00:17:53] BH: Wow. Alex is a Python fan. You’re talking to the right crowd here.
I my senior years, me and my friends get together to planning making financial app, and we choose not to do it. That's the chance for me to get serious Vue and TypeScript. In our college, we have some departments for formula language. We'd like to utilize the results. We have to make our app international. There's not too many [inaudible 00:19:04] tools for VS code out there, making all needs. They installed, why can’t I make one myself?
After results, another yak, I made the VS code extension called i18 Ally, which becomes my first well-known open source project. Back to Vue, at that time, Xavier has published the RC about the functional APIs, which later on becomes the composition it does. Yeah, it looks so promising and we can't wait to play with it. During our experimentings, we found that there are some common logics could be reused. That becomes my first motivation to make the composable function library Vueuse.
There's another story for me, is that things Vue us, suppose for both versions, in Vue 2 we relied on the at Vue composition APIs, the Vue 2, plugin for Vue 3. At that time, there are quite a long pairs of times that the plugin is not maintained. There is a disalignment between Vue 2’s implementation and Vue 3. Since the Vue 3 is still alpha and make doing changes. I made an MPR for it. It's got no response for a few months. I was kind like, I was a bit of angry about this, I guess.
I think for me, that I'm making Vueuse and these alignments with Vue 2 and Vue 3 make me very hard to do this. My pull request didn't get merged. That's something, I cannot do as [inaudible 00:20:56]. I was angry at first. Then I think that there is open source, there's no one's duty to do this. I think, maybe I can try this, so I create an issue and saying that I'm volunteer to maintain this project. Then even leave a comment. That is great. They gave me the permission to maintain this project. That's a story for me to join the Vue team. Yeah, I think I have need to – I would need to – thanks all to Yak shaving.
[00:21:35] BH: All thanks to Yak shaving.
[00:21:39] BH: That's incredible.
[00:21:40] AF: Yeah. Since I need this, and so I took the response. Since I need it, so I seek the improvements for it and that's how things going.
[00:21:55] AC: Meanwhile, I’ll be struggling with something and be like, “Man, I wish there was a solution to this.” Then two seconds later, forget about it. Move on.
[00:22:04] T: Yeah. I thought you were going to say, two seconds later and like, “Ben.”
[00:22:10] BH: This bug is now a feature.
[00:22:15] AC: I can't tell you how many tickets I closed being really mad at our linting in our project before I actually did anything about it.
[00:22:24] T: Yeah. When you can't get the linter to behave as expected, it's really frustrating. There have been so many times where I pulled the main branch. Then when I pushed, I wouldn't be allowed to push, because there were linter errors that were from the original pull that didn't pass the winter. I don't understand how they got committed to main. I'm really mad about it. Then I fixed everything, push it to main, pull again. There's some more errors there. What is happening? Anthony, we talked a bit about your past with you. I'm curious to hear more about what else you're excited about in the Vue ecosystem looking forward?
[00:23:06] AF: Yeah, probably the Vite. You probably heard that Evan is working on a tool called Vite. It’s like, yes and dev servers that's really fast. Yeah.
[00:23:20] BH: It is very fast. That's a great way to describe it.
[00:23:24] T: It sounds like, we're already on Vite version two. I didn't even know we had a full version one yet.
[00:23:30] AR: It's that fast.
[00:23:33] AF: Yeah. It’s that fast.
[00:23:35] T: Too fast, too furious.
[00:23:37] BH: Well done. Well done. I think, to Anthony's point, I think with even Vite 1, there was a lot of lessons learned after releasing and playing around with it, that I think had Evan just kept it to himself and just kept iterating. He probably wouldn't have learned it as quickly. Because I know that with Vite 2, there are some architectural changes. I don't know exactly what, but I do know there was some changes that obviously warranted the major version change. Vite is probably an example of Evan’s own Yak shaving of like, I think –
[00:24:04] T: I was going to say, it seems very hyperbole.
[00:24:08] BH: I need this thing.
[00:24:11] T: Absolutely. Yeah. I was curious what you're excited about, about Vite and other projects in the Vue ecosystem that's coming up in 2021.
[00:24:20] AF: For me, that Vite is a very good tool for developers, or things. It brings up so many goods aspect to be quick prototyping and things and someone that don't have much patience. For me, I got ideas and I need to do a quick prototyping to prove that if it’s a good idea. As the Vite came out, I'm very excited about. I tried immediately.
As the times and working some sides using icons, and icons plays a big role in apps for me. Sometimes I spend much more time picking silver icons than write code. Every icons that has its own website, find their icon IDs, which is annoying to me as sometimes my connection is quite slow. I cannot just get a search walk. Other times, Vue just going to [inaudible 00:25:30] and the Vite out. I decided to give it a shot to make my own icons crossing apps along the way.
From this at the starting points, I make an app called Icones, which is also a French word in Icones. Then, since Vite is quite a new thing, it's not having a large ecosystem like Webpack, so I made a few tools working on it and Vue plugins components, which serves the similar functions like Knox components, which will import the components automatically in your Vue app. Then, I starting to make more Vite apps. Because I find a good patterns for it, then I make a template called Vitesse, is speed in French, but is a noun with some plugins I made and some configurations, I think is good for making Vite apps. It’s an optional tool for me to build a website using Vite very quickly. Yeah. Sure, it’s on GitHub and then it got quite – they got a quite well feedback that I didn't expect it.
[00:27:01] T: Nice. How is it to deal with all of these incoming comments on your work? How do you know if you're in a situation where you do want to shave the yak, has there ever been a time where you decided, “No, I should leave that yak alone”? That's a yucky yak.
[00:27:17] AC: That might bite me.
[00:27:21] AF: Yeah. Okay. When I got an idea of maybe a yak, maybe I'm really rush on doing the things I'm doing. I may just note an idea on my to-do list or something, and get back later. I’m also trying to find the existing as possible. You don't need to save the yak.
[00:27:48] T: Yeah. One question that I had, that maybe everybody can weigh in on. I mean, for example, with Anthony, we've heard so much about all of the different projects that you're working on. We all have a lot of a variety of things on our plate. I'm curious how everybody keeps, or doesn't keep track of the things that they have to do and the things that they want to do.
[00:28:10] AC: I'll start with I don't. Classic ADHD. I'll have a really great idea. I'm excited about it for an hour, and then I completely forget that I ever had the idea.
[00:28:25] T: Nice. Yeah, that happens to me a lot, too.
[00:28:28] AR: Yeah. I definitely keep track of all of my ideas and then never act on a single one. I keep notebooks around where I can just very quickly scribble things out. Then sometimes I go back to it. Most of the time, I don't.
[00:28:45] AC: I mean, at least, you write it down. I just let it go out into the ether, never to be seen again.
[00:28:51] T: Something poetic about that.
[00:28:53] AR: It's mostly that I write it down, because I've learned if I have more than three things that I'm trying to keep track of, I will very quickly not be keeping track of them. I tend to just write things down. Then when I go, “Wait, what was it?” I can look back at a piece of paper and go, “Oh, right. It was this thing.” Get back to the thing that I was doing.
[00:29:17] AC: I like your idea, Tessa, that it's poetic that I just fill up thing.
[00:29:21] T: It’s just very romantic. Like an indie movie.
[00:29:25] AC: I don't know. It's actually frustrating. Because every once in a while, you have time during a sprint to work on some technical debt. The thing is, I don't always keep track of what exactly is technical debt. I know that there was this long list in my head at one point, of all the things I wanted to fix. Now I can't remember a single thing, until the next time I come across. I'm like, “Oh, that's what I want to fix.”
[00:29:48] AR: Or, the worst is when you do actually write it down, or you have it tracked somewhere, but you weren't clear enough. You're like, “The blue is wrong.”
[00:30:00] T: It's like, you're an archaeologist coming across the ancient civilization of you and being like, “What did they write?”
[00:30:08] AR: What does it mean?
[00:30:09] T: What was life like back then?
[00:30:11] AF: Yeah, yeah. Exactly. For me, I’m not enjoying writing down, or maybe the to-do list is not very good. It's not very working good for me. I would rather to do it right now, things that – That moment, you got an idea that you can remember it more specifically and you got the motivation to it. When you write down things that it becomes that 10 meaningless letters, and you will never get back there to it, to the exciting moments you want to do this. I would prefer to do it when you gather ideas.
[00:30:54] T: Nice. Yeah, it's funny, because whenever I read those cleaning tips, where they're like, if it takes five minutes or less, just do it. My mind, immediately –
[00:31:03] AC: Nothing takes five minutes.
[00:31:06] T: Well also, my mind spirals. I'm like, technically, you could break down anything small enough that it would take five minutes or less. Then already in my mind, I'm just cleaning forever and never cleaning in real life. I think for non-cleaning related to-dos, I'm a bit more like Anthony. You’re in between Ari and Alex in that. I usually don't like writing things down. I'll just keep it in my head and that does mean that the occasional amazing tweet disappears from my mind. It gets pushed off with Vue.
On the other hand, I feel sometimes when I write it down, then I lose the motivation to work on it, because I feel I've done it, and so I don't have that pressure in my mind of I have to do this before I forget. Oftentimes, I'll just try to take care of everything before my cash gets cleaned.
[00:31:49] AF: Yeah, exactly. I would think that if you really want to do things, you would remember that if you forgo it, you may not really want to do the things that much.
[00:32:01] T: That's true. That's true. On the other hand, there's a lot of bills and things that I should take care of, but I don't really want to go through the work of nailing everything out.
[00:32:13] AC: Or go into the website and coming across a terribly developed form.
[00:32:18] T: Yup.
[00:32:20] AR: Yeah. The discovering the thing that my boss did when he first started at the job, and you go, “Oh, no. That’s not. Oh, no.” Yeah. He and I have had a few conversations around that.
[00:32:35] T: I mean, on that subject, I feel there's also externally enforced Yak shaving, right? When you come across some code and you're like, “This doesn't make any sense.” Then you look at the package and there's no doc. Then you find the person that wrote it, and you're like “Hey, what is this package do? There's no docs.” Then they're like, “Huh. Guess you'll just have to read the source code.” I know.
[00:32:57] AR: Yeah. No. I have a question, actually. Does anybody else make other people do Yak shaving? In a PR, if you get a pull request for something and somebody is already working in a file or something and you noticed, “Hey, two lines up from where you are, this little bit that you didn't touch, this isn't new. It could be just a touch better. Can you work on that?” They go, “Oh, yeah. You’re right, that's totally wrong.” Then they fix it. Does anybody else do that? Or am I the only one?
[00:33:33] AC: As I say, so I'm guessing you do this.
[00:33:37] AR: All the time.
[00:33:38] AC: No, because I've always been essentially, the only one working in a code base. Now, I at least have people occasionally dabbling in it. When you're all alone, the only person that can shave the yak is you.
[00:33:51] T: I think for me, a lot of times it will be relevant, but the person working on the PR will be like, “Oh, that's Yak shaving. We can take care of that later.” I'm like, “That's fine.” It's just, we have a whole continent full of later yaks. That's fine. We just won't look there. Then when it comes to my PR and I'm like, this is definitely not related. It's like, “No, it has to happen now.” It's a very one-way binding there on the Yak shave.
[00:34:16] AR: I'm henceforth referring to technical debt as later Yaks.
[00:34:21] AC: Later Yaks. I feel fortunate though, that my boss is definitely a yak shaver. For him, he just ends up working really long hours to make up for the time he spent shaving the yak. I'm like, “But I like my evenings. Maybe I just won't shave the yak today.” Ben, you didn't weigh in. How do you balance yak shaving, or do you?
[00:34:45] T: Also, your to-do list.
[00:34:46] AR: We're all waiting for the wise words of Ben on Yak shaving.
[00:34:50] BH: Gosh. Yeah, I'm the worst when it comes to infrastructure and just the idea that I could – if I just solve this one problem, it would save me 10% on the thing I'm going to do twice, and then I'm like, “Oh, not a good use of my time.” It's definitely a balancing act for me, as far as I'm forget, where – investing the right time to do the Yak shavings. I think, that's why I like what Anthony was talking a lot about regarding just A, either getting a quick idea out, regardless of how misshapen and not – if it only counts for one scenario, rather than every scenario, the classic over-engineering that we as developers often do.
[00:35:28] AC: You’d shave half the yak?
[00:35:30] BH: Yeah. To see how it works.
[00:35:33] T: He half yaks it.
[00:35:34] AC: Like a mohawk.
[00:35:34] BH: Yeah. See how you like it. You don’t like it to shave it all of.
[00:35:38] AF: Yeah. Just shave the base and the community improve it.
[00:35:43] AC: That’s smart.
[00:35:44] BH: It’s going to bother somebody.
[00:35:46] T: I guess then, my question is when your yaks are getting out of hand, how do you trim down? I guess, not the yaks themselves, but the yaks that you're dealing with before you start Yak shaving, so that you do actually make some progress towards your goals.
[00:36:05] AC: We're really beating a dead yak with this yak metaphor. It’s definitely feel like doing it.
[00:36:14] AF: Yeah. Right. Exactly. You’d know when the time is kept.
[00:36:21] AC: No, I totally understand what you're saying. Because yeah, there will be times where I'll recognize that something really, eventually needs to be done, but the thought of doing it in that moment sounds awful. Then there's the times where like, I start shaving the yak without even realizing I started shaving the yak. I'm like, “Oh, well. Guess I'll just keep going. Already halfway through.”
[00:36:46] AR: Yeah. If you can look at a rabbit hole and go, “Oh, hey. That's a really deep rabbit hole. Probably don't want to go down that one.” Then you can put it on the Yak burner.
[00:37:04] AC: Oh, no. That would yak of.
[00:37:07] AR: Yeah. Sometimes you look at one and you just go like, “Oh, no. It's a little handful of dirt that's just been removed. It's fine. That's not a rabbit hole.” Then you're off them.
[00:37:18] AC: Or sometimes, you can't see the bottom of the rabbit hole. For some reason, it's just calling your name.
[00:37:25] AR: Yeah.
[00:37:26] T: Yeah. Those are almost better, though, than the times when nothing is calling your name and you just got to slog through it.
[00:37:33] AC: Exactly.
[00:37:35] T: On the other hand, sometimes life just decides for you. Like the time that my doctor asked me, “Do you feel like getting your flu shot today?” Then didn't even wait for me to answer. The needle was already in my arm.
[00:37:45] AC: I thought they had to do a consent for it. That's another topic.
[00:37:51] T: Well, on that note, Anthony, if people want to talk to you about yaks, or other things, where can they find you on the Internet?
[00:37:59] AF: Yeah. You can find me on Twitter. My account is @antfu7. My GitHub is Antfu without the seven. Things I think is very difficult to have a same usernames across a platform.
[00:38:15] T: That's very true. That’s very true. Awesome. It's time to move on to this week's picks. Alex, would you like to go first?
[00:38:24] AR: Over the past several months, I've been off on my own very slow Yak shaving adventure. I've been piece by piece upgrading my desk situation. This past week, I got a standing desk. It is very nice. It has motorized stuff. We will drop a link to that in the notes.
[00:38:52] AC: I have a standing desk and I'd never stand it.
[00:38:56] AR: The trick to it is that you've set a Tabata timer. Every hour, you change your position.
[00:39:05] AC: Yeah. No, that's not happening. That would interrupt my flow state and that's just unacceptable.
[00:39:09] AR: I mean, you don’t have to change your position, but that's the way that you get it going, so that it's, “Okay, now I'm up, now I'm down.” Then you're also not up all the time, or down all the time.
[00:39:18] T: Is the Tabata timer, that thing where WebStorm tells you that you have to close WebStorm because your free trial is up and then you reopen it 5 minutes later?
[00:39:30] AR: Yes. I now want to use an unlicensed version of WebStorm, just for the free Tabata timer.
[00:39:39] T: I saw someone on Twitter suggest that. I was like, “Oh, that that would actually force me to take a break.” Otherwise, I don't think I could use WebStorm.
[00:39:46] AC: Yeah. I was like, but then you'd also have to use WebStorm.
[00:39:49] T: It’s just, there's too much going on there. I can't focus.
[00:39:52] AR: There's nothing wrong with WebStorm. Don’t listen to them.
[00:39:54] T: Yeah, there’s nothing wrong with WebStorm.
[00:39:56] AR: I really like WebStorm.
[00:39:58] AC: If you love WebStorm, that's okay, too.
[00:40:01] T: Yup, absolutely. If you love Dank Mono, that's also fine.
[00:40:07] AR: I like both.
[00:40:10] AC: I couldn't even use Dank Mono anymore, because it was on my other computer. Now I can't find the way the cheap and way that I have it.
[00:40:18] T: Well Ari, do you want to share your picks?
[00:40:21] AC: Sure. Speaking of judgmental opinion about things other people love, for a long time, I just did not understand the appeal of Schitt’s Creek. I watched five episodes and I just was not interested.
I decided after seeing someone actually, I believe it was Tatiana Mac, say that the first season was garbage, that they were intolerable, or insufferable is the word she used. I was like, “Yes.” Then she started got better. I was like, okay, I'll give it another try. I just skipped the first season entirely and started with the second season. Then I fell in love with it.
[00:40:58] T: Nice.
[00:40:59] AC: Yeah, I cried more than once. I'm not ashamed to say. If you didn't think the first season of Schitt’s Creek was funny, it gets better. It's worth waiting till the Thursdays when it actually really starts to get good, because when it starts to get good, it is so good. Yeah. Schitt’s Creek.
[00:41:16] T: Wait. Then why not just skip to the third season?
[00:41:19] AR: Because you need the –
[00:41:20] T: Just like any good story.
[00:41:22] AC: You need the story. Yeah.
[00:41:25] AR: Okay. Yeah, I have not. We've watched the first three episodes and we were like, “Eh?”
[00:41:31] AC: Yeah. No.
[00:41:32] T: I was like, Daniel Levy is very charismatic, but I don't know about this show.
[00:41:38] AC: Yeah. That was why I pay, because it's one of those shows where you either love it, or you don't get it and I didn't get it, because I wasn't watching the right seasons.
[00:41:48] T: Also, just for me, I saw that ad where somebody makes Daniel's character cry, because he's singing some song about him, I guess, for an entire year. Every time we think about Schitt’s Creek, I think about that ad.
[00:42:00] AC: Okay, but that was an amazing scene. Okay.
[00:42:04] T: It seems like it would be. Yeah.
[00:42:06] AC: I definitely have cried watching that scene. Okay.
[00:42:09] T: Speaking of – No, that's a terrible transition. Ben, would you like to share your picks?
[00:42:15] BH: Yes. Actually, my pick for this week is actually Anthony's project icones.js.org. That's icones with an ES.
[00:42:22] T: The French way.
[00:42:23] BH: Yes, the French way. The reason I really like it is because basically, icon libraries are really hard to just traverse. I can't tell you how many times I've been on Font Awesome to try to search for something. Downloading something has always been a pain. What Anthony has done with these icons is absolutely incredible from the sense that you search for things. When you find an icon you like, not only is it you can download the SVG, but you can actually copy the Vue component. You click Vue, and then it just has the template and the script block. You can just paste it in, all these DX things that are just absolutely phenomenal.
[00:42:59] T: DX?
[00:43:00] BH: DX, developer experience. Then for those who are using React, there are React snippets too as well. Don't worry, it's not just Vue only. Major props to Anthony for this wonderful project that he created. I'll definitely be using this a lot in future projects.
[00:43:15] AR: Thank you. I got two picks. One is in Yak shaving videos within minutes. It's very funny. You can check it out. I will link it in the show notes. Another one is the Cyberpunk 2077. Playing with it a written pace and the data report, there are quite a lot box added in initial release process and developer and kind like, okay with this. Yeah. Maybe you can. If you got interesting, you can try it, I think despite with the box, they are doing very good at storytelling. Yeah, that's for my pick.
[00:43:56] T: Yeah. I think it's available on most platforms, unless you have a PlayStation, then I believe you cannot play it.
[00:44:02] AC: Yeah, I was going to ask if it was back on PlayStation.
[00:44:06] AR: Yeah. I'm actually paying it on the PlayStation 4, which is the disaster [inaudible 00:44:11] people are talking about. Yeah, I'm happy with it. I'm really enjoying the games. Yeah, I don't find really that's something to compare, despite with the box.
[00:44:27] T: All right. I guess, that leaves my picks. My first pick is a game that has been recommended by many people, including Divya and Henry and Evan, who are all guests on the show. It's called The Short Hike. It's an indie game available on computers and Nintendo Switch. When I started playing it, I thought, this game isn't really for me, but I don't know. Because then, I played for another three hours. I feel it is very Yak Shavy, though. It's very on-brand for this episode.
You start out with this task of climbing to the top of the mountain. Then you meet all these people that are on the island, I guess technically, the character that you're playing already knows them. They all have little things that they want you to take care of. It's also nice, because there's these collectibles, but they're so scattered and there's so many different things that you have to collect that it overwhelms my need to collect every single thing a little bit. I also feel that happened.
That's why I don't finish most games, because it's like, I'm about to beat the final boss, then I'm like, “Wait, I haven't collected the 1.2 million things that I need to have to have this game be complete.” Ari is nodding very vigorously.
[00:45:41] AC: 900 [inaudible 00:45:41] anyone?
[00:45:44] T: I think the worst one for me was an old commie, like the original one, where there were certain things that you had to dig up, but you could only see the spots at night. You just had to happen to be looking in the right spot in the dark.
[00:45:56] AC: Awful.
[00:45:57] T: Yeah. Along that note, I saw this hilarious video from a creator named Josh Neil, about when you walk into a room and immediately forget what you're looking for. I'll link that in the show notes. Also, this weekend, I saw this video from RubyConf 2017 on code review and when we were talking earlier about PRs, that reminded me of this. Seemed like a really nice video.
Finally, to close out my picks, sticking with the French theme, it's a product called Dodo. I feel like, my biggest mental yak shaving moments come at night when I'm about to sleep. Then I think of a million things I need to take care of. I can't stop thinking about them. It's definitely a luxury item. It's a little white pebble that shines light onto your ceiling that expands and contracts. The idea is you watch it expand and contract as it helps you forget about the accident and fall asleep. I tried it once or twice, then I put it away somewhere. I don't know where.
I didn't think it would work. I never made it to the end of the circle. I guess it did work. There's that. I think with yak shaving, what it reminds me of and maybe someone can correct me if I'm not saying this correctly, but this idea of [inaudible 00:47:16], which is revenge sleep. It's time for bed and you got to get up for work the next day, but the whole day you spent your day doing things that somebody else told you to do. Now it's like, you don't want to go to bed, because it's your time. Anthony's nodding. Feel free to correct me if I really messed that up.
[00:47:33] AF: Yeah, sounds good. I’m got into the situations quite oftenly, I guess. Yeah, but I'm just enjoying the times doing what I want to do, even though is not really doing things, doing productive things, but I will enjoy it.
[00:47:59] T: Yeah. I think this helps calm the minds for those moments when you can't indulge. With that, that's all for this week's episode. Thanks for listening. Until next time, enjoy the Vue.