Categories
technology

Who writes code like this?

The infamous International Obfuscated C Code winner from 1984. I have a sizeable bet that it’s Bjarne Stroustroup, the inventor of C++. However, Brian Kernighan is also a possibility. Send me your thoughts based on coding style etc.
int i;main(){for(;i["]
An explanation of the code goes something like this.
int i;main(){for(;i["]i;++i){--i;}"];read('-'-'-',i+++ "hell\
o, world!\n",'/'/'/'));}read(j,i,p){write(j/p+p,i---j ,i/i);}
==== add some whitespace ==========
int i;
main()
{
for (; i["]i;++i){--i;}"]; read('-' - '-', i++ + "hello, world!\n", '/' / '/'));
}
read(j, i, p)
{
write(j / p + p, i-- - j, i / i);
}
===== and char subtraced from itself is 0, and char or pointer divided by itself is 1 =====
int i;
main()
{
for (; i["]i;++i){--i;}"]; read(0, i++ + "hello, world!\n", 1));
}
read(j, i, p)
{
write(j / p + p, i-- - j, 1);
}
======= j is always 0, p is always 1, lets remove them ======
int i;
main()
{
for (; i["]i;++i){--i;}"]; read(i++ + "hello, world!\n"));
}
read(i)
{
write(0 / 1 + 1, i-- - 0, 1);
}
======= 0 / 1 + 1 is 1, subtracting 0 does nothing, decrementing a local variable this is never used afterward also does nothing =======
int i;
main()
{
for (; i["]i;++i){--i;}"]; read(i++ + "hello, world!\n"));
}
read(i)
{
write(1, i, 1);
}
======== replace read(i) with write(1, i, 1) =====
int i;
main()
{
for (; i["]i;++i){--i;}"]; write(1, i++ + "hello, world!\n", 1));
}
====== i[n] can be rewritten *(i + n) or *(n + i) ======
int i;
main()
{
for (; *("]i;++i){--i;}" + i); write(1, "hello, world!\n" + i++, 1));
}
=== as i gets incrimented, we dereference the next char of the string which is always non-zero till we hit the null terminator, all the matters is that the string is the same length as "hello, world!\n" =====
int i;
main()
{
for (; *("hello, world!\n" + i); write(1, "hello, world!\n" + i++, 1));
}
===== so now we can see we incriment i, printing out the next character of hello world till we hit the null terminator ====

With thanks to slashdot and Thomas Scovell (who has it tattooed on his arm)

Categories
technology

StringTree JSON

Just been having a look at StringTree’s JSON light and nimble JSON parser. Sure, it’s not validating but it’s very light. and ideal for basing a J2ME implementation on. Sure, there’s tavon’s JSON-J2ME library but that has unfortunate dependencies on J2ME polish which should best be avoided. I’ve got nothing against polish but a dependency is a dependency and Chris would not be happy. So I’m in the process of adapting StringTree to be a fast’n’lite non-validating JSON parser for j2me mobiles. I’ll let you know how I get on.

Categories
philosophy

Thought for the day

It’s been a long time since I posted anything more contemplative than “gee, I really must update this blog.” Well I’m feeling a little stressed at the moment for a whole range of reasons so the following quotes seem appropriate.

  • “Will this matter a year from now?” – Richard Carlson
  • “Stress is nothing more than a socially acceptable form of mental illness” – Richard Carlson

There are many days when I feel that all software projects and each and every line of code within them should be judged based on the first question. Code reviews just became obselete 🙂

Categories
This Blog

blog redesign underway

I submitted the first changes last night. Would have hacked out the little errors sooner but I had huge problems with upgrading movable type. Everything from files not transferred properly (or at all) by the FTP client to problems to the usual “ObjectDriver, DBI::mysql” issues. To anyone facing similar issues I’ll give the following heads up.

  1. backup your previous install including all files and database
  2. reinstall all the files again, configure mt-config.cgi to point at your databaseand hope it all works