parsley936 has quit [Remote host closed the connection]
das_j has quit [Quit: killed]
ajs124 has quit [Quit: killed]
<cole-h>
What is the simplest way to fully load my 4c/4t CPU?
ajs124 has joined #nixos-chat
das_j has joined #nixos-chat
<cole-h>
Extra points for something that could potentially be kept running in perpetuity, while I test something
<cole-h>
(e.g. compiling something big wouldn't fit that bill)
<MichaelRaskin>
Compiling something big in a loop?
<cole-h>
Hehe
<MichaelRaskin>
Also, Chromium build already takes an eternity
<cole-h>
I care more about the load than the time it takes. Does a Chromium build peg your CPU?
<MichaelRaskin>
Like 4c/4t sounds like it will provide many many hours of heat
<MichaelRaskin>
Maybe openssl speed?
<MichaelRaskin>
I think enough terms with ‘while true; do true; done’ will also peg CPU
<cole-h>
I had to run 4 instances of it, but that did it, thanks.
<cole-h>
Backgrund: For a class, a professor is having me timestamp when something starts running and when it finishes. But even in ms, it's 99% of the time 0ms delta. I was wondering if something was up, so wanted to load my CPU and see if that would make a difference
<cole-h>
Fix spelling where applicable
<MichaelRaskin>
Sure one instance of forkbomb would also suffice, but I assume you want to stop the load at some point
<cole-h>
Haha, preferably
<MichaelRaskin>
Milliseconds are pretty large!
<cole-h>
Indeed. But that's what he's asking for in the document... lol
<MichaelRaskin>
How old is the document, I wonder
<MichaelRaskin>
I remember using a 66MHz CPU
ajs124 has quit [Quit: killed]
das_j has quit [Quit: killed]
<cole-h>
It wouldn't surprise me if it was fairly old, but it "looks" recent
<cole-h>
Then again, most LaTeX PDFs look timeless
bqv has joined #nixos-chat
<infinisil>
bqv: Aren't games kind of that? They're mostly just created to have fun, without a specific purpose
<bqv>
i suppose they're a form of it, unless you consider the purpose to be "to get downloads" etc.
<bqv>
but given games rarely do anything new, they're quite a safe bet too :p
<infinisil>
Ah, I think I wanted to say "without them solving a specific problem", though I guess the problem could be "being bored" :P
<bqv>
heh
<infinisil>
I do wonder what your description would look like for code though
<infinisil>
Context from #nixos for reference: "bqv | i wish people could just develop and appreciate cool tech for just being cool, rather than for solving a specific problem, though"
<bqv>
i imagine it would give a huge boost to creativity, and we'd end up with way more innovation than we do now
<bqv>
my comparison was maths, because that's how maths operates, and it works really well
<infinisil>
Oh, I guess idris is kind of like that
<infinisil>
It's mostly a research language
<infinisil>
With many cool features in it
<infinisil>
Nobody really needs it for solving any problems
<bqv>
yeah, many of which are now being poached by more mainstream things because they're actually *really good*
<bqv>
but nobody would have gone so far for a normal project
<infinisil>
Not sure what you mean
<infinisil>
Ah
<infinisil>
Okay but copying features from others isn't a bad thing imo, it might really be what makes so many great things
<infinisil>
It's kind of like sharing knowledge
<bqv>
well, as it stands tech innovation is driven by market forces, and those forces push against the extreme ends of creativity. until recently functional languages were barely used for example, because while they're just as good, the money wasn't calling for it. now they are, because it managed to squeeze past far enough that there were a reasonable number of places where not going functional was
<bqv>
quite detrimental
<bqv>
no sure, not against the copying, i'm against the fact that the default is to follow that status quo and not to innovate
<bqv>
i'd have preferred it if things like idris *weren't* relegated to the research fringes
<bqv>
and then trickled in when they might earn someone money
<infinisil>
Hmm
<infinisil>
Maybe that comes from the fact that programming is really easy to get into
<infinisil>
Creating new programs can be done by children
<infinisil>
However maths is quite a bit harder to get into
<infinisil>
Oh and I guess you can't make money with maths
<bqv>
yeah
<infinisil>
Well you can, but it's much harder
<bqv>
i think the last one is the main one. it's very hard to make money directly from anything mathematical, so it's not tied to market forces, and instead just progresses naturally
<bqv>
wish we could achieve that with tech
<infinisil>
Hm yeah, I see where you're going with that now
<bqv>
even on the level of usage, it would be cool if all the things that rely on critical mass could get a standing without fizzling out because they can't drum up the support
<bqv>
ipfs reminded me of that because i have a feeling the latency issue is just due to a small userbase, and like most decentralized networks and meshnets, it gets better the more people use it, but nobody will use it until it's better, so catch 22
<bqv>
p2p stuff is economically doomed to fail
<infinisil>
Unless it catches on!
<infinisil>
Through some weird set of circumstances..
<bqv>
of course, but in the same way functional paradigms had to fight for years for it just to even get noticed, this starts from a major disadvantage too :p
<bqv>
heh, yeah
<infinisil>
I do hope that over time, better technologies just win out
<infinisil>
It might take a couple tries, more refinements, better marketing
<infinisil>
But once a better technology manages to replace a currently-dominant worse one, the status quo is improved
<infinisil>
And it's hard to go back to the old one
<bqv>
yeah
<infinisil>
Related to that, here's SCION, which is like a reinvention of how internet routing can work: https://www.scion-architecture.net/
<infinisil>
This might replace the current internet architecture over time :)
<bqv>
i love the idea, but i've seen too many "internet 2.0s" fly by to get my hopes up at all at this point :p
<infinisil>
I am obviously biased, since my professor at ETH is working on this and explicitly gave a lecture on SCION, but it really does look pretty good
<infinisil>
It's being deployed already apparently
<infinisil>
And they have some big sponsors I see
<bqv>
oh, huh
<bqv>
well, maybe i'll hold out a little hope :p
<cole-h>
infinisil: Any chance that lecture was recorded?
<cole-h>
Huh, guess I should have actually clicked the link :D
<infinisil>
I guess they're not the actual lectures, but the same material
energizer has joined #nixos-chat
<cole-h>
infinisil: I like the chain link image on slide 17 -- chain links linked to paper clip (or other pliable metallic object) when demonstrating the non-scalability of trust :D
<infinisil>
Hehe
bqv has quit [Read error: Connection reset by peer]
noonien has quit [Quit: Connection closed for inactivity]
waleee-cl has quit [Quit: Connection closed for inactivity]
das_j has joined #nixos-chat
ajs124 has joined #nixos-chat
<ajs124>
test
<cole-h>
tset
<ajs124>
👍️ you also just wrote something in #nixos, right?
<ajs124>
So I guess I managed to fix my bridge. Only took me all night.
neeasade has joined #nixos-chat
endformationage has quit [Ping timeout: 246 seconds]
cole-h has quit [Quit: Goodbye]
mog has quit [Quit: im quiting!]
mog has joined #nixos-chat
slack1256 has quit [Remote host closed the connection]
<ashkitten>
it'll be a miracle when i actually get this server racked and functional. the raid controller was extremely disagreeable before we managed to upgrade its firmware with windows 2003
<sphalerite>
Anyone know a nice tool for comparing two massive files? (well, a massive file and a block device)
Jackneill has joined #nixos-chat
<sphalerite>
Specifically, they're images of an SSD containing a windows installation, and I'd like to see what changed between them if anything
<sphalerite>
hm, cmp -b might be good
<slack1256>
sphalerite: I recall there was a flag for rsync that did such thing. Let me check.
<sphalerite>
slack1256: iirc rsync is a bit reluctant to deal with block devices
<sphalerite>
I've started a cmp -b
avn has quit [Ping timeout: 256 seconds]
avn has joined #nixos-chat
avn has quit [Ping timeout: 260 seconds]
Jackneill has quit [Remote host closed the connection]
<__monty__>
gchristensen: I don't see what else could be offensive about the picture.
<gchristensen>
not sure an omlette is possible with a poached egg
<gchristensen>
it is a tomato-heavy sauce in a cast iron pan :(
<__monty__>
What's the eggy stuff surrounding the poached eggs though?
<__monty__>
Meh, that just scrubs the pan nice and clean : )
<MichaelRaskin>
I thought you liked Rust?
<gchristensen>
cheese
<eyJhb>
But iron pans shouldn't be washed _that_ well, as far as I understand
<gchristensen>
a regular soap-and-water is pretty much fine
<__monty__>
Hmm, but soap is super harsh on oils.
<gchristensen>
the oil isn't what seasons the pan, it is the polymerization of the oils in the high-temperature seasoning
cole-h has joined #nixos-chat
rardiol has quit [Ping timeout: 240 seconds]
<gchristensen>
it is so shady to me that multiple Private Browsingwindows in FF are the same session
<qyliss>
whaaat
<qyliss>
that's horrible
<gchristensen>
yup.
<MichaelRaskin>
If you want mutually isolated sessions, you need separate profiles, or maybe Containers extensions is sufficient
<gchristensen>
I briefly used this plugin which made evrything its own profile, but it broke too many sites
<MichaelRaskin>
Well, ny binding to launch Firefox just creates a fresh profile every time
<MichaelRaskin>
So I never looked into configuring Containers
<abathur>
Not sure how other ecosystems like lobster and reddit are going, but I feel like there's been an uptick in how often I go to HN and find something Nix-related on the front page over the past few months
<eyJhb>
MichaelRaskin: wondering more and more about the setup you have. Sounds like everything is modded
<gchristensen>
MichaelRaskin: I have something like that, I suppose I should use it more :)
<MichaelRaskin>
eyJhb: well, my PID1 is sinit and much of the system coordination is via a Common Lisp daemon
<MichaelRaskin>
Firefoxes are not just separate profile, they are also inside an nsjail
<abathur>
joepie91: :)
<MichaelRaskin>
gchristensen: you should not let your Firefox profiles live longer than your /
<gchristensen>
hehe
<qyliss>
I'm looking forward to setting up temporary / on my new computer
<MichaelRaskin>
I don't really care that much about temporary /
<MichaelRaskin>
But my /etc is a symlink to store
<qyliss>
that's nice
<MichaelRaskin>
More precisely, it is a symlink into /var/current-system
<MichaelRaskin>
(so all the FS stuff is switched by overwriting one symlink)
vesper11 has quit [Read error: Connection reset by peer]
vesper11 has joined #nixos-chat
waleee-cl has joined #nixos-chat
rardiol has joined #nixos-chat
<viric>
MichaelRaskin: is your store readable by any other user?
<MichaelRaskin>
Well, my laptop doesn't have other human users, and I have not yet got around to making it o-x as Nix unfortunately chmods it on start
<viric>
when you say 'it on start', what is it, and start of what?
<MichaelRaskin>
Any Nix tool with control over store (so, in practice nix-daemon) sets specific permissions on the store directory during its initialisation
<viric>
ah you mean the directory. I wondered if your store had files organized by different groups and permissions
<viric>
long ago there was a plan (by Pierron?) to have some secrets in the store
<MichaelRaskin>
I do not want to need incompatible NAR format!
<viric>
normal
<abathur>
I've caught myself noodling the temporary root thing a lot
<abathur>
not quite sure what'll come of that, just chewing on how to apply it as a broader philosophy I guess; it's contiguous with some stuff I've already been doing
<abathur>
for a while I've been converting ~/Documents and ~/Desktop into links to ~/Downloads
<abathur>
sphalerite: yeah, that's some of what I've been considering; most of my time's on macOS so I've been thinking about nudges
<abathur>
cole-h: yes, I wrote an expression to play with that a little a couple weeks ago; he's clearly on another level :]
<cole-h>
It's actually scary how incredible it is, not gonna lie
<sphalerite>
abathur: nudges?
<abathur>
I've been picking at a state-check script that I recently folded into my backup run on macOS; autocommits the usual suspects in my dotfiles and reports on the condition of things I usually have to audit before I leave a system
<abathur>
so like, it'll let me know if I imperatively installed something with brew that I didn't put in my brewfile, or if there are files that aren't covered by my dotfiles + backup + exclude/ignore rules
<sphalerite>
aah
<abathur>
sphalerite: oh, anything to make me triage stuff as I go; maybe just the knowledge that I have to triage and commit-or-lose some files, or pop-up a dialog to nag me to do it
thibm has joined #nixos-chat
vesper11 has quit [Read error: Connection reset by peer]
vesper11 has joined #nixos-chat
<__monty__>
gchristensen: Re the FF thing. When does the difference matter for you?
<abathur>
maybe trying to use multiple logins on same site?
<sphalerite>
ugh, trying to work out what I used the debian installation on this SD card for…
<gchristensen>
I log in to Google in a private browsing window, and then might forget and open a new private browsing window to, say, shop on 1800flowers.com which then say "Want to log in as Graham?"
<__monty__>
I see. I always log out asap so never really notice that. Don't use private browsing though.
<gchristensen>
I'm not sure I'd trust the logging out to be sufficien
<__monty__>
It's probably not.
<__monty__>
But it does show lack of consent.
<gchristensen>
epecially since we know of at least one major company creating "shadow" profiles of internet users
<__monty__>
Let's face it. Private browsing isn't enough either : )
<gchristensen>
I'm not keen on the nihlist approach :P
<cole-h>
gchristensen: That's what I use containers for. There's also a "temporary container" addon that might or might not help.
<__monty__>
I'm not a nihilist, hence the logging out.
<MichaelRaskin>
Come on people, throwaway profiles running under separate UIDs are cheap
<gchristensen>
MichaelRaskin: yeah I like the sounds of that
<gchristensen>
I assume they come preloaded with extensions-
<MichaelRaskin>
Integrating nsjail requires some tooling, I won't pretend otherwise
<MichaelRaskin>
I acutally never got around to installing extensions in them…
<MichaelRaskin>
(but you can just manually install some extensions and then clone this profile as the initial state)
<MichaelRaskin>
Because right now my throwaway profiles are nix-build'ed by starting Firefox
<sphalerite>
MichaelRaskin: any way to keep browsing history?
<__monty__>
sphalerite: Make the history location a symlink in the original snapshot that points to a permanent place? Would that work?
<MichaelRaskin>
Not sure what is a good way to auto-keep browsing history.
<gchristensen>
MichaelRaskin: you nix-build at invocation?
<MichaelRaskin>
Nope, at system update
<gchristensen>
ah
<MichaelRaskin>
Well, this profile should not depend on the invocation!
<MichaelRaskin>
sphalerite: what I actually do with history, is that I keep track of launched instances, and default to open the links in a new history. If I am doing something in a web-app-y workflow, I just separately reopen the pages I do want in history
<MichaelRaskin>
We-ell, in reality I do not use Firefox all that much anyway nowadays, as most of the web content is grabbed, HTML-to-text-ed and read in Vim…
<__monty__>
Did you mean per tab?
<gchristensen>
__monty__: no
<cole-h>
Ctrl+Shift+P -> login to GitHub -> Ctrl+Shift+P -> github.com shows me logged in
<__monty__>
Maybe they rolled back parts of that since?
<__monty__>
They also say the expose a per tab private browsing api though. So I guess if you want something that goes further than what's available you need an extension.
drakonis has joined #nixos-chat
<eyJhb>
MichaelRaskin: what about following links then?
<MichaelRaskin>
Often it is the binding for open-the-hovered-link, or copy-link-location + binding to open from clipboard
<MichaelRaskin>
(But it is minority of web content nowadays anyway)
noonien has joined #nixos-chat
<cole-h>
joepie91: re the Rust graphics conversation the other day: I was planning on getting down and dirty with one of the various Vulkan libraries, until I tried running a Vulkan tool and realized nouveau/mesa doesn't support Vulkan...
<joepie91>
cole-h: same boat for me, except radeon drivers (can't use amdgpu due to a hardware bug)
<cole-h>
Me: "OpenGL is a thing of the past. Let's work on the new hotness!" The new hotness: "lol you can try"
<joepie91>
lol
rardiol has quit [Ping timeout: 240 seconds]
rardiol has joined #nixos-chat
thibm has quit [Quit: WeeChat 2.6]
<eyJhb>
MichaelRaskin: the 3d support in asymptote + svg is no fun...
<eyJhb>
Any suggestions for a good image format for web? Besides svg and png? Hoped I could get something that scales well. but apparantly not
<aleph->
Alright gonna set up a libvirt cluster on top of NixOS
<aleph->
Should be fun
<gchristensen>
nice
<aleph->
Yah, ordered another nuc, stuck it on my credit card
<aleph->
Just need to order some more RAM later in the summer for my current NUC
<MichaelRaskin>
eyJhb: what's the problem with 3d? I mean, there are all the annoying things about getting rendering settings right, that's true
<aleph->
Should be nice to futz with setting up VM's like work but not on work infra
<cole-h>
gchristensen: Right on the money with the beard
<eyJhb>
MichaelRaskin: 3d + svg creates a bunch of png files, for things it cannot make in svg (???). So it ends up being a lot of files with bad quality
<gchristensen>
:)
<__monty__>
gchristensen: Hmm, too true to life. Where's the huge/tiny something?
<MichaelRaskin>
eyJhb: Ah. I normally use PDF outputs and indeed fiddle with rendering resolution
<MichaelRaskin>
Some things might indeed be raster-rendering-only…
<MichaelRaskin>
eyJhb: 3D rendering to vector might be hard to find for the general case…
<gchristensen>
__monty__: I think he's trying to appeal to a wider audience :P
<cole-h>
gchristensen: I had to scroll down too far to understand why your Twitter lost the beard :P
<eyJhb>
Yeah, sadly... Wondering if I should run a pdf2svg after creation... Yeah
<gchristensen>
:)
<eyJhb>
Sadly this is really basic figures, so I hoped it could handle it
energizer has left #nixos-chat ["Leaving"]
<MichaelRaskin>
I wanted an outline torus, and I ended up writing custom drawing code, and now I can appreciate why even very basic figures from 3D to vector is non-trivial
<MichaelRaskin>
Or do you just need polyhedra?
<__monty__>
gchristensen: You should ask for a tiny body hunched over a keyboard with a nixos logo *somewhere*.
<eyJhb>
MichaelRaskin: I need a box.. That's it :p
<MichaelRaskin>
Create an array of boxes, sort by the depth, project and draw projections in 2D
<eyJhb>
Guessing that would be manual work, or is there some smart functions?
<MichaelRaskin>
Not sure; the problem with smart functions providing a 3D-to-vector rendering is that this is a tightrope, one step to the side and it actually becomes hard.
<MichaelRaskin>
Hmmm
<MichaelRaskin>
eyJhb: did you try settings.render=0 ?
<MichaelRaskin>
The documentation says it sometimes works in the simple cases
<eyJhb>
MichaelRaskin: yeah render is = 0, which renders very simple cases. But as... Well, I guess I just can't get surfaces, which might make sense
<eyJhb>
Might have to just wing it. Shouldn't be that hard
<MichaelRaskin>
I think it should manage the bricks, though
<MichaelRaskin>
But yeah, knowing your exact use case allows you to write something very special-case
<eyJhb>
But I think that is for tomorrow. Currenly struggling understanding what my professor means regarding logical clocks etc...
<eyJhb>
Yeah. Hopfully there isn't going to be much 3d
<ldlework>
The cheap spooky game I'm playing right now is "find the bug in your <canvas> renderer"
<cole-h>
Nice. The cheap spooky game I'm playing is "stop getting distracted and read this scholarly article on the Guatemalan Revolution because you have to write an essay on it that's due in 2 weeks"
rardiol has quit [Quit: No Ping reply in 180 seconds.]
rardiol has joined #nixos-chat
<ldlework>
cole-h, manveru, gchristensen, drakonis any of you wanna play a friend of mine? (on your level)
parsley936 has quit [Remote host closed the connection]
<samueldr>
it is such a hard problem, because reproducibility is an overloaded term with different meanings
<ornxka>
isnt nixos hashes just based on the inputs?
<gchristensen>
yeah
<ornxka>
and the build scripts technically have access to the whole system
<gchristensen>
no
<ornxka>
oh, is it a chroot?
<gchristensen>
network and filesystem namespaces
<samueldr>
but the output of your program may end up not being byte-for-byte reproducible if the input built artifact has e.g. different CPU features support, even though the input hashes are all the same
<ornxka>
ah
<infinisil>
And builds have access to /dev/random :)
<samueldr>
heh
<ornxka>
the input space is basically gigantic though, youre right theres cpuinfo instructions
<ornxka>
and that
<gchristensen>
ure
<samueldr>
time and date
<infinisil>
Oh and filesystem can influence the build too
<samueldr>
even the time it takes to finish a build!
* ornxka
wonder if there is a time cgroup namespace..
<samueldr>
yes there is!
<gchristensen>
ornxka: as of a few days ago
<ornxka>
ahh nice
<ornxka>
i guess we are getting closer to complete isolation of linux processes
<gchristensen>
there are other problems, like inode order
<gchristensen>
reproducible-builds.org/
<gchristensen>
has a bunch of info
<__monty__>
ornxka: The time cgroup isn't enough though, because if the build takes a different amount of time the timestamps can still differ.
<ornxka>
ah thats a good point
<ornxka>
disallowing access to any clock is probably the only way to resolve that
<samueldr>
hm
<gchristensen>
just set the time to 1 second past the epoch and never advance it
<__monty__>
Or a clock that's fixed.
<samueldr>
I haven't checked, but I thought I read it also could freeze the time, that cgroup
<__monty__>
samueldr: Oh, really?
<ornxka>
"the trivial clock"
* samueldr
checks
<__monty__>
My info is entirely based on the last time it came up here.
<gchristensen>
but probably a lot of software can't build under those conditions
<ornxka>
it is only right once per epoch...
<samueldr>
hm, can't find it in the release notes
<samueldr>
I might have been wron
<samueldr>
wong*
<infinisil>
Is there a deterministic CPU emulator?
<samueldr>
yes
<pie_[bnc]>
you can get timing information directly from the cpu i think
<samueldr>
I looked into that at one point
<samueldr>
though it might be way too much expensive to deal with
<samueldr>
(not in $$$ but in time)
<pie_[bnc]>
i guess thats the "easy" solution <infinisil> Is there a deterministic CPU emulator?
<infinisil>
samueldr: Yeah I wouldn't be surprised
<samueldr>
though when I looked at it it wasn't for cpu architecture set, but for time passing by
<samueldr>
just saying
<infinisil>
pie_[bnc]: I think it might be the only solution!
<samueldr>
because of how some QEMU tests end up failing because of timeouts due to resource exhaution
<samueldr>
since it looks at the wall-clock, in an extremely slowed-down VM
<edef>
infinisil: i've considered using things like rr
<infinisil>
rr
<infinisil>
?
<edef>
rr, the reversible debugger
<samueldr>
vm goes [b]rrrrrrr
<edef>
noo, you can't just make my processerino run deterministically,
<infinisil>
Haha
<ornxka>
lol
<edef>
basically, rr's premise is that if run single-threaded, processes are deterministic between syscalls
<edef>
it has deterministic thread scheduling, so it can actually handle multithreading
<edef>
aiui it uses CPU performance counters to trigger snapshots in between syscalls as well
<edef>
it'd be a very interesting place to build a reproducibility debugger off of
<samueldr>
does it already handle some kind of monotonic wall clock bound to the execution?
<edef>
plausibly
<samueldr>
that would be really nice
<edef>
i think if you strip it of the snapshotting, it should run on damn near anything
<edef>
(the performance counters on recent AMD CPUs are broken, so rr doesn't really work on them reliably)
<edef>
i suspect you can do ok in terms of limiting instruction set if you involve KVM
<edef>
you at least control cpuid
<edef>
if you want to go further, you could just parse all the instructions and make sure nothing you haven't explicitly approved is in there
<ornxka>
that sounds dangerously close to undecidability :p
<edef>
eh
<samueldr>
I am maybe wrong, but IIRC the instruction set actually still is allowed to be used, even if the cpuid says it isn't available, with KVM
<edef>
if your code is not self-modifying that is fairly decidable
<samueldr>
which was an issue at the time when I was looking at reproducing the issue with Sage that was caused by an older builder executing too new code
<samueldr>
so yeah, I think you'd need to go further
<samueldr>
(or I tested wrongly)
<samueldr>
I had to resort to breaking out my old core duo machine
<edef>
hmm, that's unfortunate
<ornxka>
making a vm i think is the only way to be 100% sure
<samueldr>
yeah, I don't remember if I ended up waiting on an emulated (no virtualization) run to confirm
<ornxka>
it is expensive but only linearly so
<samueldr>
well, `rr` may be enough, without having a VM
<ornxka>
(which is not really a strong consolation in the case of Really Big stuff like chromium)
<samueldr>
AFAIUI it kinda is doing that job
* colemickens
pulls every last hair out
<samueldr>
or at least the part we want
<gchristensen>
ornxka: VMs usually run with hardware support, meaning even then the VM can run instructions you may not want it to. we had this trouble with trying to make a 32 bit VM on a 64 bit ARM host
<edef>
gchristensen: what hardware were you running on for that?
<ornxka>
i meant a pure software vm but i think you could maybe get by with "some" hardware support or jit compilation
<samueldr>
edef: successfully or unsuccessfully? :)
<edef>
i mean, i've only used the Cavium ThunderX's, which do not support AArch32 at all
<samueldr>
a quick but slow way to have that run is a raspberry pi
<ornxka>
if you leave it to the hardware then there is the possibility that they might do something nondeterministic (look at hardware clocks if available, check for existence of certain instructions, check to see which invalid instructions execute, etc)
<gchristensen>
edef: that was on an Ampere machine
<samueldr>
with all the warts it comes with :)
<samueldr>
gchristensen: there's also the taishan machine
<samueldr>
I was looking up the cpu name
<gchristensen>
ohyeah
<gchristensen>
HiSilicon I think?
<samueldr>
yeah, the model though
<gchristensen>
Hi1616
<samueldr>
yep that's it
<samueldr>
the community box runs on that
<gchristensen>
(praise browser history)
__monty__ has quit [Quit: leaving]
<samueldr>
I *think* the rk3399 is fine when you run qemu on either of the cortex cores
<edef>
my current belief is that you should randomise ~all input to a process where possible, and run it twice with different seeds
<edef>
including things like time
<samueldr>
so either 4×A53 or 2×A72.
<gchristensen>
edef: make sure to go far enough to change the year and month and +1
<edef>
and then just debug when it doesn't turn out the same both times
<samueldr>
run it in situations where the 29th of february can exist
<samueldr>
apparently an event that happens mostly every four years is still something unthinkable to make work right
<ornxka>
i believe it, even things that happen every day sometimes dont work right :p
<gchristensen>
my code only turns on the bad features when the moon phase is crescent
<edef>
idk, i'd probably start with SOURCE_EPOCH and add random intervals to that
<edef>
google's approach to build determinism is "assume it isn't, just run the build 1000 times"
<edef>
which honestly seems kind of reasonable, but our build granularity isn't suitable for it
* samueldr
thinks
<gchristensen>
hopefully with some of the tooling from reproducible-builds.org
<edef>
but i think that is a problem worth solving
<samueldr>
with something like `rr` and a good harness, we may be able to trace all impurities?
<ornxka>
i would like to have the kind hardware where "just run the build 1000 times" enters into my mind as a possibility
<edef>
i think there's a cluster of things that together cause us to use lots of our build capacity for rebuilds
<edef>
ie builds that would not even need to happen under a more efficient build architecture
<samueldr>
what kind of inefficiencies you have in mind here?
<edef>
build/cache granularity (derivations can be as huge as "all of chromium"), non content-addressed store, a few other things
<edef>
we have a lot of low-hanging perf fruit admittedly, but these two are the big ones
<samueldr>
am I understanding it well in wanting some way to opt-in individual build artifacts of a build into cache?
<edef>
yes
<samueldr>
sure would help in the chromium-like cases
<edef>
i believe that things like ccache are hacks, and the system could accommodate this at the root
<edef>
bazel is way ahead of us in this respect
<samueldr>
I think it's well understood thinkgs like ccache *are* hacks here :)
<edef>
unfortunately things like bazel are rather clown shoes in the isolation dept, and use system toolchains, and then try to patch that hole with docker images
<samueldr>
without knowing and having researched much, I am thinking the main issue would be guaranteeing the build inputs -> artifact relationship outside of the nix eval
<edef>
yes, this is where our hard barrier between eval and build is an issue
<samueldr>
would that need something like a "nix-flavoured bazel"?
<edef>
i don't think it's actually tenable
<edef>
we end up with all forms of "generate more build plan as part of the build plan" being rather unusable
<edef>
(how widely reviled import-from-drv is comes to mind)
<gchristensen>
recursive nix makes that workable, without mixing eval and build
<edef>
i don't really believe recursive nix is the right answer
<gchristensen>
oh :)
<edef>
it's close to an answer, i think
<edef>
but it's "shove more stuff inside one derivation"
<edef>
because we view derivation boundaries as a hard wall, and we've learnt to think inside that box
<edef>
i view a derivation as the black box within which we allow nondeterminism
<edef>
and i think making that box larger is counterproductive
<edef>
i think that even things like fetchzip are making that box too large
<gchristensen>
cool
<edef>
i think that recursive nix is the "pragmatic" answer, perhaps
<edef>
i'm not really sure how to read your response, gchristensen
<gchristensen>
I think that is a cool way to look at it, and I agree about the shadiness of fetchzip and its cousins
<edef>
currently our unit of build job scheduling/isolation and nondeterminism are the same thing
<edef>
they don't have to be (but it would be a fairly large break from Nix's current model)
<gchristensen>
I think it is cool that Bazel has shown you can convince projects to move to an incredibly constrained model of building, on a per-file basis
<samueldr>
(you can click and shift-click to select a range in the logs interface)
<tazjin>
it might be something I could use inside of buildGo, buildLisp etc.
<samueldr>
though I may have included the discussion preceding what gchristensen had in mind
noonien has quit [Quit: Connection closed for inactivity]
<abathur>
samueldr: glad to see that works; I've idly wondered if it'd be feasible for a bot or maybe local weechat script to generate welcome-back-here's-what-you-missed links
<cole-h>
Anybody have any suggestions for a decent keyboard with QMK that goes for less than or equal to USD $200? Mine's started to repeat keys at random times.