gchristensen changed the topic of #nixos-chat to: NixOS but much less topical || https://logs.nix.samueldr.com/nixos-chat
clever has joined #nixos-chat
drakonis has joined #nixos-chat
sir_guy_carleton has quit [Quit: WeeChat 2.4]
SamuelMarks has joined #nixos-chat
drakonis_ has joined #nixos-chat
drakonis has quit [Quit: WeeChat 2.4]
drakonis has joined #nixos-chat
drakonis1 has joined #nixos-chat
drakonis_ has quit [Ping timeout: 268 seconds]
drakonis has quit [Ping timeout: 248 seconds]
<samueldr> neat
<samueldr> hopefully this helps reduce the forks of unrelated projects from starter templates
eyJhb is now known as eyJhb
<joepie91[m]> OTOH, it encourages the use of boilerplates, which is a bad practice :/
SamuelMarks has quit [Quit: This computer has gone to sleep]
<Shados> Eh. A project skeleton can be very useful, but you *do* have to understand what is in it and why...
<joepie91[m]> Shados: so, two things wrong with that:
<joepie91[m]> 1) people generally use boilerplates because then they feel they *don't* have to understand what is in it (which invariably leads to pain, this is one of the most common issues I see in eg. #Node.js)
<joepie91[m]> 2. a "boilerplate" or "skeleton" or what-have-you is basically just a fancy way to say "copy-pasted code", and copy-pasted code is an unmanaged dependency - with all the problems of unmanaged dependencies, namely the inability to reasonably update it, the lack of clean abstractions, etc.
<joepie91[m]> in the end, given that you have to understand everything that's in such a boilerplate *anyway*, there's zero benefit from using one; only a vague sense of "hey, this looks easy" followed by increasing dread over the subsequent months as you realize you've painted yourself into a corner
<joepie91[m]> just use proper managed dependencies instead, and if you're not sure how they fit together - which is a common and reasonable problem to have! - then look at existing repos as a reference, but not as a template
<joepie91[m]> (bonus issue: using a template means that you almost always end up with crap in your project that you don't actually need, and that gets in the way later)
<Shados> Yes. It is a very loaded "can be" :). Although on your second point, I think that's not necessarily the case. Quite often it is, but in better uses they just provide a set of sane baseline conventions on things like project structure.
<joepie91[m]> I've been helping people untangle their boilerplate-based projects in JS for several years now, and I can pretty confidently say that the world would be better off without their existence, including (or especially!) for beginners :)
<joepie91[m]> Shados: the "sane set of baseline conventions" is a myth, imo
<joepie91[m]> there is no such thing; every project has different requirements
<joepie91[m]> and if it is truly universal enough to be a baseline, then you can encode it in an abstraction
<Shados> Yes. Which is why they're *conventions*; they're made to be broken :D.
<joepie91[m]> so teach the conventions, and why they exist
<joepie91[m]> instead of having people blindly copy-paste thenm
<joepie91[m]> them*
<Shados> Yes; like I said, you do have to understand what is in a skeleton or why. And you're absolutely correct that that is not typically how they're used.
<Shados> *and why
<joepie91[m]> right, but my point here is that the requirements you're setting - "you have to understand what is in there", "you need to know when to deviate from the conventions" - negate any potential benefit of using them in the first place, by definition
<joepie91[m]> because if you understand either of those things, you do not need the boilerplate
<Shados> If you only ever write *one* project in a given language/platform, sure.
<joepie91[m]> the whole value proposition of boilerplates is that they're supposed to be a substitute for your understanding of conventions and/or integrations
<joepie91[m]> which, well, doesn't work because see above
<Shados> I see their actual usefulness more as a reminder and a shortcut
<joepie91[m]> they're not shortcuts, though, because you need to (structurally) deviate from them most of the time, so instead of doing the structure right from the start based on your knowledge, you now need to diff against something somebody else did and retroactively change things (which, given an understanding of the goal, is usually more work)
<joepie91[m]> and as a reminder - then you don't need a boilerplate, you just need a reference
<joepie91[m]> like, there's a difference between looking at a stackoverflow answer as reference, and literally copy-pasting stackoverflow code
<joepie91[m]> the same difference exists here, in looking at a reference example repo, vs. using a boilerplate
<joepie91[m]> reference example repos are super useful (and there are not enough of them), just making them a boilerplate only adds busywork, no value
<pie__> otoh if you can make a sane baseline why doesnt the infrastructure do that already
<joepie91[m]> right, that was my point with truly-universal baselines being encodable in abstractions :P
<joepie91[m]> so if somebody chooses to encode it into a pile of copy-pastable code as opposed to an abstraction, that should at the very least raise some questions as to whether the structure is really as universally applicable as claimed
<Shados> I think there's a bit of an impedance mismatch here joepie91[m], because you're thinking specifically of the practice of people cloning template repos made by others and building off of them, and I'm thinking specifically of my practice of using skeletons I've written myself :P.
<joepie91[m]> Shados: I mean, the original context was this: https://alternanet.fr/_matrix/media/v1/download/alternanet.fr/2019-06-08_tXYdNPrTtZDJGCMD :)
<joepie91[m]> ehhh
<joepie91[m]> but even for skeletons you've written yourself, I'd suggest that they should probably be abstractions instead :P
<Shados> Nope.
<Shados> They're not universal enough. They contain things that are the right choice 95% of the time, but baking them in to the underlying platform would make it harder than needed to differ from them in the 5% of cases. Mostly.
<Shados> There are actually a few things that probably could/should be upstreamed into stuff...
<joepie91[m]> Shados: right, to clarify, I don't mean that 1 skeleton === 1 abstraction
<joepie91[m]> your typical skeleton would result in multiple abstractions, that are all-encompassing enough that you can reassemble them from memory without needing a skeleton
<joepie91[m]> (and many of which are reusable between what would've previously been multiple skeletons)
<joepie91[m]> on this note, I definitely want Nix flakes to become a thing soon
<eyJhb> pie__ sure you're not thinking of DisplayPort?
<eyJhb> I might have the first build that actually doesn't fail in a 10 hour period
<joepie91[m]> > Flat volumes are now disabled by default in hardware.pulseaudio. This has been done to prevent applications, which are unaware of this feature, setting their volumes to 100% on startup causing harm to your audio hardware and potentially your ears.
<{^_^}> error: syntax error, unexpected IN, expecting ')', at (string):254:42
<joepie91[m]> holy shit finally
<joepie91[m]> I didn't know that there was a way to turn this off
__monty__ has joined #nixos-chat
jasongrossman has quit [Ping timeout: 248 seconds]
jasongrossman has joined #nixos-chat
<etu> argh
<etu> I spent time on looking up modified time on files on a build that I plan to run in nix-build
<etu> When I got it to work: 1970-01-01
<etu> (Me should have remembered...)
<gchristensen> hehehe
<etu> Now I need to find another way to get the dates of these files :/
<gchristensen> so ... uh ... I don't usually recommend this
<gchristensen> but Nix's database has a field on ValidPaths called registrationTime
<etu> That won't help... Because all files will be registred at the same time, and the creation time will be very different
<gchristensen> ah
<etu> (I'm rebuilding my website to be based on org-mode)
<etu> And while at it I'm building a blog into it with org
<gchristensen> ah
<etu> And currently I'm working on the rss-feeds and index that are supposed to contain some kind of useful dates
<etu> And yeah
<gchristensen> I find that I usually want the date hard-coded so I can manipulate it
<etu> Ofc I want to build it with nix
<gchristensen> like how Jekyll uses the filename to find the date
<etu> That's what I'm going to do :)
<gchristensen> hrm. so wat do you need creation time for?
<etu> gchristensen: To be able to tell when a post is created
<etu> But I can probably date things in the files
<gchristensen> is that not the exact same date as in the filename?
<etu> the filename is index.org :p
<etu> In a directory of an arbitrary name
<etu> So I should probably use org-properties or something like that to store that metadata
<eyJhb> Finally, my little docker container for remote builds works :D
jasongrossman has quit [Ping timeout: 248 seconds]
jasongrossman has joined #nixos-chat
jtojnar has joined #nixos-chat
endformationage has joined #nixos-chat
<eyJhb> Ohh a brainfuck challenge is in the making, this is going to be good!
drakonis has joined #nixos-chat
drakonis1 has quit [Ping timeout: 245 seconds]
drakonis1 has joined #nixos-chat
drakonis_ has joined #nixos-chat
drakonis has quit [Ping timeout: 252 seconds]
<eyJhb> I. FINALLY. FOUND. IT! This is a time for celebration!
* etu brings the cakes!
<jD91mZM2> Hello humans, complete random question, what VPNs do you guys use (if any, that is)?
<eyJhb> THe worst part, I really thought I had checked that... Now time to mark it broken? Because, it cannot be fixed as is...
<eyJhb> Except if we downgrade packages, and we don't do that as far as I know
<tokudan> jD91mZM2, cjdns
<etu> eyJhb: Sometimes you could override versions of packages inside a derivation to make that derivation work if it's really impossible to patch it
<eyJhb> Taking it over to nixos
andi-_ has joined #nixos-chat
andi-_ has quit [Client Quit]
andi-_ has joined #nixos-chat
andi-_ has quit [Client Quit]
andi-_ has joined #nixos-chat
andi-_ has quit [Client Quit]
andi-_ has joined #nixos-chat
ekleog_ has joined #nixos-chat
andi- has quit [Quit: WeeChat 2.4]
andi-_ is now known as andi-
andi- has quit [Remote host closed the connection]
andi- has joined #nixos-chat
andi- has quit [Remote host closed the connection]
andi- has joined #nixos-chat
drakonis has joined #nixos-chat
drakonis2 has joined #nixos-chat
drakonis_ has quit [Ping timeout: 248 seconds]
drakonis has quit [Read error: Connection reset by peer]
__monty__ has quit [Quit: leaving]
<pie__> wonder if i should create a zfs dataset for nixpkgs
<infinisil> jD91mZM2: openvpn
<infinisil> Haven't looked at any others though
<andi-> I am so glad we do not have these lengthy discussions... https://lwn.net/SubscriberLink/790382/1829ac3555202553/ Sometimes a bit more would probably be helpful but I can't come up with a specific topic..
jasongrossman has quit [Ping timeout: 272 seconds]
<tokudan> andi-, well... the topic there is basically "should we suggest that everyone uses the new packaging tool that's a bit more strict?". and here we are using nix/nixpkgs that tells you exactly "you can only write in this single directory and you need to register the exact urls you want to download from and the exact checksum that the downloads will result in".
<ivan> I'm using nixos because of debhelper
<andi-> ivan++
<{^_^}> ivan's karma got increased to 2
<andi-> I might actually print a T-Shirt with that.. coworkers would definitly be upset ;-)