Evo-Info: Publication delayed, supporting materials online

Introduction to Evolutionary Informatics, by Robert J. Marks II, the “Charles Darwin of Intelligent Design”; William A. Dembski, the “Isaac Newton of Information Theory”; and Winston Ewert, the “Charles Ingram of Active Information.” World Scientific, 350 pages. Jan 31 May 1, 2017.
Classification: Engineering mathematics. Engineering analysis. (TA347)
Subjects: Evolutionary computation. Information technology–Mathematics.

I cannot tell you exactly what will be in the forthcoming book by Marks, Dembski, and Ewert. I made it clear in Evo-Info 1 and Evo-Info 2 that I was responding primarily to technical papers on which the book is based. With publication delayed once again, I worry that the authors will revise the manuscript to deflect my criticisms. Thus I’m going to focus for a while on the recent contributions to the “evolutionary informatics” strain of creationism by George D. Montañez, a former advisee of Marks who is presently a doctoral candidate in machine learning at Carnegie Mellon University (advisor: Cosma Shalizi). My advice for George is that if he wants not to taken for a duck, then he had better not walk like a duck and swim like a duck and quack like a duck.

Interestingly, young-earth creationist Jonathan Bartlett did an Amazon “customer review” of Introduction to Evolutionary Informatics in late January, after World Scientific had changed its online announcement to indicate that the book would be published in May. When I let the folks at Amazon headquarters know that they were misrepresenting the book as available for purchase, they went above and beyond the call of duty to correct the mistake. I’m interested in hearing from Jonathan whether he removed his “customer review” voluntarily. Of course, I’d like to know also what led him to post it in the first place.

I’ll hazard to suggest that the book will be much like the supporting materials, which were revised extensively in January. The presentations on the Weasel, ev, and Avida models of evolution are self-contained. And they cast doubt on the advertising claim:

Built on the foundation of a series of peer-reviewed papers published by the authors, the book is written at a level easily understandable to readers with knowledge of rudimentary high school math.

Click on the “Mathematics” tab here, and you will see that the math — the easy stuff, as it happens — is something that almost everyone will skip. It’s there to impress, not to enlighten, the general reader. As I’ve said before, I would love to address the math, and not the rhetoric that the authors attach to it. Things would be much easier for me if the authors turned out to have magical teaching powers. But we have evidence now, and the evidence says no magic.

