Back to ioccc.xexyl.net
Last updated: 2018/05/12
On 2 April 2018 I noticed an email from the day before; the 1st of April was a very difficult day for me and I also happened to be out visiting my grandparents so I didn't see it until quite a few hours later. Interestingly and ironically enough 1 April was Easter and although I don't celebrate Easter I implemented two Easter eggs and I certainly celebrate winning the contest. But I have to say I was both immensely proud and happy but I was also taken aback; I certainly didn't expect to win such a contest (the fact it was the first time I had the full duration - the time before I had less than a week by the time I remembered it - of the contest made this even more special to me) but I didn't know they would have been done in the judging process so soon; I didn't expect to know the winners until at least a few more weeks! Happy and proud beyond words; more so than anything else and I knew that I would be more proud and happy about winning than anything else even before I started my entry. Not long after winning I emailed a long time mate (from England) as he wanted to see what I came up with and I also told a good mate from Sweden. I showed them each the tweet from the IOCCC judges:
Cody Ferguson @xexyl from US wins the #IOCCC award 'Best use of weasel words' for #IOCCC25— IOCCC Judges (@ioccc) April 2, 2018
Both were confused (quite understandably) on what 'weasel words' might be but I didn't reveal much of anything as it was meant to be kept a secret - except for the judges and the other winners. But now I can fully reveal what it is here (at least what 'Weasel words' refers to).
My entry is an implementation of Richard Dawkins' Weasel program (Wikipedia) with additional features; this includes the ability to change the target chromosome (string), two Easter eggs one of which I reveal (can you find the other?), a number of options and the program behaviour is also modifiable by redefining two constants at compilation.
The weasel words entry can be found here. In that directory there is a file with a brief summary of files called FILES but here I include a few quick notes.
The prog.c file is the entry itself;
prog.orig.c is what I originally submitted but I found a
minor error (ironically and amusingly the error was the return value in
the case of an error: I had '
return 0;' rather than
return 1;' which is an error itself!) and corrected it. In my
detailed remarks file
I show the difference between prog.c and
and much more.
The Makefile has a test target; running `
make test' runs
the script test.sh which reads strings from
test-strings.txt passing each string to the program,
waiting approximately two seconds between each invocation. I submitted both of these but the judges
modified the latter file and I literally laughed out loud at their
change (I cite it at the end of this document).
The winning IOCCC 2018 winning entries can be downloaded from here.
Perhaps most important of all are my winning comments that I will quote here directly because they're incredibly significant to me:
I feel incredibly honoured, privileged and I am extremely happy and proud to have won! I am more proud and happy about this than anything I have ever done in my life and I don't think there can be anything else I can be more proud of in the future (except winning again should I find or think of another interesting thing to try and implement in an obfuscated way). Because winning is one thing; but to be included amongst very clever and talented veterans whom I highly respect is an incredible badge of honour that I will proudly wear (literally too as I hope to get my entry on a shirt) for the rest of my life. This type of badge is something I feel most only dream of but never come close to earning. That I did is by far the best feeling I can think of.
Thank you Simon Cooper, Landon Curt Noll and Leonid A. Broukhis, and thank you to everyone who has been an important and special part of my life. I want to specially name some:
I dedicated this program to my beloved but recently late dog Venus; instead of drowning in grief I channelled it to creativity. And to have won a contest requiring creativity, cleverness and novelty is a tribute to an equally creative, clever and unique dog that she was. I miss you terribly Venus but I'm so happy to have had you in my life.
But I want to also dedicate it to (and thank) my dear friend Martijn Schoemaker whom provided me with the spark a very long time ago (and whom has stood by me and helped me in more ways than he can know -
#including C); if it wasn't for you Martijn I wouldn't have been able to win so consider this a recursive thank you thank you! :) I would also like to give thanks and much love to my best and closest friend Vicky Wilmore who means the absolute world to me; thank you for being such a wonderfully beautiful person and friend - that truly is what 'just you' means, sweetheart, and don't you forget it! <3 Finally I would like to thank my mother for being the best mum anyone could ask for, who's always been here for me and whom I also inherit the keen analytical mind from. I love you all!
I want to also thank Dave Burton for acknowledging me in his hint.markdown file for as he put it 'being relentless with pursuit of bugs'. To think that it was circumstantial to my entry too makes it all the more unlikely but that doesn't take away the significance of it; for I am a very symbolic person and being acknowledged for this type of thing is great but to be acknowledged for it by someone who has won more than once is even more special to me: thank you Dave! It means a great deal to me and I am glad I could help! :)
I would also like to say to the judges about their commentary as well as the category title: they're all very dear to me and that includes not just the remarks but the example invocations. They fit my views precisely. As for the test-strings.txt file modifications: very amusing and I certainly do not object. Thank you again for such an honour and privilege! That this isn't a dream is the best reality imaginable! :)
Congratulations to one and all for winning; it's an honour to win such a wonderful contest requiring creativity, cleverness, uniqueness and inventiveness but to win beside all the other wonderful entries is truly special!
Shortly after the entry has been published I will have more information on the winning entry at https://ioccc.xexyl.net/2018/weasel including how to contact me (besides what's already published on the IOCCC website). There also is an errata page so that in the case I find anything I would like to correct in the documentation or other supplementary files I can note them there.
If you wish to contact me please do so; although I have a Twitter account I don't really use it so please send me an email instead. I do have Facebook as of a little under two years but I'll worry about that at such a time (I presume in fact ‘if') it becomes relevant.
It is interesting for me to to think about it but I only by accident came across the Weasel program either shortly before the contest opened or in the very very beginning of its opening. It seemed like an interesting thing to implement in an obfuscated way though I had no idea how well it'd go; it went a lot better than I expected: perhaps part of that is self-doubt but another part of it is that there are seasoned winners who have won year after year. Not only that but the judges have seen a lot of twisted code over the contest (and before and in between) and so they certainly have quite a skill in deciphering code. Of course by their own admission they are often surprised so I made sure to submit every little detail I could.
Perhaps more interesting is that I felt a bit false with writing it; that might sound odd so why is it? Well the idea is simply this: although I'm not sure I would classify genetic algorithms as artificial intelligence it somehow does remind me of AI and I am not in favour of AI in the slightest. I realise there is some potential but unfortunately humans have this knack for making really poor decisions; and to design a system that learns on its, deciding what the best approach is, etc., when you also have robots that can carry things - including weapons - is truly terrifying. This is a moral and ethical debate that is riddled with problems and I am sceptical it can truly be answered in a global way; quite the opposite from what I have read there already are examples where robots have killed. I am a very strong believer in pity and I consider every life precious (because every life IS precious): precious and deserving of peace, happiness and love; but at the same time the reality is living creatures are taken from this world too soon too often and once a life is gone it's gone for ever, leaving only pain and longing to those who loved them.
Either way though I felt the Weasel program was worthy of a submission and I'm glad I did. There's a reason too though as for why I thought it worth working on. The judges state in their guidelines the following (verbatim):
We like programs that:
- are as concise and small as they need to be
- do something at least quasi-interesting
- are portable
- are unique or novel in their obfuscation style
- MAKE USE OF A NUMBER OF DIFFERENT TYPES OF OBFUSCATION <== HINT!!
- make us laugh and/or throw up :-) (humor really helps!)
- make us want to eat good chocolate.
That's not the only place they use the word interesting but I felt that I could make the Weasel program more interesting - more than Dawkins'. I feel that I succeeded: certainly I did when it has options, the ability to change the string, a couple Easter eggs and other things. I feel also that I succeeded in most the other points too.
How I came across the Weasel program: I first saw it on Wikipedia; I had been looking at the previous winning entries in an attempt to find something of an interesting problem (for example) that hadn't been implemented. I also knew of the Infinite Monkey Theorem and I rather quite enjoy it. By chance I came across the Weasel program and I'm happy I did!
Finally what are my true thoughts about the judges' suggested invocations and comments - and what was the addition to the test-strings.txt file? The judges had the following to say:
My thoughts? I was actually rather shocked that they changed the Makefile to copy prog to weasel - particularly when as of some years ago they no longer rename the binaries to the name of the winner; in fact my entry was the only entry they did it to and I am pleased, honoured and equally surprised. I have a guess why they did it but I really don't know. What about the suggested invocations? Well that's an interesting one:
The suggested string 'EVOLUTION IS A PROVEN FACT'
certainly matches my view; the fact they don't enable monkey mode (i.e.
don't enable completely randomised mode)
for that but they do for 'INTELLIGENT
DESIGN' is brilliant because here we're talking about evolution
(because of the genetic aspect) which is science based whereas
'intelligent design' is pseudo-science (though the proponents would
strongly disagree there is a reason it's called PSEUDO-science)
and that's the one they suggest randomised mode (and with a long string
it's not very likely it'll come to a conclusion). And finally there is:
make test'. What did they add?
PAULINE HANSEN ACTS LIKE A WEASEL
Which as I said made me laugh out loud. Who is she? She's an Australian politician. And anyone who knows me knows that I have at best contempt for politicians; I however won't get into the cesspool that is politics. What about their comments?
Love it. It fits brilliantly; their comments on their own just multiply the source of pride I have. I don't really know how to explain it but it just feels magical - it's perfect. As I already noted I submitted a rpm spec file and the rpm.markdown file has some notes on it (as does the file here I linked to earlier).
One more thing: I said that I would provide contact information in addition to what is published on the IOCCC website but I have decided against that: I already gave enough to contact me should anyone truly want to.