KREYREEN has quit [Remote host closed the connection]
rajivr has joined #nixos-chat
KREYREEN has joined #nixos-chat
supersandro2000 has quit [Disconnected by services]
supersandro2000 has joined #nixos-chat
<Ashy>
infinisil: i lived in vietnam for a year in 2016 and despite having an active google account since 2004 google assumed i was suddenly fluent in vietnamese somehow
<Ashy>
it was an active fight to force various google pages and products back into english
<infinisil>
Ugh
spudly111 has quit [Ping timeout: 256 seconds]
spudly111 has joined #nixos-chat
<samueldr>
the trick is not to live in one of those pesky countries with multiple official languages
<samueldr>
4 is 4 too many
<samueldr>
grunts and barks is enough to get the point across in a civilized nation
<infinisil>
samueldr: 4?
<infinisil>
I mean, Switzerland speaks 4 languages, but I doubt you meant that
<samueldr>
might not be official language
<samueldr>
but yes
<infinisil>
Ah!
<samueldr>
(not sure how many countries have "official languages" laws like Canada has)
<infinisil>
All 4 are official
<infinisil>
But no, youtube picked france because my ip is in actual france
<samueldr>
high school research pays back its dividends in making IRC shit posts finally
<infinisil>
lol
<samueldr>
and if you didn't catch it, the amount of languages I aim for is zero
<samueldr>
it's "odd", but not really, how you have a french IP address
<samueldr>
I mean, I had for a long time IP addresses from the province western to me... which is what, 500km away?
<infinisil>
Have a dedicated server in france from online.net, because it's super cheap :)
<samueldr>
ah
<infinisil>
And am using it as a VPN
<samueldr>
then it's a bit different :)
<samueldr>
it's like IP addresses weren't designed to identify a physical location for the end-user, or something like that
<infinisil>
And actually the only reason I'm using it as a VPN is because my router at home apparently can't handle torrenting
<infinisil>
(from my local host)
<infinisil>
Something about too many TCP connections I think
<samueldr>
plausible
<infinisil>
(which is circumvented when all of that goes through a UDP connection)
<samueldr>
and online.net is okay with that?
<samueldr>
assuming it's not only linux distros
<infinisil>
I think online.net is the kind of provider that doesn't give a shit :P
<infinisil>
Well no, of course it's only linux distro's
<infinisil>
And actually, I torrent from that server as well. The local torrent client is just still running because I can't be bothered migrating them
<infinisil>
Because for some reason, moving torrents between clients is almost impossible
<abathur>
online.net sounds like an ISP founding in 1996
andi- has quit [Remote host closed the connection]
andi- has joined #nixos-chat
<infinisil>
Idea: What if we were to write programs while always explicitly specifying *why* something is being done
<infinisil>
While by default nothing would be shown, you could turn on "explanation mode", and really dig into why each and every instruction was called
<infinisil>
This may start at a high level, a function saying "I'm now going to initialize the database connection because I want to connect to it later"
<infinisil>
But the database function can then give more detailed explanations for how it actually initializes the connection, and so on
<lukegb>
We can't get people to write good commit messages, how are we going to get people to document their code :P
<infinisil>
Umm, that's left as an exercise to the reader
<samueldr>
infinisil: haven't rewatched the video, been a while since I saw it
<infinisil>
If we had something that, it would be really neat though. Debugging or understanding why things happen would be so much easier. computers wouldn't be a huge black box anymore
<samueldr>
>> Programmers usually bark commands at computers. Never does the computer ask “why”, and never does the programmer explain themselves. What if we did? Annotate the purpose of your function calls. It may save your day!
<infinisil>
Oh neat, I'll keep this open in a tab for later
abathur has quit [Quit: abathur]
abathur has joined #nixos-chat
<samueldr>
just re-watched, and I think what you were saying basically goes on the same path
<pie_>
infinisil: you are now retracing some computer science history
<pie_>
infinisil: i just wish my memory was good enough to give pointers
<pie_>
infinisil: the prototypical example is expert systems providing explanations
<pie_>
not *quite* what you said but close enough i think
<red[evilred]>
I think what tickles me about it is that if my code crashes with that - the 'why' is going to be on my stack and therefiore in my stacktrace
<red[evilred]>
or if I'm using a lazy languge where the ordering of actual evaluation of closures may vary every execution - it owuld be useful in that case too
<supersandro2000>
,pointers
<{^_^}>
0x3A28213A 0x6339392C, 0x7363682E.
<supersandro2000>
?
<red[evilred]>
Do you like pointers? ... because that's how you get pointers.\
<samueldr>
red[evilred]: yeah, I was thinking something along the line, the strings would be somewhat associated with the part of the code at fault
<supersandro2000>
are those special pointers?
<supersandro2000>
I thought they are random
<supersandro2000>
> dust off ten years worth of autotools sediment
<{^_^}>
undefined variable 'off' at (string):437:6
<supersandro2000>
😂
<insep_>
> dust "a"
<{^_^}>
attempt to call something which is not a function but a set, at (string):437:1
red[evilred] has quit [Quit: Idle timeout reached: 10800s]
irc_bot[m] has quit [Quit: Idle for 30+ days]
inlaw[m] has quit [Quit: Idle for 30+ days]
FRidh has joined #nixos-chat
<eyJhb>
Yay, just bought four OnePlus Ones used/broken for 300 DKK (40 EUR), so finally a new cover/backplate!
<eyJhb>
But maybe at some point, I should switch to something new. But I know that there is a least a couple in here that keeps driving older things :D
<patagonicus>
I've been thinking about replacing my OnePlus 5T since it doesn't get official updates anymore and I don't want fiddly custom ROMs for my daily driver. But I've ordered a Pinephone for fiddly things. :D
<eyJhb>
patagonicus:! It is basically brand new then!! - I think LineageOS works quite well btw. :p
<patagonicus>
Well, I did put LineageOS on my Pixel C … and then two months later they dropped support for it.
<insep_>
sounds like perfect device for pmos
<patagonicus>
I mean, I'd love that, but Linux support seems terrible. I found a repo from a few years ago where someone managed to get Arch booted on it, but not even sound was working. And since I mainly use it to watch videos these days that's kinda important.
<patagonicus>
Hmm, although it does mention "SoCs and platforms with comparable specifications (e.g. audio/video input, output and processing", so maybe it is.
<patagonicus>
But I'm not sure if I want to spend the time to figure out what makes it boot to then update it with a new kernel.
<insep_>
ah
<insep_>
i don't think wiki would contain that info :D
<insep_>
that project just needs some more activity
<patagonicus>
Well, yeah. But for now I'd rather play with my Pinephone (once it arrives) and then move on to the Pinebook Pro. Maybe afterwards I'll feel motivated to work with something were running Linux wasn't a design goal. :D
<siraben>
Is there a tool to remove all whitespace from a folder recursively?
<siraben>
On a quick search there's a couple of solutions using coreutils but I was wondering if was a specialized one
<sphalerite>
> pkgs.detox.meta.description
<{^_^}>
"Utility designed to clean up filenames"
<sphalerite>
siraben: ^ ?
<siraben>
Ah not from filenames but in the contents of files
<siraben>
> pkgs.detok.meta.homepage
<{^_^}>
attribute 'detok' missing, at (string):440:1
<infinisil>
Basically annotating each action a program does with a reason why it does it
<__monty__>
In comments or contracts or something?
<infinisil>
In the code itself. E.g. in one example of the video, a mutex lock function is annotated with a `why :: String` parameter, so that in case of an error it can show why it wanted to lock it
<infinisil>
If the lock succeeded, it would store this reason in an object field as well
<infinisil>
So that the error could be "Lock is currently acquired by <reason1>, but <reason2> wanted to lock it as well"
<infinisil>
This is only a very simple example though, I can imagine having whole "why-traces", which exactly show why a certain action was done, with everything leading up to it
<MichaelRaskin>
So basically the benefit is automated pruning of backtrace?
<MichaelRaskin>
Well, dynamic trace
<MichaelRaskin>
Oh right, in normal languages it is not cheap to get
<infinisil>
Not exactly. A backtrace doesn't require the programmer to give a reason why functions are called
<infinisil>
The comment section also has a great example: Somebody implemented such an approach for a chat bot. So e.g. if you asked it "what is the capital of englang?", it would respond with "london"
<infinisil>
But then you could also ask "Why did you say that?", and it would respond with "You said 'what is the capital of england?', which seemed to be a geography question, so I asked Wolfram Alpha and it said 'London', so I said 'London' "
<__monty__>
Sounds like "Excellent error reporting."
<infinisil>
If this idea was applied to the whole software stack, it would make computers much less blackboxy
<infinisil>
__monty__: It's not only about errors imo. Things may not error, but you can still wonder why it was done this way
<infinisil>
But yeah, errors would be a great use of this information
<MichaelRaskin>
infinisil: given that a lot of balckboxiness is intentional obfuscation, by this or other name
<__monty__>
While I agree it would be excellent, it's a little like "good documentation is important." Something everyone kinda knows but doesn't want to put the time in?
<infinisil>
I don't think this idea of it being a good idea to give reasons to actions is something everybody knows
<infinisil>
I personally never thought of this concept before yesterday
<__monty__>
You've never read code and gone "Why?!"
<infinisil>
Well yeah, but I've never actually thought about encoding the why into the program itself :)
<__monty__>
Yeah, most of the time it's comments.
<__monty__>
Java kinda has it with the ridiculous naming.
<MichaelRaskin>
Like every way of improving program structure, I expect it to lead to even greater mess.
<infinisil>
Actually it kind of seems like you'll want to give a reason every time you call the same function multiple times. So it seems that this kind of undoes abstraction itself for explaining stuff
<MichaelRaskin>
Just like small functions doing just one thing often lead to «everything happens elsewhere»
<infinisil>
Program structure stays the same I'm pretty sure
<MichaelRaskin>
Yeah, might get away with just runtime overhead
<infinisil>
Hmm, maybe this kind of thing could have nice support by the programming language itself
<infinisil>
Well, advent of code is coming up, I might try out this kind of approach a bit and see how it goes :)
<MichaelRaskin>
In a sense, I would prefer SIGSEGV here
<__monty__>
infinisil: I wonder if it'd make malignant software easier or harder to spot. The placebo effect of "Why are you doing this?!" "For innocent reason X." could maybe trick unsuspecting users.
<infinisil>
Hm yeah
<infinisil>
What if the compiler inspected the git blame to show the author of each reason shown. Or even, show a green check mark if the commit is GPG signed and you trust it :P
<infinisil>
Although, by just running the code you implicitly trust it already
<MichaelRaskin>
… to not be competently enough malicious to break out of nsjail
<lukegb>
If you NIXOS_LUSTRATE when you've already lustrated, do you end up with /old-root/old-root
<gchristensen>
I'm supposed to hand some companies my resume, but I haven't updated it since 2014 🤡
<pie_>
Like every way of improving program structure, I expect it to lead to even greater mess."
<pie_>
Raakins first llaw
<pie_>
ive personally experienced it with nix
<pie_>
*Raskins
waleee-cl has joined #nixos-chat
endformationage has joined #nixos-chat
<gchristensen>
I love it when log messages are so useless you have to grep the source code to see what it means
cole-h has joined #nixos-chat
<MichaelRaskin>
At least they are unique
<MichaelRaskin>
And we all know that strace output can be easier to understand than both program output and source code
sorki has joined #nixos-chat
sorki has quit [Remote host closed the connection]
<andi->
Yeah, it is great how much syscalls tell you in complex systems. All that glue code above syscalls somehow becomes redundant...
<MichaelRaskin>
Just reveals how rarely we use computers as information processing tools
<MichaelRaskin>
For actual computations strace is much less revealing, to say the least
<andi->
Or how bad they are at that :D
sorki has joined #nixos-chat
<MichaelRaskin>
Nah, we don't even try
<andi->
or maybe FSs are all we need for processing? :D
<MichaelRaskin>
I do use FS that can be an interface for _some_ processing, actually. But normally, well, that's not what happens
<gchristensen>
I've been tinkering with a fuse fs this weekend and I'm a bit stymied by how annoying it is to do all the bookkeeping with inode numbers
<MichaelRaskin>
Wait a minute, why do you even need to?
<gchristensen>
the library doesn't talk about paths except in readdir, creat, etc.
<MichaelRaskin>
Get a better library maybe?
<gchristensen>
as far as I know, libraries that deal in names are lying to you
<andi->
maybe get a lib that maps some inode to a user defined struct that you can then work on?
<MichaelRaskin>
gchristensen: I mean, libfuse itself already provides a wrapper that deals in paths
<MichaelRaskin>
In a way that is sensible enough to use, unlike the default event loop that makes assumptions about approximately everything
<MichaelRaskin>
(the default event loop, I tried to wrap in Common Lisp and failed; the next level with callbacks, I use just fine)
<gchristensen>
hm.
<gchristensen>
maybe I'll just make this the lazy way in python then
<gchristensen>
or go, sigh
<f0x>
siraben: i've slowly been experimenting with that too, yes
<MichaelRaskin>
You started in Rust but it doesn't have a friendly enough library and you do not want to unsafe-wrap yourself?
<f0x>
but not enough time and not enough nixos knowledge to actually use it for anything, so was just in some local kvm's
<sphalerite>
siraben: gchristensen does ;P
sorki has quit [Remote host closed the connection]
sorki has joined #nixos-chat
cole-h has quit [Ping timeout: 256 seconds]
FRidh has quit [Quit: Konversation terminated!]
FRidh has joined #nixos-chat
rajivr has quit [Quit: Connection closed for inactivity]
kalbasit has joined #nixos-chat
<siraben>
f0x: are you using ZFS?
<siraben>
sphalerite: of course, hehe
<f0x>
siraben: yeah, and should also be doable with btrfs
<siraben>
Not a FS expert, how do they compare?
<etu>
siraben: I have a setup like that, but on tmpfs as /
iqubic` has quit [Quit: ERC (IRC client for Emacs 28.0.50)]
iqubic has joined #nixos-chat
<siraben>
etu: don't you need a lot of ram for that?
<siraben>
I recently lustrated my system to see what state would be lost and things like wireless and bluetooth connections were
FRidh has quit [Quit: Konversation terminated!]
<gchristensen>
for the sake of my resume, what are the best things I've done for the nix community / ecosystem?
<hexa->
ofborg?
<etu>
siraben: Nah, I bindmount and symlink the things I want to keep. In general it's not too much cruft around on /. It's more a matter of control.
<gchristensen>
hexa-: I must really be riding on those coat tails x)
sorki has quit [Remote host closed the connection]
<MichaelRaskin>
The relative impact was pretty hard to see from outside, but you clearly was one of the key people in establishing the current RFC process…
<MichaelRaskin>
(and negotiating Nix Core team establishment on the path towards it)
sorki has joined #nixos-chat
<gchristensen>
oh yeah
<hexa->
mind you, I'm not part of nixos for very long :p
<MichaelRaskin>
Also hard to measure exact impact from outside, but what was your exact level of involvement in convincing Packet to go pretty bullish on NixOS?
<gchristensen>
100%
<gchristensen>
that was my idea and implementation, and still a relationship I foster / keep alive
<MichaelRaskin>
It seems to be a pretty significant part of the tooling compute resources
<MichaelRaskin>
Like, majority?
<gchristensen>
yea...
<gchristensen>
true
<MichaelRaskin>
status.nixos.org I hope. We do not mention .com here
<gchristensen>
:x
<infinisil>
Oh whoops
<gchristensen>
not sure they need a status page
<sphalerite>
huh, I thought nixos.com was dead. Apparently not.
<sphalerite>
It definitely was temporarily.
<MichaelRaskin>
Hmmm, grep says you are maintainer of lorry package?
<gchristensen>
it was taken down because they stopped replying to their administrative mail
<gchristensen>
which is justification to take down a domain, and after 1y put it up for auction ... and I had $1,000 bids on all the auction sites to buy it
<gchristensen>
and on month 11 they responded and got it back.
<sphalerite>
awwww :(
* lukegb
looks at r13y.com
<lukegb>
can we remove python2 from the iso_minimal closure yet
* lukegb
prepares to shave some yaks
<MichaelRaskin>
And replace it with pypy2!
<sphalerite>
gchristensen: besides all the things you've done yourself, a whole lot of good things in the nixos world are results of nerd snipes performed by you :p
<gchristensen>
oh gosh
<gchristensen>
sphalerite: on my resume I called it "community organizing" :P
<lukegb>
we shouldn't need two versions of python3 either >:)
<MichaelRaskin>
Just pypy2 and pypy3!
<lukegb>
Is Jython still a thing? We definitely need that.
<energizer>
gchristensen: i think erase-your-darlings is increasingly influential
<gchristensen>
oh cool yeah
<lukegb>
yeah
<energizer>
siraben: i use `impermanence` on btrfs
<energizer>
it would be nice to have the erasures be more frequent than once per boot. is that what your sandboxing setup accomplishes MichaelRaskin?
<MichaelRaskin>
'Well, I do have things that live on real system, but a ton of stuff runs in freshly created transient environments, yes
<energizer>
eg if some app tries to write into /etc or ~/.config it's actually writing into a tmpfs?
<MichaelRaskin>
If some app tries to write into a generic /etc/ path not earmarked as writeable, it can go away. /etc is a symlink into store
<MichaelRaskin>
Many apps get ~/.config, with the ones I care about getting their ~/.config things be a symlink to a repository
<MichaelRaskin>
A sandboxed app writing to ~/.config writes to tmpfs or to a single-use directory in /tmp
<MichaelRaskin>
Aaaand /tmp gets mkfs on boot
<energizer>
sweet
<MichaelRaskin>
But that is more of a garbage collection measure; different app isntances get different directories in /tmp and different UIDs to boot
<samueldr>
seriously
<samueldr>
what is up with github's notifications?
<samueldr>
there is a repo I'm watching, where only one out of nine changes got an "unread" notification status
<samueldr>
is someone else reading my notifications?
<MichaelRaskin>
Or _something_!
<MichaelRaskin>
(while being so inconsiderate as to mark them read in the process)
<samueldr>
is it you?
<samueldr>
you seem awfully guilty
<MichaelRaskin>
And also trying to blame inanimate objects?
<MichaelRaskin>
But no, I am not reading your notifications. I just have so many unread ones that GitHub runs out of unread notification slots and you don't get any
supersandro2000 has quit [Ping timeout: 260 seconds]
<colemickens>
man, I have no fucking patience for FUD
<gchristensen>
+1
<samueldr>
same
<samueldr>
even when FUD aligns with my point of view
<hexa->
colemickens: are you reading up on the rspamd systemd pull request?
<lukegb>
Yeah, lifetimes are hard when they're external to your program
<samueldr>
I think "for wayland" is unfair, it was "for wlroots"...
<lovesegfault>
In the discussion for that post someone, I think pcwalton, managed to solve the core issue discussed in the post wrt. lifetimes
<MichaelRaskin>
The problem is Wayland is a lie
<lovesegfault>
alas it was too late
<MichaelRaskin>
I guess once the same extensions for screen casting are used for multiple Wayland compositors, wayland can be looked at
<MichaelRaskin>
So far I am happy with Xorg.
<lovesegfault>
screen casting is the achilles' heel of wayland right now
<lovesegfault>
it's really unfortunate
<andi->
2020 didn't help with that at all..
<lovesegfault>
Yeah :/
<andi->
Also we still can use X for that as you can still run Xwayland. It feels like we are in the XP -> Vista transitioning right now where you still have those nasty stupid legacy programs and the shiny new world isn't polished enough yet.
<MichaelRaskin>
lovesegfault: I consider this a symptom, not the main issue
<MichaelRaskin>
It is just high-profile enough that
<samueldr>
ugh, "nasty stupid legacy programs" feels like such an arrogant way to put that
<MichaelRaskin>
I would also want compositor-independent lockscreen animations
<andi->
samueldr: well in the XP -> Vista era it was kinda like that. Scanner drivers stopping to work and all that good stuff
<andi->
breaking for no good readon
<andi->
because the developers just didn't have to touch it for a very long time
<samueldr>
yikes
<MichaelRaskin>
andi-: so Wayland is a way to solve the mess of extensions, and of lack of protocol-level security, and it currently comes as a mess of incompatible sets of extensions, and nobody has any idea how to do security well
<MichaelRaskin>
It is not legacy programs
<andi->
that depends on your perspective
<samueldr>
an unfinished shoe-horned idealistic replacement driven by "break fast and ship things"
<andi->
Vista, as I said :-)
<andi->
I am not saying now is great
<MichaelRaskin>
andi-: sorry? I do not see anywhere finished server side
<andi->
s/is/this/
<samueldr>
and now everything that was still working fine and still _is_ working fine for the environment they were designed for is now at fault?
<MichaelRaskin>
Not even a _design_ for a server side
<samueldr>
that's... a pretty horrible take
<gchristensen>
all I care is that mixed DPI and hotplug monitors work
<lovesegfault>
I'm confused, how can there be "not even a design for a server side"? What coes that mean
<MichaelRaskin>
Yeah, I _actively_ do not want hotplug
<lovesegfault>
gchristensen: Yup
<andi->
samueldr: I never said that I think the current solution is better but from thos working on wayland X11 is "legacy"
<MichaelRaskin>
lovesegfault: when there is a unified screencasting spec for Wayland and not every compositor doing a different thing…
<andi->
thus the Vista comparison, everything older was legacy
<samueldr>
I really don't follow then
<MichaelRaskin>
I like Vista comparison
<MichaelRaskin>
It promised three big things, and delivered on one, cool window decorations
<MichaelRaskin>
I do expect Wayland to get better eventually
<samueldr>
because to me the way you described "nasty stupid legacy program" you're making it their fault that the world is advancing at break-neck speed
<andi->
samueldr: my point is we are at a stage where there is a shift happening to something that must happen but isn't entirely polished. Yet you still have/need users to progress and have to slowly migrate the programs as well.
<samueldr>
and it almost feels like a judgement against X11 users
<samueldr>
wayland is FAR from being usable to me from what I read
<MichaelRaskin>
You do not need to migrate all the programs, Xwayland could work
<MichaelRaskin>
Wayland misses the server side
<samueldr>
and I really don't want to use any of the duopoly, either of gnome or sway
<samueldr>
so now I'm a stupid nasty legacy user?
<andi->
no..
<samueldr>
then that must be as I said, I don't follow :)
<andi->
I give up. I should stop discussing on the internet..
<samueldr>
sorry
<andi->
It is not you... I just spent waaaay too much time reading nixpkgs/nix issues today and I'm in a terrible mood.
<samueldr>
oh
<samueldr>
sorry to pile up on them
<samueldr>
one thing I'm still unclear with
<samueldr>
(unrelated to what you said
<samueldr>
is thware a WaylandX or whatever it should be called to run wayland programs on X11?
<samueldr>
is there*
<lovesegfault>
not AFAIK
<MichaelRaskin>
winit or something?
<andi->
I think there is no wayland only stuff yet unless you skip all the "standard" toolkits
<samueldr>
because I'm sure it's going to happen soon that some entitled developer à la drew devault decides all their GUI programs are wayland only
<lovesegfault>
I mean, why would you need that? Most toolkits support both
<samueldr>
for now
<lovesegfault>
only electron supports X11 only
<lovesegfault>
(still)
<andi->
You can run sway on X11 IIRC
<lovesegfault>
Oh, and Chrome
<samueldr>
it's bound to happen
<andi->
and then spawn wayland apps in there
<andi->
So it is probably possible
<lovesegfault>
Uh
<lovesegfault>
Can I run sway on xWayland on sway on xWayland on sway on xWayland on sway?
<andi->
maybe. You can keep the parts
<MichaelRaskin>
It will crash
<andi->
but it shouldn't ;-)
<MichaelRaskin>
Sway? Shouldn't crash?
<samueldr>
it shouldn't
<samueldr>
not saying it doesn't
<samueldr>
but it shouldn't
<MichaelRaskin>
I think with all the pointer-casting crashing sometimes might end up being a design goal
<MichaelRaskin>
A secret design goal
<andi->
I remember GTK2(?) or something having magic values at the top of most of the structs so they could detect invalid pointer casting.. Is that still a thing?
<andi->
(might also have been glib or something)
<MichaelRaskin>
Hmm, glib could
<samueldr>
unrelated, mostly, but another higher level library for C http://libcello.org/
<MichaelRaskin>
I mean, GTK would then inherit this