201 thoughts on “Evo-Info: Publication delayed, supporting materials online

  1. johnnyb,

    Having slept on the exchange I had with you, I am all the more disgusted by it.

    1. You contribute to Amazon’s false advertising of a not-yet-published book as available for purchase. The obvious benefit was to establish demand in advance of the first printing of the book. As a publisher, you surely understand the benefit.

    2. You learn that I filed a report of false advertising.

    3. You blame me for Amazon’s deletion of your “customer review” — which “just happened” to contribute to the false impression that the book was available for purchase — along with the comment I made on it. Get this, Jonathan Bartlett: Nothing suits me better than for the first review to come from a young-earth creationist who has published prior work of the authors.

    4. YEC that you are, you respond to an absence of evidence by telling the story you prefer. I created doubt as to whether you were telling the truth. And I actually do doubt that you were telling the truth, as pathetic as your “customer review” was. But, hey, there’s no evidence now. So tell everyone that I said outright that you were lying. And make up a story about my motives.

    5. [deleted surmise about Bartlett’s motives] No one, this side of the sanity-insanity divide, is more deranged than someone who claims that science supports belief in a young earth, and who goes around telling people (including children) as much.

  2. Tom,

    Mung was writing jokes in code. I’d suspected that he had been sandbagging. When I saw the humor, I knew it for sure.

    Mung’s Weasel wasn’t funny — just dumb.

    As for ‘sandbagging’, Mung couldn’t even come up with a brute-force program to locate the highest-fitness permutation of a set of characters. His program ran out of memory because he tried to store all the permutations before evaluating them.

    This is not a guy who knows his way around software development. He’s suckered you into overestimating him.

  3. Tom English,

    Tom’s intent is obvious. He has butt-hurt for ‘creationists’ is angry, stubborn, carries a lot of scars from altercations with (made in the, to say it nicely, ‘less intelligent’ parts of the USA) nutcases, and (perhaps largely as a result) is anti-religious. He might have been stood up by a ‘Christian’ once for a date & is now heinous in his mortal duty to oppose ‘them’ still bitter about it. What more is needed to know? Creationists are from the devil, in the key of Tom, more than Tom himself ever could possibly be playing a devilish hand at the skeptic table.

    johnnyb is openly in cahoots with self-righteous protesting evangelical IDists & young earth creationists. That seems to be a fact. Not just people who believe in Creation. But actual ‘creationists.’ That’s johnnyb’s ‘professional’ level of clientele, even while some people gently try to counsel him away from that.

    So Tom English attacks him personally & ‘professionally’. Tom has reached a higher ‘academic’ level than johnnyb, so wins the ‘scientific’ credibility tussle rather quickly. Boo hoo, reality stinks for the creationist-promoter-publisher.

    If creationists aren’t johnnyb’s main clientele, among whom are significantly represented by homeschooled evangelical protestants, then he should directly state his actual main audience, rather than just trading in generalities. Hiding behind ideological creationism can be highly destructive to mainstream believers and often displays gross distortion of theology and religion, while many creationists seem not to realise how fanatical they are in outward appearance.

    Nevertheless, the ‘proper skeptic manners’ atheist (Thomas) telling the ‘digital stone age faith’ theist (Johnny, the last figure ‘founder lizzie’ courted to become a moral Moderator among otherwise atheist mods, before departing this cesspool of cynicism & unbelief) his “life is a lie” is too ironic to let slip! 😉 Is Tom’s misanthropic angry leftist ‘post-truth’ writhing a symbol of civilisational liberation?

    Intelligent theists know already for at least a decade that IDism is ignorant ideology, not teachable biology (shame on johnnyb with his homey ‘STEM students’!) nor credible knowledge that produces results. We believe this even while the ‘design’ and ‘manufacture’ of artefacts by intelligent beings who are created by God or gods in a spiritual (not just material) universe demonstrates that our striving to understand Intelligence goes beyond the limits and possibilities of ‘science’ itself. The myopic creationists simply don’t see their behaviour, tactics or even lifestyle (homeschool, fringe Christian science publisher) as an impediment to a better conversation & and (praise the Constitution!) that’s the kind of stuff johnnyb is ‘free in the USA’ to publish with his bank book as he chooses. There’ll likely be a butt-hurt ‘Tom’ somewhere in USA to antagonise johnnyb & his domestic IDist dingdongs. Such a sad circus! 🙁

    Such antagonism is only possible when johns & the toms & the sals & the keiths of the world pump up their ‘knowledge’ at each other about origins, morality, meaning, & destiny. Do skeptics want to fall sole-first into (self-delusionary) sophistic naturalism, superficial philosophy, USAmerican-style, pragmatic personal goo? Apparently a lot of them at TSZ do. 🙁

  4. “The skeptical movement? Sheer projection, coming from beneath the big tent of the ID movement.”

    There is no ‘movement’ among ‘skeptics’ that unites them other than perhaps bowel movements. Why not? In short, ‘none’ ain’t got no stick power, it’s too easy to come undone. Brights? Not. Memetics? Stupid. Reason rallies? A reality check for the broken-souled human.

    Indigenous and global knowledge both carry ample lessons of how self-destructive any such attempt to ‘mobilise’ skepticism becomes. There is no ‘movement’ worth ‘joining’ here. TSZ is now a bastard child.

  5. Tom English: Mung was writing jokes in code. I’d suspected that he had been sandbagging. When I saw the humor, I knew it for sure.

    That’s not possible. I can’t code. I don’t understand Weasel. And I’m stoopid to boot. Just ask keiths.

  6. Gregory: One condition, rather obvious for the mechanical thinkers in the room to anticipate: you won’t be allowed to use your ‘intelligence’ in any of the ‘development’ …

    I hear you can buy programs off the shelf that will write code for you. No intelligence required.

  7. keiths: As for ‘sandbagging’, Mung couldn’t even come up with a brute-force program to locate the highest-fitness permutation of a set of characters. His program ran out of memory because he tried to store all the permutations before evaluating them.

    More fake news from the fake person known as keiths.

  8. Mung: More fake news from the fake person known as keiths.

    Really?

    Mung: You made an unsubstantiated assertion. You, like keiths, cannot admit when you are wrong. But I have to give you credit, I can’t recall you ever saying you admit when you are wrong.

    My program “failed” because it ran out of memory and it was never coded as a GA and I never claimed it was coded as a GA. Your attempt to rewrite history is pathetic at best and dishonest at worst.

    I even posted my code. It’s obvious it’s not coded as a GA. Even you ought to be able to be able to see that (or maybe you really are just a retail clerk.).

    Please try to do better.

  9. keiths: His program ran out of memory because he tried to store all the permutations before evaluating them.

    From Mung’s code:

    %w[1 2 3 4 5 6 7 8 9 * / + -].shuffle.permutation.each do |arr|
    current_string = arr.join

    case closed

  10. petrushka,

    Doesn’t mean his code wasn’t a joke.

    It was a joke, but only in the sense that it was comically inept.

    Mung is an inadvertent master of that genre. Here’s another example:

    Mung:

    keiths:

    In a two-dimensional landscape, height still represents fitness, but horizontal motion is limited to one dimension — a line, rather than a plane. Motion is limited to two directions, right and left.

    [emphasis Mung’s]

    So in a two-dimensional landscape there three dimensions?

    Left, Right. Up. Down.

    Define your terms. Horizontal. Plane. Motion. Landscape.

    In a two dimensional landscape there is no height. In a two dimensional landscape there is no landscape.

    There is no plane, in your two-dimensional landscape. Hah. Unbelievable.

    Unbelievable, indeed.

    My amused reaction is here. DNA_Jock’s is here.

    But Mung wasn’t trying to be funny.

  11. Mung:

    The Ev Ware Simulation described on the linked page does not seem to bear any resemblance whatsoever to Schneider’s ev.

    Not that you ever understood ev in the first place, Mathgrrl.

    As far as I know I am the only person to have implemented a version of Schneider’s ev with extensions to his original. Dr. Schneider was kind enough to review my summary and link to it from his site. That gives me more than enough understanding to point out that the Ev Ware code does not bear any resemblance to the real ev.

    Is that what is up with you? I got under your skin years ago over at UD by showing that you didn’t know dick all about ev?

    Mung, sweetie, you’re confusing your dreams with reality again. Make sure you’re fully awake before posting next time.

  12. Flint: The Muslim world adopted a similar approach a thousand years ago. They are now a thousand years behind the times. We see how amenable they are to updating their views (and knowledge) to fit the world around them. But who among us would say that Muslims are doing their children a disservice?

    • raises hand *
  13. dazz: case closed

    Case closed that you can’t read, perhaps. And that neither can keiths.

    Mung: Actually cycling through all the permutations only took 22 mins on my home PC

    wow. just wow.

    Mung: Performing the actual permutations is well within the reach of a current PC.

    keiths, Ruby genius that he is, will next show us where I stored all the permutations before evaluating them and how that caused my program to run out of memory. But he won’t, because he’s a fake Ruby programmer too.

  14. 2017-03-04 20:32:04 -0800
    [“1”, “2”, “3”, “4”, “5”, “6”, “7”, “8”, “9”, ““, “/”, “+”, “-“]
    6227020800
    [“-“, “+”, “/”, “
    “, “9”, “8”, “7”, “6”, “5”, “4”, “3”, “2”, “1”]
    2017-03-04 20:58:04 -0800

    An no memory error. Sorry keiths, dazz. You don’t know what you’re talking about. Better luck next time.

  15. Mung,

    This is just pitiful. You’re only making things worse for yourself.

    Mung:

    1685000000:1/-2+8753*964:8437891
    perms.rb:23:in `eval’: failed to allocate memory (NoMemoryError)
    from perms.rb:23:in `block in ‘
    from perms.rb:17:in `permutation’
    from perms.rb:17:in `each’
    from perms.rb:17:in `’

  16. Here’s where I explained your error:

    Mung,

    Well, my program eventually stopped due to running out of memory after more than 1.685B permutations. Guess maybe the built-in permutation function isn’t the way to go.

    There’s no need to keep all the permutations in memory simultaneously. My implementation has a very small memory footprint because it evaluates each permutation immediately after it is generated and discards it if it doesn’t beat the current winning genome.

    See the code for permute_and_evaluate() in my Python implementation.

  17. Mung:
    2017-03-04 20:32:04 -0800
    [“1”, “2”, “3”, “4”, “5”, “6”, “7”, “8”, “9”, ““, “/”, “+”, “-“]
    6227020800
    [“-“, “+”, “/”, “
    “, “9”, “8”, “7”, “6”, “5”, “4”, “3”, “2”, “1”]
    2017-03-04 20:58:04 -0800

    An no memory error. Sorry keiths, dazz. You don’t know what you’re talking about. Better luck next time.

    was that [“1”, “2”, “3”, “4”, “5”, “6”, “7”, “8”, “9”, “”, “/”, “+”, “-“].permutation.size?

  18. dazz: was that [“1”, “2”, “3”, “4”, “5”, “6”, “7”, “8”, “9”, “”, “/”, “+”, “-“].permutation.size?

    Heh. I don’t think Mung does clarifications.

  19. dazz: was that [“1”, “2”, “3”, “4”, “5”, “6”, “7”, “8”, “9”, “”, “/”, “+”, “-“].permutation.size?

    No, that was a first and last so you could see that by the end the entire sequence had been reversed. Want me to post a file with all 6,227,020,800 entries so you can see they were all visited?

  20. keiths: There’s no need to keep all the permutations in memory simultaneously.

    And what leads you to think that all permutations are kept in memory simultaneously? What evidence do you have that is actually the case?

    Please take into account that I just ran all 6227020800 of them again and did not run out of memory.

    keiths: This is just pitiful. You’re only making things worse for yourself.

    No, that’s what you’re doing. I just conclusively demonstrated that you are wrong, and even then you still won’t admit it. Surprise. Surprise. Surprise.

    You are also wrong that I waited to perform the evaluation until all permutations had been created and stored. Is there simply no end to your arrogance?

    Here’s the basic permutation code:

    %w[1 2 3 4 5 6 7 8 9 * / + -].permutation.each do |arr|
    end

    Go ahead. Run it for yourself and see if you run out of memory. If you’re smart enough you can even figure out how much memory gets allocated to run the code.

    And if you look back at my original code you can see that I evaluate each permutation as it is generated.

    current_value = eval(current_string)

    So twice wrong, and utterly incapable of admitting it.

    #BoyGenius

  21. Mung,

    You never learn, do you?

    For everyone’s amusement, tell us why you think your program ran out of memory after 1.685 billion permutations.

  22. Note to software-savvy folks:

    You might be itching to give Mung a hint, but let’s see if he can figure this out on his own.

  23. keiths: You might be itching to give Mung a hint, but let’s see if he can figure this out on his own.

    LoL. I, on the other hand, am bookmarking this exchange as yet another example of keiths refusing to admit he’s wrong in spite of being confronted with compelling evidence against his beliefs.

  24. keiths: For everyone’s amusement, tell us why you think your program ran out of memory after 1.685 billion permutations.

    It doesn’t run out of memory after 1.685 billion permutations. That’s just you refusing to see the evidence that is before your eyes.

    %w[1 2 3 4 5 6 7 8 9 * / + -].permutation.each {|arr|}

    Run it for yourself. It took 20 minutes on my computer. And if you simply must know whether this code actually generates every permutation you can print them as they are generated.

    %w[1 2 3 4 5 6 7 8 9 * / + -].permutation.each {|arr| p arr}

    And though it will take much longer to run, the result is the same. It doesn’t run out of memory after 1.685 billion permutations.

    keiths is simply mistaken because he didn’t understand the code. But he has no excuse now.

  25. You’re just digging the hole deeper.

    Mung, then:

    Well, my program eventually stopped due to running out of memory after more than 1.685B permutations. Guess maybe the built-in permutation function isn’t the way to go.

    keiths, now:

    For everyone’s amusement, tell us why you think your program ran out of memory after 1.685 billion permutations.

    Mung, now:

    It doesn’t run out of memory after 1.685 billion permutations. That’s just you refusing to see the evidence that is before your eyes.

  26. keiths: You’re just digging the hole deeper.

    That’s the trouble with splicing your threads as you go. It’s hard to remember it all.

  27. Well, I translated that to Python and it runs just fine.
    In Ruby it’s the eval function that triggers the “leak”, using something like

    current_value = rand(100000)

    to generate the value, the program runs no probs.

    http://pastebin.com/5NMfZZLQ

  28. dazz: In Ruby it’s the eval function that triggers the “leak”, using something like…

    So keiths was wrong and won’t admit it. Wrong twice. There is no memory issue from simply generating the permutations. I wasn’t storing all the permutations in memory all at once. And I wasn’t waiting until I had generated and stored all the permutations before I evaluated them. That’s just keiths being ignorant of Ruby and acting like he has knowledge when he doesn’t.

    I suspect there’s a ‘leak’ in eval(). But what I know is that the out of memory wasn’t due to what keiths said it was. Will keiths admit he was wrong?

  29. OMagain: That’s the trouble with splicing your threads as you go. It’s hard to remember it all.

    I love how you cheer keiths on even when he’s wrong.

  30. Mung: So keiths was wrong and won’t admit it. Wrong twice. There is no memory issue from simply generating the permutations. I wasn’t storing all the permutations in memory all at once. And I wasn’t waiting until I had generated and stored all the permutations before I evaluated them. That’s just keiths being ignorant of Ruby and acting like he has knowledge when he doesn’t.

    I suspect there’s a ‘leak’ in eval(). But what I know is that the out of memory wasn’t due to what keiths said it was. Will keiths admit he was wrong?

    I don’t know if he’s wrong, but if you’re missing something, so am I, so apologies

  31. Also tried installing some AST gem to replace the eval method and it worked right away.

  32. keiths: His program ran out of memory because he tried to store all the permutations before evaluating them.

    That’s false.

    Mung: keiths, Ruby genius that he is, will next show us where I stored all the permutations before evaluating them and how that caused my program to run out of memory. But he won’t…

    And he hasn’t.

    dazz: I don’t know if he’s wrong, but if you’re missing something, so am I, so apologies

    No problem. Sometimes the keiths bandwagon isn’t always going to take you to the right destination. 🙂

    But keiths is wrong because he clearly mis-identified the cause of the NoMemoryError. It had nothing to do with me trying “to store all the permutations before evaluating them.” That’s just ignorant talk.

  33. I’ll try setting a huge page file and see if I can get it to finish. I’m curious to see if this is a leak or some internal implementation in Ruby is converting the enumerator to an array and keeping it all in memory

  34. dazz: I don’t know if he’s wrong, but if you’re missing something, so am I, so apologies

    dazz: Also tried installing some AST gem to replace the eval method and it worked right away.

    You’re a good guy or gal or whatever, you fake person, you. Difference in Ruby libraries was always the most parsimonious of hypotheses.

    Mung: I love how you cheer keiths on even when he’s wrong.

    I wish you would do an OP — not your typical mockery of the “skeptics” of The Skeptical Zone, but instead a straight account of your initial sandbagging, and of others’ failure to revise their beliefs when you gave evidence that you actually were a programmer. Rather than make declarations of why the others did not accept the evidence you provided, ask them to explain it themselves. As for the committed denialists, it will be interesting to see more of what’s going on with them.

  35. Mung: I love how you cheer keiths on even when he’s wrong.

    Says the hypocrite who just spent weeks backing Joe G’s blithering nonsense.

  36. Tom, to dazz:

    You’re a good guy or gal or whatever, you fake person, you.

    dazz:

    What is that supposed to mean?

    I’ve asked him the same thing. He’s promising an OP on the topic.

    I hope it isn’t something as lame as “a fake person is someone who uses a blog nym other than their real name”.

  37. Tom, to Mung:

    I wish you would do an OP — not your typical mockery of the “skeptics” of The Skeptical Zone, but instead a straight account of your initial sandbagging, and of others’ failure to revise their beliefs when you gave evidence that you actually were a programmer.

    Come on, Tom. You’re a computer scientist. Surely you know, as I do, that any competent programmer could have avoided Mung’s mistake. And any competent programmer certainly would have known how to fix it.

    It doesn’t take a genius to realize that the memory footprint of that program done properly does not need to be large. As I said:

    My implementation has a very small memory footprint because it evaluates each permutation immediately after it is generated and discards it if it doesn’t beat the current winning genome.

    And no, Mung, that doesn’t mean you should go looking for a ‘discard’ statement or method in my Python code.

  38. So I thought I’d put the claim made by keiths to a test in another way, since he still refuses to admit he was mistaken.

    He claimed I was storing all the permutations in memory and only after they had been stored was I undertaking to evaluate them. That’s false, of course, but I did think it would be an interesting exercise to see if I could actually write my program in such a way that it actually ran the way keiths claims it runs.

    The first hurdle I came across was that there is a limit in Ruby on the size of an Array that can be created using Array.new() and also a limit on the value an index to the array can create.

    I’m running 64 bit Ruby on 64 bit Windows. Here’s some code folks can try on their own:

    # rth4.rb:12:in `each’: index 268435456 too big (IndexError)
    begin
      test_max_arr_index = (0…268_435_456).to_a
    rescue => e
      puts e.message
      test_max_arr_index = (0…268_435_455).to_a
    end
    puts test_max_arr_index.size

    # rth4.rb:21:in `initialize’: array size too big (ArgumentError)
    begin
      test_max_arr_init_size = Array.new(268_435_456)
    rescue => e
      puts e.message
      test_max_arr_init_size = Array.new(268_435_455)
    end
    puts test_max_arr_init_size.size

    Of course, this raises the immediate question, which keiths will also not be able to answer. How was I storing all these permutations and where were they being stored?

    keiths: You already wrote a broken program that crashed. You already failed to spot the obvious solution. You already got caught lying about the crash.

    I did not lie, you just lack reading comprehension skills. I didn’t deny that my program ran into an out of memory error, rather I denied that it was due to the code that generated the permutations. Surely you can see the difference.

    ETA: dazz can see the difference, but not keiths.

  39. Mung: dazz can see the difference, but not keiths.

    The “keiths” rule-based system has entered a false proposition into its knowledge base, and is equipped only to deflect attention from its error, not to revise its beliefs.

  40. Mung,

    I did not lie, you just lack reading comprehension skills.

    Mung, earlier:

    It doesn’t run out of memory after 1.685 billion permutations.

    The result of running Mung’s program, as provided by Mung himself:

    1685000000:1/-2+8753*964:8437891
    perms.rb:23:in `eval’: failed to allocate memory (NoMemoryError)
    from perms.rb:23:in `block in ‘
    from perms.rb:17:in `permutation’
    from perms.rb:17:in `each’
    from perms.rb:17:in `’

  41. Tom,

    It isn’t surprising to see Mung behaving this way, but I’m disappointed to see you defending his obvious lie.

Leave a Reply