Today's Question:  What weekend projects have you created?        GIVE A SHOUT

Technical Article => Programming =>  Programming

What? You tattooed code on your arm?

  Jim Sangwine      2011-10-10 05:11:29      4,399    0

Since I'm seeing so many hits for this page, and since most of you are developers, I thought it might be worth trying to do a little blatant recruiting :)
If you are an exceptional, passionate front end developer (HTML, CSS, JS) and you want to work in an awesome SCRUM team at a huge multinational company in the South of the Netherlands, please drop me a line (DM my Twitter account).
There are also opportunities for developers (front and/or back end) and UNIX gurus at another brilliant company (Competa) in the Randstad. Basically, if you love tech and you're looking for work in Holland, get in touch!

This code isn't meant to do anything - it's purely symbolic.
And yes, I know it will cause a stack overflow if you run it - that's the point that I die, "run out" of memory or suffer some other system failure. Clearly I'm not immortal, so there needs to be some end to the recursion eventually :)

(function(){var k=[];return function j(){k.push(i);j();}})()();

That's what I got tattooed on my forearm last week. Reactions have ranged from incredulity to hilarity, but I love it.

So why did I decide to spend the rest of my life with an obscure snippet of JavaScript on my body? Well, because I wanted a tattoo that meant something to me, not anyone else. I wanted something linked to my work and my passion: web development. And I wanted something no one else would have.

I briefly Googled "developer tattoos" and "programmer tattoos" looking for inspiration, but the only good thing that came up was the (admittedly brilliant) </head> <body> tattoo that you've doubtless already seen:



Having been let down by the Interwebs, I thought "how better to commemorate my love for code than in code?".

The obvious choice of language was JavaScript. It's the language I've been using the longest (although I've only been seriously into it for the past year or so since I got to work on JigLibJS). JavaScript is also one of core foundations of the web, and looking at recent developments that's not likely to change anytime soon. Also, it's an open standard, which is what I believe the web should be all about.

So, what should I say with my code? I decided I wanted something to remind me of the values and philosophies I strive to apply every day in my work, and in my life.

(function(){var k=[];return function j(){k.push(i);j();}})()();

This code structure is called a closure. If you don't know what a closure is, you can read about it here: via Wikipedia. The short version: it's a function that returns another function. The returned function has access to anything created in the scope of the parent function - just like private class members in full blown object oriented languages like C# or Java. I decided to go for this structure for 2 reasons: firstly because I find it very beautiful, and secondly because I wanted the code to support growth or accumulation in some way.

(function(){var k=[];return function j(){k.push(i);j();}})()();

The k array represents knowledge or experience.

(function(){var k=[];return function j(){k.push(i);j();}})()();

The function j returned by the closure is recursive. This is to remind me that I should maintain my own drive and motivation - that I should always expect more of myself.

(function(){var k=[];return function j(){k.push(i);j();}})()();

On every call, the function j attempts to add the contents of variable i out of the global scope to the enclosed array k. The eagle eyed will notice that I have not included a safety check here so that if i is undefined, the code will error out and the recursion of j will fail. This is intentional. The variable i represents input from other people, and I want to remember that I should always seek the advice and opinions of those around me. I know that I cannot grow in isolation, hence the catastrophic consequences of failing to garner the contributions of others. As I mentioned above, the k array represents knowledge or experience, and this part of the code also reminds me that I should always learn from the input I elicit. This doesn't mean to say that I should always accept or act upon advice I receive, just that I should learn from it. Even poor opinions can teach us a lot about the people who offer them ;)

(function(){var k=[];return function j(){k.push(i);j();}})()();

Both the closure and the returned function j are self invoking. That means that the code will run itself: the functions do not need to be invoked from elsewhere. This is to remind me that I should take the initiative in my life and work, not rely on external influences for the impetus to start new things.

So, that's it. Every time I look at my arm I will be reminded of the values that are important to me, and of my love for code.

Much better than some Chinese characters that may or may not mean "luck" or "strength" I think, and every bit as cryptic.

My new tattoo

I wear my geek-ness with pride



Share on Facebook  Share on Twitter  Share on Google+  Share on Weibo  Share on Reddit  Share on Digg  Share on Tumblr    Delicious



No comment for this article.


The status of debugging

By sonic0002