But yak shaving is fun (2019)

parksb.github.io

295 points by parksb 2 days ago


chaoticmass - a day ago

When I was in highschool I started writing a game in Qbasic. Along the way, I wanted it to have a console (like Quake) where you could enter commands and modify the game as you were running it. This lead me to create a scripting engine in Qbasic, and long story short, I’ve been on a yak shaving epic quest now for almost 30 years now. No game, but I have a hybrid C / Lua game engine/general purpose application platform. Still tinkering and still no end in sight. I’m having fun though!

thimabi - 2 days ago

I always liked yak shaving, but avoided it because I knew it came with costs and tradeoffs. More recently, with the help of AI, I’ve been doing lots of it, as the costs and tradeoffs have greatly diminished. In fact, I’ve learned that building my own tools and frameworks, when done properly, comes with huge performance benefits and helps me understand the problems I’m trying to solve much more deeply. There has never been a better time for yak shaving!

danielrmay - 2 days ago

Yak-shaving-shaming puts limits on the creativity of talented engineers by constraining them to existing patterns and practices or building on top of abstractions, and practically, that results in engineers and teams with less breadth. In an applied software world that's exploded in framework and library complexity in recent years, I think there are always going to be yaks in dire need of a shave.

tombert - 2 days ago

Tangential but it's a story that I find funny.

At a previous job, my coworkers coined the term "Thomasing" [1], referring to me, as "the act of having a question explained so thoroughly, detailed, and long-winded that the asker has lost interest in the question that they were asking".

I thought it was pretty funny, because that does basically describe me in a nutshell.

[1] Lovingly, it was a good, fairly-tight-knit group, they weren't being jerks. We all did lighthearted ribbing.

monocultured - 2 days ago

I was taken by Christopher Priests book The Extremes and sat down to write a blog post about what compelled me so much about it, and wanted to add some gifs to it. In particular the "deja vu" scene from The Matrix, but I couldn't find it, and I no longer have an old version of Photoshop around to create the gif myself, and three weeks (and many tokens later) I'm finishing up an xcode MacOS native app that is dedicated to generating gifs. I've still not written the blog post.

kown7 - 2 days ago

My favourite Yak from Malcolm in the middle.

https://youtube.com/shorts/kSJgLA1frS4?is=2RA7C0EDEe7Mg8Fp

dan_sbl - 2 days ago

This feels like what is really splitting the programming community right now- those that have typically enjoyed the journey, and those that just want to be at the destination as soon as possible.

jihadjihad - 2 days ago

OT, but the image in TFA is not of a yak, but Highland cattle [0].

Yaks [1] have a shoulder hump you can't miss.

0: https://en.wikipedia.org/wiki/Highland_cattle

1: https://en.wikipedia.org/wiki/Yak

zby - 2 days ago

The fact that programmers can be nerd sniped into yak shaving some random libraries is the only thing that keeps Open Source running.

slovenlich - a day ago

Does not really feel accurate to how yak shaving was to me.

Yak shaving, as I experienced it - is when nothing works unless you do something else first, and something else needs it too.

I need to fix a bug, but I have to reproduce it first. I cannot reproduce it, because there is an entire other bug that prevents me from doing it. So I have to take the other route. But the other route does not work because the infrastructure is busted, and there's a problem on the server. To get the server to work, I need to contact John. But I need to do it through the ticket filing system and it is not behaving well today, so I need to find a workaround first. And after getting the ticket filing system to work I'm finding that John is not on the job today, because he took PTO. But some say Jim might help me. Jim is just some guy, he is in the other depratment, and I cannot get to him through the ticket system. And so I send an email to Jim, but Jim is not responding. And I need to find him physically in the building. So I need to know where his desk is. And there's an entire other system to find where Jim's desk is and I don't have the authorization to use it. So apply for the authorization and wait a bit. And then I learn where Jim's desk is, and then I go there and it is empty.

cwnyth - 17 hours ago

I'm reminded of Eduard Norden's quote on how he does research, to which I relate completely:

