Gerhard
👤 PersonPodcast Appearances
If not, we don't have a show, if not. So I really get that at a very deep level, because that was at the root of the Ship It show. Me putting it on hold, that was exactly it. Room to breathe, room to experiment, room to do other things, room to do things differently. That's how it started. And it's coming up to a year and it still feels right. And you're right.
If not, we don't have a show, if not. So I really get that at a very deep level, because that was at the root of the Ship It show. Me putting it on hold, that was exactly it. Room to breathe, room to experiment, room to do other things, room to do things differently. That's how it started. And it's coming up to a year and it still feels right. And you're right.
It takes a certain amount of adulthood and strength of character to know that that's what's happening. And I'm really glad that you're in this point. It's an amazing point, very important one, essential for what's to come next. It's a catalyst. So it's the beginning of something amazing. And I'm so excited to be a friend of this amazing journey. Very, very excited. You are a friend.
It takes a certain amount of adulthood and strength of character to know that that's what's happening. And I'm really glad that you're in this point. It's an amazing point, very important one, essential for what's to come next. It's a catalyst. So it's the beginning of something amazing. And I'm so excited to be a friend of this amazing journey. Very, very excited. You are a friend.
And some iteration and some change. So to everyone listening, I want you to know that this conversation has been thought out weeks in advance. You're at the baseline. It only gets better from here. So stick with us. This was the big announcement. This was the important stuff. And now we're going to have some fun.
And some iteration and some change. So to everyone listening, I want you to know that this conversation has been thought out weeks in advance. You're at the baseline. It only gets better from here. So stick with us. This was the big announcement. This was the important stuff. And now we're going to have some fun.
okay all right trust me the last the last thing i'll be trying to keep it a secret for a while i think i've succeeded and it's going to be amazing oh man so sit down you want to sit down for this one
okay all right trust me the last the last thing i'll be trying to keep it a secret for a while i think i've succeeded and it's going to be amazing oh man so sit down you want to sit down for this one
It is. Early Christmas, I love it. It is, actually, yes.
It is. Early Christmas, I love it. It is, actually, yes.
But it's great, I hope.
But it's great, I hope.
Well, there is another one, but anyway. See, I can't hide this from you.
Well, there is another one, but anyway. See, I can't hide this from you.
By the way, this little part was for Jason, the editor. I met him for the first time when we recorded the last Ship It episode. Oh, nice. And that was very nice. So this laughter was for you, Jason. Okay, there you go. So this bit you may edit, but I knew this was going to be fun. And I thought about you as we're going through the show. Oh, nice. So hopefully it won't be just my laughter.
By the way, this little part was for Jason, the editor. I met him for the first time when we recorded the last Ship It episode. Oh, nice. And that was very nice. So this laughter was for you, Jason. Okay, there you go. So this bit you may edit, but I knew this was going to be fun. And I thought about you as we're going through the show. Oh, nice. So hopefully it won't be just my laughter.
It'll be everyone's laughter because you'll go a bit crazy. Okay. But in a good, tasteful way.
It'll be everyone's laughter because you'll go a bit crazy. Okay. But in a good, tasteful way.
Nothing like that. okay so let's start all right so in the last kaizen you're thinking jared of getting a brand new mac that's true try out the newly introduced just contribute that's true and you were saying that you've been waiting for a reason to upgrade right it was black friday christmas is coming true and i hear that the m4 is all the rage these days i've heard so much good so good yeah
Nothing like that. okay so let's start all right so in the last kaizen you're thinking jared of getting a brand new mac that's true try out the newly introduced just contribute that's true and you were saying that you've been waiting for a reason to upgrade right it was black friday christmas is coming true and i hear that the m4 is all the rage these days i've heard so much good so good yeah
Adam?
Adam?
Sorry. Oh, man. Now, in all honesty, I know that a few listeners have tried. I forget who exactly it was. There was someone that mentioned that a lot of work has gone into it. Do you remember that, Jared? It was in one of the comments, maybe. I forget his name. That's all I know. I want to say it was Adam, but no, it wasn't Adam. It was someone else. Anyway, it was somewhere.
Sorry. Oh, man. Now, in all honesty, I know that a few listeners have tried. I forget who exactly it was. There was someone that mentioned that a lot of work has gone into it. Do you remember that, Jared? It was in one of the comments, maybe. I forget his name. That's all I know. I want to say it was Adam, but no, it wasn't Adam. It was someone else. Anyway, it was somewhere.
I'm not going to look for it now, but it's there. People can try it and we'll be building on top of that. Also in the last Kaizen, and by the way, there's going to be video. This will work well. I was mentioning that I'll be talking at TalosCon about how I took my home lab into production. And so that happened. Nice. Something special about that was that it was a recorded talk.
I'm not going to look for it now, but it's there. People can try it and we'll be building on top of that. Also in the last Kaizen, and by the way, there's going to be video. This will work well. I was mentioning that I'll be talking at TalosCon about how I took my home lab into production. And so that happened. Nice. Something special about that was that it was a recorded talk.
by myself i did the editing i had multiple cameras and it's out on youtube so you can check it out very cool the one thing that was one of my favorite moments about this talk is me showing off the actual home lab so the home lab was a latte panda sigma and the size for comparison it's exactly as big as an iphone max iphone pro max
by myself i did the editing i had multiple cameras and it's out on youtube so you can check it out very cool the one thing that was one of my favorite moments about this talk is me showing off the actual home lab so the home lab was a latte panda sigma and the size for comparison it's exactly as big as an iphone max iphone pro max
So you have an iPhone-sized home lab, which is insanely powerful. You can run Kubernetes on it, 16 cores, DDR5, multi-terabyte NVMe drives, and it can serve 300 billion requests per minute. Sorry, per month. Sorry, that would be crazy. No, no. We're having billions. Wait a second. No, no, no. Per month. Sorry. Requests per month. Okay. So a lot of like many, many billions requests per month.
So you have an iPhone-sized home lab, which is insanely powerful. You can run Kubernetes on it, 16 cores, DDR5, multi-terabyte NVMe drives, and it can serve 300 billion requests per minute. Sorry, per month. Sorry, that would be crazy. No, no. We're having billions. Wait a second. No, no, no. Per month. Sorry. Requests per month. Okay. So a lot of like many, many billions requests per month.
Anyway, we may link to the talk for you to go and check it out. Oh, absolutely. So the one thing that was really interesting about, or that's really interesting about this specific device is that it has an Intel CPU. And I know that Intel now has not been doing that great this year. But they do have video sync, which means they can do video transcoding really, really well.
Anyway, we may link to the talk for you to go and check it out. Oh, absolutely. So the one thing that was really interesting about, or that's really interesting about this specific device is that it has an Intel CPU. And I know that Intel now has not been doing that great this year. But they do have video sync, which means they can do video transcoding really, really well.
So they have GPUs that can do video transcoding. This one has an Intel Iris Xe graphics, which means they can do video transcoding amazingly well. So let's take the nerdness level plus one. okay always and for this both of you you'll need to take out your browsers okay and you will need to go to jellyfin oh dot make it work dot tv are you going to share with us your home theater setup or what
So they have GPUs that can do video transcoding. This one has an Intel Iris Xe graphics, which means they can do video transcoding amazingly well. So let's take the nerdness level plus one. okay always and for this both of you you'll need to take out your browsers okay and you will need to go to jellyfin oh dot make it work dot tv are you going to share with us your home theater setup or what
Uh, no. Okay. I'm there. You're there. So enter your GitHub username. And for the password, by the way, if you're listening, this will change. The password is kaizen17. I'm in. Okay. What do you see? Tell us.
Uh, no. Okay. I'm there. You're there. So enter your GitHub username. And for the password, by the way, if you're listening, this will change. The password is kaizen17. I'm in. Okay. What do you see? Tell us.
Excellent. Click on one. Click on the drafts. Okay. And pick the 4K one, 2160. Full 2160p. I see a loading spinner. Great. It's running on my shelf, by the way. There is a CDN, but it's running on my shelf, the Homelab. And the video is being served from that Homelab instance. So this is Homelab taken further. What is this video?
Excellent. Click on one. Click on the drafts. Okay. And pick the 4K one, 2160. Full 2160p. I see a loading spinner. Great. It's running on my shelf, by the way. There is a CDN, but it's running on my shelf, the Homelab. And the video is being served from that Homelab instance. So this is Homelab taken further. What is this video?
This video is the last conversation that we had with James and Matt about building out a Pipe Dream CDN. This was August. It took me a while to edit the video. Did it load, by the way? Yes, it loaded.
This video is the last conversation that we had with James and Matt about building out a Pipe Dream CDN. This was August. It took me a while to edit the video. Did it load, by the way? Yes, it loaded.
It's running smoothly, too. Excellent. So this video is running off that LattePanda Sigma. It's being fronted by a CDN. So it's turtles, turtles and turtles. And this is the content which I always imagined I would produce, content that has the conversation part and content that then we do screen sharing and we go deep.
It's running smoothly, too. Excellent. So this video is running off that LattePanda Sigma. It's being fronted by a CDN. So it's turtles, turtles and turtles. And this is the content which I always imagined I would produce, content that has the conversation part and content that then we do screen sharing and we go deep.
The content that you're looking at is about an hour, the whole thing, the whole hour. And it was edited down from about three hours. That was a long conversation. And it's still a draft. So it hasn't been published yet. But it's coming. So taking the Homelab further, doing the CDN, in a way, it's the adventure. It's a CDN adventure. I think that's what's happening.
The content that you're looking at is about an hour, the whole thing, the whole hour. And it was edited down from about three hours. That was a long conversation. And it's still a draft. So it hasn't been published yet. But it's coming. So taking the Homelab further, doing the CDN, in a way, it's the adventure. It's a CDN adventure. I think that's what's happening.
And kaisening our Homelabs and kaisening the devices that we all love, whether it's an M4 or an Intel-based Homelab. So... You're part of something special, just like CPU.fm is special. And it's coming. It's not there yet, but there will be little more things coming, maybe just in time for Christmas. Series of videos that are, I'm thinking of them as movies for infrastructure nerds.
And kaisening our Homelabs and kaisening the devices that we all love, whether it's an M4 or an Intel-based Homelab. So... You're part of something special, just like CPU.fm is special. And it's coming. It's not there yet, but there will be little more things coming, maybe just in time for Christmas. Series of videos that are, I'm thinking of them as movies for infrastructure nerds.
And makeitwork.tv will be the place for this when it's done. There's also makeitwork.fm, but makeitwork.fm is just for the conversations, just like the audio part. So that's how this works. Nice. Love it. So changelog is very embedded in this because, you know, a lot of the experimentation that I do happens in the context of changelog. And then on top of that, take it further.
And makeitwork.tv will be the place for this when it's done. There's also makeitwork.fm, but makeitwork.fm is just for the conversations, just like the audio part. So that's how this works. Nice. Love it. So changelog is very embedded in this because, you know, a lot of the experimentation that I do happens in the context of changelog. And then on top of that, take it further.
make the time to create the content that uses that. But obviously there's like so much more that happens. Like the editing, you have no idea how much it takes me to do the actual editing. That is my biggest issue. So I have an appreciation for video, 4K video done well, and sound and everything. For it to sound right, to look right, to the color grading, it just takes a while.
make the time to create the content that uses that. But obviously there's like so much more that happens. Like the editing, you have no idea how much it takes me to do the actual editing. That is my biggest issue. So I have an appreciation for video, 4K video done well, and sound and everything. For it to sound right, to look right, to the color grading, it just takes a while.
DaVinci Resolve, I think I've been using that app more than my terminal. In the last, I don't know, six months. I've been learning it. It's amazing. But anyway, back to Kaizen. Back to the Kaizen 17. So we talked about the CPU-FM. We talked about the Homelab. And we finally did it. The thing that we talked about for a while, Jared, right?
DaVinci Resolve, I think I've been using that app more than my terminal. In the last, I don't know, six months. I've been learning it. It's amazing. But anyway, back to Kaizen. Back to the Kaizen 17. So we talked about the CPU-FM. We talked about the Homelab. And we finally did it. The thing that we talked about for a while, Jared, right?
Enable team members to replace changelog-dev with a prod-db-dump. That's pull request 533. Did you try that? Yes, sir. Tell us about it.
Enable team members to replace changelog-dev with a prod-db-dump. That's pull request 533. Did you try that? Yes, sir. Tell us about it.
I would call it a CLI utility. It's like a make. It just improves on make, basically. If you've used make, that's what a command runner, some would say. Right.
I would call it a CLI utility. It's like a make. It just improves on make, basically. If you've used make, that's what a command runner, some would say. Right.
Of course, you have to have them. It just makes things so much more interesting. I haven't posted the last one, but I will do this time. Okay. Screen, window, boom, boom. There you go. Tizen 17. Oh, man. I feel like. Jeez, dude. It's a nice font. What's that font? I'm not sure. Let me double check. I think this is a default one that the template has. I like the one. San Francisco. It's Inter.
Of course, you have to have them. It just makes things so much more interesting. I haven't posted the last one, but I will do this time. Okay. Screen, window, boom, boom. There you go. Tizen 17. Oh, man. I feel like. Jeez, dude. It's a nice font. What's that font? I'm not sure. Let me double check. I think this is a default one that the template has. I like the one. San Francisco. It's Inter.
The idea is that we wrap a bunch of commands that you would need to run locally. So for example, installing the Neon CLI so that you can control Neon. By the way, there's two. You can do it via NPM, or you can go and download the binary. The binary, the version, it's a slightly different one. So there's some inconsistencies in the CLI binary from Neon. But this basically handles all of that.
The idea is that we wrap a bunch of commands that you would need to run locally. So for example, installing the Neon CLI so that you can control Neon. By the way, there's two. You can do it via NPM, or you can go and download the binary. The binary, the version, it's a slightly different one. So there's some inconsistencies in the CLI binary from Neon. But this basically handles all of that.
And what I thought would be easy, like I thought this change would be easy, but actually there were like quite a few rabbit holes that I had to go down on. One, for example, was how to download in the format which is compressed, right? Because you don't want to download many gigabytes locally. So how do you compress it automatically? And then how do you handle extensions that exist on Neon?
And what I thought would be easy, like I thought this change would be easy, but actually there were like quite a few rabbit holes that I had to go down on. One, for example, was how to download in the format which is compressed, right? Because you don't want to download many gigabytes locally. So how do you compress it automatically? And then how do you handle extensions that exist on Neon?
They're installed on Neon, but you don't have locally in your Postgres database. So there was that as well. So I had to uninstall an extension, which is giving us metrics that you can do via SQL queries. So there are like a few things like that that I had to go through. But still, what it means is that this command just restored devdb from prod. That's exactly how we call it.
They're installed on Neon, but you don't have locally in your Postgres database. So there was that as well. So I had to uninstall an extension, which is giving us metrics that you can do via SQL queries. So there are like a few things like that that I had to go through. But still, what it means is that this command just restored devdb from prod. That's exactly how we call it.
And you can look at the pull request. There's even a video which just shows how it works. It wraps all that complexity, like all that know-how. You have to run this command, and you have to pass this value. And the other thing is the credentials, they're pulled just in time from the one password vault. You don't have to remember them. And it orchestrates all of that.
And you can look at the pull request. There's even a video which just shows how it works. It wraps all that complexity, like all that know-how. You have to run this command, and you have to pass this value. And the other thing is the credentials, they're pulled just in time from the one password vault. You don't have to remember them. And it orchestrates all of that.
So the integration, I was really happy with it, how it worked. And it feels like an easy thing to wrap your head around. There's nothing complex about what's like, obviously there are a couple of niggles to sort out, but you don't see them when you use it. And you can even like see the commands before they run. You can copy paste the commands. So everything runs locally.
So the integration, I was really happy with it, how it worked. And it feels like an easy thing to wrap your head around. There's nothing complex about what's like, obviously there are a couple of niggles to sort out, but you don't see them when you use it. And you can even like see the commands before they run. You can copy paste the commands. So everything runs locally.
And I think this was the hard part before because when we were using Dagger for this, that was running in containers, but you don't use containers. So we had to make that big change so that you would have this nice local experience. Everything runs again. It doesn't need Docker. It doesn't need anything like that. It doesn't need Dagger. It's just commands, installing binaries, things like that.
And I think this was the hard part before because when we were using Dagger for this, that was running in containers, but you don't use containers. So we had to make that big change so that you would have this nice local experience. Everything runs again. It doesn't need Docker. It doesn't need anything like that. It doesn't need Dagger. It's just commands, installing binaries, things like that.
So I'm glad that you tried it. I'm glad that it's working. Do you see yourself using this?
So I'm glad that you tried it. I'm glad that it's working. Do you see yourself using this?
That's a huge score.
That's a huge score.
Inter. I-N-T-E-R. Inter. Interesting. Okay.
Inter. I-N-T-E-R. Inter. Interesting. Okay.
I've used that font. I-A Presenter. I-A Presenter. I've been loving their stuff. I-A Writer. I've been using it for seven, eight years. So I-A Presenter is.
I've used that font. I-A Presenter. I-A Presenter. I've been loving their stuff. I-A Writer. I've been using it for seven, eight years. So I-A Presenter is.
The next one was enabling team members. The next pull request, pull request 534, was basically building on top of this. And it just enables team members to run dev with a NeonDB branch. So this was a rework of what we had before. That's why it removed more lines than it added, but basically built on top of the same just approach. Did you try this command, Jared? No. No. OK.
The next one was enabling team members. The next pull request, pull request 534, was basically building on top of this. And it just enables team members to run dev with a NeonDB branch. So this was a rework of what we had before. That's why it removed more lines than it added, but basically built on top of the same just approach. Did you try this command, Jared? No. No. OK.
Yeah. I love like how they write about it and like the whole idea behind it. So it's nice and simple and I can knock these out so quickly.
Yeah. I love like how they write about it and like the whole idea behind it. So it's nice and simple and I can knock these out so quickly.
Will you ever have an interest to try this command?
Will you ever have an interest to try this command?
Not just that, it also configures your app. It starts your app with that Neon branch. So there's no more manual, it's like one command and it will run everything. It will create the branch and then it will configure your app to use the branch. There's no more manual dicking around and you can believe this.
Not just that, it also configures your app. It starts your app with that Neon branch. So there's no more manual, it's like one command and it will run everything. It will create the branch and then it will configure your app to use the branch. There's no more manual dicking around and you can believe this.
Yeah, I haven't looked into that. It does make sense. It does make sense to add it, by the way. And even if the CLI doesn't support it, maybe there's a curl request that we can do to the API to get this synced. But that makes sense.
Yeah, I haven't looked into that. It does make sense. It does make sense to add it, by the way. And even if the CLI doesn't support it, maybe there's a curl request that we can do to the API to get this synced. But that makes sense.
Right. So the freshens ones, to get the freshens ones, which is a great idea, by the way, the first command will take longer because it has to pull down the entire database. And that takes a while. And then it has to load the entire database. It basically removes what you have locally and it just reports everything.
Right. So the freshens ones, to get the freshens ones, which is a great idea, by the way, the first command will take longer because it has to pull down the entire database. And that takes a while. And then it has to load the entire database. It basically removes what you have locally and it just reports everything.
So that can take up to five minutes depending on internet connection, a bunch of things.
So that can take up to five minutes depending on internet connection, a bunch of things.
Well, the big thing or the main thing should be the main thing. So I was thinking we should start with the main thing. If Adam is ready for it, I'm ready for it. Always be ready. We're ready for it, Gerhard. Okay. What's the main thing? Well, you tell us, Adam. I'm looking at you.
Well, the big thing or the main thing should be the main thing. So I was thinking we should start with the main thing. If Adam is ready for it, I'm ready for it. Always be ready. We're ready for it, Gerhard. Okay. What's the main thing? Well, you tell us, Adam. I'm looking at you.
That's why the command now handles all of that, so that you don't have to worry, did I set the correct environment variables? Is everything correct? And because everything happens inside of the command, once it gets to a point, like we had, for example, Adam's
That's why the command now handles all of that, so that you don't have to worry, did I set the correct environment variables? Is everything correct? And because everything happens inside of the command, once it gets to a point, like we had, for example, Adam's
case where you know sometimes it fails and then you don't like what state am i in this command tends to be self-contained in the point what that means is that once it gets to a certain point you're safe you're sure it will continue and it will finish it will do the right thing and it's all embedded in the actual command
case where you know sometimes it fails and then you don't like what state am i in this command tends to be self-contained in the point what that means is that once it gets to a certain point you're safe you're sure it will continue and it will finish it will do the right thing and it's all embedded in the actual command
Now, this command, when you're connected to a remote database, it can be slightly slower. So for me, for example, I preferred downloading all the data locally and having all of that locally because it felt snappier. And even though the query planner, we warm up the query planner so that things are cached, we do a couple of things like that, it still feels slower.
Now, this command, when you're connected to a remote database, it can be slightly slower. So for me, for example, I preferred downloading all the data locally and having all of that locally because it felt snappier. And even though the query planner, we warm up the query planner so that things are cached, we do a couple of things like that, it still feels slower.
It still is slower because it has to do all those round trips, right? And they're all remote. They're all remote calls to this remote database. So I think the choices between paying the penalty once, five minutes, three minutes, depending on your internet connection to load all the data, and then you know you have the latest, or...
It still is slower because it has to do all those round trips, right? And they're all remote. They're all remote calls to this remote database. So I think the choices between paying the penalty once, five minutes, three minutes, depending on your internet connection to load all the data, and then you know you have the latest, or...
Pay a little bit of penalty every time you load the page because it may take, I don't know, a second slower sometimes, depending on how many queries you're running. So both options are there. I think knowing Adam, I think he would prefer the second option so that he's connected against a remote database. And I think you would prefer the first option. So we have a mix of both.
Pay a little bit of penalty every time you load the page because it may take, I don't know, a second slower sometimes, depending on how many queries you're running. So both options are there. I think knowing Adam, I think he would prefer the second option so that he's connected against a remote database. And I think you would prefer the first option. So we have a mix of both.
I think that's probably accurate. Yeah. But we'll make sure that this works for Adam as well. Not in this context, but as a follow-up for sure. Cool. Well, the next thing which improved for us, and this was great to see, was the all-in Zulip approach. Zulip, how do you pronounce it? Zulip? Zulip.
I think that's probably accurate. Yeah. But we'll make sure that this works for Adam as well. Not in this context, but as a follow-up for sure. Cool. Well, the next thing which improved for us, and this was great to see, was the all-in Zulip approach. Zulip, how do you pronounce it? Zulip? Zulip.
Drop the P. Call it Zuli. That's right. So I think at this point, everyone basically migrated from our Slack. to Zulip or Zulip. Everyone's there. The conversations are there. I won't call it Zulip, Zulip, Zulip. It's just a joke. So everyone migrated to Zulip. How does it work?
Drop the P. Call it Zuli. That's right. So I think at this point, everyone basically migrated from our Slack. to Zulip or Zulip. Everyone's there. The conversations are there. I won't call it Zulip, Zulip, Zulip. It's just a joke. So everyone migrated to Zulip. How does it work?
Yeah. It did take me a while to get used to the idea that everything is a thread. Yeah. But then once you make that switch, you realize actually this allows me to be more focused. I can just pick a thread and I'm there. That's the context. I can see it everywhere. So I can see everything that was discussed in that thread. So that's really cool.
Yeah. It did take me a while to get used to the idea that everything is a thread. Yeah. But then once you make that switch, you realize actually this allows me to be more focused. I can just pick a thread and I'm there. That's the context. I can see it everywhere. So I can see everything that was discussed in that thread. So that's really cool.
Also having a thread per episode, I think that's a great idea.
Also having a thread per episode, I think that's a great idea.
By the way, just as you solved your problem with 1Password, I solved my problem with who posted that Just Contribute worked well.
By the way, just as you solved your problem with 1Password, I solved my problem with who posted that Just Contribute worked well.
It was in Zulip. It was Kaizen just do it. That was the thread. I found it. And he wrote, Matt Johnson wrote, just an install and just install worked pretty cool. I then ran just contribute and wow, yeah, that does a lot. It worked though. So just contribute worked for Matt Johnson, September 2024. So now I know how to find it. It was in Zulip all along. Cool. Okay.
It was in Zulip. It was Kaizen just do it. That was the thread. I found it. And he wrote, Matt Johnson wrote, just an install and just install worked pretty cool. I then ran just contribute and wow, yeah, that does a lot. It worked though. So just contribute worked for Matt Johnson, September 2024. So now I know how to find it. It was in Zulip all along. Cool. Okay.
Well, one thing which I also liked is how when you post an episode, there's a markdown for all the chapters. And that was Jared's magic. So even though he didn't do a lot, which I think he did, by the way, he's just being modest. This was the one thing that he did. And I love that improvement.
Well, one thing which I also liked is how when you post an episode, there's a markdown for all the chapters. And that was Jared's magic. So even though he didn't do a lot, which I think he did, by the way, he's just being modest. This was the one thing that he did. And I love that improvement.
What do you think? Was this a shock to you? It makes sense. I was surprised when we talked about it. Honestly, I could see it coming. I mean, it just makes sense. It resonates with how I like to approach things. And it just fits with that mentality. Double down on the thing that you're enjoying the most. And the thing that, you know, I think makes you special. Yeah.
What do you think? Was this a shock to you? It makes sense. I was surprised when we talked about it. Honestly, I could see it coming. I mean, it just makes sense. It resonates with how I like to approach things. And it just fits with that mentality. Double down on the thing that you're enjoying the most. And the thing that, you know, I think makes you special. Yeah.
I would love that, honestly. Like once I've seen these chapters, that was the point like, wow, this all of a sudden made Zulip 10 times more useful for me than Slack ever was. Nice. Because now I can see the episodes. I can comment on the episodes, same interface, and I can see the topics, right? These chapters, super useful.
I would love that, honestly. Like once I've seen these chapters, that was the point like, wow, this all of a sudden made Zulip 10 times more useful for me than Slack ever was. Nice. Because now I can see the episodes. I can comment on the episodes, same interface, and I can see the topics, right? These chapters, super useful.
The one thing which I was missing is where's the link to click on the chapters? So this would be so amazing.
The one thing which I was missing is where's the link to click on the chapters? So this would be so amazing.
But you still need to write like the timestamps in YouTube. So you have to generate the chapters ahead of time. They just take texts, they convert them automatically.
But you still need to write like the timestamps in YouTube. So you have to generate the chapters ahead of time. They just take texts, they convert them automatically.
I did try both approaches and I do find that YouTube is a different medium. And I think to get the best out of it, you have to cater to the audience that's on YouTube. And that audience prefers the content to be a bit punchier, a bit like more to the point, right? Like don't lose the audience because they have certain expectations. And we're not even talking shorts. Shorts is completely different.
I did try both approaches and I do find that YouTube is a different medium. And I think to get the best out of it, you have to cater to the audience that's on YouTube. And that audience prefers the content to be a bit punchier, a bit like more to the point, right? Like don't lose the audience because they have certain expectations. And we're not even talking shorts. Shorts is completely different.
Right? So this is just when you put a video on YouTube. Yes. Great. But I think the transitions, they need to be a bit quicker than you would have in a conversation.
Right? So this is just when you put a video on YouTube. Yes. Great. But I think the transitions, they need to be a bit quicker than you would have in a conversation.
Because this is what makes you special, I think.
Because this is what makes you special, I think.
I am on the 10th conversation, editing the 10th conversation right now, the one that you saw in drafts. And the conclusion which I reached is that audio has to be separate, right? You focus on a listener, not a watcher. Then you focus on the YouTube audience that they want something quick, they want something free, they want something entertaining.
I am on the 10th conversation, editing the 10th conversation right now, the one that you saw in drafts. And the conclusion which I reached is that audio has to be separate, right? You focus on a listener, not a watcher. Then you focus on the YouTube audience that they want something quick, they want something free, they want something entertaining.
And then you have to focus on cater to the real nerd. They want to see the whole thing. They want to see like a great cut, but they want to see, they want to immerse themselves in the story. That is not your YouTuber. That is, I don't think that's your listener because especially if you have some video, which is like screen sharing, that is different. And that's more engaging.
And then you have to focus on cater to the real nerd. They want to see the whole thing. They want to see like a great cut, but they want to see, they want to immerse themselves in the story. That is not your YouTuber. That is, I don't think that's your listener because especially if you have some video, which is like screen sharing, that is different. And that's more engaging.
That's just basically ups the ante and ups the story and takes it to a whole new level. So those three audiences are very different. And I end up with three types of content, same conversation, three types of content catering to the audience. And again, we're not even talking shorts or Instagram or TikTok, which just requires another approach.
That's just basically ups the ante and ups the story and takes it to a whole new level. So those three audiences are very different. And I end up with three types of content, same conversation, three types of content catering to the audience. And again, we're not even talking shorts or Instagram or TikTok, which just requires another approach.
Speaking of improvements, there's one more that I noticed and I was so happy to see Jared do that. Notifications, deploy notifications in Ziggler. That was so cool.
Speaking of improvements, there's one more that I noticed and I was so happy to see Jared do that. Notifications, deploy notifications in Ziggler. That was so cool.
Yeah.
Yeah.
How'd I do it? Let me open it up because it's been a while since I looked at that. And there's no pull request. There's code. So I have to go look at that. That's me. That's me. No pull request. And it's spread across a couple of actually commits. That's also me. Yeah. So you recognize that.
How'd I do it? Let me open it up because it's been a while since I looked at that. And there's no pull request. There's code. So I have to go look at that. That's me. That's me. No pull request. And it's spread across a couple of actually commits. That's also me. Yeah. So you recognize that.
Yeah. The reason why we do it that way or the reason why I prefer to do that way is because it provides an interface to a conversation, right? So if people want to check it out, if people want to, for example, they just want to see the video of how the thing works. Well, you go there. It also allows me to capture a lot more content. Like how do you put a video in a commit message?
Yeah. The reason why we do it that way or the reason why I prefer to do that way is because it provides an interface to a conversation, right? So if people want to check it out, if people want to, for example, they just want to see the video of how the thing works. Well, you go there. It also allows me to capture a lot more content. Like how do you put a video in a commit message?
I mean, you could put the URL, but then where do you host the video? With a pull request, you can put all this context there to capture why I did it. And it's useful for me as well. So all the previous pull requests that we mentioned, the 533, the 534, there is a section which captures how does that thing work.
I mean, you could put the URL, but then where do you host the video? With a pull request, you can put all this context there to capture why I did it. And it's useful for me as well. So all the previous pull requests that we mentioned, the 533, the 534, there is a section which captures how does that thing work.
And that's me making sure that I ran it myself on a different machine to make sure that the thing works and how does it work. And sometimes, more often than not, I find issues and I fix them. It's just a more, I don't know, wholesome way of approaching something. And I enjoy it. I think it's more professional way as well. However, I still do commits. Commits have their place.
And that's me making sure that I ran it myself on a different machine to make sure that the thing works and how does it work. And sometimes, more often than not, I find issues and I fix them. It's just a more, I don't know, wholesome way of approaching something. And I enjoy it. I think it's more professional way as well. However, I still do commits. Commits have their place.
So I'm not dissing them. I'm saying, all I'm saying is like different approaches and different contexts and different ways of sharing that information.
So I'm not dissing them. I'm saying, all I'm saying is like different approaches and different contexts and different ways of sharing that information.
You do use a GitHub action. This is, I'm looking at in our changelog repository, GitHub workflows, dagger on namespace. That's the one that I'm looking at. And it's line right now, 68. Announce deploy in Kaizen Zulip. And you're using the Zulip GitHub action, Zulip send message V1. You have an API key, you have the email, organization URL, to type topic content.
You do use a GitHub action. This is, I'm looking at in our changelog repository, GitHub workflows, dagger on namespace. That's the one that I'm looking at. And it's line right now, 68. Announce deploy in Kaizen Zulip. And you're using the Zulip GitHub action, Zulip send message V1. You have an API key, you have the email, organization URL, to type topic content.
I think the content was the interesting one because you had to trim the git sha, you had to use like a short sha. I've seen a couple of commits where you were trying to fix- I was tweaking it. That integration, exactly, yeah.
I think the content was the interesting one because you had to trim the git sha, you had to use like a short sha. I've seen a couple of commits where you were trying to fix- I was tweaking it. That integration, exactly, yeah.
Well, it looks good. It works well. I was very happy to see this. And it's in the Kaizen channel. It's exactly where it needs to be. Code deploys. It's all there. So you can go and check it out. That's very nice. So the one thing which I had to do as a follow-up, pull request 536, right? We have two of everything. We are running the primary deploys through namespace.
Well, it looks good. It works well. I was very happy to see this. And it's in the Kaizen channel. It's exactly where it needs to be. Code deploys. It's all there. So you can go and check it out. That's very nice. So the one thing which I had to do as a follow-up, pull request 536, right? We have two of everything. We are running the primary deploys through namespace.
They run Dagger for us and they run the actual, the CI and CD part as well. But we also run GitHub as a fallback. So what we wanted to do is announce deploys in ZLoop as well on the GitHub runners. So all I did was just basically copy what you've done, Jared, and put it there. The fact that I copied it makes me think that, you know, they should be refactored. They should be simplified in some way.
They run Dagger for us and they run the actual, the CI and CD part as well. But we also run GitHub as a fallback. So what we wanted to do is announce deploys in ZLoop as well on the GitHub runners. So all I did was just basically copy what you've done, Jared, and put it there. The fact that I copied it makes me think that, you know, they should be refactored. They should be simplified in some way.
There's quite a lot of configuration. So it's something for my list. However, we discussed in the last Kaizen the namespace runners and how much will they cost us per month. So now the numbers are in and we get to pick. So option A, it cost 50, 50, yeah, 40 cents. I'm typing this up, 40 cents. So $0.4, that's option one. Option, no, no, no. I went too far. I went too far. Hang on.
There's quite a lot of configuration. So it's something for my list. However, we discussed in the last Kaizen the namespace runners and how much will they cost us per month. So now the numbers are in and we get to pick. So option A, it cost 50, 50, yeah, 40 cents. I'm typing this up, 40 cents. So $0.4, that's option one. Option, no, no, no. I went too far. I went too far. Hang on.
I'm doing this like as a live edit and I don't want to. He's live editing his slideshow. Cool. For those listening. B is $1 and C is $2. How much do you think it cost us per month? 40 cents. A, correct. It was exactly 54 cents.
I'm doing this like as a live edit and I don't want to. He's live editing his slideshow. Cool. For those listening. B is $1 and C is $2. How much do you think it cost us per month? 40 cents. A, correct. It was exactly 54 cents.
Well, out of these options, option A is closest to the reality. I didn't give you the right number. It was, I didn't want to make it 50. It'd be too obvious, I guess. Too obvious, exactly. So maybe I could have done like 0.5. It was, yeah.
Well, out of these options, option A is closest to the reality. I didn't give you the right number. It was, I didn't want to make it 50. It'd be too obvious, I guess. Too obvious, exactly. So maybe I could have done like 0.5. It was, yeah.
Mm-hmm. It's a fast GitHub Actions runner with caching built in and a bunch of features like, for example, Nice UI, which shows you how long your builds are taking, how much CPU they're using, memory using. So you just get more insights into what's happening when the builds run.
Mm-hmm. It's a fast GitHub Actions runner with caching built in and a bunch of features like, for example, Nice UI, which shows you how long your builds are taking, how much CPU they're using, memory using. So you just get more insights into what's happening when the builds run.
I think so.
I think so.
So just invoice us. For the first month. We'll see how the next month goes. The pay-as-you-go thing is a basic, but yeah. Pull request 535. This was also a follow-up. We improved on the Zulip auth integration.
So just invoice us. For the first month. We'll see how the next month goes. The pay-as-you-go thing is a basic, but yeah. Pull request 535. This was also a follow-up. We improved on the Zulip auth integration.
so this is my problem this is my fault too yeah you remember it like the old way or we just basically configure environment variables like secrets in our fly.io app and um we don't want to do that the reason why we don't want to do that is because we have the one password cli integration yeah which means that when the app boots just in time it loads all the secrets so that's what the 535 is yeah i just forgot about that so i just did the old-fashioned way and so thanks for fixing it that's we have to have everything
so this is my problem this is my fault too yeah you remember it like the old way or we just basically configure environment variables like secrets in our fly.io app and um we don't want to do that the reason why we don't want to do that is because we have the one password cli integration yeah which means that when the app boots just in time it loads all the secrets so that's what the 535 is yeah i just forgot about that so i just did the old-fashioned way and so thanks for fixing it that's we have to have everything
You want to back up. You want to back you up.
You want to back up. You want to back you up.
62%.
62%.
All right, we have a bit of more time, so now we're going to go into one of my favorite topics that has become one of my favorite topics, and that's the pipe dream. Yes. What is a pipe dream? Tell us, Jared.
All right, we have a bit of more time, so now we're going to go into one of my favorite topics that has become one of my favorite topics, and that's the pipe dream. Yes. What is a pipe dream? Tell us, Jared.
We're still on 60. That has not changed. That's pipe dream. That's pipe dream. Single purpose, single tenant CDN for changelog.com. It runs varnish cache, the open source one on flat.io.
We're still on 60. That has not changed. That's pipe dream. That's pipe dream. Single purpose, single tenant CDN for changelog.com. It runs varnish cache, the open source one on flat.io.
Yeah. So the issue that Jared opened in the true open source spirit is wire up a test harness. That's right. Because I said, create an issue, open source for the win. That's right. And you did it.
Yeah. So the issue that Jared opened in the true open source spirit is wire up a test harness. That's right. Because I said, create an issue, open source for the win. That's right. And you did it.
Very nice. You did. That was amazing. So that was issue two. Issue two. That was a pull request, pull request three, which adds tests. Yes. So what is interesting about this? Well, we're using Just. Right. Same as before, one tool. We seem to be standardizing on that. It runs just test. And when we run it, it creates a report. Why does it create a report? It uses this amazing tool.
Very nice. You did. That was amazing. So that was issue two. Issue two. That was a pull request, pull request three, which adds tests. Yes. So what is interesting about this? Well, we're using Just. Right. Same as before, one tool. We seem to be standardizing on that. It runs just test. And when we run it, it creates a report. Why does it create a report? It uses this amazing tool.
Many have heard of it. Hurl, H-U-R-L. Not sure if it's the best name, but anyway, we didn't pick it. Hurl.dev. And hurl.dev is orange open source. It's a CLI that, actually it's more than a CLI, but you interact with it through a CLI, which allows you to write tests and assertions about HTTP requests. So the focus is on testing HTTP endpoints.
Many have heard of it. Hurl, H-U-R-L. Not sure if it's the best name, but anyway, we didn't pick it. Hurl.dev. And hurl.dev is orange open source. It's a CLI that, actually it's more than a CLI, but you interact with it through a CLI, which allows you to write tests and assertions about HTTP requests. So the focus is on testing HTTP endpoints.
And it's written in Rust, which means it's really fast. It has a very simple DSL. You put it in .herl files. And what does it look like? Well, let's have a look at this fast changed. So we're going to look at files changed. There's a workflow which runs it, and it just tests. That's it. And when it comes to the hurl file, I've put it in test, by the way. There's the just file.
And it's written in Rust, which means it's really fast. It has a very simple DSL. You put it in .herl files. And what does it look like? Well, let's have a look at this fast changed. So we're going to look at files changed. There's a workflow which runs it, and it just tests. That's it. And when it comes to the hurl file, I've put it in test, by the way. There's the just file.
We'll scroll past that. Let's look at this one. Test admin.hurl. We get the host admin. We repeat it twice so that we can confirm the caching behavior. We expect the HTTP status code to be 302. And we say we want HTTP 2. You can specify this in the file when you do your configuration. And then you can write a bunch of assertions.
We'll scroll past that. Let's look at this one. Test admin.hurl. We get the host admin. We repeat it twice so that we can confirm the caching behavior. We expect the HTTP status code to be 302. And we say we want HTTP 2. You can specify this in the file when you do your configuration. And then you can write a bunch of assertions.
In this case, we make sure that the response comes back in a second, by a thousand milliseconds in this case. We check that the header, the location header, sends us back to homepage, right? Because we're not authenticated. Right. We also check that there's a... X varnish header, because that means this request has been served by varnish.
In this case, we make sure that the response comes back in a second, by a thousand milliseconds in this case. We check that the header, the location header, sends us back to homepage, right? Because we're not authenticated. Right. We also check that there's a... X varnish header, because that means this request has been served by varnish.
We are looking at the age, the age header, which should be zero because they should never be stored from cache. We look at cache status just to double check and the miss. The cache status header should contain, in this case, hits zero and should also always contain miss. All this very nicely laid in a way that I think is easy to understand.
We are looking at the age, the age header, which should be zero because they should never be stored from cache. We look at cache status just to double check and the miss. The cache status header should contain, in this case, hits zero and should also always contain miss. All this very nicely laid in a way that I think is easy to understand.
And the fact that we can do repeats too, that's all we have to do to make sure the request gets run twice, which I think is really nice.
And the fact that we can do repeats too, that's all we have to do to make sure the request gets run twice, which I think is really nice.
So this is pull request 3 on the pipe dream. And again, there's a video. How does this work? So I'm just going to play through it. There's no sound. But the thing which I wanted to go to is this report, which is really cool.
So this is pull request 3 on the pipe dream. And again, there's a video. How does this work? So I'm just going to play through it. There's no sound. But the thing which I wanted to go to is this report, which is really cool.
So after you run the test, you can have a look at the output, which shows you exactly the requests, how they happened, what headers were sent, how did this behave, which I think is really cool. Did you try running this locally, Jared? I watched your video. I didn't try running it. Excellent. So the video works.
So after you run the test, you can have a look at the output, which shows you exactly the requests, how they happened, what headers were sent, how did this behave, which I think is really cool. Did you try running this locally, Jared? I watched your video. I didn't try running it. Excellent. So the video works.
I didn't get like a nice waterfall, like to see how much like different parts of the request take. I think super useful.
I didn't get like a nice waterfall, like to see how much like different parts of the request take. I think super useful.
That is correct. Yes, that is correct. So the report is separate. So the report is separate from whether the test was successful or not. And right now, this commit has failed. So this test on main has failed. So we see the failure. And the failure is that string edge grace hits stale should not contain string stale. And it does.
That is correct. Yes, that is correct. So the report is separate. So the report is separate from whether the test was successful or not. And right now, this commit has failed. So this test on main has failed. So we see the failure. And the failure is that string edge grace hits stale should not contain string stale. And it does.
And also the age, like how long this has been cached for, we expect it to be less than 60, but it's been 67. So the system doesn't seem to behave the way we thought it would.
And also the age, like how long this has been cached for, we expect it to be less than 60, but it's been 67. So the system doesn't seem to behave the way we thought it would.
Right. So this is the big thing which currently is missing. It's not testing the configuration that is local. It's testing the deployed configuration.
Right. So this is the big thing which currently is missing. It's not testing the configuration that is local. It's testing the deployed configuration.
Yeah, because what I want to do is TDD some changes. Exactly. So for that, we need to put more stuff which spins up varnish locally. And then the question is, should the local varnish hit changelog the origin or should we also spin up an origin? Are you asking me that? Are you saying? We are going through this to see because here's the questions that we need.
Yeah, because what I want to do is TDD some changes. Exactly. So for that, we need to put more stuff which spins up varnish locally. And then the question is, should the local varnish hit changelog the origin or should we also spin up an origin? Are you asking me that? Are you saying? We are going through this to see because here's the questions that we need.
I couldn't tell if that was a rhetorical question or not. No, no, no. Here's the question that we need to answer so that we know how do we want to continue developing this? Because based on what we choose, there's almost like different trade-offs and different levels of how hard this is going to be. So do we, for example, want to run the entire changelog app locally?
I couldn't tell if that was a rhetorical question or not. No, no, no. Here's the question that we need to answer so that we know how do we want to continue developing this? Because based on what we choose, there's almost like different trade-offs and different levels of how hard this is going to be. So do we, for example, want to run the entire changelog app locally?
And if we do, then we need the database as well, which we can do. It's not a problem. And then we put varnish in front, which is the one that we developed just in time loaded with the varnish config. And then we run the test, right? So we need almost like four things to be running locally to be able to test everything, how the entire system fits together.
And if we do, then we need the database as well, which we can do. It's not a problem. And then we put varnish in front, which is the one that we developed just in time loaded with the varnish config. And then we run the test, right? So we need almost like four things to be running locally to be able to test everything, how the entire system fits together.
Okay.
Okay.
It does answer my question, yes. That's exactly what I was thinking. I just want to double check if you're thinking about it the same way and it seems that you are, right? We only care about the configuration and Pipedream itself. Yeah. And how it interacts with origins, different origins in this case, that, I mean, to begin with, we can just point it to those origins so that won't change.
It does answer my question, yes. That's exactly what I was thinking. I just want to double check if you're thinking about it the same way and it seems that you are, right? We only care about the configuration and Pipedream itself. Yeah. And how it interacts with origins, different origins in this case, that, I mean, to begin with, we can just point it to those origins so that won't change.
But what will change is that we are testing the thing that is being developed, the local thing. We're not testing the thing which is being deployed. Because the reason why I wanted to obviously test the local thing is, well, is my change going to work before I push this out?
But what will change is that we are testing the thing that is being developed, the local thing. We're not testing the thing which is being deployed. Because the reason why I wanted to obviously test the local thing is, well, is my change going to work before I push this out?
vcr vcr yeah for exactly for people that don't know ruby are not coming from that world like the moment you said that like of course vcr and the cassettes and damn it i had to recreate them so many times right right but yeah i remember that yeah it's a it's a ruby gem which basically allows http requests to be recorded and replayed so that you don't make the real requests that's right and for those people who are even
vcr vcr yeah for exactly for people that don't know ruby are not coming from that world like the moment you said that like of course vcr and the cassettes and damn it i had to recreate them so many times right right but yeah i remember that yeah it's a it's a ruby gem which basically allows http requests to be recorded and replayed so that you don't make the real requests that's right and for those people who are even
Yeah. I hated those movies because the quality was so bad. And like the more you watched it, the worse it would get. The worse it would get because yeah, the media would degrade. So yeah, luckily we don't have that problem anymore.
Yeah. I hated those movies because the quality was so bad. And like the more you watched it, the worse it would get. The worse it would get because yeah, the media would degrade. So yeah, luckily we don't have that problem anymore.
But do you remember the safety mechanism that cassettes had? There was a latch. If the latch was on, you couldn't record over it. Oh, yes. The tab, yes. And you could just tape over it. Right. Physical little thing there. Oh, gosh. The days. The days, man. The bad old days. Okay, so this all makes sense.
But do you remember the safety mechanism that cassettes had? There was a latch. If the latch was on, you couldn't record over it. Oh, yes. The tab, yes. And you could just tape over it. Right. Physical little thing there. Oh, gosh. The days. The days, man. The bad old days. Okay, so this all makes sense.
I think for this, what I would do, and again, that's why we're talking about this, I would introduce Dagger for this. The reason why I would do that is because I need to create containers quickly, programmatically. I need to create services, connect multiple containers together, and check that everything works in a programmatic way.
I think for this, what I would do, and again, that's why we're talking about this, I would introduce Dagger for this. The reason why I would do that is because I need to create containers quickly, programmatically. I need to create services, connect multiple containers together, and check that everything works in a programmatic way.
And if we don't have that, we would need to have some sort of a container runtime to run all these things. So that's what I'm thinking here. Sounds good? Sounds good. SGTM. Cool. Make it so. So we're almost at the end. This is what we have been building up. Let's see how this lands. So we talked a few name ideas in the last Kaizen for Pipe Dream. Correct.
And if we don't have that, we would need to have some sort of a container runtime to run all these things. So that's what I'm thinking here. Sounds good? Sounds good. SGTM. Cool. Make it so. So we're almost at the end. This is what we have been building up. Let's see how this lands. So we talked a few name ideas in the last Kaizen for Pipe Dream. Correct.
So we threw around a couple of domain names. Correct. So one that we liked, that we all liked. Let's load like a whois. Oh, gosh. Whois. Let us do whois. Do you remember the domain which we wanted? No. I doubt it. So it was pipe.li. Pipe.li. That was, I think that was already registered as far as... No, it's unavailable, actually. We can't even register it. Oh, okay. For shame. Yeah.
So we threw around a couple of domain names. Correct. So one that we liked, that we all liked. Let's load like a whois. Oh, gosh. Whois. Let us do whois. Do you remember the domain which we wanted? No. I doubt it. So it was pipe.li. Pipe.li. That was, I think that was already registered as far as... No, it's unavailable, actually. We can't even register it. Oh, okay. For shame. Yeah.
I mean, it says it's already registered. You know, there's no info. Yeah. .li domains are difficult for various reasons. So what was the other TLD that you wanted? Tech. Pipely.tech. Let's see if pipely.tech is available. No. Someone registered it. When did they register it? Let's see. What happens if you go to pipely.tech? Oh, gosh.
I mean, it says it's already registered. You know, there's no info. Yeah. .li domains are difficult for various reasons. So what was the other TLD that you wanted? Tech. Pipely.tech. Let's see if pipely.tech is available. No. Someone registered it. When did they register it? Let's see. What happens if you go to pipely.tech? Oh, gosh.
Get out of here.
Get out of here.
The three magi. Oh goodness. It's Christmas.
The three magi. Oh goodness. It's Christmas.
Yep.
Yep.
I don't know.
I don't know.
So if you go to pipely.tech is the main and it tells the whole story, right? So should we build a CDN? I can click on that. Oh, cool. That's us. Always three. That's interesting. So three seems to be the theme here. Always three. Well, two, three. So we're going. Now there's three wise men. Is that what you're trying to say? I like it. I think so. I think so. Comparing CDNs.
So if you go to pipely.tech is the main and it tells the whole story, right? So should we build a CDN? I can click on that. Oh, cool. That's us. Always three. That's interesting. So three seems to be the theme here. Always three. Well, two, three. So we're going. Now there's three wise men. Is that what you're trying to say? I like it. I think so. I think so. Comparing CDNs.
That's, that's as well with nice screenshots we have. So the whole story, the whole Pipely story, whichever you like, I like the name Pipely. I'm sold on it.
That's, that's as well with nice screenshots we have. So the whole story, the whole Pipely story, whichever you like, I like the name Pipely. I'm sold on it.
No.
No.
Monday was 2nd, yeah, yeah, yeah, 2nd. December 2nd.
Monday was 2nd, yeah, yeah, yeah, 2nd. December 2nd.
And a domain, exactly.
And a domain, exactly.
Well, I'm glad this is a great way to begin something new. And I didn't know that you'll make room for this, but I think you just did without knowing that Pipely would be a thing. Think about how we began and think where we're now.
Well, I'm glad this is a great way to begin something new. And I didn't know that you'll make room for this, but I think you just did without knowing that Pipely would be a thing. Think about how we began and think where we're now.
I like it. I'm behind it. I could tell. I love it. As much time or as little time as I have, you know, little by little, step by step. I mean, this is honestly like mornings and evenings and weekends and all sorts of like the time to the point doesn't even matter. As much time as I have, I enjoy doing this and on top of all the other things. And it's fun. And I can see the need.
I like it. I'm behind it. I could tell. I love it. As much time or as little time as I have, you know, little by little, step by step. I mean, this is honestly like mornings and evenings and weekends and all sorts of like the time to the point doesn't even matter. As much time as I have, I enjoy doing this and on top of all the other things. And it's fun. And I can see the need.
I can see me wanting to use this, me wanting to build this and just, I honestly see this improving a bunch of things. And if it doesn't work out, it may not work out. The story is amazing. And at the end of the day, that's what people remember. We tried. We showed up every day. And let's see what happens.
I can see me wanting to use this, me wanting to build this and just, I honestly see this improving a bunch of things. And if it doesn't work out, it may not work out. The story is amazing. And at the end of the day, that's what people remember. We tried. We showed up every day. And let's see what happens.
So in all honesty, I think the reason why these magi, they are faceless is because it can be many other people. I know that we had Matt Johnson help us. We had James A. Rosen help us. And how many people out there are doing something similar? Maybe they don't have time. Maybe they want to. They're thinking about it. Crazy groups of people that have an idea and just go for it.
So in all honesty, I think the reason why these magi, they are faceless is because it can be many other people. I know that we had Matt Johnson help us. We had James A. Rosen help us. And how many people out there are doing something similar? Maybe they don't have time. Maybe they want to. They're thinking about it. Crazy groups of people that have an idea and just go for it.
You know, it doesn't matter where it goes or how far it goes, as long as you have fun with it. And yeah, don't take it too seriously, I suppose. It's not about the profit. It's not about like this VC funding, or at least that's how I think of it. It's an idea that we should keep investing in because it's the right thing to do. And it's a great story to tell.
You know, it doesn't matter where it goes or how far it goes, as long as you have fun with it. And yeah, don't take it too seriously, I suppose. It's not about the profit. It's not about like this VC funding, or at least that's how I think of it. It's an idea that we should keep investing in because it's the right thing to do. And it's a great story to tell.
Looking back 10 years from now, 20 years from now, be like, wow, we were part of that.
Looking back 10 years from now, 20 years from now, be like, wow, we were part of that.
So honestly, it just depends on how much time me personally can dedicate to this over the next coming months. That's what this comes down to.
So honestly, it just depends on how much time me personally can dedicate to this over the next coming months. That's what this comes down to.
Our usage, okay.
Our usage, okay.
So let's talk through the roadmap. Okay. We have it right in front of us. We've added tests. We know there's more that we need to do here. But the same number of VCR lines, so that's still there. The functionality hasn't changed. The feeds backend, the only reason why this is not done is because I wanted to do pipely.tech. I thought that was a cool idea. That's the only reason.
So let's talk through the roadmap. Okay. We have it right in front of us. We've added tests. We know there's more that we need to do here. But the same number of VCR lines, so that's still there. The functionality hasn't changed. The feeds backend, the only reason why this is not done is because I wanted to do pipely.tech. I thought that was a cool idea. That's the only reason.
I did part of it, by the way. This now works. It didn't used to work, the feed XML. Now this loads. We only had HTTPS. So I've taken small steps towards it, but it's not complete. The reason why we need HTTP and not HTTPS is because we're using the open source varnish, and that does not terminate TLS. So we can only connect to HTTP backends. That's something that we discovered the hard way.
I did part of it, by the way. This now works. It didn't used to work, the feed XML. Now this loads. We only had HTTPS. So I've taken small steps towards it, but it's not complete. The reason why we need HTTP and not HTTPS is because we're using the open source varnish, and that does not terminate TLS. So we can only connect to HTTP backends. That's something that we discovered the hard way.
So this, in terms of configuration, we're talking a few hours to get it all done. Lift it from our existing VCL and maybe do a few changes, right? Because this already exists as VCL in our Fastly config. Then sending logs to Honeycomb, this again, a day, roughly.
So this, in terms of configuration, we're talking a few hours to get it all done. Lift it from our existing VCL and maybe do a few changes, right? Because this already exists as VCL in our Fastly config. Then sending logs to Honeycomb, this again, a day, roughly.
It's just like, I'm just basically making stuff up because I don't, only once you pick it up, you realize how much, like all the rabbit holes.
It's just like, I'm just basically making stuff up because I don't, only once you pick it up, you realize how much, like all the rabbit holes.
So it's more around making sure that we send logs to Honeycomb so that we can understand what's happening in the system. We want to keep the same structure as Fastly so that all the queries will work. So there'll be like no interruption of service or like no big changes. So that's why I mentioned this. We just need to have some way of sending all the request logs to Honeycomb.
So it's more around making sure that we send logs to Honeycomb so that we can understand what's happening in the system. We want to keep the same structure as Fastly so that all the queries will work. So there'll be like no interruption of service or like no big changes. So that's why I mentioned this. We just need to have some way of sending all the request logs to Honeycomb.
That's what I mean by this. We also need to send logs to S3. This is something that Jared mentioned last time when we talked about pipe dream and the roadmap. So we need, for stats, we need to set, just like to keep the compatibility, right?
That's what I mean by this. We also need to send logs to S3. This is something that Jared mentioned last time when we talked about pipe dream and the roadmap. So we need, for stats, we need to set, just like to keep the compatibility, right?
Is there any reason to not do that? It doesn't matter where we send the logs as long as we send logs to an S3 compatible API. Gotcha.
Is there any reason to not do that? It doesn't matter where we send the logs as long as we send logs to an S3 compatible API. Gotcha.
Interesting.
Interesting.
Exactly. Yeah. So once that's why we do like the first part, which seems a bit easier to just send the requests, it doesn't matter which way you do them, honestly, but this will ensure that the service behaves the way it should. And I think this is more valuable from a functionality perspective. Then fairly hard to implement purge across all app instances. I say fairly hard.
Exactly. Yeah. So once that's why we do like the first part, which seems a bit easier to just send the requests, it doesn't matter which way you do them, honestly, but this will ensure that the service behaves the way it should. And I think this is more valuable from a functionality perspective. Then fairly hard to implement purge across all app instances. I say fairly hard.
Oh, man, I can see me and Jared getting together here because we need to figure out how to purge these correctly and how to do this from the app. So the application itself will know which are the pipedream or pipely instances and will send these purge requests. And we're looking at the fly IO machines, like we're running the same network, we can discover them, we have DNS.
Oh, man, I can see me and Jared getting together here because we need to figure out how to purge these correctly and how to do this from the app. So the application itself will know which are the pipedream or pipely instances and will send these purge requests. And we're looking at the fly IO machines, like we're running the same network, we can discover them, we have DNS.
So a lot of the building blocks are there, but this is where the application needs to come together with the actual CDN runtime, in this case fly.io, to implement this purge via OBAN and like how we do things. So we don't introduce a third or an extra service. And then adding the add redirects, this is really easy because it's just basically adding more VCL config.
So a lot of the building blocks are there, but this is where the application needs to come together with the actual CDN runtime, in this case fly.io, to implement this purge via OBAN and like how we do things. So we don't introduce a third or an extra service. And then adding the add redirects, this is really easy because it's just basically adding more VCL config.
Most of it is copy paste, maybe a few adjustments. So it's very feasible. And we're talking, I would say maybe weeks of work in total, but weeks of work spread over a long period of time. That's what's hard. Like the time on my part, you know, have the time to actually go through all these things, but I can make this my focus. That is a possibility.
Most of it is copy paste, maybe a few adjustments. So it's very feasible. And we're talking, I would say maybe weeks of work in total, but weeks of work spread over a long period of time. That's what's hard. Like the time on my part, you know, have the time to actually go through all these things, but I can make this my focus. That is a possibility.
Yeah, I think Pipely is a good idea. A new city and he's born. I mean, we can see... The journey that we've been on right since January, that's when he started talking about was like the first Kaizen. This whole year. Yeah. So, you know, we have been taking all these small steps towards it. We were uncertain for a long time. You know, is this real? Should we really do this? Is it a good idea?
Yeah, I think Pipely is a good idea. A new city and he's born. I mean, we can see... The journey that we've been on right since January, that's when he started talking about was like the first Kaizen. This whole year. Yeah. So, you know, we have been taking all these small steps towards it. We were uncertain for a long time. You know, is this real? Should we really do this? Is it a good idea?
So we weren't like all in to begin with. And I think, I think that we are getting close to being all in. as in let's go for this, let's implement it, let's see how it would work in practice. Most of the problem space, I think we have discovered it. We know what are the big items, not the actual implementation.
So we weren't like all in to begin with. And I think, I think that we are getting close to being all in. as in let's go for this, let's implement it, let's see how it would work in practice. Most of the problem space, I think we have discovered it. We know what are the big items, not the actual implementation.
But this seems a lot more feasible and a lot more realistic than it was in January, for example, when it was just a question. And I think now it's not like we're building it. It's like we are, I would say, maybe a third way through, maybe a quarter through, something along those lines. And there are still challenges around, for example, like the TLS termination. That is a big one.
But this seems a lot more feasible and a lot more realistic than it was in January, for example, when it was just a question. And I think now it's not like we're building it. It's like we are, I would say, maybe a third way through, maybe a quarter through, something along those lines. And there are still challenges around, for example, like the TLS termination. That is a big one.
And that means that we can only proxy or forward request the origins. They have to be HTTP. The backends, as Manj calls them, have to be HTTP. I think that's not a problem for us. It's not a problem in the context of Fly because everything is running like we have a private network. So all the endpoints are HTTP and they're private. No one can connect to them. So I think that makes sense.
And that means that we can only proxy or forward request the origins. They have to be HTTP. The backends, as Manj calls them, have to be HTTP. I think that's not a problem for us. It's not a problem in the context of Fly because everything is running like we have a private network. So all the endpoints are HTTP and they're private. No one can connect to them. So I think that makes sense.
R2 can also be public. It's not a problem. And when it comes to pushing logs, that's the one thing which I don't know. But honestly, I don't see Varnish being the thing which will push the logs anyways. What I would use that I've been using for years is vector.dev. Vector.dev is a great tool for sending logs and metrics or anything like that anywhere.
R2 can also be public. It's not a problem. And when it comes to pushing logs, that's the one thing which I don't know. But honestly, I don't see Varnish being the thing which will push the logs anyways. What I would use that I've been using for years is vector.dev. Vector.dev is a great tool for sending logs and metrics or anything like that anywhere.
Datadog acquired them since I've been using Vector. But it's all very simple and straightforward. And even to this day, I use it in the context and we use it in the context of the Docker infrastructure. This is a very important component. And other teams are using it in their own infrastructures that we are collaborating with.
Datadog acquired them since I've been using Vector. But it's all very simple and straightforward. And even to this day, I use it in the context and we use it in the context of the Docker infrastructure. This is a very important component. And other teams are using it in their own infrastructures that we are collaborating with.
So vector seems to be the piece to pick and the tool to use in this context. Again, written in Rust, super performant, nice CLI, has a lot of things. So I think the building blocks are getting clear. Just a matter of going for it. New beginning, new year. I think that could be the focus. Let's go for it, man. Let's do it, right?
So vector seems to be the piece to pick and the tool to use in this context. Again, written in Rust, super performant, nice CLI, has a lot of things. So I think the building blocks are getting clear. Just a matter of going for it. New beginning, new year. I think that could be the focus. Let's go for it, man. Let's do it, right?
Kaizen.
Kaizen.
Embracing change. If we could use the title again, I think we should. Yeah. Because it fits it really, really well. Change happens whether we like it or not. This way we are in control. Gaining something, losing something, you know, it's just all part of the game. You have to go back to the roots, doing the things that you love.
Embracing change. If we could use the title again, I think we should. Yeah. Because it fits it really, really well. Change happens whether we like it or not. This way we are in control. Gaining something, losing something, you know, it's just all part of the game. You have to go back to the roots, doing the things that you love.
First of all, knowing what that thing is, it's really hard because the world is a busy, noisy place. And there's always the imposter syndrome. We know how well that works. And we also know there's always the grass is greener on the other side. And the FOMO. It's not exactly greener. But the joy of missing out, right? The Jomo. I really like that take. The Jomo. The Jomo, exactly.
First of all, knowing what that thing is, it's really hard because the world is a busy, noisy place. And there's always the imposter syndrome. We know how well that works. And we also know there's always the grass is greener on the other side. And the FOMO. It's not exactly greener. But the joy of missing out, right? The Jomo. I really like that take. The Jomo. The Jomo, exactly.
This could be it, another baby title idea. The joy of missing out.
This could be it, another baby title idea. The joy of missing out.
Oh, really? It's brand new to me, right to this moment, yeah. I think I've heard it first from DHH. Oh, really? Yeah, the joy of missing out in the context of remote work. Of course he would make that up. I'm sure he did. I don't know. The point is, the point is, it's about leaving slack in the system,
Oh, really? It's brand new to me, right to this moment, yeah. I think I've heard it first from DHH. Oh, really? Yeah, the joy of missing out in the context of remote work. Of course he would make that up. I'm sure he did. I don't know. The point is, the point is, it's about leaving slack in the system,
focusing on the things that you know you enjoy and you're good at, sharpening that ax and doing the best work that you can, leaving room to do that. And that's really hard and really challenging, but it's worth it because at the end of it, you look back 10 years from now, 20 years from now, And you realize how rich your experience was because you made the choice. It all starts with a choice.
focusing on the things that you know you enjoy and you're good at, sharpening that ax and doing the best work that you can, leaving room to do that. And that's really hard and really challenging, but it's worth it because at the end of it, you look back 10 years from now, 20 years from now, And you realize how rich your experience was because you made the choice. It all starts with a choice.
And it's not like you're stopping everything, right? You're finding another home. You're just like, there's like a whole like new twist, a new perspective. It's the next evolution in the changelog universe. And I like that.
And it's not like you're stopping everything, right? You're finding another home. You're just like, there's like a whole like new twist, a new perspective. It's the next evolution in the changelog universe. And I like that.