support dispatch: https://citadeldispatch.com/donate
EPISODE: 108
BLOCK: 805344
PRICE: 3593 sats per dollar
TOPICS: dev education, nix, reproducible builds, foss vs faang
https://btcplusplus.dev/
lisa on twitter: https://twitter.com/niftynei
david on twitter: https://twitter.com/dpc_pw
kody on twitter: https://twitter.com/kodylow
nostr live chat: https://citadeldispatch.com/stream
nostr account: https://primal.net/odell
youtube: https://www.youtube.com/@citadeldispatch
podcast: https://www.podpage.com/citadeldispatch
stream sats to the show: https://www.fountain.fm/
(00:00:49) Bitcoin developer education
(00:01:44) Bitcoin++ conference
(00:02:29) Importance of Nix in Bitcoin self-sovereignty
(00:03:00) Reproducible builds and signed binaries
(00:34:07) The need for more Bitcoin developers
(00:44:26) The benefits of using Rust for onboarding new contributors
(00:45:28) The importance of reducing friction in open source communities
(00:47:09) The difference in mindset between working in a large company and contributing to open source projects
Happy Bitcoin Tuesday, freaks. It's your host, Odell, here for another CIL dispatch, the interactive live show focused on Freedom Tech and Bitcoin discussion. We have a great great panel here joining me today. We're gonna be talking about Bitcoin developer education. Very excited about it. Hope you guys, enjoy it. We have returned guest, Lisa here, Nifty Nay. How's it going, Nifty? Hey. It's doing great. Good to have you. We have, DPC here, David. How's it going, David?
[00:01:09] Unknown:
Fine. How are you?
[00:01:11] ODELL:
And David is a, I don't know. I'm I'm a contributor to the FediMen open source project and works with FETI. And we have Cody, who's also involved in Fedi and FediMen. How's it going, Cody?
[00:01:26] Unknown:
Doing awesome. I'm so excited that we got DPC here, and always great to see you guys. So
[00:01:33] ODELL:
Yeah. To be clear, freaks, when this was planned, it was me and Nifty, and I just got shock on these 2 great additions. So I'm very excited about it. So where do you guys wanna start? I mean, I position this conversation as a overall overarching Bitcoin Dev Education, but also BTC plus plus. We have BTC plus plus coming up, in Berlin in October. Where do you guys wanna begin?
[00:02:01] Unknown:
Let's maybe we can talk about, like you know, so this this conference has a theme. Right? Like, Bitcoin plus was not themed. It's kinda why I pulled in the Feddy guys because they're using the the tech that we're gonna be, like, featuring. And so I thought it'd be kind of fun just to, like, hear from them, especially from DPC, like, you know, why Nix? Like, so the conference is about this thing called Nix. Like, why, like, why are we talking about Nix? Like, what makes it so cool? I'd love to hear from DPC, like, how he got started on Nix, like, what his Nix Nix story is.
And then we can talk about, like, you know, like, why that's so important for, like, I I I don't know. I'm like, I'm trying this theme out where, like, you know, Nix is important for Bitcoin self sovereignty and maybe we can, like, talk about, like, how deploying software is, like, a self sovereign act. I don't know. Anyways, those are those are kinda, like, where I'm coming from. What do you guys think? What do y'all, like, what do y'all wanna talk about?
[00:03:00] Unknown:
I think we can lay the table a little bit. Right? Is that so he's not tracking if he's been running his Bitcoin plus plus cents for the last couple, like, over a year now. Right? Every time there's, like, a theme for it. Right? And so, the one that's coming up is gonna be Nix theme, but all of them are about Bitcoin education, and Nix specifically has this really cool intersection with Bitcoin. So there's the Nix Bitcoin project, and then there's just NIX generally as a build system when you're running software. And so, that's something that like, for me, it didn't get about NIX until, like, I got exposed to it through Fedimint and, like, DPC has been, like, huge in terms of, like, moving everything toward Nixifying within Fedimint, within Fedi. And just generally speaking, like, there's elements of Bitcoin education good software and how do you do software best practices, and Nick's kinda out of the box. You get all sorts of benefits for it. And so I think DPC, just like if you're saying, right, I think DPC just kinda, like, going over your story of, like, how you got involved with NYX, how using the prod, the different Bitcoin projects that, you work on and stuff. I think it's if you see is like the absolute Yoda of Fedimintz. That was like the, the a wizard when it comes to Rust, Nix, like, all things DevOps. Right? So it's really cool that we can talk to him.
[00:04:16] Unknown:
Let's start with the next story, kind of? My my own road? Yeah. Go for it. I think I've been I've been using Nix for, I don't know, 5, 6 years now. It's it's it's been a while. Usually, it always kind of appealed to me because I think that the core idea is sound. And I I generally, in every company I joined, I was always annoyed with the setup process. I guess that's kind of how it started for me. Because you join a company, you get bunch of HR paperwork. You have to fill out those documents. Then you get usually thrown some link to some, the team's Wiki or something, and it does, like, a uplifting instruction.
Like, clone this, and then here is the long list of things that you have to do, to to get something building. And to me, it was sound very, very lame that that something like this kind of just not kind of serious in, like, how software should operate. And then at at this point, I was already aware of of NICS, and I started playing with it. And indeed, from the very beginning, it it seemed to solve this this problem, and that was kind of the the core problem that I was aiming at. And then I started playing with Nix OS. And for couple of years, I was kind of lame, but lame user, but I I did whatever I needed done.
And then only maybe 2 years ago, I kind of started getting proficient, and and I was able to really, create things by myself and and solve complicated, nontrivial needs issues kind of and set up things. And then I started tracking, like, a year and a half ago, and it seems like Justin and Eric were using mix through the beginning. So I started helping them a little with, like, a PR here where I when I noticed I I have a solution for something. And then, eventually, I was just like, I'm gonna join the the team, and we can we can take it to the next level. So now everything in Fannie Mint is, mixed based pretty much. Yeah.
[00:06:30] Unknown:
So Nix is what got you into Fetti, it sounds like. Like, it was like your fatty pill sort of.
[00:06:37] Unknown:
It it was, I think fettimint is just an awesome idea. And to me, it's, like, the the way to scale. And it so happened that they were using, which I'm also a big on, and they were using Mix for building things and and Dev Shell. So they everything was matching. This is the tech stack, I would, like to work with and this is the idea that I would like to succeed. So yeah.
[00:07:02] Unknown:
I feel like you're, like, highlighting, like, one of the things that I think is so important for projects that are getting, like, really great experienced talent like yourself to come, like, work on a project. It's like the tech stack has to be right. Right? It's gotta be smart. And, like, Nix I don't know. I feel like Nyx is just, like all the people that I know that love Nyx and, like, use it or, like, tend to be you know, we talk about 10x devs or just people who are like really good at development. I feel like mix is kind of like a common thread these days amongst like some of the best devs is particularly an open source. So, like, yeah, I feel like, you know, adding Nix to your project is, like, a great way to get attention from really talented people.
It's cool anyways.
[00:07:51] Unknown:
Yeah. I'm kind of surprised how popular Nix quickly became in Bitcoin community. I think maybe last I would say a year. Like, a year ago, I didn't see that many Bitcoin projects using mix. And since then, it seems like everything nowadays is, has Nix support or at least loving of it. Yeah.
[00:08:11] Unknown:
Honestly, I think this is so this is one of the reasons I wanted to have you guys from the FETI team on this call is because I kinda think that, like, the fact that Feddy's using it has been, like, our big popularization moment for, like, mix across bit like, because, okay, like, the Bitcoin Nix Bitcoin project has been around since I joined Blocks Raymond in 2018. Like, Jonas, Nick, and Eric Sirian have been working on it for, like, half decade, but, like, I only started running it in, like, February of this year. Right? Like, I've been in Bitcoin for a long time. I just switched to NEX in February, and I'm now using, like, NEX Bitcoin stuff. So, like, I think that, like, the fact that FETI maybe I'm wrong about this. If you guys have other ideas, like, you know, definitely let me know. But I kinda do think that, like, big such that Fetti is such like a big a big name in the space and, like, has a lot of really big talent at it. The fact that you guys are, like, doing everything on Rust, everything with Nyx, it makes people curious. Right? Like, people, like, oh, maybe I should check this out.
Like, Feddy's using it. Maybe it's worth looking into.
[00:09:18] Unknown:
Hard to hard to tell. I I wonder how much we have an influence on the community.
[00:09:26] Unknown:
Cody, what do you think? How did you get interested? How did you find about Next, Cody? Like We can't hear you. Yeah. I can't hear you.
[00:09:41] ODELL:
We, while we're waiting for Cody to troubleshoot, I had a couple of the Knicks guys on sale dispatch, probably about a year ago, maybe a year and a half ago. That's episode 42. If you have not listened to it, consider listening to it after this.
[00:09:56] Unknown:
So wait. So maybe you're the reason everyone got on to next. Oh, Matt, like Yeah. May maybe maybe still dispatch caused it. Yeah. I doubt that. But,
[00:10:06] ODELL:
I mean so can we just go real quickly high level? Like, why should like, Nick the the the selling point I've heard about Nick's is security first. And then would you guys agree on that? Like, that's that's the main value prop there?
[00:10:21] Unknown:
I think I guess the security might be a a consequence of reproducibility. I I don't know if I I guess yeah. I I guess at the core of NICS is is this idea of functional computation. So in a in in programming, a functional code is one that works mostly or or purely by taking inputs and producing deterministic outputs. So NICS takes this, this concept to, generalize it to kind of the whole computing, like a building system, calling programs, every everything. And because of that, it once you get something working with Nix, you're reasonably confident that it will work the same way on every computer all the time, everywhere, even in the future.
And, also, because of that, once I build something or run something with Nix and you do it, we we have some chance that both of us will will get the same result, and then we can cross check each other. So I think that the security comes from, from from this part that we we can both run the same thing and compare, and then we know no one is doing.
[00:11:41] ODELL:
Yep. That makes sense. Cody, did you find your voice? Uh-oh. I don't think you did. That's weird. Are you running Knicks? You see how cool, by the way, these zaps are that are coming in live through the nostril stream?
[00:12:06] Unknown:
Yeah. That's sick. I love that there's, like, a message with them too. Try logging before zapping.
[00:12:15] ODELL:
Cody just joined back in. Let's see. Now can you guys hear me? Yeah.
[00:12:20] Unknown:
Okay. Cool. Yeah. So, I think so I think, maybe, like, a a walk through specifically of what next is because, like, just like you see what's saying. Like, when we say next, we're referring to a bunch of different things. So, like, maybe DPC, if you could give, like, a quick kind of breakdown. So you talked about it in terms of, like, the reproducible builds. But, like, when people talk about nix, right, they're talking about multiple things. You said, like, there's the functional language, there's the operating system, there's the package manager, all that kind of stuff. So why when I build something with nix, do I know that it is built correctly, and why can someone else do that same thing with when I, give them, like, a a Nix flake or just you got a, like, big overview of, like, all the different Knicks stuff because when people say Knicks, there's referring to a lot of different stuff.
[00:13:05] Unknown:
Yeah. So the so the NICS yeah. There's a language NICS. There is a NICS, the package manager, because it also mix will as it produces this, artifacts, it also manages them, can garbage collect them, and can compose them into the whole operating system, which is called Nix OS. So there is a lot on a different kind of levels of of abstraction things acting to this one concept of NIGS. So when people just say NIGS, it it's yeah. They need to be more specific, sometimes. And what was the,
[00:13:43] Unknown:
the other Yeah. So and then so for example, when we say we use nicks in Fedimint, like, what does that mean?
[00:13:50] Unknown:
We yeah. We I guess from, in Fedimint, we're very, set on using the NICS development shells that comes with the NICS flakes, which is like a more recent addition, and and and think that's really got me hooked on mix. So development shell in basically, with one command, you will get all the things you need to work on failing it. Everything preconfigured for you. And I guess to to to to contrast it with, kind of legacy solutions, You usually, the building systems that we use for software, they assume a lot of things are present in the in the operating system already.
So they will assume you have a compiler there, and they assume that this compiler will work with whatever you're trying to build, and they will assume you have all the libraries and the headers, some files in other places, sometimes stuff as well. So needs by by being, truly functional and and forces, that when you make your creator building sis building recipes, you specify everything. Not you you don't leave any implicit dependencies, and you take into account everything that is needed. And this way, it can pretty much like in theory, sometimes some things might might go wrong, still. But in practice, it pretty much guarantees that, that you will get the same result every time.
[00:15:34] Unknown:
Yeah. Like, a useful thing I'm not sure if it was you or Eric who said it this way, but, basically, when you write a Nix recipe, basically, the way you can think about it is you're describing the system in which your software exists. Right? So you're going and you're describing specifically down to, like, everything that's involved with it, like, this is what you need in order to run my software, and when you're building that, what you're doing is you're basically, like, computing it the whole time and you're creating hashes of all of these things and you're matching the hashes against what it should be. Right? And so everything that you build using Nix is reproducible deterministic software, and so the same way that, NVK has been running, like bitcoin binaries.org, right, of that, like, you wanna have, like, a reproducible build. If you build your sis if you have your build system be nix, it will always be it will always be deterministic. And so, like, there's that joke of, for Docker, right, where it's like, you know, if it works on your machine, then, like, we'll ship your machine. Like, one way to think about fix is that you're describing the machine that the person needs to do, and so when they run your software, they build that machine and then they run it within that machine, if that makes sense.
Right? And so that's super important when it comes to Bitcoin stuff. Right? Because I don't want if, like, you know, when I build my software, like, I don't want it to be that I built it in this way and then someone else is running, like, a different SSL or something like that. And so therefore, like, the address generation that they're doing is invalid or something like that. But if you build it with Nix, then you know absolutely every single time that it will always be correct. Right? Yep.
[00:17:04] Unknown:
I have a question. So, like, so one thing that I've been talking about Mix A Lot because I'm trying to tell people about the conference that we're doing in October. In Berlin, we're doing a Nix conference, 6th 7th October. But people always ask me, like, okay. Is the reproducibility that you get with next builds, like, as good as, like, what they do to, like you know, there's, like, the whole verification and, like, the signed build process that, like, Bitcoin Core and Core Lightning go through. Does mix, like, mix reproducibility at that same, like, level where you could, like, sign off on the build and be like, this is exactly the same thing and anyone gets, like, exactly, like, bite for bite the same build result or is it, like, a slightly different type of reproducibility?
[00:17:53] Unknown:
Well, it, there there's an asterisk there that if you really go out of your way to make it not reproducible, then you can succeed in this goal. But at least from Fedimint, we couple of months ago, I actually added into our, into our CI pipeline a step that builds the the the final binaries and then outputs their, digest, the cryptographic digest. And then I run the same, procedure on my local machine. And I compare and I get the same digest, which is a really good, proof that it is reproducible. More people should do it. I mean, there there's gonna be a difference between a Mac OS build and and a Linux build, but between every, Linux that that is using, they they should be the same. And we didn't do anything special. Like, we we didn't we didn't have an explicit goal to to achieve this result, and and it just works by itself.
So yeah.
[00:19:00] Unknown:
That is so huge. Like because, you know, almost, like, time, energy, and effort, like, the core lightning team spent in making these Docker files to try and make our builds, like, reproducible, and they're not actually reproducible because we can't pin the dependencies in the Docker file, so to speak. So, like, there's always this possibility that, like, the Dockerfile, like, image is gonna give you the wrong thing at some point in the future. Like, we're like we've lost basically, like, the you know, being able to check, like, past builds, etcetera, like, that goes away. Like, these these builds that we're doing, at least on the correlating using Docker images, like, we probably should move over to something like Nix. That gives us a little more certainty, right? Because you can, like, pin dependencies and, like, anyways, that's huge. And the fact that, like, any bitcoin like every bitcoin project should be having, like, be building their projects in ways that you can check the reproducibility and the hashes are signed. Like, every single Bitcoin project that touches your money should be doing this. And, yeah, I get so excited that, like, MiX is, like, it's a tool. It's great. It exists. Like, you could use it. Right? Like yeah. I don't know.
[00:20:10] ODELL:
Let me jump in here with, left side of the bell curve. Not question, but, like, a little bit of context. And by the way, like, if if you're listening to this right now and joining us live, you're awesome. I love I love the freaks that joined the live chat. You guys make this this show unique. I know this is probably over the head of a lot of, our listeners here. So I'm gonna try and bring it back, but also don't get discouraged. You know, years of bid devs and other technical conversations, you you kinda start getting some stuff through osmosis. And it's a good time for me to just remind the freaks that tomorrow, we're gonna have a, full degen conversation on on ETFs and Binance and whatnot with Dylan LeClaire. So today is the we're in it for the tech. Tomorrow is, is is the d gen conversation, same time as today. So join us for that.
So when we're talking about, verifying, you know, install files. Right? Verifying, an app that I wanna install. The the main way that most people well, very few people verify their in their downloads. But, when people verify their downloads, they use, a a GPG key, and they they verify that that this key has has signed this this hash. The hash shows, you know, basically, this you know, is unique based on what you put in. The GPG key verifies that the, the maintainer of the software is shipping it like this is. So so you're you're not you're when you're verifying that software, you're not you're not, you're not verifying that the maintainer isn't malicious.
You're verifying that there isn't a man in the middle between where the maintainer releases the file and you download and install the file. Like, if if David releases a file and he it's a signed file and I verify that it's signed, I know that it's it's it's what David wanted to send me. Now I don't know necessarily that David isn't malicious. I just know no one in between switched it out for a malicious file. Now when we're talking about reproducible builds, the idea of reproducible builds is we have a code base. People that are technical enough are verifying this code base, then a binary gets released, then one of these install files gets released. Is the code base that people are looking at the same code base that was used to actually build the file, and then that keeps the maintainer at least a little bit more honest if if people are are actually watching the code base, and that's where reproducible builds come in. So it's not really an either or.
What you wanna see is you wanna see reproducible builds, and then you also wanna see signed releases. And then, ideally, you wanna see users actually verify those signed releases. And then to grow just another wrench into this whole thing, if you're, like, downloading it on an on a, like an iPhone, like iOS, or something like that, you're essentially relying on Apple doing that verification process because there's no way for you to do the verification yourself. For the average user, that is actually a very helpful feature, because most people's threat models do not include Apple or, like, the US government coming in and and rugging them. So so that's a trust trade off that is made. But when you're talking about financial software, when you're talking about FreedomTech, it's important that we we cut Apple out of that threat model. We, you know, we cut that Apple out of that trust, situation.
We cut decentralized third parties out of this trust situation, and that's where you need reproducible builds and signed binaries. Was that a decent overview?
[00:23:50] Unknown:
Yeah. I think, like, the way that, like, I usually, like, kinda bringing it back to the real world. It's, like, supply chain. Right? It's kinda like it's like you're buying, like, a microphone from the store. Right? You wanna make sure that the microphone you're buying, like, doesn't have, like, I don't know, spyware on it. It's gonna upload all your conversations somewhere else or, like, expose what, like, I don't know, what you're saying. Right? So you want, like, you want some verification that, like, what the manufacturer intended for you to get at the end of the supply chain is the real thing, And Nix just really helps with that.
It makes it way more accessible for, like, any project that uses it as, like, their build system. Yeah. But yeah, that's exactly you nailed it, Matt. That's exactly what's happening. Yeah. Awesome.
[00:24:38] Unknown:
The things that's super interesting about Nix, I think DPC can kinda do like go very deep on this in terms of the Nix store. And so just like what Odell was saying is that the the thing that you're doing is that you're basically taking a hash of the built software that you have and then comparing that hash to whatever the thing is the purse that the software maintainer signed and saying, hey. Right. When I built this, this is what I got, and when I hash it, this is what I got. And you signed that, and therefore, I built the same thing you did. And so what's really cool about Nyx is you can actually see this in terms of the store and the build paths for all of this is that you can see that it's doing all these hash checks building the software. Right? So all of the dependencies that you're installing in order to run your software, it's doing these hashtags. So, also, DPC, you wanna give, like, a quick overview of the next store and kinda how that's involved with building the deterministic soft, the deterministic build?
[00:25:30] Unknown:
So every everything being created, as a out as a as a result of of of combining some other things, will get added to the, to a certain location with its, with harsh of its of its inputs. So anything changes, coming as an input or to change the, the final name. So you yeah. I guess you kind of explain most of it that you just you you get this guarantee all along from every every step of your of your building system. Yeah.
[00:26:12] ODELL:
Awesome. Well, let's let's pull it back a little bit. I mean, we've been talking about NICS. Let's talk about BTC plus plus a little bit here. Nifty. How how many how many Bitcoin plus plus events have you done?
[00:26:26] Unknown:
This is gonna be I've done 3 in a year. This is gonna be number 4 in a little over a year. So we've been speedrunning the Bitcoin technical conference, arena, so to speak. The last we did this is our 2nd international conference, so we're an international dev technical conference series. We are really focused on, like, hackathons, new and exciting, like, tech in the Bitcoin space. Really wanna shine a light on, like, kind of all the cool interesting corners of what's going on in Bitcoin in a technical sense. So every conference that we run has a theme. We pick the next theme for this next one because, you know, we wanna talk about how important it is to, like, make build systems that are reproducible, that make Bitcoin software easier for more people to deploy to servers, to get new developers in and running, right?
And I think Nix is just such a great it's such a great open source platform that I think is really like an amazing, like, platform for Bitcoiners especially on the dev side. You know, anyway, so yeah, Bitcoin plus plus is is, we really we're really doing a lot of cool stuff with tech things. We also really like doing like hackathons, workshops, so if you're like new, so like, you know, we've got some really great experts that are coming to in October. Hopefully we're gonna make it a massive opportunity for anyone across the Bitcoin tech ecosystem, people who are like, you know, maybe you're working on setting up a reproducible build for your project and want some pointers.
Maybe you heard about NICS but you want to get your hands on it in person. Maybe you just want to, like, form a NICS support group because it's hard to get into. It's difficult. Like, it's kind of like a I think the learning curve on NICS is honestly really steep. There's a lot of parts to it, I think like anyway, so yeah, big one plus plus. We want builders to come and try new things and learn about stuff from different people and so the one we're doing in October is going to be the 6th 7th in Berlin. It's right before the Bitcoin Amsterdam conference, so if you're headed over to Amsterdam, come check this one out in Berlin the weekend before.
We've got an amazing lineup, of people that have been working in Bitcoin and NIX for, like, years at this point. So I'm really excited about it. And Feddy is sponsoring, so thank you, Feddy, for, contributing to help bring, you know, NICS and reproducible bills to, like, Bitcoin.
[00:29:05] ODELL:
So, first of all, Phryx, that's btcplusplus.dev, and the plus plus is spelled out plusplus. By the way, that's a kind of that's a really annoying domain to show on audio. Not that you're gonna change it now. I'm just There's there's a we also have btcpp. Dev, so it's like Okay. Fair enough. Btcpp.dev, possibly. You can go to that for more information. Nifty, I'm curious. Like, I feel like most of your events are usually the demographic is you're focused on developers that are not necessarily Bitcoin centric already and but they wanna get into the Bitcoin space. With this one, it's it's a little bit different. Right? It's almost like you're already a Bitcoin developer, but you wanna get into NICS within Bitcoin.
[00:29:57] Unknown:
Yeah. I think that's probably true. But I think the idea is, like no. You're right. That's a 100%. This one's a little different. It's definitely like a different theme. I do wanna say though that I think, like, I think this is a great opportunity if you're a dev and you wanna get into Bitcoin. This is a great opportunity to come meet people that are building in this space, like, same with every Bitcoin plus plus. Right? Right. And, honestly, like, one of the really cool things that NYX does, it does a lot of great things, but I think one of the things that, like, I really wanna bring back to Corelightning, like Corelightning desperately needs this, I think, is the ability to let people start developing and building and contributing to Corelightning, like, super fast. Like, the whole thing with, like, Nix is if you set up your invite if you set up your project with something called like a dev shell or like a a Nix shell, it's like a one line command for any like new contributor to instantly like basically get your project building and install all the dependencies that they need to like start making changes to it like immediately.
Like I can't tell you how many hours I used to lose when I was, like, a brand new dev trying to get started on new projects like a decade ago. Like, I would, like, copy paste stuff randomly that I found from Stack Overflow to try to get, like, the Python thing, whatever, working, and then my machine would be, like, unusable for anything else, like, for, like, the rest of my life, if that makes sense. Like, I basically, like, fuck it over trying to get this one, like, thing working. And, like, so I think, like, as developers, especially the, like, the longer you're in this space, you forget how hard it is to get, like, new things running. Like, it's not even what you don't even wanna be spending time, like, trying to get stuff running. You wanna, like, be contributing and, like, learning, like, the actual, like, project. Like, you wanna be contributing to lightning, or you wanna be, like, adding stuff to FETI, or you wanna be, like, trying to, like, you know, change the project to see, like, how to, like, you know you don't actually be doing, like, software work. You don't wanna be, like, being a sysadmin for your own project.
And so, like, one thing I'm really hoping we can get out of this is, like, lots of new devs that learn how to, like, get the basic Nix, like, ecosystem, like, installed. Like, you then have to add it as a package manager to your existing system. And then, like, all of a sudden, like, you can have access my, like, hope is after this conference maybe, like, a new dev in this space with Nix can have access to building on, like, almost any Bitcoin project immediately. Like, how huge would that be? I think it would just be, like, so great for, like, Bitcoin as an ecosystem that we can just get new devs into, like, any project. And Fendi, I think, is, like like, a huge leader in this, I think. Like, I was just talking to, one of the guys at this project called Clover, and Fetty's set up because Fetty's done such an amazing job setting up their dev environment with this next thing, you can do, like, a one button in your browser deployment of the Fedi ecosystem and immediately start running and developing, like, anywhere in the world. Like, all you need is a browser. Right?
And it's literally, like, one click. And Nix is, like, the cool glue, like, you know, magic package wizard stuff in the background that makes all of that possible. And so, like, I like, yeah. You know, I love Bitcoin education. I love getting new people into this space. Like, I want it to be just this magic, fast experience for all the new people. So, yes, I do hope new devs show up to Bitcoin plus plus Nix, and we can, like, get, you know, all these projects that are sending their devs that, like, are using or building Nix can, like, have some people that we can just be like, okay. How easy is it for all these newcomers to use this next stuff to get on board? Like, is this a good thesis? How can we improve? Like, that sort of thing. So yeah. I'm hoping lots of people all across the dev spectrum show up, especially ones that wanna get into developing and building on Bitcoin, I think.
[00:33:57] ODELL:
That's awesome. I mean, you kinda touched on it, but, like, what what is the is do we is there is that an issue? Is is that an issue? Is is that an issue that we have, do we do we need more devs? Do we not like, Bitcoin dev culture, like, what what is you know, if you go on if you go on to, Elon's WeChat, people would say, like, Bitcoin's already won. Like, we don't need developers. We don't need any changes or anything. Like, we can just sit on our toes and just stay humble in Stack Sats, and and we'll be good. What do you guys see, like, in the dev ecosystem? Like, where are we hurting? Like, what is what is needed?
I know Bitcoin plus plus, I mean, is has been a massive force for good. You kinda came out of nowhere with that, Lisa, and it's been awesome. But, like, where do you see the where do you see the pain points?
[00:34:52] Unknown:
I saw I saw DPC shaking his head, so I'm curious what his thoughts are on.
[00:34:57] Unknown:
Of of course, we need more devs. I mean, always need more of that. Yeah. We we need, capable kind of technical people to be able to to cross check, verify, to understand the proposed changes, to be able to To to discuss and communicate and and educate people that might not be developers. So, yeah, I think we, there will be never a time when we have, too many developers.
[00:35:29] ODELL:
Is it never enough?
[00:35:31] Unknown:
Never enough. Like but it I I mean, unless everybody became a Bitcoin developer, then it's never gonna be enough. That's my opinion.
[00:35:43] Unknown:
Yeah. I think, like, I feel like everyone who's in Bitcoin should at some point, like, try their hand at, like, you know well, paying attention to technical conversations, I think, is definitely a first good step. You know, I do Bitcoin plus plus but I also run Base 58 which is like a technical Bitcoin school. One of the reasons that I think, like, education is so important across Bitcoin is, like, really goes back to self sovereignty. Right? So, like, you know, forget do we have enough devs? It's like do we have enough people that understand the protocol? Do we have enough people that, like, are enabled and empowered with information such that they can participate in technical conversations about what we should do in change to Bitcoin and have, like, good fucking opinions. Like, you know, it's not just like like so and so said that this is bad or, like, you know, like, I feel like I keep running into people on Twitter where they're like, x y z, like, is this? And I'm like, no, dear. That's not Wait, Lisa. Are you telling us people have bad fucking opinions on Twitter? Yes. Terrible opinions. Maybe it's different on Master. Maybe this is my real problem is that I'm not spending enough time on Master, so I'll take that as, like, a personal, like, improvement, plan there. But, you know, it's just like I feel like it's like, okay. You end up with people who think they kinda know how it works, but they never like, they haven't actually, like, touched it or, like, experienced it or tried building with it. And so, like, they're using, like, kind of this hearsay of so and so, like, expert driven, like, you know, trying to piece together analogies of what they've heard, etcetera, but they haven't actually, like, touched it or gotten their hands dirty and, like, don't really, like, have a good from the basics concrete understanding of how, like, the things are actually put together. So I don't actually, like, understand what they're, like, arguing for or against. Maybe that's like a, and like if everyone knew how it works and conversations about what we should do would just be, like, so much easier. Maybe that's not true. Maybe that's, like, a little bit of a, you know, preaching my own naive. Yeah. Yeah. Maybe everyone, Ally, everyone should come take advantage of the 8 cost so they understand how they, like, built, you know, work on, like, we do, like, implementations or I'm trying to really make Base 58 about writing implementations, especially at the Bitcoin layer for our our Bitcoin dev basics class.
But, yeah, I don't know. Anyways.
[00:38:10] ODELL:
I'm curious. I mean, Cody, you recently, you recently had and, I mean, Feddy was heavily involved in supporting this AI hackathon in, the heart of Fiat Devland in San Francisco. Like, where where do you see the pain points for, like, a Fiat dev going to FreedomTech? Like, where like Yeah. What's
[00:38:36] Unknown:
that? I think Misty did, like, a pretty quick overview of it, but, like, I I think it's really important to be like, to double tap this is that when you use Nix for your development environments for these things, like, the process of getting Fediment running if you're a developer and wanna get started working on it is a single one line command, which is nix develop. And then when you do that, then it will build out the entire software ecosystem on your local machine regardless of what that local machine is, like, you could be running on a Windows machine, be running on Mac, you could be running on Linux or whatever. It will build out exactly what you need as you need it in order to start working on FeddeMen. Right? And so, like, that's just a specific one of that. I'm sure people have this pros like, I used to run-in this process and, I mean, I was running into it yesterday because I wasn't using Next. Nix. But as I was trying to set up this thing I've been working on on a digital ocean box and it's like, oh, well, you need open SSL installed. Well, open SSL isn't installed. So you need package config. And so you need all these things. Right? And then so but when you just use nix for it is that it's a one line command to get started to get to the point that you can actually start building software and contributing and working on the open source project. Because there's kinda 2 different steps for it, and one of them, if you're not using mix, if you're using something just like a I like, for example, this is like, I think Corelightning is a great example of it. Nifty is, like, absolutely correct about Nix is, like, a huge improvement on that is that the process of installing core lightning on a Mac is, like, a 15 step process, and it depends on the versions that you're using. It depends on everything. But you can just do a one line command of, like, nix env dash I, like, nix packages dot install or whatever, for, core core lightning.
It just builds it as it's supposed to be run, and you can just once you have that, well, then now I can just either run the software or I can start contributing or whatever. Right? And so, like, that was something that I saw, like, to go back to specifically your question, but just kinda, like, double tapping on that. What's important is that huge barrier in terms of, like, specific Bitcoin knowledge that you need if you're coming into Bitcoin in order to start getting working on the projects. Like, something that I'd never considered because, like, you know, I don't write a lot of Python. Right? But, like, when these guys for, like, mostly AI devs come in, they all write in Python. They're, like, oh, okay. I'm gonna try to use Bitcoin for my project. Right? In the pip registry, Bitcoin, the, like, the Bitcoin package there, that's the thing that Vitalik wrote. It's still registered under him. It's like the thing that Vitalik wrote in, like, 2015 or whatever.
Right? And so they download this and then they're like, oh, hey. None of this stuff works and therefore, like, you know, like, I was that's just kinda like something you wanna get out of the way. And so as much as we can do stuff of, like, building out really good dev tooling where it's just, like, either a one line command or just, like, very simple onboarding flow of full but again, like, as an example, this is for someone coming into Fidiman, there's so much that Fidiman touches. Right? Where Fidiman, there's, like, the Rust aspect of it, there's the on chain aspect of it, there's the e cache, there's the lightning, there's, like, all these different things or whatever. It's complicated enough as it enough to get started working on Bitcoin as it is. Like, you shouldn't also have this huge thing of the fact that the software development ecosystem for Windows is, like, not supported and doesn't use a Unix, like a Unix base, like, should not get in the way of people being, contributing. Like, that's just a huge one for example. Right? Is that there's a bunch of friction across the board. Yeah. They show up with a Windows laptop and they wanna run something to which most of the Bitcoin ecosystem says, you should, like, get a Unix computer. Right? Like Linux or,
[00:42:01] ODELL:
or a Mac. Is that, like, a real thing? Are there that many, like, promising developers that are just in the Windows ecosystem?
[00:42:08] Unknown:
I think, generally, people and this is, like, the again, like, the it depends on the level of developer that you're talking about, but there's a lot of people who wanna get started doing coding or something like that. Right? And they have a Windows computer.
[00:42:20] ODELL:
And then that's just, like, one of the first things yourself. Lisa, do you still do dev work on Windows?
[00:42:25] Unknown:
No. But I started my dev career on a Windows box. Like, I started doing, like, Android dev on Windows machines back in, like, you know, a decade plus now, but, like, my first coding was all on the Windows platform. I I got off of it on a Mac at some point, but yeah. Like,
[00:42:46] Unknown:
there's, like, a lot of early devs. Like, people that, like, you know, a decade from now might be somewhere totally different, I think, like, are starting on on Windows to a large extent, unfortunately. But I think that's true. And that's, like, a perfect example of where next comes in for this where it kinda, like, saves the day of that. So, for example, like, one of the things that nifty, like, did after when I was working with, Nifty on base 58 stuff, and we did this for the last Bitcoin plus plus was wheel it for all of the coding stuff for it. And so Replit uses Nix on the back end and it runs in the browser. And so even if you're running, like, a Windows computer or if you're wanting running on, like, some weird machine or whatever, as long as you have a browser, right, then you can build the software locally or you build the software and, like, have it you'd be able to access it from the browser for it. And so it doesn't matter on Windows. It doesn't matter if we're running in so for example, to get someone running, like, a reg test Bitcoin node, like, the entire process is just open a new repl and just write Bitcoin d, and then when you do that, then repl it recognizes that you don't have the binary installed.
It installs it using nix and then runs the binary, and you have the most recent version of Bitcoin d running terminal every single time. Right? So I maybe I this is something else to kinda cover because I think there's an element of this that I can think we're really good at for FETDEMAND, like, DPC definitely jumping here, is that when you use systems like Nix and Rust and stuff where you kinda just out of the box get, like, all of these benefits in terms of, like, compile time checks, in terms of reproducible builds, and all that kind of stuff. It just, like, gets away all the foot guns that are involved with doing software development, and you can actually focus on doing software development. Right? So, like, I mean, we haven't talked about Rust much for it. Right? Because it's kind of focused on NICS, but, like, that's another example of just Rust so popular in Bitcoin. And why is it so good for when you're bringing new people on, they wanna start contributing to a project? Well, it's at compile time, I get all sorts of checks and all sorts of guarantees that I'm not going to get if I use something else. And so I can bring out a new person and they can start contributing to Federman or something, and, like, they're not gonna just, like, be pushing stuff that I that we don't notice or pushing something that is gonna break something in a way that we didn't see just because at compile time, we know all sorts of I don't know. DPC, you wanna jump in, maybe talk a little about Rust? Because that's another like, DPC is another Right. Rust wizard along with his expertise with Next.
[00:45:02] Unknown:
I have, I have a lot of thoughts kind kind of shared that that I wanna, I wanna expand on what you said already. So you know how companies have studied? I think Amazon has studied that if the website loads, like, 100 milliseconds longer, that's how much revenue you're gonna lose. I I forgot the numbers, but just the relation is there. And I think the same thing happens in, in building an open source community. If your project takes 3 hours set up, there's gonna be bunch of people that otherwise could contribute that will drop out because they get distracted, they forget about it, Something so you want to smooth everything you can as much as you can because those things just add up. First, they have to install this, then that. They have to read the documentation.
They have to read contributing docs. And in in failing the dev shell, this this philosophy of streamlining the experience of the developer, we try to push it as much as we can. And it's not only Nix itself because we we for example, our dev shell will install all the git hooks that we have. So all the commits will be checked and validated so they're according to how we want them. So we don't have to tell the new contributor how to do it. They're just gonna get a a message. Their code will be linked before they push it, so they don't want like, both, both maintainers that also use this functionality.
And we use some grab to enforce certain kind of architectural, rules so we don't have certain dependencies between certain packages in our project because it violates certain architectural rules and bunch of other stuff. And thanks to MIX installing all this stuff for you, there is no extra, problems caused by those things. We know that this git check, git comment check will run every time for everyone the same, not creating any problems. So we can pile them up as much as we want, and we don't have to worry about it. So, yeah. And then you you go with, like, a language that enforce. You write your code in such a way to to enforce certain things.
You write documentation where where it should so all the new contributors can can find themselves easier contributing. And, also, don't don't waste time of the already ramped up developers asking questions because, unfortunately, in in reality, to get a new contributor to be somewhat, proficient and be able to accomplish something meaningful, you have to invest in them a little bit. And thanks to all this automation, you can actually do it. And then your your open source community has higher chance of actually being more distributed because you can bring more people on board, with less effort. So yeah.
[00:48:02] ODELL:
Reducing friction. It it adds up. Yeah. I mean, the reason I I I bring this up is because, I don't know. I've it's, it's it's kind of an ironic situation I find myself in, because I've had many developers come up to me and be like, Matt, like, you're the reason I started contributing in Bitcoin and other, you know, open source projects that are tangential to Bitcoin. But, like, I can't dev for shit. Like, I can barely read code. I I, you know, I can I can I can work myself around Git? But for whatever reason, like dispatch, there's a lot of focus on on different conversation that's very technical focused and has brought a lot of people into the space. Then, of course, we launched Open Sats. You know, Nifty is involved with Open Sats with me, and that's trying to solve the, you know, the money side of the developer equation. And and so constantly what comes up is, you know, obviously, I was being a little facetious earlier when I said, do we need more devs?
That is a problem that I diagnosed years ago, and I've been actively working on trying to get more developers in the space. And I think, you know, obviously, we wanna reduce friction. That makes sense. Obviously, with OpenSats, like, we wanna get them some kind of comp so they they can feel comfortable leaving Google or Facebook or or Apple or Twitter or wherever. And and those you know, the good developers over there at in Fiatland, they're making bank. So, like, try and get them something. Like, we can't even obviously, we can't get them equivalent, but if we can get them some kind of sustainable pay that they can rely on, then maybe they'd feel more comfortable coming in. But I think there's also there's there's a paradigm. Like, there's something that they have to wrap around in their head in terms of contributing to FOSS versus working in a Silicon Valley environment.
And I'm, like, trying to nail that that aspect down. Right? It's it's it's it's greater than there just being friction or it's greater than, like, comp issue. There there's this just fundamental difference in how you think about your work coming from a a a Facebook or a Google, and then coming into the into the false landscape. Like, do you guys see that? Like, is that a is there is there something there, and is it even solvable, or is it just, you know, they'll come when they're ready?
[00:50:34] Unknown:
Yeah. I don't know. I kinda like I honestly don't see, like, the next great generations of Bitcoin devs coming out of the same company. I, like, I see them coming from the plugs. I see them coming from, like, I see them coming from, like, Bitcoin. Like, I don't think they're, like, I don't think they're fiat mining. I think they're, like, you know, like, out in whatever, like,
[00:51:01] ODELL:
you know, like, what I'm trying to say. So they're getting false pills first. Right? They're getting, like Yeah.
[00:51:08] Unknown:
Yeah. And, like, you know, like, Base 58, we do get a lot of people coming through that but most of the people I think who come through, like, Base 58 stuff are, like, coming from other open source projects or, like, other crypto ecosystems or they're coming from they're just like Bitcoiners who do, like, literally just really wanna understand what's going on and, like, maybe just by, like, learning a little bit more about how the protocols work, etcetera, that means that they get to, like, participate in their conversations with their communities better or explain to people that they know how things work, etcetera. Like, I don't know. Maybe I'm, like maybe I'm a little I just I feel like the type of person who ends up at a same company, like, tends to really like things to be a little more, like, predictable and, like, maybe, like, open source isn't unpredictable, but I don't know. I don't know what I'm trying to say. I just don't really think they're gonna come from, like, large companies.
[00:52:09] Unknown:
Yeah. DBC, you wanna walk through just kinda your background and sort of how because you've gone gone, the whole gamut even. Call Volley.
[00:52:18] Unknown:
Yeah. I I was going to say that it's probably hard to have a, non biased because everybody just sees what what happens to happen around them. So, yeah, it's always gonna be a little bit personal bias in that. But anyway, about, myself, so I, I moved to to US, 10 years ago, to work at NVIDIA, the start up I was working remotely from Poland, got acquired at NVIDIA doing virtualization for for cars, basically. And then, I worked there for years. I jumped couple of other startups, non non startups, and, eventually, I, I discovered the big guys in Palo Alto when I was working at, the in company in Palo Alto. So it wasn't that big of a kind of life change.
I would commute to the same spot. I worked at BitGo for 4 3 or 4 years. Yeah. And then At BitShow?
[00:53:22] ODELL:
To to. Yeah. I worked at at Were you there when Bitfinex got rugged?
[00:53:28] Unknown:
No. I think I joined, like, right after a couple of months or something. Convenient.
[00:53:35] Unknown:
Well, it's because they weren't using Next.
[00:53:39] Unknown:
Yeah. No. Yeah. Yeah. I kind of lost the train of thought, but, yeah,
[00:53:50] ODELL:
No. You were finished, I think. You went through big
[00:53:53] Unknown:
kind of work in in in this area. And, you know, but at also at BitGo, there was a lot of, Bitcoiners, a lot of crypto people, and they're also very they have a very specific point of view, and that's why they're there. So it's kind of that's I also think it's kind of biased. Yeah. I mean, in a lot of ways, would you agree that, like, BitGo was
[00:54:13] ODELL:
almost like a like, that seems like a kind of a comfortable transition into,
[00:54:17] Unknown:
like, false Bitcoin. Right? Just like you're working at a personal company. Startup in Palo Alto pays around, like, the the other companies around it. So if you wanted to get into space like I wanted to, it was a pretty comfortable jump. I didn't I didn't get to just jump into some very unknown waters, but it's also it's not exactly the same. It is a different path, and you have to consciously, when you're in Silicon Valley, and I and I have some friends, people I talk, it is kind of more money skewed. Like, the the prices of housings are are crazy. I don't know about kind of, now, but you you need to make money, and and that that's just how world operates. And and and wants to make money. The founders wants to make money. The employees wants to make money. And then, I can see that point of view that Bitcoin being a global community.
Probably should encourage people from a cheaper to live areas. To get into it, because they're just more competitive, just unlike a business, level, there's just no no way around it. And try to coach people
[00:55:24] ODELL:
might be just harder because a lot of them would have to first move somewhere cheaper maybe to just to be competitive on the on the global market. Yeah. I mean, David, to answer your question, like, housing in that area is a lot more expensive than it was. It continues to go up. There there is. Yeah. So I, so that person doesn't exist, this mythical unicorn, guy who's working on Facebook who wants to switch over to false, like, doesn't that I mean, may obviously, I'm being extreme, but that's just shouldn't be a focus. Like, that's not the first
[00:55:53] Unknown:
One of the things that and I didn't really have as much of an appreciation for this is that the quality of the dev tooling at a lot of these companies is extremely high. Right? And so, like, that's kinda, like, been the big talk in, like, AI world recently. Right? In terms of, like, it kinda came out what the internals of Google's AI development workflows look like, and they're just spectacular. Right? I mean, it's like you can take your test environment and give it to someone else and they can run it exactly the same way. They're not using Nick. They're using, like, an internal system, but it's the same sort of concept. Right? Where it's, like, you can focus on the software development side. You don't have to, like, screw around with your dev tooling and all that sort of thing. And so I think, like and, like, I I've seen this too from a lot of people is that, like, a lot of the expectation of, like, oh, when I get started working on, like, this, open source project or whatever. Right? But I'm coming from, like, a big company that has a whole DevOps team, that has all this sort of stuff or whatever. Is that, like, I should just be able to get this project running. Right? Like, I shouldn't have to it shouldn't be, like, a labor of love for the next 3 hours in order for me to, like, just get this thing working. And so one of the really cool things about using something like Nix or just, like, kinda improving the dev tooling around building Bitcoin projects is that when you want to get someone from one of these more established companies or, like, a more experienced engineer or whatever, then they can just, like, run the software and they can just get started contributing and immediately jump into it. Right? Like, I don't know. Maybe DPC and if they you guys maybe have different opinions on this, but, like, I think that's because I don't I don't notice it until I kinda move away from the projects that I currently work on and just thanks to DP, all the projects I work on are just completely nixified. Right? So but, like, you know, you jump into something like, like, I've been doing a lot of this AI stuff recently, and, like, you know, most of them is, like, Python stuff. Right? And so there's a lot of just foot guns associated with doing development there when you're not doing reproducible builds.
And so, yeah. I mean, like, you guys jump in on that, but, like, that's something where if we can just make it super easy, then the process of getting them in the world, it's like then they can start playing with it, then they can start contributing immediately, and there's not this whole onboarding process where, like because for them, right, they their time is really valuable. They're getting paid and there's, like, they're getting paid a lot. Right? And so to just say, hey. Take the next, like, 48 hours and spend half of that, like, screwing around with Docker. Right? Like, that's probably not the best way to get them introduced to the project.
Yeah.
[00:58:09] ODELL:
Yeah. That makes sense to me.
[00:58:12] Unknown:
Yeah. I mean, I think it's one of those, like, if we could, like, pick a common dev platform, so to speak, like, a common way of doing things across as many Bitcoin open source projects as possible. NYX feels like the best and most obvious one for, like, a lot of reasons. Right? Like, you know, if we're gonna pick, like, a state of the art build tool and just kind of, like, try as much as possible to get as many Bitcoin projects, like, you don't have to, like, make it it's I I mean, it's cool if, like, you use it as your primary tool, but you could just have an option to build it with Nix. Right? And just make it such that that, like, it's the common thing. And then, you know, people like myself I know Cody does a lot of, like, dev outreach. Like, you're bringing a lot of devs in. If we again can just get, like, a bunch of new devs to just kind of expect and look for and ready for, like, a next, like, environment, right, then I think, well, like, my hope is that we'll see, like, huge returns in terms of, like, getting all kinds of guys from all kinds of backgrounds. You know, maybe they're from these fancy FAANG companies who are used to fancy dev tools.
Maybe they're just, like, new and, we should just, like you know, we can have the best dev tool experience as possible across Bitcoin. I think it would just be, like, really great for the whole ecosystem. Like, I don't see any downsides. Maybe I'm not. What are the downsides of Next, guys? What are we not telling them?
[00:59:29] Unknown:
Actually, so, on the practically, I can already mention, some. So, since usually when you're building software, it expects certain things to be already there. Oftentimes, they are. So it doesn't have to download anything. One thing we've noticed that with Nix, since you're trying to reproduce, kind of whole world around how to build your software, there will be much more downloads involved, which sometimes people, from countries with, infrastructure that isn't so great complain about. So then we're we in in Fedimint, we have couple of workarounds for that. So for example, we have, kind of a tier of dev shells. If you just wanna build the project default one is good enough. If you wanna do cross compilation, there's, like, an extension that brings more stuff so you can cross compile to to other architectures, and and there's another one for web assembly for the web stuff.
So so, yeah, that would be one cause I can I can mention, right away, very practical, and I don't think there's there's much that can be done about it, especially in, like, a more complex project that like, for Fannie Mae, we bring in so much software just to run all those end to end tests with with lightning nodes, Bitcoin, some other, software? It really adds up. Another one, I guess, the the the learning curve. It's, Nix is not that difficult after you actually get into it, but it's different. And usually, the the the different is what people trips on because they they need to overcome this, this difference and and internalize it.
So so just learning it, and then the problem is that you need people that understand oftentimes, someone will want to make a change, but that requires kind of changing the building script. And if it was a Docker, they might be already familiar with it, and they would figure out how to do it. And with needs, they might not know Nix, and then they cannot do it. So at at Parete means I'm I'm particularly focused on helping people when they when is blocking them. So they don't wait until they don't get discouraged. I I wish everyone just spend a couple of weekends practice with me, but I I know they wanna get something done, and it's it's oftentimes easier to do it for them and give them solution and unbook them than than out there to gonna be investing to watching next right away. Yeah. I I think I think, I think one of the things that I think DPC, like, did you've you're kind of philosophy on this is kinda, like, imbued a lot of, like, the Fedimint development workflow is that,
[01:02:17] Unknown:
like, there's a when you're building, like, Bitcoin software, right, is, like, you're messing with people's money potentially. Right? Like, this is not something where it's just, like, you get to throw stuff in and, like, see if it sticks. Right? And so there's a lot of stuff where you want to just have these guarantees at the beginning where it's like you have to do it the right way. Right? And so there's an element of, like, there's there's an unavoidable element of, like, if you're going to build reproducible software, like, it's going to be harder to do than building non reproducible software. Right? Because, like, you know, the non reproducible, you just, like, throw it at the wall and see what sticks. Right? Like, you know, if you're deciding to write your code in c, for example, then you're not going to have all the memory guarantees that you have when you're writing it in Rust. Right? And so, like, when you're writing good c code, then there's, like, all these checks and stuff that you have to be aware of, that you to think about, and all those sorts of things where it's, like, just out of the box, you get these guarantees when you're writing in a Rust where, so it's, like, it's gonna be slightly harder to get it running the first time, but, like, when it runs, it will be run correctly. And so there's an element of that for that that I I don't think is avoidable for it, but I think that if you can just get the the the net benefit of it is just, like, you can focus on that thing and not, like, hey. I'm spending the next I mean, like, I literally just ran this into this yesterday. Right? Of that, like, the node version that I was running in order to run this next thing that I was using, like, was slightly off, but there's, like, no error messages that tell you that that's the reason why. And so you're like, okay. Well, now I have to install this specific version. It be the most recent one, all that kind of stuff. Right? But when you're writing in mix, then the issue becomes with the actual software itself, not like the build process of getting the point where you can actually run software.
[01:04:00] Unknown:
I'm still thinking about what other downside leaks has,
[01:04:05] Unknown:
Takes up a lot of disk space, so all the stuff it downloads. It's like Yeah. Downloads and disk space, yes, they tend to add up. I like to joke that it's like, you know, we only got nixed because of Moore's Law, like expanding, you know, like, storage on machines. It wasn't possible before. I don't know. I mean, this mix has been around for, like, 15 years at this point. Like,
[01:04:31] Unknown:
One thing for all the all the mixers that's gonna be implemented that I would like to mention is, for the local development, set up Nix Dev Shell for your users, but avoid them having to go through the Nix itself. So in in Fedimint, we use, Nix builds, like, the the Nix build command for producing the binaries we care about, and and that's how we build in CI. But, luckily, the developers that just wanna work with it, they just run the shell, get everything they need. And at that, usually, they don't ever have to kind of think about Nix again unless they run into problems in the CI later with with their changes. And so just just because Nix is great, doesn't mean you cannot avoid its a pain points during local development when it kind of, doesn't matter all that much because yeah. But then then for us, it also adds because Rust is pretty compute and and disk space intensive.
So when you compound it with, like, Mix wanting to make it its own sandbox copy of everything, then you can really, yeah, go through a lot of gigabytes really quickly. So yeah.
[01:05:48] Unknown:
Someone's asking us in the chat how much is a lot of terms of space, like, for an average dev? Good question.
[01:05:56] Unknown:
It's entirely depends on the on the project you're working on. But I would just say whatever your current project requires and then multiply it by, I don't know, 10. So if you have a project that if you if you have a project that, produces, like, a gigabyte of output when you're building it, then take into account that you probably need at least 10 gigabytes at all times to be kind of comfortable and not have to worry about, disk space. And I think for, probably, I don't know, in the Tevaq build with all the symbols, maybe at at 40 gigabytes even of all the all the stuff it's produced. So yeah. Yeah.
[01:06:38] Unknown:
So if if if anyone's confused about why that's happening, it's like for example, if my local system, I already have like Rust installed, I already have Bitcoin installed, I already have like a bunch of things. Right? Is that when I'm trying to run Fennymint well, when I'm running Fennymint, what it's gonna do is it's gonna rebuild the specific versions of those that Fediment uses and not using on my local system. Right? And so the benefit of that is that I'm building exactly the system that I need in order to run that specific software. Like, the downside of that is that it's not piggybacking on the fact that I already have a bunch of stuff installed locally. And so, like, you know, there's there's trade offs associated with it, but, like, the benefit of it is that the process of getting started and running new software is that it's always just one line of code. Right? And what's also nice about this is that disk space just gets, like, exponentially cheaper. Right? And so, you know, you although with the expansion of the UTXO set recently with, I don't know if you guys have been tracking this. So that ex increased, like, 30% in the last, like, 6 months. Right? But for, but that's just generally speaking, that's, like, a set of trade offs that I think is worth. And this is also another thing that, Deepsea was just talking about in terms of, like, you're building all this stuff locally. So, like, for example, that Replit does is that Replit runs a cache of prebuilt NICS binaries.
Right? And so whenever you need one of those binaries, what it's basically doing is it's hot loading the binary into your local dev environment, and then it's just checking the hash, and then it's using that binary that's been prebuilt. Right? And so that's, like, one way, for example, like, that's the one that I'm most familiar with. I think there's some other solutions that you could probably use to improve some stuff, whatever. Right? But, like, for example, when you're running, when you're using Nix for running software on Replit, then it's not building everything locally every time. It's using, like, a shared cache of binaries on there, but every time that you download it, it's checking against the hash flow. Right?
[01:08:28] Unknown:
So caching is kind of a, well understand, problem in in compute. So there's a lot of things you can do to kind of compact things, merge them together, and since everything is already checked soon, it's it's very natural to do so. But then but if you're, like, your developer in your local machine and that's, like, your only project you're downloading to, you don't have anything to to hash it with. So yeah. I mean yeah. So so just to kind of sum it up, it's not terrible. It's like yeah. Most developers working on never mentioned problems with disk space, but it is something trade off that you yeah. To be fair, you'd
[01:09:12] Unknown:
have to be aware of. Yeah. Yeah. And it's a better problem than the person comes to your project and they try to get started contributing and it takes them 2 hours just slamming their head against the wall and they can't make any progress. This is like, like, you know for a fact when you come you can just put on the read me. Right? I was like, you require 5 gigabytes of disk space or whatever or on this project. Like, you know, like, that's something. Like, I think you're not You require 10 x disk space. Well, 10 x relative to
[01:09:40] Unknown:
This this 10 x might be confusing because I'm I'm thinking in particular about kind of specifics of of how much your project produces.
[01:09:51] ODELL:
But yeah. But the point is they can just they can just download what they need. Right? And and they're not, like, smacking their head against the wall. It's like an actual okay. I I know what I need to do here. And then they can get
[01:10:02] Unknown:
You trade this this space for for time you're you're getting. It saves time of all the developers, all the newcomers, and all the all the people that are already working on the project and don't have to help new people, figure out how to get it done. And also during just the like, we never have a, discussions or maybe there is something wrong in our CI or something. If it works, it works. It's just, you know, the test can sometimes be flaky, but we we don't have to chase some weird ephemeral issues of of building, not having right library sometimes, and and things like that. And our builds don't break randomly, just because something somewhere changed and stuff like that. So, there's a lot of time saved.
And it's, like and it's multiplied by how many people are gonna be interacting with your project.
[01:10:52] ODELL:
Awesome. We have a comment, a question from Carlos in the chat asking about existing user developer documentation documentation for Federman and CLN. He he he's curious on how you feel about that. But, also, I'm curious, like, where does document where does documentation fall into all of this in terms of getting new devs onboard?
[01:11:18] Unknown:
So with with mix, you don't need that much documentation at least for onboarding. So our documentation, I think, mostly is here's the link where that explains how to install Linux if you don't have it already. Run this command, you're ready. Like and then we can, like, just mprox or something that will build everything and make a virtual, like, a local federation for you to play with. And you can you can start working and see see logs of all the processes and stuff like that. I really recommend everyone that is kind of a developer to to install and around the just mprogs and and see how developing software, like, should work deep top. Like, how onboarding should be.
Because it's it's really rare to to to see something, like that, out there. Yeah.
[01:12:09] Unknown:
Yeah. It for documentation, I've been doing, like, some work on this from the Fedimint side. So I can talk there's, like, different levels of documentation. Right? So there's, like, the developmentation. Right? So the stuff that, like, DPC, Eric, Justin, like, guys who are working on it continuously. They need also the stuff that someone who is using your project would need, that's like a kind of a different set of documentation, and then there's like a final set of documentation you can kinda think about in terms of like newbies and people coming into the project for the first time. And so, like, I can talk specifically with Infiniti. Right? Is that so with like all Infiniti is built in Rust, and so the way that Rust works is that the documentation is actually embedded in the code. Right? And so one of the things we're doing is that we're improving that documentation. So that kind of improves for a developer working on the project and a developer coming into the project. Right? Have all the documentation. It's right there in the code. It's not like a separate thing.
Right? And then the other element is someone coming new into and what DPC was saying there is that when you're using Nix as your build system for it, none of the whole step by step, like, not to call it correlating again, but, like, the I because I just remember running this issue with Mac is that, like, the process stalling core lightning on Mac is, like, 50 or 60 different lines, right, of that you have to run. And even then it doesn't work fully. Like, our max Exactly. Is just terrible and, like yeah.
[01:13:29] Unknown:
But figuring out how to get core lightning to be, like, a next first experience is, like, pretty high in my personal wish list.
[01:13:37] Unknown:
Oh, I'm it works well. So if you all have completed binary, right, that works really well for core lightning right now where you can just do mix environment interactive mix packages dot core lightning. Right? And, like, that just in and it's one line. Right?
[01:13:55] Unknown:
Yeah. But the dev environment is the one that I, like, struggle with. Right? Because I want everyone I want people building on core lightning. I don't want people, like, using it. So we have a lot of work. Right well, we have some work to do there. Also, like, our our reproducible build, like, setup could use some work. We're constantly, like, banging against CI problems. I think there's, like, a lot of things that we could improve across our, like, process that Nix would just, like, kind of smooth a lot of edges off. And, like, DBC has been saying, like, I don't wanna have to, like, what do you call it? I don't have to waste time helping people, like, figure out how to get Corelightning built and installed. I don't wanna waste time figuring out how why our our CI isn't working, like, on anyone else's machines. Like, I want things to be reproducible because, like, that's way less work for any of, like, our core maintainers.
[01:14:52] ODELL:
So, I mean, it seems like a massive win on the next side documentation wise because everyone hates writing documentation. Right?
[01:14:59] Unknown:
Yeah. So, before I forget, since, especially, with Cody, we have so much, add adjacent with, AI developers. I really want eventually to be able to have, like, a little AI chatbot that learns on our Discord and our code base and all the other things and just answer questions for people. You know? That I think that's a really worthwhile is anyone building a start up or looking for a startup idea, I think it's really gonna work unless GitHub has it, before you're ready with it because I think that's that's a good idea. I haven't reviewed the PR for it yet, but it's sitting there right now on Fediment.org
[01:15:36] Unknown:
is that's exactly what Fediment.org is doing. Right? And so, like, like, for anyone who's not tracking the way that this works, right, is that for chatbots, they're called they're large language models. And, basically, what you do is you take a bunch of words in there, and then it predicts what the next words are gonna be off of that. And so when you stick there, one of the things you knew is that you can search through your documentation to find those words, stick those in, and then it'll answer based off that. Right? And so this is called, like, retrieval augmentation. Right? And so basically, like Fedmint dot org is gonna have this soon. Right? There's, like, the PR stuff right now. Is that, like, you'll have a little chatbot that you can, like, open on the side, and then can ask it a question, and it'll look through the documentation, then find the most relevant things to your question, plug those in, like, you don't really see it where it's being plugged in, but it'll use that to answer your question. Right? And it does the same thing with, like, the Fedimid podcast that, like, me, Eric, and Justin, and Obi have done. Right? And, yes. So that's exactly what we're working on for that one. But it's kinda it's kinda tricky to, like, put it in different places. But anybody using DocuSaurus, this will be, like, a cool one that you can put in for, basically anybody, in within Bitcoin who wants to have a little chatbot that does that.
[01:16:44] ODELL:
There we go. Are you gonna write documentation for us? Yeah. I mean, I AI seems like a solid fit here. I mean, I mean, relatively, low lift. Would did you just drop that you have a Fediment podcast with Justin Obi?
[01:16:59] Unknown:
No. The ones that we've done. Right? And so this is one of the other things you can do. Yeah. So whenever, like, one of us does something that we're talking about Fediment, then you take a transcript of it, and then you clean it. And it's actually kinda hard to do. Right? Because and this is why, like, Pablo, he's with his, Nasser data vending machines, he's been very into this idea of having, like, specialized transcribers for podcast. Just because, for example, every single time that we say, like, e cash or every single time that we say FEDIMIT or if we say something like mini script, like, mini script will always get caught by the like, the most of the transcription models as manuscript.
Right? And so, like, getting them to active like, actually transcribe properly, running that through, and then making sure and doing the cleanup for it is, like, a little bit annoying, but because, like, we're kinda, like, very niche with endpoint. And so, but that's something where Yeah. That'll be a cool one that you can add to that. Yeah.
[01:17:47] ODELL:
No. The reason I brought it up is because, if Justin became a podcaster, I'd have to give him significant shit for it. Was it Lisa, was it your quote that is, like, you spend enough time in the Bitcoin space and you either become an event planner or a podcaster?
[01:18:03] Unknown:
I think that's Rob Ham's. I think that's Rob's. Yeah. But it's a good one. We don't give him credit for anything on dispatch, so it's your end. Okay. Then, yeah, that's definitely me. So I'll take that one now. I mean, I'm definitely planning events now, so, awkward.
[01:18:18] ODELL:
Yeah. I'm doing both planning events, and I have multiple podcasts. So that that that tweet hit me hard when I saw that.
[01:18:27] Unknown:
Thanks for inviting us on your podcast so we can show more This and and stuff, though. Yeah. Guys, this was awesome.
[01:18:33] ODELL:
To the freaks, I know there wasn't a dispatch for a month. We had a 1 month break there. Obviously, I was still doing rabbit hole recap and a bunch of other things, but I wanted to take a little break for summer. But we're gonna come back swinging. Don't don't don't give up on me. I haven't given up on you guys, and and there's gonna be many more dispatches. Guys, this conversation has been awesome. Let's wrap it up with some final thoughts. Let's start with Cody. Cody, final thoughts.
[01:19:04] Unknown:
I mean, just first off, big thank you to DPC. Right? I think this is DPC, is this the first time that he's on a podcast? Or I think so. Yeah. Yeah. Let's fucking go. Another virginity in the belt. Yeah. I don't know. I mean, just like all 3 of you guys have been, like, huge for my development as, like, a Bitcoiner and a developer. Right? And so, like, just so excited to get to talk to you guys for this stuff. I mean, like, the big one is for onboarding new devs is that, like, that's something that it's kinda like it's a little bit of thankless work. Right? It's just, like, not the specific thing that a lot of people wanna be doing, but just so important. And, like, all the stuff that we can do to make it easier, is, like, I, like, I I get people coming up to me who've, like, done base 58 stuff, and they're like, hey. Like, Replo using Replo was the first time that I was able to code. Like, I tried setting up Bitcoin before, but just being able to just run the single, like, Bitcoin d and just have it, have it running the reg, Reg chest node for me was huge and, like, I've been trying to do that locally. One of the things when you got Bitcoin plus plus is that because we were using Replit for all of it, it's, like, normally, like, the first half whenever you're doing a technical workshop or whatever is, like, just the setup process. It's, like, hey, everybody install Docker or, like, everybody do this thing. Right? And then you, like, just kinda stay in the whole thing and someone brought a Windows machine or anything like that. And so when you go to Bitcoin plus plus, plus because Nifty is using, like, Nix, either for, like, local builds or using or whatever. Right? It's like you actually just go there, you sit down, and you start coding. Right? Like, it's a really, really cool conference, and so anybody wants to go to that's gonna be cool. And then anybody come who wants to, like, come in and start working on Fedimint is, like, we do a lot of stuff for new developer onboarding just in terms of, like, documentation, spending time with them. We do, like, bunch of, weekly calls and stuff like that. And everything that DPC's done in terms of just, like, cleaning out this build process where you can just, in a single command, get everything running locally on your machine has been, like, absolutely huge. And, yeah, that that's, that's the last bit. So thanks.
[01:20:56] ODELL:
Thanks, Cody. DPC, final thoughts.
[01:21:01] Unknown:
I just wanna say that if if you're listening to this and you're a developer and you wanna see kind of how how things can be with onboarding of your of your projects, just take a look at. Just try to to set up the dev shell, run our little virtual, federation, and and yeah. And if ping me if you need anything, any help to replicate it. I really think that's how all software projects should be. Yeah.
[01:21:30] ODELL:
Thanks, David. It's been an honor and a privilege to meet you and to have you on the pod. Lisa, final thoughts.
[01:21:37] Unknown:
Yeah. Come to Bitcoin plus plus in Berlin and check out Nix in person. What are the dates? Yep. It's October 6 7th. It's gonna be at this really sick space in Berlin. We're, close to the waterfront. We're gonna have this, like, awesome, kind of conference hall that's right next to a coffee shop that takes Bitcoin payments. We're gonna have an amazing Seeker lineup. I'll be there. I know Cody's coming. Maybe we can talk to you PC and to come in and hang out for a few days. And we're gonna be, you know, getting, there's gonna be a third day of the day after. There's an e cash day on Sunday so if you stick around before heading to Amsterdam or whatever. So it's gonna be like a really great weekend with builders and we're gonna get all of Bitcoin to, like, use NEX and understand it and be able to, like, set up newcomers so that, you know, Bitcoin will be, like, the same across, you know, just getting into bitcoin at like, you know, orange peeling yourself is easy, well we're trying to make that easier. This is gonna make it easier for any new devs to just start building on bitcoin. So yeah, come check out what we're doing at bitcoin plus plus again that's vtcpp.dev and then click on the little button that's like the the Bitcoin thing. You've got tickets there. Awesome. Thank you, Lisa.
[01:22:58] ODELL:
Freaks, thank you for joining us. I appreciate you all, especially those in the live chat, but also those who continue to support dispatch. Dispatch is a 100% listener funded. We rely on your donations, your Bitcoin donations, so thank you for supporting the show. We don't have ads or sponsors like many other shows in the space. We're trying to do it the right way with aligned incentives, where you guys are are are all I I I just wanna provide value to you guys and and not waste your time. So thank you all for supporting the show. I mean, I you guys might have noticed I didn't do boostergrams at the beginning of the show. You can go to dispatch.com to see all the links and all the relevant links. We now have, this nostril [email protected]/stream where you can send, Zaps, where you could send Bitcoin live on air and have your message shown.
But I'm just gonna read these Boostagrams real quick from our last dispatch with Russell Okun. We have at 8mith with 77,777 saying, there's a there are dozens of us, but what we lack numbers, we more than make up for in caliber. Russ is a great example of this. We have at CumRocket with 69,420 sat saying family above all, do the Bitcoin, stay humble, stack sat. We have Eric 99 with stay humble, stack sat, 50,000 sat. And we have at cryosats with 25,000 sat saying powerful interview, natural conversation flow. Great job, Matt, and Russ was an excellent guest. Stay humble. Look after your family's freaks. That's through podcasting 2 point o. You can use your favorite podcasting 2 point o app to support the show, help us climb the charts. Thank you all. This has been great. I have Dylan coming tomorrow, same time.
We're gonna talk about how he thinks there's a bank run on Binance. I disagree with him, so it should get spicy. And we're gonna get all on the ETF talk. But today, we were in it for the tech. So thank you for all joining us, and I appreciate all of our great guests. Thanks, guys. Cheers. Thanks. Bye. Thanks. Stay humble, Stack Sats.
Bitcoin developer education
Bitcoin++ conference
Importance of Nix in Bitcoin self-sovereignty
Reproducible builds and signed binaries
The need for more Bitcoin developers
The benefits of using Rust for onboarding new contributors
The importance of reducing friction in open source communities
The difference in mindset between working in a large company and contributing to open source projects