> When asked how he did research, the great Latinist and Historian of Religion Eduard Norden (1868-1941) explained: "I keep all my ties in one big shoe-box. Every time I try to pull out one specific tie, all the others come out as well, because everything in there is so entangled. This is also the way I do research."

Or perhaps Carl Sagan's, "To make an apple pie from scratch, you must first create the universe."

spelunker - 2 days ago

I can do a LOT more yak shaving on personal projects now. I still haven't managed to finish anything though.

nunez - a day ago

My dotfiles in a nutshell.

- I want to add a shell function that invoked Claude in a VM via Lima using API keys stored in 1Pass

- But that means I need a way of templating the YAML file that will define Claude's VM and a reliable way of syncing state between it and my machine

- I could use a templating language like Jinja or Starlark, but that's another dependency for a relatively simple job

- Also, what if I want to use Pi or opencode someday?

- So I spent more time than I care to admit hacking a Bash function that replaces template variables in Lima YAML files that doesn't throw a cow when you throw in single or double quotes.

(I got my Claude VM function thing working, and it works really well!)

mft_ - a day ago

Often, the experience is of initially trying to avoid shaving the yak, but finding all of the available alternatives are unusable or unsatisfactory for some reason or other.

So yes, you shave the yak, but at least the clippings are precisely the length and colour you need, and the yak’s resulting hairstyle is pleasing to your eye.

Xirdus - a day ago

> This blog doesn’t use a static site generator or framework like Jekyll, Hugo, or Gatsby.

I guess that's why the blog name stays on screen and covers the text when I scroll down, with fully transparent background so it doesn't even cover the article text, it blends with it which distracts my eyes a little too much. If it was any other blog post I'd be certain it's a bug, but here I'm not sure if it isn't intentional, and one of those customization a ready-made software wouldn't let them do.

socalgal2 - 21 hours ago

I agree 100% that yak shaving is fun.

That said, I've seen so many developers, especially indie game developers, waste their time yak shaving (having fun) and then running out of funds and having to give up their dream because instead of achieving their goal,ship an indie game and have income for the next one, they shaved yaks work on a custom game engine or custom UI system or some other thing that's a solved problem and not the actual goal.

I have a friend doing it now. I know he's having fun so I don't want to tell him to stop. But I also know he'll likely hit a point where he needs to take a job and give up his dream because he's not actually pursuing it, it's having too much fun yak shaving.

bigfishrunning - 2 days ago

Good article, I even remember the Yak Shaving Day episode of Ren and Stimpy but never made the connection with the slang term

yakkomajuri - 2 days ago

I love this. My very own static site generator, Teeny [1], is going on five years now. It's 350 lines of hand-written JS and has powered all my blogs and personal websites for years. It currently powers https://yakko.dev.

I added plugins this year which made it really powerful and allows me to keep the core small.

[1] https://github.com/yakkomajuri/teeny

caycep - 2 days ago

Gen Z calls this "side questing" now...

NoboruWataya - a day ago

My current after work activity is building a basic window manager (on top of river[1]) and asking myself what I am doing with my life. I'm not sure if I needed to read this or if this is the last thing I needed to read. It's not even so much fun as a kind of burning curiosity. "Shaving this yak would be stupid and unnecessary, I'm not going to waste my precious time doing it. ...but if I were to shave this yak, I wonder what would it look like?"

Also, Ren and Stimpy, there's a blast from the past!

[1] https://isaacfreund.com/software/river/

pyrolistical - a day ago

I’ve been yak shaving the interfaces not the implementation.

I used ai to convert c headers into in nice zig code. Then I link to the library.

It’s cheap to use zig translate-c to convert c headers but the output isn’t nice.

You can give ai c++ source which usually has more documentation than the compromised flat c header. It allows you to do a better zig port. Zig greatly cuts down the noise in c headers as everything needs to have long prefix for namespacing. But in zig we can just nest things properly.

We can introduce intermediate layers to use proper tagged unions and distinguish ?T, *T, [*]T

hankbond - a day ago

