I would like to acknowledge the other winners because not only are
they brilliant but it's a huge honour and privilege to win beside them.
In my winning thoughts I thanked Dave Burton for acknowledging me in his
remarks in his second winning entry which won the award of 'Best abuse
of the rules'. Yet he actually said much more than what I quoted. I want
to say that at this time I still haven't tried to figure out (how they
work) the other entries but I have tried most of the entries; I don't
know when or if I'll get to trying to figure out how the programs work
(I have a lot going on and I'm always exhausted). Whatever the case
though I want to once again congratulate all the winners on their entry
(entries) as they're all fabulous. I think highly of every winner and
their entries (previous years, this year and future years) and it's an
amazing feeling to win alongside with you all (those who won this year
that is). With that being said here are some of my thoughts on the
entries in the order listed on what was once
The 25th IOCCC Winners.
- Most likely to top the charts: Qiming HOU - Converter of JSON to SVG pie chart
As far as the obfuscation what I really like is that there are no
variables at all; not in any scope whatever. There are a lot of
#define
s but that's different; naturally they do have
parameters themselves but the way they're used is that only numbers
are passed to them. This is a brilliant thing and it's kind of
similar to an entry of mine that did not win (as clever as the entry
is I think that my winning entry is far more interesting) but yet
equally it's not alike. In fact this entry not only has no variables
but it has absolutely no flow control (except for a few return
statements): it only calls macros/functions (some might call this flow
control but I disagree but either way it makes for an interesting
flow graph.
The output is very interesting and the award is a clever pun
(puns always make me smile and I myself am constantly punning and
pointing out puns other people make) because of what the output is.
But what I really like about the output is that it references all
the winning entries themselves in a wonderful chart (interestingly
enough I was working on an entry that did similar only not a chart
and so there goes that idea for future contests)!
- Best use of weasel words: Cody Ferguson - Dawkins' weasel simulator
Yes well .. :) I am obviously biased here. But all the other
entries are so special too that it's hard to look at them and say
that I love mine more than the others - at least not completely.
What it really comes down to is that each and every winning entry
(all the winning entries throughout the contest's history) is
special in its own way and the authors should be praised, honoured
and acknowledged for the skill, creativity, cleverness, novelty,
brilliance - and everything else - in every aspect of the entries.
They certainly are acknowledged but having won I want to also
acknowledge the ones that won alongside mine; acknowledge, praise
and comment on. Every single entry no matter what the author may think
is special and brilliant in its own ways and it's an honour to be
amongst all the winners. I will point out something though that is
buried deep within my remarks file but I feel is worthy of
mentioning here; the judges say the following:
We want to get away from source that is simply a
compact blob of octets. Really try to be more creative than blob
coding. HINT!
Yet my entry could in some ways be seen as a compact blob of
octets (although there are many obfuscation techniques and
including some I did not note in the final hint.text file - and I
made the technique descriptions more obscure than my original entry
did) so what could I do to make sure they don't believe it is in
fact a compact blob of octets? Well it's quite simple and this is
what I had to say in my remarks:
And if you’ll notice that although it might look like
a compact blob of octets at first glance if you look throughout
the file you’ll see two statements to set your thinking
straight:
NO BLOB CODING
THIS IS NOT A COMPACT BLOB OF OCTETS
So you see even if your eyes are trying to deceive you they’re
quite wrong. Yes some of it might look like a blob but this is
clearly false; as all good programmers know if something is
potentially confusing or misleading it should be made clear in
the comments! :)
I found this an amusing way to (at least somewhat) dismiss their
dislike for compact/blob coding; actually I still do. It's rather
cheeky which is just how I tend to be. And what I said in the final
paragraph is technically true even if it's often
ignored...something I am entirely innocent of (honest)!
Okay maybe I'm not but in this case I was innocent! Or was I? :) But
the contest is after all a safe forum for 'poor code' (personally I
feel that the code isn't at all poor it just goes against all the
norms of programming) etc. so it's fine I did. Even if it wasn't
depending on my mood I very possibly might do something like that -
although not really obfuscated - with two exceptions: I do sometimes
enjoy abusing pointers in ways that are well known idioms but
frustrate some people; I also love nesting the ternary operator. Oh
hell. I love other things too that are often frowned upon although
it really depends on the circumstances and my mood is at the time
(or what I deem 'right' where 'right' is really just what I want at
the time). The best I can think of why I do this is it
greatly amuses me (at least as far as causing any frustration etc.
in others).
Finally I'm proud too that there are a number of techniques that
other entries use that I have also thought of; it's a wonderful
feeling that further shows that I am a lot more capable than I often
give myself credit. That's an important thing for me and indeed
everyone.
- Most shifty: Don Yang - Text rotator and shifter
I don't even know what to say about this one it's so convoluted
and twisted. I think the simplest thing I can say is it's wickedly
brilliant! Don Yang this program is absolutely amazing and you
should be really proud to say the least! I am highly impressed. I
will need to be at my computer to really look at the outputs and I'm
not sure when that will be as I have so much going on (on the laptop
now) but whether I get to it ever it's an amazing program looking at
the judges' suggested invocations (and a few of my own). The fact
output can be compiled and turned into additional tools is just -
well the way you shift the input about makes the award perfect!
Maybe I'll have to use Dave Burton's script but even that will have
to wait. Great great job either way Don!
- Best use of python: Yusuke Endoh - Monty-Pythonesque animated quine
I have to say Yusuke that I respect you very very much; you're an
amazing programmer and that you have won so many entries (more than
anyone else) is a testament to not only that but your creativity,
ingenuity and devotion. I recently saw too that you created an
amazing 128 language quine relay! Brilliantly done. Some of the
languages brought back fond memories too (Tcl comes to mind here).
But what about this entry?
First of all I love the Monty Python reference (it's a skit I
was only made aware of a couple years ago). But beyond that the
output is a lovely animation. The obfuscation is well done too (as
I'd expect from you) even going so far as to obfuscate the hints
file! I admit I would love for you to have written something more
but in a way the fact you didn't makes it all the more magical.
Great job and I look forward to seeing your next winning entries
(and I know you will win again)!
- Most unstable: Edward Giles - SDL falling sand
I regret to say that until I'm at my main computer I cannot
actually play with the entry itself; however I love the idea of
falling sand. The layout is also wonderful considering what it does.
But in layout I include the actual obfuscation too. I hope to look
at this eventually but either way I know it's impressive to say the
least!
- Most likely to be awarded: Marcin Ciura - Strunk & White checker
Marcin I remember seeing some of your commits during the review
period and if I recall you suggested a possible entry in the future
and asked who will do it. Whether that was you or no I think whoever
did suggest it should go for it! I am almost certain it was you and
I think I might have helped you with some typos (and I am almost
certain I mentioned I wouldn't suggest to you - pained as I was - to
change the word 'period' to 'full stop'). I have to say too that
given the time we had and the (little) energy I have (and I have
even less now so I'm unsure how I've even done the above) I never
did quite figure out the significance of the entry; I can see sort
of what it's doing but there's just something mysterious about it in
a way I can't quite explain. In this case that's only good because
it's just my mental/cognitive state but what I do know is this: I
remember laughing out loud (and still do) as well as smiling at your
hint.text; the way you got round the fact the judges don't like
state machines:
I heard you don't like state machines so I put a
state machine in your state machine so you can reject this entry
while you reject this entry.
I love it! I also like how you explained some of the entry itself
and it doesn't make it any less magical; in some ways it makes it
more magical. I felt at the time it would be more magical for my
entry to remove some of my original obfuscation details and yet in
retrospect (just now when thinking about your entry) I think it
might have been more magical to keep them so as to show the
cleverness and creativity. I may in fact include them here but right
now I want to finish the rest of the entries. Wonderful layout
too (though I do admit I find my entry a bit more artistic yours is
lovely nonetheless and it's special in its own way for sure).
- Most stellar: Timo Poikola - Ursa Major ASCII animation
Timo the fact your entry was one of the judges' highlights is
well deserved. As I even commented it was my favourite entry that I
looked at during the review period (and in fact it still is). It's
magical and I think it's more than just I have always loved space.
It's absolutely beautiful!
I also absolutely love how you included an actual story: a story
that sounds (or could!) fictional (whether it is or no); what's even
more wonderful is that it is consistent with what the program
actually does! It shows if it's the right time to find and eat
Easter eggs when the story has:
It was a starry night when my wife pointed her finger
up and asked: "What is this star and may I have some Easter
eggs?"
So I had to sit down and solve those tricky questions with Nano
and a C compiler.
I shudder at using Nano (I'm a vi and for well over a decade now
vim fan but hey - it works for you and that's what matters in the
end!) but I do have a hypothetical question for you: since this year
Easter was on 1 April does that mean that your program was telling a
lie when it said it was time to find and eat Easter eggs? :) But
seriously it's a lovely program with great output, I love the idea
of a story and I furthermore love the obfuscation techniques! I have
something interesting to tell you also: I actually thought of using
'$'s in my entry too but I rejected it because I wasn't absolutely
certain it was portable! Now I know better that it's acceptable. I
did also run into problems where and if I recall correctly it had to
do with function names (I want to say it had to do with functions
starting with '$' that were a problem but I can't be sure now).
Either way I love that you did something I thought of by chance!
:)
As for macOS Terminal.app: I thought it was correct output but I
am not in front of a standard terminal (nor am I in front of Konsole
but instead I'm using Terminal.app when I'm writing this but unlike
Nano users I'm using `cat' ...well okay I'm not that crazy!
:))
Finally great idea to include questions to those who believe they
understand the program; for what it's worth during the review period
I did look at it briefly and I'm almost certain I couldn't answer
the questions (and I question if I would be able to even if I looked
at it more thoroughly but I probably will never get round to trying
either).
- Best of show: Christopher Mills - PDP-7/11 simulator
This one is just brilliant. I admit I haven't tried this one yet
but it's just a brilliant idea. I love it. It's a nice way to show
respect and honour an important historical computer artefact and
it's very cool that you even thought of waiting for the 50th
anniversary of C (and you're right that it'd be risky to wait but
even if that wasn't a risk I'm glad you didn't wait - despite the
fact I'm extremely symbolic simply because it's a very useful tool
when you get down to it); I am extremely symbolic (I dare say that
you'd never know of someone who is more symbolic) and so the fact you
also dedicate the entry to the beloved Dennis M. Ritchie is so very
special to me and what it does makes it so much better! And thank
you for providing the instructions; not only that the history is
beautiful and magical all around! The obfuscation is wonderful too!
Great work! :)
- Most connected: Scott Vokes - Computing strongly connected graph components
I admit that at this time (and almost certainly for quite a long
while) that I don't have the mental or cognitive faculties to truly
understand the connexions of input and output nor can I now even
follow the description in the slightest. I love however the
references to witchery and also the fact it's then in a layout of a
cauldron. Well done :)
- Best tool to reveal holes: Yusuke Endoh - Animated GIF from text
I love this one but I don't have too much to say. But I will say
that my favourite example input/output is the smiley one though I
can't say why. Actually I think it has to do with the ASCII art
itself and what it turns into. Perhaps not. I just noticed the
example invocation of the source code itself. That seems even more
significant and magical; so I would say that the source code itself
and then the smiley. It's a very clever idea to turn ASCII not only
into an image but an animated image. The fact it fits in the size
limitations and all the rules makes it so much better (yet not at
all does it surprise me that you Yusuke would manage it). The
obfuscation is great as usual. Well done!
- Best abuse of the rules: Dave Burton - Tokenize and count
What to say, Dave? Once again I appreciate you acknowledging and
thanking me; it means a great deal to me and I'm glad I can help. I
love too that you said (was it the list or in email directly to you?
I want to say the latter but I'm not sure) if I had a problem with
your unob.sh script it's my fault that it was improved quite a bit!
Well the truth of the matter is I consider it an honour even though
it converts the digraphs perfectly; it's an honour that I was able
to help you esp as you have won before. And on that note when I said
on the list something about seasoned winners you said something
about I'm now equally as guilty! That means a great deal to me (even
though I meant winning before). Finally I appreciate the dialogues
we had. I do wonder though if your fixes to the iocccsize tool will
be used in the next contest (which at this time I don't think I'll
be participating in given what's going on but I also have quite a
lot of time and things have changed rapidly and this arguably
includes finding something interesting and the time to obfuscate
it). As for the source code itself: I love the obfuscation including
the rather mysterious string just under: #include W
(and the way it's done - continuing the string from the file is
quite cleverly done). Then again given one of the techniques you
used in your entry in 2015 this doesn't surprise me. Well done and
once again thank you for acknowledging me - as well as accusing me
of being amongst [you all] as well as pointing out to me that I have
myself to blame that your script was more capable (post my bug
reports) of parsing code (including mine)! :) That somehow is just
beautiful and magical in some weird way (the best I can think of is
it's an honour that you directly state how I helped improve it and
so I don't have a right to complain - not that I was complaining as
in the truest sense of the word! :)).
- Most inflationary: Fabrice Bellard - Image compression demo
I must confess I love that you included all those control codes:
there's something special about that. I had the thought of using ^H
in comments but I didn't make use of it either way (yet that's not
why your use of it is special; I think it really comes down to the
fact it just makes it harder to look at in some way). The rest of
the obfuscation is wonderful too. I presently am not on a system
that will be able to truly look at the entry but it sounds
interesting and as I said the source code itself is lovely.
- Most able to divine code gaps: Derek Anderson - Visualizer of typographic rivers
You know I earlier said here that another entry I couldn't quite
follow or understand but looking at your entry again I now know that
that wasn't quite right: or more specifically it's not the entry I
was thinking of. It's your entry that I was thinking of. It's true I
didn't read about what it implements (the actual technical details
of it) but even so it's both wonderful and not so wonderful when the
output is confusing. What I do know is that whatever it is or means
it's lovely and well worth the award (though here I don't even
follow the award title itself - though perhaps I would if I read
that documentation).
- Best one-liner: Dave Burton - Hex dumper
You know Dave I have a certain view on one-liners that might mean
something to you and those who also have won the same award: you
might think that since it's one line it's simple to follow but
that's not necessarily true. But let's say that it is simple. The
fact it does something interesting is what makes it truly special.
It's simple enough to make a one-line program but to do something
interesting is another matter entirely. Well done!
- Most cacophonic: Anton Älgmyr - Converts text to sound using font as spectrogram
Maybe you don't remember but I said in the list that I was scared
to run your program. You gave me some reassurance and gave me some
tips to make sure it doesn't hurt my ears but whatever the case I
never got round to it and I'm not sure I want to! Now that might
seem bad but I have to say I find it quite amusing and thus quite
the opposite of 'bad'. I also seem to recall that we had an
interesting dialogue (though there were a number of dialogues) and I
didn't get to reply to one thing I found interesting (though that
might have been Timo it might have been you instead). Even so your
entry is interesting and well done; the fact I at least for now am
not brave enough to run it doesn't change this fact nor does it take
away the creativity or anything else you did. Great job mate!