Friday, April 13, 2012

To Deal with the Devil

"I will empower you in return of your soul", this is a cultural motif which has been repeated in may told stories, books and more modern media. People with exceptional abilities who have sold their souls to the devil.

Even if there aren't any demons around to offer us the special powers and abilities for the price of our souls, still, the above statement works today and has probably carried a lot of meaning throughout different times. In order to see how, we need to look at the process from the opposite angle.

A person with a special talent or ability. Such a person has gained this talent, say a great musician or an exceptional sword fighter, through extensive practice and focus. Innate skills help but are usually not enough and some proper amount of time needs to be spent on mastering the ability (10,000 hours according to many people including the outliers book by Malcolm Gladwell). The only way for someone to find the discipline to follow such focused practice and hard work is only through love. Love for the specific craft or skill. A love which will lead the person into the psychological state of "flow" that will make him forget about the passing of time, his needs, social or physiological.

Events related to this person's goal, which is to return to the state of flow, by practicing the craft or art (music or swordsmanship) will matter and will pull the attention of this person, all else can be ignored and seem redundant.

Great feeling for this person, but how does the society view such a specialist? "Anti-social" is a polite word for describing this person, weird or selfish are what follows and it can go on until this person can be regarded as "Not a Person" or also known as a person with out a soul. How best to describe a person with no soul but to say that he has sold his soul to the devil. This way the society can feel relieved about the reasons for the exceptional talent too. In return of his soul, the devil has offered him such skills. Oh ... how dangerous this soul less creature should be! Lets define a mighty devil and be afraid of it in order to justify our own laziness. We were not able to achieve anything in this world but we should not worry since we have a soul that will live like a king in another world just because we deserve so but this man is really happy and able and different from us so he must have sold his soul and there is no eternal happiness for him. We are fine, we can sleep well, it is ok to be lazy and afraid.

Nietzsche's Uberman has been described as a free and powerful man which is frightened by normal people. Frightened? Sure, why not, this is a person following his own will, a will to follow the inner love, to focus on the inner desire and achieve special abilities that can be only achieved by listening to your heart only. Listening to your heart is usually in contrast with the structures and rules imposed by the society so you will resemble an outlaw, you will not follow the pre-specified routes designed for you in order to achieve what you feel needs to be achieved. To them, you seem different, anyone different from them should not be a human, or at best a human with no soul, someone to be afraid of, someone who has dealt with the devil. Keep away, keep away.

If you're serious about doing something and do not want to be regarded as the guy who has a diabolic contract hidden in a chest somewhere, you better learn how to be a good actor!

Friday, March 16, 2012

Friday, November 25, 2011

Synaptic Self

Some change is necessary .... the weather is changing ... Pearl Jam unplugged show is still magical and inspiring ... it's interesting how the best things and the worst things overlap ... like right now that they can both happen with the exact same probability ... how black and white co-exist on top of each other and an ant's step is the dividing distance ... NBA 2K12 is one of the best pieces of software I have ever seen ... no one will ever be better than MJ ... need to redefine the priorities ... need to reorganize and re-assemble the crew ... authenticity is better than eccentricity ... I'm still alive .... how easily do we not see all that needs to be seen ... how easy can it all slip ... how easy can opportunities fade ... how easy can friends betray without anyone even themselves sensing ... need to get back to workouts ... Eddie is real ... Slayer is on top ... American Music Awards sucks big time ... all winners are in fact winners of the pretending contest ... devoid of meaning ... authenticity lost ... real men are still there ... the pillars to construct on ... Wade's moves have a flow like no one else ... I hate lies ... miss Seattle sound so much ... the attitude mainly ... miss teaching ... Opeth rules ... the AI and animation in NBA 2K12 are unbelievable ... what was pure imagination in the basketball games of yesterday have become the actual concrete reality today ...Whiskey so smooth ... Even Flow ... thoughts arrive like butterflies ... he don't know ....so he chases them away ... should I chase them away? .... oh ... I'm still alive ...

Monday, September 12, 2011

Refactoring

Refactoring code is like being in the middle of a combat field. You study, change, fix, enhance, test, change, design, observe, reduce, change, optimize, extend, measure, change ... just like you would slash, guard, run, move, stop, breathe, hit, defend, jump, focus, push and attack in the middle of an ancient war.

In both, the outcome is good as long as you are alive, moving, changing, doing and commanding every second. Your failure is the moment you feel secure and satisfied.

Both do not rely on grand design and strategies, both bring out the best out of you, both often require you to do before you think, both show you the meaning of every instant, both value your sub conscious self over your conscious reflection, both need you to hug the opportunities of failure with ultimate courage and both require Real Men!