This was a very well written piece that contains just the right amount of context to understand how to place the concept, an easily digestible length, and a sort of to the point whimsy that's not overbearing. Saving this as a reference for writing style!

dblohm7 - a day ago

Yak shaving is only fun when you don't have managers who don't care about the circumstances breathing down your neck.

jemiluv8 - 2 days ago

Glad you gave yak-shaving a proper definition. I was always annoyed at my boss for insisting on a particular arrangement of import statements in typescript files. For him, it was a way of telling us to be more mindful of the code we typed. But mostly I’d have preferred a simple eslint config with autofix on save. This kinda yak shaving is no fun - trust me

oooyay - a day ago

As in most things I think it's a mixture of quantity and set and setting.

I enjoy a yak, but right sizing my yak is pretty important to my enjoyment of it. Maybe the yak doesn't get a full shave but gets a trendy hair cut, and that's okay.

I leave my yaks at home when I go to other engineers decision meetings, project kickoffs, or RFCs.

kazinator - 2 days ago

> Both stories came after the term yak shaving was coined

They are yakocryphal. A real yakrilege to spread such nonsense.

godelski - a day ago

  > Of course, this is an extreme success story; most yak shaving fails.
To be fair, this is true for most things. Though that doesn't mean it's useless or not a worthwhile endeavor.

I think we often make a mistake by assuming that when there's no visible output that time was wasted.

When I was in grad school this hit me, and everyone I knew, pretty hard. But when looking back I think most of the progress I made was entirely invisible. Those "failures" are not so much failures as narrowing the search space. Unless you have a full understanding of the problem before you begin (lol[0]), then this is always going to be true.

Which made me change my view on a lot of things and realize you just need to trust people. Help people get unstuck and out of rabbit holes but just because there isn't visible progress doesn't mean there isn't progress. If we try to make all progress visible then the reality is we just misalign from our actual goals.

So Yak Shave. There's lots of hidden treasures, even if you don't think it's a treasure at the time

[0] bahahaha I'd love to live in that fantasy world. Nothing is so well defined, even when using formal languages like math. Exploration is always required (yes, even in research. No one plans everything before they start working. The difference between researchers and industry is just how much up front strategizing they do. But exploration always happens, even if through different mediums)

zem - 2 days ago

the version I learnt the phrase from had the end of the chain as

- oh we should paint it

- we need a paintbrush

- I hear yak hair makes the best paintbrushes

- here I am, shaving a yak

made more sense than the examples given in the op

Havoc - a day ago

Especially in homelab context.

> I could just use kubernetes

…billion years later still nothing operational

- 2 days ago
[deleted]
hippopotenuse - 2 days ago

... but it's a highland cow

- 2 days ago
[deleted]
wnoise - 18 hours ago

This is significant semantic drift from the original meaning of yak shaving.

Building your own is great, but it's not yak shaving.

Yak shaving is fixing fractal brokenness that you notice while punching through layers of existing systems to finally fix the root cause of the original thing you cared about.

See, e.g. Hal replacing a lightbulb: https://www.youtube.com/watch?v=AbSehcT19u0

dance2die - a day ago

Living like Leornado Da Vinci.

Cider9986 - 2 days ago

That is a beautiful animal.

Triphibian - a day ago

In another universe he called it "Whizzing on an electric fence."

wizardforhire - a day ago

Maybe the most beautiful examples of the joy and importance of yak shaving that I’ve ever come across is inheritance machining on youtube. [1]

But truthfully part of the process of creating in general is yak shaving… as is so often said “trust the process”.

Arguably, the entire concept of tech debt is owed to the lack of yak shaving.

[1] https://youtube.com/@InheritanceMachining

DonHopkins - 2 days ago

So is breeding hairier and hairier yaks!

hankbond - a day ago

Sometimes I think yak shaving is mostly just ADHD I self delude into being productivity.

mystraline - 2 days ago

If you shave a yak, you get yak hair. And this material is like $35 a skein!

https://www.ulaandlia.com/collections/mongolian-baby-yak-woo...

Oh wait, you meant figuratively!

qzgrid37 - 2 days ago

[dead]