phf: there's no "escape" as such. instead it generates an adhoc escape (say replace dot with ZZ or whatever) and then patches that one line using s///.
phf: well, that's not inband magic! still "ick"
phf: newline is not a non-printable
☟︎ phf: ffs, i resent being placed in a position of defending something that i'm not responsible nor care for. diff -e would've been closer to "teco macros", but it's the "sane teco macros" we're talking about here, etc. etc. etc.
mircea_popescu: in other news, obama's been doing more reality tv work than the entire kardashian extended family these past few days.
mircea_popescu: it's the irony of all time that while the progre press was derping about how trump will lose the election and try to turn it around into a television show, the reality turned out to be he won the election AND OBAMA is trying to turn his losership into a tv personality
ben_vulpes: eh, obab's just wants to grab some pussy
mircea_popescu: asciilifeform no the classification proposed is quite serviceable.
mircea_popescu: phf i guess we will sooner or later have to actually formulate the patch format yeah.
mircea_popescu: re octopus - no other effect individually ; but living long is bad for the species, as hillary well exemplifies.
a111: Logged on 2016-12-30 00:04 phf: newline is not a non-printable
trinque: mircea_popescu: it'll be up there in a sec, let ya know
trinque: gotta finish writing the thing that triggers granular (per-nick) updates, leaning on a full rebuild for now.
trinque: ben_vulpes and I had an interesting conversation yesterday about how to handle static sites generated from a db. idea we ended up with was that we'd have triggers which emit a pg_notify signal when the "dirty bit" has flipped for any page.
trinque: db operator has to go through and manually apply these triggers. for example, updates on either a "to" or "from" rating will require a rebuild of the nick pages in both directions.
trinque: there's a listening process consuming these pg_notify events, of the form (gen-nick-page "trinque") which debounces them according to some sane interval, i.e. if a few updates hit the same user in a short span, it will result in one single rebuild
trinque: asciilifeform: because people update their ratings
trinque: ben_vulpes: and yes, app code needn't be anywhere near www
trinque: asciilifeform: that is precisely what I just said
trinque: this model has nothing to do with sql
trinque: and everything to do with shitty html flowing from properly structured data
ben_vulpes: trinque: just sed and awk the html you have in place to update ratings
trinque: I am not using html as a data storage format what the hell
trinque: asciilifeform: the question answered here is "why regenerate the same idiot HTML every www request?"
ben_vulpes: "this shape" being selective html regeneration? or mutation in place?
trinque: wot.deedbot.org will likely result in two genesis patches down the line. one for the tool, other for the particular site
trinque: if asciilifeform should ever want it
trinque: I am not moving from it until I have another database in hand
trinque: yeah yeah. /dev/null is even faster
trinque: but the right answer is as much or as little structure enforcement as you like.
trinque: this is not the direction from which to come at this subject
trinque: conflated in "database" is both a user interface and a programming environment
trinque: as the shell is a user interface, in the first case
trinque: recall I conceded in the bitcoinfs thread that what I consider to be "database" is actually many orthogonal tools related to data manipulation, atomicity of operations, adherence to type constraints ~if desired~
trinque: that sounds like a bug, really, but the kind of bug the complexity of the thing makes hard to remove
mircea_popescu: trinque i think that's how pretty much everyone ends up doing things.
trinque: mircea_popescu: ah you know what, excluding nicks with no ratings breaks this, because writing the keyfile happens inside that logic.
trinque: I'll instead write the page and exclude from the index
trinque: noobs can aspire to be named there
a111: Logged on 2016-11-19 18:52 asciilifeform: Framedragger: db being hammered 24/7 with 'do we have this hash' 'do we have this fp' 'add this and this' 1000/sec is the bottle.
mircea_popescu: asciilifeform there would be two trees not "two genesises" in his idea, he's making a tree for the site and a tree for the tooling.
mircea_popescu: and gtfo with the inept simile, the correct comparison is "imagine if your cock didn't work if there was already one in the target woman". which i bet yours doesn't, so really.
trinque: asciilifeform: we poor bastards who made money living inside SQL find ways to make it work.
trinque: but if not sooner, I have orthogonal organs of database given independent life as a retirement project
mircea_popescu: trinque ok so can i get this guy's key he's kinda weaiting for an acct.
trinque: mircea_popescu: yep works now
trinque: and I'm tweaking the site generator
trinque: asciilifeform: aside "write a data manipulation environment that provides what trinque demands" I do not see a path here.
trinque: when I build things to ask the fs how many customers in new york placed orders on the weekend it starts to look quite like a relational db
trinque: could be. I'd like to see the design for such a thing.
mircea_popescu: we still didn't see the profiling for the symlink thing\
mircea_popescu: if it starts with picture it can't be a part of this discussion.
phf: picture a spherical horse in vacuum (tm) (c)
phf: asciilifeform: i will have to concede, (graphic-char-p #\newline) NIL
phf: well, (graphic-char-p #\space) T
mircea_popescu: phf for my own curiosity, does anything in the rest of your life piss you off as much in aggregate as one session with these assholes ?
phf: hehe, as much? no. but that's only because if there's one lesson i learned from naggum, all this rage is not healthy.
phf: also i learned long time ago that americans* aren't taught how to argue properly, so when they do they have a really hard time keeping the thread, keeping more than one point, developing an argument, bringing it back to original point, etc. consensus intelligentsia are all very civil, so when you do get them railed up, they just flail, sort of discourages from even trying
trinque: lol, but then russians take the thread wherever they like without telling anyone.
trinque: phf: when I brought to you "whence the disjunction between the practical and theoretical sides of subj" your output was "OP == faggot"
trinque: lets not speak of flailing
ben_vulpes: a) capture output of `patch' to determine which files were patched
ben_vulpes: b) when working through the list of each patch's children, search through the list of patched files until the patched filepath is a subsequence of the filename as recorded in the vpatch
ben_vulpes: c) hash that file and compare to the vpatch contents
ben_vulpes: the only other thing that i can think to do here is to grab the set of parents and children, match them up, and then get the lowest common denominator (if you will) file path for each patched file directly from the vpatch
ben_vulpes: the third approach is to apply each patch to an empty directory and determine what files would have been patched, had it applied cleanly.
phf: ben_vulpes: well, we're kind of constrained by the hardcode -p1 behavior, but i've no idea if that's an implementation detail or a spec
ben_vulpes: i've been frowning at -p1 for a bit now
phf: so the simplest solution would be to at least parametrize an equivalent of -p1 on lisp side
phf: -p1 means a/foo/bar gets pressed as foo/bar
phf: with p2 same guy gets pressed as bar
ben_vulpes: phf: patch will apply something cleanly with mismatched depths, won't it?
trinque: patch will ignore the number of levels you specified with -p
phf: i think it treats one of the names as canonical
☟︎ phf: actually patch seems to do ... something magical
ben_vulpes: would a smallest common substring test suffice here?
phf: that's what btcbase does basically. it finds position where common suffix starts and then works from there..
phf: but i'm starting to think it's an overkill anyway, because it doesn't accommodate for all possible insane patch inputs.
ben_vulpes: what's an insane input that breaks the shortest common substring test?
phf: patch/diff lets you have a patch with --- foo +++ bar in which case it seems to ~check if foo exists, then try and press against foo, otherwise press against bar~
phf: so if you were to produce a patch with a/old-veh.lisp and b/veh.lisp. existing vtrons will happily press it, though it's a total clusterfuck
☟︎ phf: actually that's a bad example because that'll work, but a/old.lisp and b/veh.lisp
mod6: anyway, yeah, as I said in #trilema-mod6, i see this as low-priority and SUPER high risk. but I'm open to suggestions how to implement this properly and safely.
ben_vulpes: phf: i actually can't get patch c/old.lisp and d/veh.lisp to apply derp.vpatch
phf: ben_vulpes: where'd that 0 come from?
phf: also you're missing genesis
mod6: i think you maybe mean '-F' instead of '-f', it thinks 0 is a file
ben_vulpes: 1 thing of note is that your example patches an extant file in holyfuq/
ben_vulpes: would it be unreasonable to calve this scenario off?
ben_vulpes: good to know that terminal prompt of yours survived the trip through the pastebin
ben_vulpes: "tee p" just papers your house with the output or what
ben_vulpes: i would also like to see the vdiff into which you're piping diff, mostly out of curiosity
phf: tee writes piped input to stdout and to a file
ben_vulpes: eager juvenile algos are eager and juvenile
a111: Logged on 2016-06-20 04:23 phf: which is handy if you're using something else to produce the patch, or if you need to use a non-trivial diff command. for example i sometimes need to exclude files from diffing, so a command might look like diff -x foo -x bar -x qux -ruN a b | grep -v '^Binary files ' | vdiff > foo.vpatch
ben_vulpes: phf: when i crack my v again in the morrow, i'm going to implement hash-checking against longest common directory tree
ben_vulpes: ^^ mircea_popescu asciilifeform mod6 trinque and any other vtronicists pls to opine
phf: will probably cover majority of cases(tm)(c)
phf: huh, apparently plan 9's diff/patch doesn't even implement unified diff format
ben_vulpes: felipelalli, vexare, wyrdmantis, Sinclair6, luke-jr please fix your bouncers
☟︎ phf: i noticed that btcbase supports filenames with spaces in them: if you start a filename with " it will read until a closing ". i have no idea where i got this from, because gnu diff/patch don't support spaces in names.
ben_vulpes: wait phf hang on no i don't think i'm going to do the largest common, i think i'm just going to use the output of patch to figure out what was actually patched
ben_vulpes: !up luke-jr well did you read the link or what
phf: ben_vulpes: you mean like ~parse~ the output of patch?
ben_vulpes: phf: when it works, it outputs the list of patched files
ben_vulpes: one can patch an empty directory with an arbitrary patch and extract the filenames patch wanted to hit
ben_vulpes: luke-jr: i know you're awake and reading this because you pm'd me. don't pretend otherwise, it's downright foolish.
deedbot: luke-jr voiced for 30 minutes.
luke-jr: I saw the link. didn't see a problem.
ben_vulpes: top 10 in disconnects over the year? no problem?
ben_vulpes: you want to matter in crypto but "nah bro, it's just my isp" at me?
luke-jr: want to donate $30k so I can get a better ISP? :p
ben_vulpes: what part of bumfuckistan do you live in that prevents colo access?
luke-jr: not that IRC is all that important
ben_vulpes: it's like omfg even aws is barely 10us/mo for a vps you don't have to trust
ben_vulpes: nah, park your boat on the lawn, who cares
ben_vulpes: wear a shirt with last weeks sweat stains on it, it's not like you're that important
davout: luke-jr: it's not like you *have* to idle in the chan, logs are public and if you have something to say, it's a /join away
ben_vulpes: a join and an up, which is predicated on the obvious
ben_vulpes: for those who *still* miss the point, joining and parting is opening and closing the squeaky doors on a hall where 5 people are arguing and 500 muffling laughter and groans
mod6: fwiw you can turn off those messages in your client too.
ben_vulpes: i will not spend the time to figure out how to mute everyone but noobs i've never seen before
ben_vulpes: i see a new face at the back of the hall, i'm going to give them the opportunity to at least say hello and introduce themselves.
ben_vulpes: mod6: how does that help me filter luke-jr's spam and not noobs?
ben_vulpes: amusing innit that the father of the since-aborted 'blockchain spam' meme is now spamming irc
davout 's trb node is now up and apparently syncing at 62.210.206.141
ben_vulpes: davout: you will sync far more quickly if you -connect to a single, high reliability, high bandwidth node during sync
ben_vulpes: otherwise trb may decide to ask utter randos for blocks
ben_vulpes: and waste time negotiating connections
ben_vulpes: not that it cannot be done that way, but it is faster other ways.
a111: Logged on 2016-12-29 23:08 asciilifeform: also i see some 'connect() failed after select(): Connection refused' which iirc is bleeding edge prb kicking trb out
davout: ben_vulpes: any suggestions for such a node?
ben_vulpes: i believe that mod6 has a solid one as well, pete_dushenski's has been blackholed of late
davout: OSX, totally the platform sane people develop on "valgrind: This formula either does not compile or function as expected on macOS" hurrrr
davout: "plox to use xcode, where everything works differently, because reasons"
davout: out of curiosity, how long did it take trb node operators to fully sync?
☟︎ BingoBoingo: davout: 30 days to Februrary 6th 2015 block 34236 in latest sync
BingoBoingo: need to remind self blockchain only gets longer
davout: i guess patience is in order here
davout: was there a discussion of the use case where one wishes to create, and sign transactions from an arbitrary set of unspent inputs?
☟︎ a111: Logged on 2016-12-30 01:20 asciilifeform: yeah but one that doesn't motherfucking grind to a halt when read 1000/sec omfg
a111: Logged on 2016-11-21 12:48 Framedragger: asciilifeform: since i'm fiddling around with postgres for work anyway, i'm curious, if you find a moment, could you maybe send me the postgresql.conf file on phuctor's machine? i'd take a look (it's very possible you know much more re. what's needed there, but i'm just curious about a coupla parameters, doesn't hurt to check)
Framedragger: would still be interested to take a look, wouldn't hurt.
Framedragger: (i'm thinking about things like size of shared buffers etc)
☟︎ a111: Logged on 2016-12-30 12:53 Framedragger: (i'm thinking about things like size of shared buffers etc)
Framedragger: asciilifeform: do you have an idea how much memory you could allow postgres to eat up? i know you have that other super hardcore thing eating lots of memory on the side
Framedragger: it's something that can be very easily changed and tested without sweat or breaking things.
Framedragger: aha right. i'm doing sth else but i could later ping you with a sample postgres file which you could try out (would need db restart)
Framedragger: i'm thinking,more memory could help with certain things that db is busy with, incl insertion, even. i'm not sure.
Framedragger: busy for a bit, i don't want to cite you sth without thinking about it
Framedragger: right. i just thought about checkpoint_completion_target (set to say 0.9) which may help with inserts, but ultimately you're right, physical reality
Framedragger: to be 100% certain, i'd have to check. i see your concerns.
a111: Logged on 2016-07-18 18:08 asciilifeform: i know of no file system that would not choke.
Framedragger: asciilifeform: i take it you are certain that main bottleneck and 'hogger' is the numerous inserts?
Framedragger: mircea_popescu: it's dark here in the northern hemisphere, god it's deperessing :( mornin'..
Framedragger: ahh right, i assume those include in-memory sorts
a111: Logged on 2016-11-19 18:52 asciilifeform: Framedragger: db being hammered 24/7 with 'do we have this hash' 'do we have this fp' 'add this and this' 1000/sec is the bottle.
Framedragger: work_mem (used for in-memory sorts) is 4 MB default. 4 MB. (9.5 anyway). set it to 50 MB as per advisory at least.
Framedragger: ah hm. tbh i'd still change work_mem because it's ridoinculously low by default, but i hear ya.
Framedragger: (some of those settings don't require db restart (but may require to 'flush' params), some of them do, best to restart db after all changes are made.)
Framedragger: (do note, 'work_mem' is per user / per request. so may be easier to DoS. thought i should mention this for completeness)
☟︎ Framedragger: asciilifeform: any JOINs in those multiple queries for each 'insert'? (if yes, this param should help.)
Framedragger: asciilifeform: docs advise heavily on enabling write cache (but (sanely) insist on battery backup in that case) for your 'loads of inserts per sec' use case..
Framedragger: "For situations where a small amount of data loss is acceptable in return for a large boost in how many updates you can do to the database per second, consider switching synchronous commit off. This is particularly useful in the situation where you do not have a battery-backed write cache on your disk controller, because you could potentially get thousands of commits per second instead of just a few hundred."
Framedragger: << need to understand just what does that imply..
Framedragger: "lose weeks of work" is insane :( i'm sorry to hear that. *this* would not expose you to that scenario. but one would have to pin down still-possible data loss scenarios, if any.
Framedragger: here's what i'm thinking: disable synchronous_commit , but set 'checkpoints' so that results are flushed to db every $n inserts/updates. i can see however how you may barf from such an idea, "it's either reliable, or isn't".
Framedragger: but this way you would constrain any losses to particular known amounts.
a111: Logged on 2016-12-30 05:22 phf: i think it treats one of the names as canonical
mircea_popescu: asciilifeform hey, i only said they exist, i didn't say their brains work.
Framedragger: "Note that open_sync writing is buggy on some platforms (such as Linux), and you should (as always) do plenty of tests under a heavy write load to make sure that you haven't made your system less stable with this change. Reliable Writes contains more information on this topic. " oh god. more inserts/sec but zero data loss => probably can't help you much. documentation doesn't encourage me :/
mircea_popescu: Framedragger data loss is catastrophic to a degree that can't be described, as far as phuyctor goes. if you have to also check, your workload goes up 3x at least.
Framedragger: mircea_popescu: consider a scenario in which you knew how much data you could lose ("up to 100 last rows"), and you could check if you lost any (last row id == last-id-processed.txt ? false : true). that being said, this way things become more wibbly-wobbly, so probably fuck that. :(
a111: Logged on 2016-12-30 05:40 phf: so if you were to produce a patch with a/old-veh.lisp and b/veh.lisp. existing vtrons will happily press it, though it's a total clusterfuck
mircea_popescu: Framedragger see here's what graybeard means : i see that statement, and I KNOW there's a footnote somewhere you don't know about / bother to mention which says "except when abendstar in conjunction with fuckyoustar when it's 105th to 1095th column".
mircea_popescu: because it is not computer-possible to have what you describe without what i describe.
mircea_popescu: consider the simple case of "check values, actuate machinery" in article linked here a few months ago. it is quite fundamentally informative.
Framedragger: right. either it's completely-reliable, or NP-complete complex dragons in a cave
mircea_popescu: well not exactly like that, but i guess that may work for a heuristic early on.
mircea_popescu: the issue is the magic numbers. you said "100". why did you say "100" and how did you [think you] knew ?
Framedragger: mircea_popescu: because you could tell postgres to flush rows (forcing all caching layers) every 100 rows, not every 1 row as currently specified
mircea_popescu: what you do is not supposed to be predicated on what you can do at any point in your existence.
Framedragger: i suspect then that the inserts/sec slowness is due to postgres currently making really damn sure that *all* layers of cache are forced. this "full forcing of cache for every row" is what makes things slower; but it's also the only really-super-reliable approach for the case at hand (remote box).
mircea_popescu: Framedragger think for a second : modulus gets added, it's in cache, other modulus gets added, they don't get checked against each other because one was in cache, now we have two unpopped poppables in db.
jurov: just a side note - if using filesystem, for ACID guarantee you'd need to flush caches, too
mircea_popescu: wich is why fs sql is contemplated for bitcoin, not really for phuctor's woes.
mircea_popescu: asciilifeform actually a portion on a ramdisk may even be judicious.
jurov: asciilifeform: journal is not some magic allowing you to have 100k transactions.second without possibility of data loss
mircea_popescu: asciilifeform ah, i didn't realise you were happy with linux readcache.
mircea_popescu: on the other hand submitter support is not mandated, they fail to produce a significant portion of the input.
mircea_popescu: for that matter they fail to change their own diapers, either, end up having Framedragger write code for them etc.
mircea_popescu: incidentally, i would say deedbot also counts as tmsr keyserver now.
mircea_popescu: asciilifeform hey, i'm not surfe i want it to work on heathens what.
mircea_popescu: sure. i'm not saying it must be standardized. just, there.
mircea_popescu: note that as time rains on, this sort of query becomes less and less interesting
mircea_popescu: "was gcc 5.x rms approved or not ?" "dude... who cares. it fails to build eulora."
diana_coman: ideally it will eschew cpp alltogether but so far not ideal
mircea_popescu views with mind's eye diana_coman 's beard growing inches/second in the minds of alf
diana_coman: asciilifeform, atm we are still slowly, slowly extricating ourselves from the swamps of ps code
jurov: it does not use much c++stdlib, but the crystalspace reimplementation of
mircea_popescu: the server code's not published, and the client code is mostly legacy.
diana_coman: planeshift asciilifeform , a swamp not worth gettting stuck into
diana_coman: planeshift is an open source mess that was used to jumpstart eulora basically
jurov: planeshift is opensource game, crystalspace is the engine
mircea_popescu: asciilifeform planeshift is a mmorpg that the many-eyes beast took 10 years to make. it uses cs which is a sort of game engine, which is built on cal3d which is a gfx lib.
mircea_popescu: the quality of code is uneven in the usual foss sense ; its main virtue is that being old, it is mostly not new.
diana_coman: and it manages to have some half million lines of code doing the job of maximum 100k by the looks of it
mircea_popescu: (they did decide to move over to unity last year, then they abandoned the plan._
mircea_popescu: that's ok, the planeshift implementation leaks at pretty much every other rivet
diana_coman: basically crystalspace has its own "boost" implementation yes, leaking as expected and on top of that planeshift uses it all over the place quite without any rhyme or reason, adding further to the swamp;
diana_coman: fwiw I can confirm that current code compiles perfectly fine on gcc 4.4 in any case
diana_coman: got to some snow, sledged downhill, even bruised a knee , got back to peaceful coding now , lol
diana_coman: how's that eulora-box coming in 2017 mod6 ? :D
mod6: nice! i haven't done any sledding yet. gotta do that one of these times.
mod6: oh, hey, actually. so I've got a box.
mod6: i had obsd on it like for nearly all of '16... but wasn't doing anything with it. so i threw linux on there.
jurov: For the uninitiated, there's already c++17 underway. With folks gearing up to c++23, when We Will Finally Reach Parity With Haskell(noshit).
mod6: when I get a free moment, i'll throw the latest eulora on there. can be my mining box. :]
jurov: i was just paraphrasing, don't remember the exact word
diana_coman: asciilifeform, to round off: atm eulora code is basically c99 (even that rather reluctantly when we moved over to 64bit)
mircea_popescu: oh also, friendly reminder today's last day of eulora hackathon. closes in ~11 hours.
a111: Logged on 2016-12-30 06:58 ben_vulpes: felipelalli, vexare, wyrdmantis, Sinclair6, luke-jr please fix your bouncers
mircea_popescu: oh hey, check it out, irc isn't that important. smart move, barely tolerated fraudster.
mircea_popescu: and for the record : the dood colluded with sonny vleisides / the rest of the 'ndrangheta running "bfl" scam (which, obviously, the usg hasn't ever prosecuted, in spite of loud violation of, eg, parole termas, because hey, partners in crime) to falsely claim that he received a miner delivery so as to scam bitbet into misresolving a bet, on which they had ~500 btc.
mircea_popescu: if he weren't a total fucking retard on top of being a consumate conman, he'd actually have 30k to buy an isp now.
a111: Logged on 2016-12-30 09:13 davout: out of curiosity, how long did it take trb node operators to fully sync?
a111: Logged on 2016-12-30 12:28 davout: was there a discussion of the use case where one wishes to create, and sign transactions from an arbitrary set of unspent inputs?
a111: Logged on 2016-12-30 14:20 asciilifeform: i even spoke with career dbists, answer was 'your application is monstrous abuse and you need a cluster'
a111: Logged on 2016-12-30 14:30 asciilifeform: i'ma try it soon.
a111: Logged on 2016-12-30 14:32 Framedragger: (do note, 'work_mem' is per user / per request. so may be easier to DoS. thought i should mention this for completeness)
mircea_popescu: incidentally asciilifeform since we're now doing open source db optimization shared_buffers is probably a larger concern. what is it ? defaults to 125mb but i'd readily see it 1-4gb in your case.
mircea_popescu: 1) shared_buffers is to be per spec "25% of available ram" ; but it does diminish returns in the gb. you probably have it as 128mb, make it 2gb say.
mircea_popescu: and work_mem should prolly be larger than 4mb, but hard to guess how large without a profile, and this is a major resource consumption ticket, so you actually want to do some maffs.
mircea_popescu: yes but what it uses it for is sorts, select by index may use it if the index is composite.
mircea_popescu: do you actually just recycle one connection or do you keep making connections ?
mircea_popescu: asciilifeform all these are memory usage ops, what they do is establish when it should go on disk. they do not significantly affect cord-yank robustness. there are other specs you can make for the background writer for instance that do.
mircea_popescu: eg bgwriter_delay you may want to be set low for this reason.
mircea_popescu: you can also set bgwriter_lru_maxpages to 0 and disable background writing altogether
trinque: might be faster to do in the db
trinque: I am sadly, quite good at SQL if you want the thing translated
phf: so you basically snapshot your entire dataset back into the database at certain times, and snapshot is an equivalent of set merge?
mircea_popescu: trinque 's idea, bernstein as prepared queries, may be a gain.
mircea_popescu: though i am unaware anyone ever implemented this ; because, of coruse, i am unaware anyone used the guy's algo for any other purpose than gawking.
mircea_popescu: you implement bernstein IN the db. it is actually a programming language.
phf: asciilifeform: oh so you do insert to a set, every time there's a result, and you query for the whole set before you start a cycle of process?
trinque: asciilifeform: a temp table is in RAM
trinque: but I am not arguing for something here; you'd know what you want
mircea_popescu: and you do it as prepared queries, which get precompiled to a degree
phf: asciilifeform: i'm just trying to establish the dataflow here, for my own curiosity
a111: Logged on 2016-12-30 16:28 mircea_popescu: but he might be interested to hear about it.
mircea_popescu: you're not addressing the idea. currently you use a pile of c code you labeled for purely personal reasons "a db" to store some data for you, and another pile, you labeled phuctor, to bernstein and do other things on the db-stored data. because the interface is the bottleneck, it then becomes clear you must merge this. one way is to merge by lifting the db code and putting it into phuctor, making it you know, its own db like
mircea_popescu: bitcoin wants its own fs. ANOTHER way, is to use the means the db already offers for this.
mircea_popescu: which yes takes some work, but not quite as much as the other variant.
mircea_popescu: yes but it has this convenient hole through which you can go in, which is - implement bernstein IN sql.
mircea_popescu: it has ~some~ ability to precompile your queries, which is somewhat like linking object code.
phf: well, a more practical approach would be to adapt phuctor c part to a postgresql loadable module interface. in which case you he will eliminate the cross-boundary overhead (serialize/deserialize over the "wire").
phf: asciilifeform: did you understand what i said?
phf: what i'm saying is that a significant fraction of "1000s of queries AND ..." is the cross-boundary. you compile queries on c side, you send them to psql, it then parses, prepares results, serializes, sends it to c side, c side has to now parse all over again
phf: precompiled queries are a fraction of cross-boundary issue
phf: i'm not even arguing with you, i'm saying that the ~full extent~ of what "move it to psql" is going to do is ~eliminate cross-boundary issue~ that is all. so it'll shave some significant overhead, but it's not a silver bullet.
phf: asciilifeform: right, i was going to get to that :}
mats: fbi evidence of ru hacking 10/10 lulz as expected
mircea_popescu: uh. then why do you put the keys in in batches if you're not... putting them in in batches ?
mircea_popescu: would you stop with these bizarro deflections, they neither impress nor persuade, but they do give you an ugly image.
mircea_popescu: yes, well, that's then the problem. they should go in as a single query the size of the batch, with the items sorted within it
mircea_popescu: this is a piddly excuse, "no duplicate logic", case of luser with wwwform and case of 100k keys in batch form are different enough to warrant duplicate logic. that's why computers even exist, to account for such level of difference in code.
phf: a sort of impolite question, but is there's an index on hash column?
Framedragger: (and follow-up, does explain analyze show the use of that index)
phf: is it a hash index? it has the least overhead (it isn't logged amongs other things, so you have to rebuild it on crash, but conversly it's kept in memory and only supports = operation) indexes will make your queries more cheap, but writes more expensive, so you want to make sure it's the cheapest possible
Framedragger: docs say would need to get rebuilt only if there were any unwritten changes. which there shouldn't be as asciilifeform is not using write cache
mircea_popescu would not be particularly surprised if served with 100mb of query as per above postres wouldn't just fall over.
phf: asciilifeform: no, it's a command that you run, like REINDEX index_of_things; it simply queries what's already in DB and warms up the cash
a111: Logged on 2016-12-30 16:48 asciilifeform: well 1 db, 2 sets of key/fp/factor tables.
mircea_popescu: you are getting to where it is in principle not worth anyone's time to talk with you, because your response is random nonsequitur.
mircea_popescu: if this is the path you must walk to go from solipsist-alf to socially-integrated-alf i can see it, but hurry it up already it's irritating.
mircea_popescu: so : if loading the whole batches of keys through the user-wwwform process is what 99% of the machine time goes to, then yes, put the batches into a single, sorted query, make the workmem should be 256mb or 2gb or w/e it is you actually need to cover your query (yes this can be calculated, but can also be guessed from a few tries) and then run bernstein after every such query, on the db not on "nursery" (which yes, it's a ter
mircea_popescu: asciilifeform as to "how to make www respond", you use the method we were discussing last time, whereby www is a cached image and if out of date tough for viewer ; as to nursery "do we have this ? how about this?" you really want the db to do that for you, it's ~the only thing it;s good for.
mircea_popescu: mysql doesn't lock reads on write locks ; i expect any rmdbs should be capable via config.
mircea_popescu: you don't in general want the frontend to be able to expire your cache, let the backend do it whenever it feels like it.
phf: pretty sure not on postgresql, they are strict about their acid
phf: typically you handle it by not making your query lock the entire table, using a where clause of some sort. like if you're inserting things in batches, you can use a batch counter, and you query against max last known batch counter or less (or a variation of)
jurov: this is decided by transaction isolation level trinque posted. by default, table gets locked only if you explicitly "select for update"
mircea_popescu: it really should be up to operator wtf, if i want to read dirty let me read dirty what sort of decision is this for designer to make.
☟︎ phf: jurov: well, it's not clear where "disregard all locks" comes from in the original request. if the actual operations are as asciilifeform describes, i.e. sporadic inserts, and sporadic selects, then there will be no locks. my point is that there's no "disregard all locks" in postgresql, you solve it by knowing what lock you're hitting, and then designing your query to sidestep the lock
jurov: Flly lockless dirty read is likely a security hazard (due to race conditions, you may end up reading memory you ough not to)
jurov: So, you have to live with locks and know them
phf: mircea_popescu: sop outside of mysql world. dirty read is considered a liability, so whole point of db systems design is to ensure that you don't hit locks when you shouldn't.
mircea_popescu: does either of you see how this is the db writer outsourcing his incompetence on the user ?
mircea_popescu: nevermind "mysql world" and "security" claptrap. the point of fact is you want me to cut off my hand so my helmet will fit.
jurov: This is not incompetence, but unsolved problem in CS.
phf: mircea_popescu: yes, ~having to deal with locks~ happens past the limit of db designer's competence
mircea_popescu: exactly how the statements {"do not allow anyone else to write here until i say" ; "let anyone read anything at any time"} amount to an "unsolved problem in cs" ? and wtf cs is this we speak of, sounds more like chewinggum-science.
☟︎ a111: Logged on 2016-12-30 16:14 asciilifeform: the fastest sync method, supposing one has access to a synced node, but also supposing that it won't do to simply copy the blocks (and it won't, you want to verify) is an eater-shitter system
phf: mysql solution is to creatively relax acid and hope things will "just work", which is the flip side of "mysql crashes all the time"
davout: phf: iirc mysql's innodb lets you choose your isolation level per transaction
mircea_popescu: phf think for a second : the whole FUCKING POINT of a semaphore, of any kind, is that user can't know what the other item involved is doing. if they could know, they wouldn't "avoid the locks", they'd avoid the bad write outright.
jurov: davout: you can sync only from prb 0.10.4 and earlier
davout: jurov: because prb's dumped block format changed?
☟︎ jurov: davout: the ondisk format (not blocks, but index) changed much earlier, oorc at 0.9 or so
jurov: i was talking about network syncing
davout: ah yeah, i'm currently syncing off ben_vulpes, i was wondering if dumping blocks from prb and then eating them with trb would work
davout: found "preciousblock" command. wtf
davout: so yeah, prb does have a way to dump a block to hex from a block hash, and a way to get a block hash from a height, looks like this could work
davout: did you just assume my diligence?
davout: maybe i'm too lazy to script this and can live with waiting a month to sync!
☟︎ phf: mircea_popescu: i'm not quite groking what the bad write is. are you saying that instead of intermingling writes and reads, you should batch them, and not write while you're reading?
davout: looks pretty trivial tbh, will probably end up doing it
davout: what's the syncing bottleneck on trb's side?
davout: actually fetching the block data?
mircea_popescu: phf i am saying that if you imagine the user can be relied on to "know where the locks are and read around them" then you are therefore necessarily saying "locks are useless - user can always know what he wanted locked and simply not write there hurr"
davout: mircea_popescu: seems to me like it would reduce to 'moving the problem'
mircea_popescu: because, again, a semaphore exists because the user does not know what the user is doing.
phf: mircea_popescu: that's not quite what i'm saying.
mircea_popescu: davout this is entirely my argument : they've moved the problem and call this "modern db"
mircea_popescu: and im supposed to be so cowed by the risk of being called mysql-sometrhing that i'm not going to say anything or i dunno
phf: that's not even close to what i'm saying though.
davout: but then, how can it vastly improve sync time to feed blocks from same machine instead of letting trb suck them from the network?
jurov: mircea_popescu: you would trade speed for occassionally getting garbage when you call read()?
☟︎ davout: and re locking, how's a RDBMS to provide ACID guantees without locking?
mircea_popescu: whether i would or i wouldn't IS NOT THE DB'S DECISION, jurov .
phf: you have your basic database requirements: atomicity, consistency, isolation and durability. these are axiomatic, you either expect them to hold or there's no point in further elaboration. at least SQL from the conception guaranteed the four requirements. "dirty read" violates consistency. your table might be half way through an update, you do a "dirty read", which is necessarily faster than update, and you have half the results with
phf: old values, other half with new values. you ~can~ guarantee four requirements ~without~ using locks
davout: (not saying that locking should be mandatory ofc)
mircea_popescu: phf here's the problem : moder(field) consists of take field, redefine it in a practically useless but superficially persuasive way, then bad_words() to whoever dares ask if your "field" solves any important questions in the field. because of course it doesn't, MIT is the premier institution in science(*) and technology(*) in the werld.
☟︎ phf: but that's the slowest option, so you have strategies for increase of speed that involve strategic placement of locks
mircea_popescu: whether i want consistency as arbitrarily defined by you is my decision, not yours.
mircea_popescu: one cuts and the other picks. if you cut db field into "acid" i pick you out of existence.
jurov: mircea_popescu: in this case asciilifeform categorically claimed he decided to have consistency, or are you deciding otherwise?
mircea_popescu: you are confusing two consistencies. the problem here discussed is dirty read by www ; its consistency with the actual db is not seriously contemplated.
mircea_popescu: meanwhile inconsistency within the actual db are a different matter.
jurov: so you're fine if wwwtron occassionally read mangled pointer and returned for exampel contents of /etc/passwd?
jurov: this is what it boild down into
mircea_popescu: and here's exactly the problem of superficiality : "you either expect consistency or there's no point in discussing". there's LEVELS. maybe i expect all my writes to be consistent and don't care by A CLASS of reads being consistent. this is a consistency model that's consistent.
mircea_popescu: jurov no ; but i am fine with wwwtron ocasionally reading a field that has meanwhile been updated, and giving old, of an unspecified age but less than x time.
☟︎ davout: jurov: i think it's more like nobody gives a shit if static wwwtron is out of sync with DB
mircea_popescu: and THIS is what i mean re "problems in the field". whopee, idiots who can't code still want to be "at the forefront of computing" so they made a modern db that doesn't work.
mircea_popescu: and i'm supposed to care about the fact that they don't know how to write a db that doesn't spit out passwd ?
jurov: mircea_popescu: this is the problem with c machine, that everythign is pointer, and without preemptive locking, you can't distinguish your pointer points to merely stale data vs. garbage
mircea_popescu: how about prostgres===mysql because guess what, c machine. hm ?
jurov: cuz buth postgres and mysql are in C?
phf: well, "you either expect" is because ~sql~ as a db language is specified to have acid. there are databases that support dirty reads/writes they are just not "sql"
davout: phf: you're saying postgresql doesn't have a "read uncommitted" transaction isolation level like innodb?
jurov: phf no mircea imagines he can order c machine "read me this without any locking, but it must be in some class or!"
phf: davout: no, nor does oracle :o
a111: Logged on 2016-12-30 17:40 davout: maybe i'm too lazy to script this and can live with waiting a month to sync!
mircea_popescu: davout no he's saying it's not in the sql spec! which, considering how specwork goes, he might be even right about some version.
phf: i'm wrong, sql92 allows dirty read in read uncommitted
a111: Logged on 2016-12-30 17:33 davout: jurov: because prb's dumped block format changed?
davout: asciilifeform: it does have a command that shits hex at me given a block hash
davout: oic, dumpblock dumps binary?
mircea_popescu: davout the suspicion is that relevant data may be missing from the thing, but we really dunno.
davout: well, either a block verifies, or it doesn't
davout: i'm still curious what would make this kind of setup where i script "prb dumpblock | hex2bin | trb eatblock" much faster than syncing from network if the bottleneck is indeed the block verification?
mircea_popescu: filtering a chain out of the soup outside like BingoBoingo is not without merit.
mircea_popescu: davout block verification is the bottleneck in the dump-eat block process.
ben_vulpes: davout: my node is for example, busy sometimes serving blocks to other people
phf: davout: you don't get consistent, uninterrupted, sequential chain of blocks. the actual distribution pattern is a mess, that "orphanage" was bandaiding
davout: ok. imma give it a shot
a111: Logged on 2016-12-30 17:29 mircea_popescu: exactly how the statements {"do not allow anyone else to write here until i say" ; "let anyone read anything at any time"} amount to an "unsolved problem in cs" ? and wtf cs is this we speak of, sounds more like chewinggum-science.
phf: not just postgresql mind you. oracle definitely, mssql as far as i know
jurov: asciilifeform: so is there any database in existence that allows it? without occassional garbage?
a111: Logged on 2016-12-30 17:49 jurov: mircea_popescu: you would trade speed for occassionally getting garbage when you call read()?
mircea_popescu: dude the fact that every other girl in your class is a slut isn't going to feed you or your baby.
jurov: because the db was in the middle of balancing some datastructure?
jurov: my point is, if you want to read arbitrary stuff at arbitrary time, you must *carefully design* for it. you don;t get it for free on c machine
mircea_popescu: this point has some merit, but we're reading "arbitrary" stuff not arbitrary stuff, it's addressed to the db abstraction which is allowed to handle it, not directly to pointers.
mircea_popescu: this is not so differeny from my "if you absolutely must hire shaman, hire mysql, it's cheapest"
trinque: sure, but the tool for vast piles of relational time series data looks very much like relational database, but not for idiots.
mircea_popescu: anyway. this has been, at least to me, an informative excursion.
phf: dirty read would definitely solve me a lot of headache now, though not enough motivation to switch to mysql. not so much when i worked on oracle for a g-sib where you want acid, so instead "avoid bad writes"
a111: Logged on 2016-12-30 17:56 mircea_popescu: jurov no ; but i am fine with wwwtron ocasionally reading a field that has meanwhile been updated, and giving old, of an unspecified age but less than x time.
mircea_popescu: which is just about what the web MEANS. www = "that data exploration mechanism which ocasionally puts out old data, of an unspecified age but younger than x".
mircea_popescu: to go into trinque 's mullings about the meaning of things and items.
phf: well, it's also reason why the kind of stuff you could run on a beefy dreamhost now requires $5k/mo amazon rds instance
jurov: mircea_popescu: yes, but most of www can live with crashing database (even innocent reading can cause sigsegv, sadly)
phf: mircea_popescu: rds is amazon's hosted relational database solution(tm) which is a postgresql on a unixbox
mircea_popescu: jurov trilema db never crashed, in 9+ years and however many quintillion queries.
trinque: the reason I flip the process and say that db writes static www, rather than www reads db, is that the write of www matter can be transactional with db state update.
trinque: consider the case where a form is generated based on db state, and the validity of that form depends on db state
mircea_popescu: phf yes, but a fine approach to answering "what is the basis of alf's value as an engineer" is pointing out that he runs phuctor on the phuctor box, which fails to cost 5k/mo.
trinque: you otherwise get a case where one user can't submit his form, because mismatch between UI and acceptable-insert
trinque: then from there you can optimize and say "I don't care if one guy gets stale form, need moar speed"
mircea_popescu: of course random dorks go on about how no such labs will go out of business through the unlikely avenue of delivering what is clearing 1mn/year worth of services out of <1k/month, but hey.
trinque: and forgo the transactional write of the form
phf: true, but alf also "won't touch the web"
mircea_popescu: he's written more webfacing stuff than ~everyone else. he has teh red army spirit.
phf: for the republic, not for hitler. he lacks that certain "good german" spirit, ja
mircea_popescu: well, dunno about "than anyone else" in that very general form, but certainly more than you'd expect or he'd have hoped.
a111: Logged on 2016-12-29 22:54 ben_vulpes: jurov: would you be so kind as to update the lxr with makefiles.vpatch ?
jurov: ben_vulpes et al.: how you want to present this in lxr? or are there more steps?
mod6: everything, if press happened correctly, should be under bitcoin/src
jurov: ok, i'll rather start again from the beginning. what's the newest v.pl version?
davout: jurov: werked for me :3
davout: asciilifeform: why is there a specific -caneat flag? is there something specifically dangerous about eating blocks?
☟︎ jurov: me was working with V-20151014.tar.gz :)
ben_vulpes: jurov: have you run msft updater today? :P
mod6: jurov: in that howto, you'll find a series of both offline steps, and online steps. you can choose your own adventure.
davout: also i'm getting a "Flushing wallet.dat" after each eatblock, eats ~50ms each time
ben_vulpes: because it has to keep track of the inputs for all of the addresses it made ten minutes ago
a111: Logged on 2016-12-30 19:04 davout: asciilifeform: why is there a specific -caneat flag? is there something specifically dangerous about eating blocks?
davout: asciilifeform: you mean it files rough edges off every single time?
davout: ok, ~/blox/ass_to_mouth.rb is working, we'll see how that goes
davout: because createrawtx et al.
davout: what do you mean? i create transactions from arbitrary unspent outputs, sign them, and broadcast them
davout: hence my previous questions about the state of this particular functionality in trb
mod6: well, was, anyway. once the new changes for V are complete/tested/released, will be back on it.
davout: yeah, ben_vulpes told me in your very chan, if i can help it i'd be happy to, it does sound like a pretty good starting point for me to hack on trb
davout: "scratch your own itch"
davout: pretty much the only thing i personally need to be able to rm -rf all traces of prb from my boxen
mod6: well, ... feel free. but i think the coding part aside, which isn't going to be horribru, since a lot of it is backport anyway. but the testing is gonna be gnarly.
mod6: and am going to try to build tools, if needed, to help test this.
davout: mod6: i think it would actually be the least painful part to test
mod6: really? why do you think so?
ben_vulpes: mod6: "test[ing] this" is actually how i got on the alpha centauri miner quest
davout: try to craft a bunch of transactions, sign them, it either works or doesn't work, testing this functionality doesn't seem to depend on a lot of external, hard to reproduce, state
ben_vulpes: create and sign at least may be testable via the boost testing framework that's already in place
davout: yeah, that's something that seems to me pretty easily testable in a "isolated unit tests" way
mod6: those are not really unit tests, those are functional tests. but yeah.
mod6: i think over all it's a decent approach. have some pre-crafted transactions, and see how it goes. this is minimum. i wanna make sure we don't just capture "happy-path" but, all edge cases too.
ben_vulpes: davout's a rubyist, don't expect rigor in terminology from him mod6 :P
mod6: no room for error here, lest someone sends all their coins out as a large fee, or some crazyness.
mod6: anyway! glad to have the help, and the experience from someone who uses this end of bitcoin quite a bit.
mod6: we'll be discussing more in the near future i do suspect, Sir.
mod6: im not fixing the wallet, in this case, ftr. i'm just putting in the ability to create and send a raw tx.
mod6: and some other tools like 'listunspent' etc.
ben_vulpes: asciilifeform: he's still digesting "how to cut the wallet", let him ask for the things for which he's going to ask
mod6: eh. mis-spoke kinda.
mod6: "build" a rawtx by hand, send it.
mod6: anyway, im just working through the beginning stages here. so im certainly not an expert on rawtxns
mod6: <+asciilifeform> mod6: error can be tolerated in ~autopilot that user can disable at all times~, i.e. it ~recommends~ a tx, user can review before firing << umm, i dunno about this.
davout: asciilifeform: i'm simply after the functionality of crafting raw txes from an arbitrary of outputs that *I* select, not wallet functionality in the sense of letting the system work out the details of "send X bitcoin to Y address"
davout: s/arbitrary of/arbitrary list/
mod6: ok. i didn't grok your sentence above.
mod6: i read 'errors are tolerated'. and freaked.
davout: asciilifeform: my opinion is that the system doesn't even have any business *attempting* to select which outputs should be spent, let the user plug whichever system he wants on top of the low level "raw tx from arbitrary inputs" tool set
mod6: yeah, a valid rawtx is valid, but yeha, should be approved, somehow by user, before sending.
davout: i content that these should be the ~only~ knobs at trb level
davout: script it on top of trb, don't integrate it directly in there is what I think is the correct solution
davout: i didn't say it had to come *with* trb
mod6: <+davout> mod6: i think it would actually be the least painful part to test << anyway, i hope so. im sure there will be more discussion in coming months.
davout: such a setup ~is~ usable naked
davout: in the same way a gun is usable "naked", just don't point it to your face!
davout: the "let program select outputs to spend" half works half of the time, like you said "knapsack problem"
davout: and why not? because dangerous?
mod6: i don't think that should be removed. i think that the user aught to have the option to select them if he wants, with rawtx.
davout: imho a "warn-if-insane-fee" config knob is largely sufficient, and would allow removal of the "output selection" nonsense from the code
☟︎ ben_vulpes: you two are using "output selection" to mean two different things
ben_vulpes: one of you is using it to describe the process of selecting signable unspent transaction outputs and another using it to describe the new outputs created
ben_vulpes: at issue here is "where do the coins go" and "how to select the utxos to sign"
davout: utxos to sign -> provided by user
ben_vulpes: davout: and you get this list of utxos how?
davout: trb being able to list utxos given a bunch of addresses would be pretty obviously needed
☟︎ davout: but then we're going down the bitcoinfs rabbit hole
ben_vulpes: with the current mechanism you'll have to import those addresses and rescan some amount of the blockchain to find the utxos you want
ben_vulpes: index with symlinks on address too why not
ben_vulpes: any sane trb that doesn't index tx on output address i suppose
davout: yeah that's pretty much the point
davout: indexing based on address seems the sanest to me
ben_vulpes: wallet boils down to 'index of txen paying to addresses i care about' anyways
a111: Logged on 2016-12-30 19:43 davout: imho a "warn-if-insane-fee" config knob is largely sufficient, and would allow removal of the "output selection" nonsense from the code
davout: such index allows complete excision of wallet functionality, and reduces privacy concerns should your node somehow get buttraped
ben_vulpes: 'inspected for pertinent-to-me tx' is a subset of 'index blocks sanely'
davout: mircea_popescu: ok, "forbid-insane-fee" then
a111: Logged on 2016-12-30 19:46 davout: trb being able to list utxos given a bunch of addresses would be pretty obviously needed
davout: asciilifeform: privkey privacy is pretty much all that matters imo
davout: i might very well broadcast other folk's txes from my node, just as well as i might broadcast my own txes from arbitrary shitnodes
ben_vulpes: which is why index the whole blockchaaaaaain
davout: asciilifeform: ben_vulpes has it
ben_vulpes: fine i'm going to go scream in a corner where i'm sure i'm the only one listening
mircea_popescu: is there something being discussed or we just shootin da breeze ?
ben_vulpes: mircea_popescu: we're cramming a year+ of wallet into davout's head now that he's paying attention again
mircea_popescu: yeah just parser failed to return anything in the $controversy construct
phf: everyone sensing there ought to be a fight, but everyone's agreeing
davout: anyway, i guess my position basically boils down to: "as far as trb proper is concerned, best wallet is no wallet. but sane indexing mechanisms"
ben_vulpes: hey, the power rangers wanted 20mb blocks for whatever reason. i want indices.
mircea_popescu: davout this is pretty much agreed upon, provided you mean by the words what we mean by the words.
davout: let's elaborate i guess
davout: currently unspent outputs are indexed by address
mircea_popescu: and incidentally "knapsack" problem is a fucking overstatement. here's a very simple strategy : 1. sort available inputs by size ; 2. if current step != last step, select first input that is smaller than tx going out else select the input right before that ; recurse to 1.
davout: trb should be able to shit list of unspent outputs, optionally filtered by address
mircea_popescu: no, actually, trb should apply the above scheme EXACTLY like how v applies patches : you populate a wot with acceptable addresses
davout: crafts desired transaction therefrom, insert in mempool ~fin~
mircea_popescu: well technically spits it out, it shouldn't insert by itself.
davout: mircea_popescu: yeah, i meant it as a separate, user-initiated step
davout: maybe you want to broadcast that transaction from mit prb nodes, up to you
davout: no more "oh, but the transaction you're attempting doesn't match min fee $magic_number"
mircea_popescu was pretty impressed with davout 's bitbet liquidation tx.
davout: no, but seriously, how many times did I beat prb into crafting txes it would give me unwarranted opinions about
davout: that ended up confirming just fine
davout: and equipped with such sanity, if your transaction doesn't confirm, double spend it, no big deal
davout: no more "oh, but this transaction is already in my mempool, sfyl"
mircea_popescu is going to start recommending people go to barren islands after all. turns out boredom is promotive of sanity.
davout: i want this transaction broadcast, just fucking drop whatever's conflicting with it
☟︎ davout: latest example of transaction "that shouldn't have confirmed": e73d40c1aa9147e426de43d64753c2318c234426f6efbd090a7a9313d87f95e6
davout: ended up just perfectly sent to children in uganda
davout: asciilifeform: because it apparently didn't match whatever prb thought was a "minimum fee"
davout: nevermind that this transaction not only carried a fee, but also resulted in a net cleanup of the utxo set
a111: Logged on 2016-12-30 20:04 davout: i want this transaction broadcast, just fucking drop whatever's conflicting with it
mats: asciilifeform: best part is the tacit omission that usg can be owned by 6 year old with five bitcents to rub together
davout: asciilifeform: this ended up never being a problem in practice
davout: i'm not remembering until my lawyer is around
mats: mircea_popescu: no, i wish
phf: ftr, least i somehow become sql acid proponent, i'd like to point out that i'm the only person running tmsr infrastructure ~not on a sql database~
davout: since vermin can hardly be completely exterminated the correct approach seems to be "don't go live in sewer"
ben_vulpes: phf: i think this is pretty neat, have wondered about your x-referencer etc
davout: why would a lord want to live without at least ~some~ peasants around?
phf: asciilifeform: a log is just push-vector with checkpoints. entire thing barely takes up 200mb of in memory data
mircea_popescu: asciilifeform there is no such thing as "immediately mine".
mircea_popescu: to mine a block you must have decided what it contains a long while in advance.
phf: sbcl right now is at 450mb on average, which drops to 270mb after full gc
a111: Logged on 2016-12-30 20:16 asciilifeform: theoretically a 'will go in node xxxxxxx --- yyyyyyy inclusive or NEVER' field in tx, would have been sane. but it is too late, this is not in bitcoin.
davout: asciilifeform: isn't it actually enforced?
davout: asciilifeform: so you're saying a block including a transaction with locktime > block height is considered valid by trb ?
davout: iirc there were two *different* locktime 'features'
davout: one that was there since day 1, the other that was 'soft-forked' in
mircea_popescu: davout trb does not implement any of the prbisms. this means that ANY innovation included by the power rangers is a "while it lasts" thing, and building on top of it is setting one up for tears.
mircea_popescu: sooner or latter prb WILL be unwound. this is a certainty. just a matter of when.
davout: mircea_popescu: iirc there was one locktime thing that was there from day 1
mircea_popescu: but as far as software design and business risk planning goes, importing any prb means locking in a certain future loss.
a111: Logged on 2016-07-27 18:45 asciilifeform: thestringpuller: what EXTANT miners CHOOSE to mine, and what COULD be mined, if there were sane folks mining, are quite distinct things.
davout: so it appears I'm a fucking idiot here
davout: raises an error should one of the transactions return false for IsFinal ?
davout: so a block doesn't pass AcceptBlock if one of the transactions has nLockTime > blockHeight
mircea_popescu: there should be a word for computer code that does the opposite of what it "appears" to be wanting to do.
mircea_popescu: typical-underhanded-do-the-opposite-of-what-it-seems-to-mean
davout: also, from reading the source, AcceptBlock is an entirely different beast than CheckBlock
mircea_popescu: and if you are one of those who can summon the mental energy to convince yourself this [sort of thing] is accident rather than mens rea, you have my admiration.
davout: asciilifeform: this IsFinal method is quite weird, if nLockTime < blockHeight, the further checks on the txin are simply skipped
davout: maybe i'm missing the semantics of "transaction finality"
mircea_popescu: which is the type of thing alf is usually loud about, and all thinking men concerned :
mircea_popescu: this sort of thing allows nonconforming txn to be put in!
davout: in all fairness, some of this stuff might also have been fixed later on
mircea_popescu: that's why the "pistols" discussion ends up where it does
a111: Logged on 2016-12-30 20:45 mircea_popescu: none of this stuff CAN be fixed.
mircea_popescu: this is a best case view not supported in practice (by which practice we mean the repeated etherape, symbolic as it is of the chances of the premier science and technology institution in the world in front of a loose assemblage of things that don't, supposedly, exist.)
mircea_popescu: no, actually - a forest fire that singes every ~law abiding~ participant and them only.
mircea_popescu: that "and them only" trailer is mostly why we haven't had the pleasure. just as soon as hitler figures out how to remove it, he WILL burn his citizenry into a crips, as he always does.
mircea_popescu: so far the winds are not too favourable. consider the situation in the field : hitler has ~exactly one trick~, and it is the following trick : you know i shall fall, and i know i shall fall, and we both know we both know, but here's the thing -- the market can stay liquid for longer than you can stay solvent, especially if the liquid is liquid shit from my liquid shit pump. so come, take positions on my sotck exchange, reflec
mircea_popescu: to which mp reacts with
http://trilema.com/2014/an-era-ends-today-a-new-era-starts-today/ ; which is notable in the form, but not in the result. hitler gets to do his usual manipulation, and "win", but a) hitler is stuck denying the venue where he won exists, and this hurts him so bad he spends a year trying to get kakobrekla to eventually agree "fiat is a better deal" and whatever other "modern science & democracy" nonsense
mircea_popescu: then hitler tries to make "his own bitcoin", and pumps the battery, which mp drains at his leisure. but it is HIS, hitler figures, so he changes it. and changes it. each subsequent change resulting in erosion of his grasp over the battery in question. the wind blows the other way.
mircea_popescu: mp can afford to lose however much mp volunteers to lose ; the exposure profile is not symmetrical, hitler keeps having to go all in.
mircea_popescu: moreover, the strategic profile is not symmetrical : the initative is strictly not with hitler.
mircea_popescu: the currency of the reich is, as the original hitler well observed, a sort of sweat.
mircea_popescu: but in any case - ethertard budget exceeded 50mn in 2016 ; and these are turkey dollars. this is more than the aggregate expenditure across all software branches in the united states in that year.
mircea_popescu: asciilifeform the loss was extracted in the field of battle, and came as actual, isis-equipping dollars.
mircea_popescu: the sort that pay for the bullets that cut holes in retarded us-born kids' heads.
mircea_popescu: (to be perfectly clear - most of the eth budget went to propping the exchange rate, nothing else.)
mircea_popescu: whence it comes is not really my concern, for all i know it is running a charity on mars for poor usian children.
mircea_popescu: the dispositive criterion for the matter is the counterparty function.
mircea_popescu: hopefully he doesn't decide to fuck any of the interns or anything.
mircea_popescu: i've yet to find a hitler servant that fucked anything.
mircea_popescu: what's with the horses anyway ? don't tell me the russkis think themselves don cossacks or somesuch.
mircea_popescu: they may butcher some random "foreign" dorks, especially if they're defenseless in an urban setting.
mircea_popescu: he's added a third to his harem, she came in the mail.
mircea_popescu: i mean, she arrived in the mail. she came everywhere else.
ben_vulpes: never seen anything like it in my life
mircea_popescu: wtf do you do all day in cascadia, not buying drinks for artistic adolescents ? what is their life work, not this crapolade ?
ben_vulpes: mircea_popescu: buying drinks is one thing, girl soaking everything in sight less common
ben_vulpes: that's the one with the magic secret data that peter todd nominally destroyed?
ben_vulpes: ooh ooh or the ruskies who burnt hundies on camera for the transfer back to us treasury!
mats: idk about the claims re: rocketry but the insurance bit looks credible
mats: which has yet to be explained by .is even now
ben_vulpes: can't exactly light the computer-controlled machine gun off at inbound targets over heavily populated areas
mats: yes, there is a proximity fuse that disperses shrapnel
mircea_popescu: hey, they didn't say steel dome yes ? iron, sorta-worx.
mircea_popescu: "modern" warfare, like modern everything, is 90% gargle and posturing.
mats: seeing as how hamas is mobile and the dome is static, i don't see how it could possibly work 9/10 times like .is claims
mircea_popescu: who knows, maybe enemy is composed of sufficient % of modern folks, the sort that live life of the mind, and believes.
ben_vulpes: asciilifeform: what i mean to say is that it's about the only thing one could deploy around that many folks, is something that goes blooie in the air rather than a zillion rather-fast bullets most of which will come back down at lethal speeds
ben_vulpes: the only actual anti-rocketry defense being "don't be anywhere near targets of interest"
ben_vulpes: amusingly, .is actually wrote the book on rocketry-resistant fleets. turns out -- many small boats. hard to do that with the holy tent.
ben_vulpes: mats: does the dome at least handle steep ballistics decently?
ben_vulpes: eg mortars, that anti-ship device that pops up and comes right back down
mircea_popescu: ben_vulpes "many small boats" is shit for unrelated reasons.
ben_vulpes: i don't want to hear about your laptop status omg
mats: ben_vulpes: i expect iron dome actually only works effectively against mortar rounds
mats: if only usg published c-ram data from iraq
ben_vulpes: mats: usg and data in the same sentence, hyuuu
mircea_popescu: they can start with the m3, any time they grow a pair.