When no colossal armies are around, waves of uncertainty in the horizon, gotta grab the sharpest blade and dive into the adrenaline pumping moments of life, looking for none but miracles and staying true, every moment.

Just like nature itself, how it continually moves and makes and breaks.

Lets work carefully on good creations, only to watch them shattered to pieces while being done better, all by us, lets embrace the destructive nature of change and look forward to the rising sun...

Tuesday, September 06, 2011

The Rare Breed

Looking for a programmer for an upcoming unannounced game project. The ideal candidate should be able to carry a Generalist Programmer title and have:

Mandatory Attributes:
1 - Showing to work on work days.
2 - Being able to self manage.
3 - Honesty.
4 - Willing to learn new things.
5 - Willing to write any code.
6 - Carrying a bigger sign of Pragmatism than Idealism.
7 - Not afraid to fail.
8 - Aware of the concept of self sacrifice for team excellence.
9 - Willing to help the group.
10 - Responsible.
11 - Familiar with the word: Commitment.
12 - Disciplined.
13 - Able to see out of the box.
14 - Brave.
15 - Time conscious.
16 - Creative.
17 - Passionate.
18 - Believer.
19 - Patient.
20 - Good focus abilities.

Optional Attributes:
1 - Good knowledge of Programming.
2 - Good knowledge of c/c++.
3 - Relevant work experience.

Drop me a line if you are one or know one around. (I am aware that this is a rare breed!)

Friday, August 26, 2011

Zen Coding

You wrote the code, now you have to build it, it takes a while before you can see the results. You see the results, bring down the application, write more code and build again. In most serious applications the build time is something considerable. It is the time the machine needs in order to be prepared for your commands. To you it can feel like a short recess, or is it?

The build time is very clear for the machine but it is a very critical time for the coder. Why you say? Lets see. There is a huge tendency for coders to fly away during this time, which can be sometimes rather long (it can include both the code build time and the application startup and initialization time), it seems to be the best time to check the emails again, read a bit more of that article in the open browser, do a few more clicks on that sporadic junk web MMO, try to be cool in the social net or a million other small time suckers that we are all aware of. Why should it matter anyway, the machine is building and there is nothing else for me to do!

Well, there are three main issues with the above scenario:

1 - A shift of attention during this time is a context switch for the brain which can help you forget all the thought process and data you had regarding your problem in your mind. The longer this break away is, the higher the risk and it is quite easy to completely forget what it was you were working on once the application is up for testing.

2 - The time when you stop coding and wait is the best time to focus more on the problem at hand and even if you stop thinking about anything in particular (a zen state), your subconscious will carry on and try to work on the problem from different aspects. This could increase your problem solving quality and over the course of the day, highly reduce the number of times you would need to follow the code/build process for one specific problem. (Providing you with a lot more free time at the end of the day)

3 - Once you are carried away, there is no guarantee that you will come back and test the application once it is up and ready for you, you might spend a lot more time on the other task you started and who knows, maybe even get involved with the article for more than thirty minutes.

So before jumping out to do something else right after you initiated the build process next time, double check and see whether it is going to really be in your benefit and consider the negative effects it can have to your overall development quality. It is not easy but it could be well worth it.

If the problem at hand is too easy and there is absolutely no need for thinking more on it, you can always think about all the things you can do to reduce the lengthy code build time.

(from http://xkcd.com/303/)



Wednesday, August 03, 2011

The new Hell

We recently thought it was a good time to upgrade the tools and library code that we use. So we went on and upgraded to VS 2010, used the latest version of OGRE 1.8 (un-stable), upgraded almost all other dependent libraries like PhysX, NxOgre, OgreVideo, Theora, ogg, vorbis, ...etc. Recompiled all the ones that had the source code available using VS 2010, quickly fixed the errors related to porting and put all where they belonged and tried to run the game with the old levels we had. Guess what, nothing worked!

Serious crashes and hangs everywhere.

Hmm... it might be related to the new OGRE we thought, maybe because of the way we have changed the use of Threading? Maybe an incompatibility with the new OpenAL? Can it be related to VS 2010? So we started.... we started to try out all different permutations possible with the libraries, ... the new code with the old OGRE, the old code with the new OGRE, the new code with VS 2008, OGRE 1.7, ... OGRE 1.6 ... and any other imaginable configuration, hoping to find the exact module causing the new issues. After almost a week, nothing was found! Strange stuff happened with every change.

Now we are back to the old code base that runs perfect on VS 2008 with all the rusty libraries that are rock solid. Will follow the upgrading of the libraries sometime in the future but this time one by one with proper test suites to run after each change.

Lesson learned: Do not upgrade everything possible over NIGHT!