log☇︎
▁▁▁▁▁▁▁▁⏐︎▁▁▁▁▁ 1916
feedbot: http://bingology.net/2019/01/11/more-lessons-learned-pizarro-entering-2019/ << Bingology - BingoBoingo's Blog -- More Lessons Learned - Pizarro Entering 2019
BingoBoingo getting some sleep
asciilifeform: meanwhile via #asciilifeform : http://btcinfo.sdf.org/blog/building-the-eulora-client-with-gentoo.html << apparently d00d cleanly baked client on cuntoo ☟︎
diana_coman: oh hey asciilifeform , that looks good!
diana_coman: client did build previously on gentoo so yes, I'd expect it builds on cuntoo as well really
feedbot: http://qntra.net/2019/01/us-profesional-organization-for-psychologists-condemns-masculinity-as-harmful/ << Qntra -- US Profesional Organization For Psychologists Condemns Masculinity As Harmful
asciilifeform: diana_coman ( and mircea_popescu , when he wakes up ) -- do you have a position on http://www.loper-os.org/?p=2963#selection-2087.0-2115.72 ?
asciilifeform: meanwhile, pehbot updated
asciilifeform: !!up pehbot
deedbot: pehbot voiced for 30 minutes.
asciilifeform: !A .008871B618BB1046D3E9402594D417A66A008A783015CE571154D8FBA8FBFA28.003706868725DC1588310446A51BADC1461ACED1F02AE12768D926D9EADEF4E8G#
pehbot: asciilifeform: 0000000000000000000000000003D29513C432BF1D2A8A0E47BFBDCF33649538
diana_coman: asciilifeform, hm, I can't say that I have a very clear idea of ALL potential implications but atm I don't see some specific downside to that; I suppose the alternative would be to raise an error on gcd(0,0)?
asciilifeform: diana_coman: correct
asciilifeform: diana_coman: near as i can tell, nobody ever does tho
asciilifeform: !A .0.1G#
pehbot: asciilifeform: 0000000000000000000000000000000000000000000000000000000000000001
asciilifeform: !A .1.0G#
pehbot: asciilifeform: 0000000000000000000000000000000000000000000000000000000000000001
asciilifeform: !A .0.0G#
pehbot: asciilifeform: 0000000000000000000000000000000000000000000000000000000000000000
diana_coman: myeah, that's not in itself a reason to not do it (if anything, it's the opposite really, given the usual "what everybody does"
asciilifeform: diana_coman: correct. but i also did not 'ha! let's make it eggog cuz nobody did' ☟︎
asciilifeform: ideally would like to conceive of a justification for either setting.
diana_coman: mathematically it does grate, yes
diana_coman: is the performance penalty significant?
asciilifeform: depends where used.
asciilifeform: i'ma leave it permitted for nao, and if somebody has persuasive arg why to prohibit, will listen.
diana_coman: other than that the "reason" I can see is that otherwise in principle you need an additional check each time you call gcd (i.e. to make sure you don't step even if once in a blue moon) on this particular rake
asciilifeform: yes.
asciilifeform: i sat down last night and tried to conceive a 'div0'-style situation where you 'bought own cross' as result of permitting gcd(0,0) to execute. but did not find one.
diana_coman: I suppose only in some silly situation such as "let's take 2 numbers from user; compute gcd and then proceed to divide and print results"
asciilifeform: rright but why wouldja do that.
asciilifeform: if yer dividing, you gotta determine that it aint by 0.
asciilifeform: e.g.,
asciilifeform: !A .1.0/#
pehbot: asciilifeform: EGGOG: Pos: 4: Division by Zero!
diana_coman: well, because technically gcd is never 0, right?
asciilifeform: !A .1.1.0M*
pehbot: asciilifeform: EGGOG: Pos: 7: Division by Zero!
asciilifeform: and so forth
asciilifeform: diana_coman: indeed gcd aint ever legitimately 0.
diana_coman: i.e. why would you check a gcd for not being 0 since it should never be 0
diana_coman: so there
asciilifeform: imho arg can be made for it being the gcd-invoker's responsibility to know what to do with the output ☟︎
asciilifeform: ( and observe that all instances where we divide, we're doomed to check for 0 regardless )
asciilifeform: in situation where cpu cost matters greatly, testing 1 register (output of gcd) for nullity is cheaper than testing two (its args)
asciilifeform: possibly this is why it was traditionally permitted.
asciilifeform: ( tho it grates on me that i never found any coherent discussion of subj anywhere, yet )
diana_coman: possibly; at the end of the day it's a choice and one can have gcd implemented one way or another, as long as the choice made is clearly stated on the tin
asciilifeform: correct. hence why i decided subj is worth touching in the piece & in the l0gz.
asciilifeform: it is also clearly stated in the proggy comments.
asciilifeform: diana_coman: iirc gcd(0,0) is permitted in your sys also
diana_coman: http://btcbase.org/log/2019-01-09#1886075 -> on additional digging, static lib apparently does have libnameinit so yest I was looking for the wrong thing ☝︎☟︎
a111: Logged on 2019-01-09 14:14 diana_coman: my trajectory in hitting walls on this was precisely that: make it static -> surprise, no adainit exported/included, checked the .a file and everything, went nuts; make it dynamic -> ugh, need -lgnat and whatnot; rtfm again and again, there is this calo-magar
diana_coman: but now I'm confused on whether *that* is enough or not (standalone thingie claims it takes care of everything needed for elaboration, correctly)
asciilifeform: diana_coman: if your 'main' is a c/cpp proggy , you gotta trigger the elaborator 'by hand', regardless of which type of lib your ada coad is in, afaik.
diana_coman: asciilifeform, yes, but is the one generated for static lib the same? or wtf is with the encapsulated-shit then?
diana_coman: because in the docs it's claimed that non-ada main should be with the encapsulated-lib version, ugh
asciilifeform: last time i touched the subj with own hands, i concluded that elaborator isn't even permitted in static ada lib.
asciilifeform: but i cannot yet say conclusively. diana_coman is at the bleeding edge of this q.
diana_coman: so far it certainly feels like bleeding, dunno about edge
asciilifeform: diana_coman: what i meant was, my proggy has no elaborator, and yours -- has, so i am not qualified to say 'here's how to fix elaborator in static lib' of yet.
diana_coman goes to read some more and test even more
asciilifeform goes to tea
asciilifeform: diana_coman: if you're utterly stumped, i can allocate some cycles to the problem tomorrow -- with mircea_popescu's permission ( i swore to him that i will not embroil meself in matters euloric , recall ) ☟︎
asciilifeform: ... or i suppose if yer still stumped next friday night, then.
asciilifeform: unrelatedly: diana_coman , were you ( or anyone else... ) ever able to derive a bound for 's' in m-r ? ( http://ossasepia.com/2017/12/28/eucrypt-chapter-3-miller-rabin-implementation/#selection-125.2765-125.2766 )
asciilifeform: cuz without a bound, s is potentially ffawidth - 1 .
asciilifeform: which means ugh, for e.g. 2048bit candidate being tested for primality in constant time, ~each~ witness needs 1 modexp and 2047 modsquares !
asciilifeform: hrm , asciilifeform's 'wtf' to this was based on a backwards reading of his chalkboard. modsquares are fast.
asciilifeform: so we dun actually care.
asciilifeform: would still be handy if someone knew of a smaller bound for s, but not burning q. ☟︎
asciilifeform: btw per asciilifeform's chalkboard, the physical cost of constanttime m-r is ~equal to that of (2 modexps of the given width) x (number of witnesses) . ☟︎
asciilifeform: this means that the use of gcd litmus very muchly wins.
asciilifeform: take for example diana_coman's system , where 16 witnesses are used. ( i'd use moar, but let's go with the example. ) so if we're generating 2048b primes (for 4096b rsa mod), per ch.14b timings on asciilifeform's iron this costs ~2.9s per modexp, and thereby ~93sec per m-r procedure.
asciilifeform: whereas the gcd litmus ( gcd(candidate, primorial) ) costs 1ms . ☟︎
asciilifeform: anyway i'ma post the actual physical measurement once i have it, but i dun expect it will be far from this chalkboard figure.
Mocky: is the number of witnesses to be a knob or fixed?
asciilifeform: Mocky: what'd 'fixed' mean ?
Mocky: hard coded
asciilifeform: nope
asciilifeform: per the ffa plan, 'P' command will take two numbers from the stack, a candidate integer and a witness. author of pcode tape determines how many witnesses to use, he iterates by generating witnesses and calling P repeatedly as many times as he wants
asciilifeform: ( in each invocation, P returns 1 if m-r didn't 'go bang' and a 0 if did. )
asciilifeform: presently looping is prohibited in pcode, in later ch. will be introduced. (but i am spoiling things..)
Mocky: right
asciilifeform: this allows 'P' to be a constant-spacetime operation, and hands the decision of 'just how important to constant-time the whole prime generation' to the author of the tape.
asciilifeform: ( he can use 'G' as litmus, or not use, can use 16 witnesses or 666, etc, rather than being forced into a particular scheme )
asciilifeform: see, i fucking hate 'magic numbers'.
Mocky: indeed
asciilifeform: the only 'magic number' in ffa is the concession that all FZ must be at least 256bits long
asciilifeform: and this was forced by the irons ( it's evenly divisible by all known bus widths )
asciilifeform: ( re 'how many witnesses', see diana_coman's article, it reviews the necessary maffs, i.e. P(yer prime aint a prime and you die) == (1/4)^n, where n is # of witness ) ☟︎☟︎
asciilifeform: observe that by this scheme, we also avoid hardcoding primorials for 'G' test. author of tape is responsible for including a primorial ~for his chosen ffawidth~ if he intends to use G litmusing.
asciilifeform: consider from pov : there is no particular reason for enemy to know precisely ~how~ you baked the primes for yer privkey.
asciilifeform: a 'graduate' of ffa (i.e. fella who ~read~ the thing, as it was intended to be read, and fit-in-head) will have no trouble writing his particular variant of correct prime generator for his particular type of key.
asciilifeform: i'ma include a few obvious approaches as example tapes, but it is NOT the intention that anyone use'em as-found.
asciilifeform: 'peh' is intended as a working, weaponized demonstration of the 'specificity of diddling' principle. (but perhaps this was obvious to errybody.)
diana_coman: http://btcbase.org/log/2019-01-11#1886349 -> better spent on ffa, surely; thanks for the offer anyway though! ☝︎
a111: Logged on 2019-01-11 16:49 asciilifeform: diana_coman: if you're utterly stumped, i can allocate some cycles to the problem tomorrow -- with mircea_popescu's permission ( i swore to him that i will not embroil meself in matters euloric , recall )
diana_coman: so far I can tell that the static lib has the huge disadvantage that one needs then to link with it everything but the kitchen sink to bring in all it needs from ada runtime
diana_coman: so that'd be at least the "encapsulated" part explained ☟︎
asciilifeform: diana_coman: plz dun see the orig statement as ' asciilifeform presumes that diana_coman is dummkopf and problem is trivial, asciilifeform can do it with 1 hand '. i simply dun like to see people sitting stuck, is all.
asciilifeform: and ftr i'm surely doomed to run into diana_coman's puzzler myself, when i go to write a threaded proggy (e.g. adaized trb) ☟︎
diana_coman: asciilifeform, I know, no worries at all! onth I'm not going to *sit* stuck, no - digging at it
asciilifeform: aite
asciilifeform: meanwhile, in other lulz, http://koclab.org/ffa.html
asciilifeform: ( i dun have a trademark on the phrase, naturally, but still a lul )
asciilifeform: http://www.reparaz.net/oscar/misc/dudect.html << elsewhere in heathendom.
feedbot: http://qntra.net/2019/01/huawei-sales-director-arrested-in-poland-over-ambiguous-spying-charges/ << Qntra -- Huawei Sales Director Arrested In Poland Over Ambiguous Spying Charges
asciilifeform: lol dafuq was he doing in the reich
BingoBoingo: Selling
asciilifeform pictures convo, 'hm we send the n-th d00d to trade with the natives' 'and..?' 'skull came back, cannibals ate' 'who wants to go next'
asciilifeform: http://btcbase.org/log/2019-01-11#1886376 << grr, oughta be 1/(4^n) ☝︎
a111: Logged on 2019-01-11 17:48 asciilifeform: ( re 'how many witnesses', see diana_coman's article, it reviews the necessary maffs, i.e. P(yer prime aint a prime and you die) == (1/4)^n, where n is # of witness )
asciilifeform: err, nm, lol, they're same thing, asciilifeform prolly oughta go to bed
feedbot: http://qntra.net/2019/01/three-weeks-into-partial-usg-shutdown-over-single-budget-item-small-signs-becoming-visible/ << Qntra -- Three Weeks Into Partial USG Shutdown Over Single Budget Item, Small Signs Becoming Visible