Wednesday, May 12, 2004

General rants

I am loosing focus , attempting to do too many things at a time is making me not complete any of them :(
Tried taking a break ... but that worsened things : kept on worrying about what all I could have done in that time !
Basic problem is , whatever I want to complete are not time bound.
And lack of progress distresses me - progress is not really measurable at most times , but the satisfaction of having done something well is good enough.

Ok , let me be more concrete.

* Take my chess engine for example...
I have been trying out algo , ideas , heuretics ,etc like mad.
There is absolutely no lack of ideas , I seem to be getting them most of the time ! - but carefully selecting them , trying them out , making an objective evaluation of them based on some testing , etc : this is a time consuming process.
In the end , while doing some impl or other ,I will end up finding a very critical bug (this could be a logical bug too).
This means , most of what I tried for past 'n' number of days was basically a waste of time.
The interaction of the bug with these ideas might have been the reason why they did not work out !
Even worse , things that I have incorporated might be just reducing the effect of the bug (and so I thought they were 'good').
Now that I have eliminated the bug - are detremental to the engine !
It is more critical that I dont make similar mistakes , since I have decided to release it soon ... and so it will no longer be fair to keep releasing newer versions just for single one-off fixes (however critical they are).
Hence the net progress made becomes quiet low.
For every 100 steps that I take forward , I seem to go back 99 :(
This leads to even more depression - so much so that sometimes I think I will just forget my approach of a careful searcher with heavy eval , good qsearch and limited extensions and just do (like most other engines) a dumb fast searcher , with heavy extensions and skinny eval which just tactically overpowers the opponents.
But till now , I have held on : though only barely sometimes !

* I have been planning to implement my evolution idea which I mentioned earlier (here under point 3 (Started reading Penrose's "The Emperor's New Mind") ).
I have basic design in head , with a scripting engine incorporated so that even semi-novice users can extend and try it out without needing to modify the main engine code.
For this end , I went through lex/yacc and had fair amount of sucess in understanding them and writing a bunch of parsers (esp for reading pgn files for my book engine for chess :) ).
Now comes the problem - I am just not able to continue from here !
I meant w.r.t the direction to be taken by me in designing the engine.
What do I do ?
a) Make an intermediate bytecode to which the 'scripts' gets compiled to and the bytecode gets interpreted ?
b) Make an intermediate parse tree which gets stored when you 'compile' the 'scripts' ? (And then just load and execute the entire tree at runtime : basically another representation of the yacc parse tree in a file).
c) Or just plain interpret this 'script' at runtime ? (similar to the egg approach of Shawn Hargreaves - the allegro dude).
d) Ditch entire idea of inerpreter , make this a linkable module for users with instructions on how to go about writing their 'custom' modules with a few examples thrown in ?
e) Just do it for myself , with no external script/module customisation. This means , to modify behaviour , you modify the core engine itself.

I hate option (e) and (d).
(a) would be like java , and a bit of overkill I think.
(b) is what I would like to do. (c) IF nothing else works out.
Also , I would like to make the entire design such that , later on graphics tools could be used for the 'creation' of worlds , the environment , the initial population distribution , etc.
Grand designs .... and not yet thrashed out the basic strategy *sigh*

* Now comes the last of the major worries : the OS I wanted to write.
This would be trivially ridiculed by most as a plain stupid idea and a waste of time.
At first glance , it would seem that way too - even to me.
But the more I think about it and more I read up on it , the more I feel it is a necessity.
The idea that something that got designed 30+ years still is the 'ultimate' w.r.t OS design is pretty much hard to buy.
I talk to people and most seem to just assume that nothing better , as compared to the unix approach , can be done !
This acceptance seems a bit scary to me , since I do see inconsistencies and drawbacks (which are now assumed as the way things are !!) even in the traditional unix approach.
Now let us look at the targetted user base.
The current OS's require a level of familiarity of computers for a user to use them effectively.
Ok , unix is out here - even more eyecandy OS's like Mac OS , Windows , etc are nowhere near the mark when you think about the simplicity to which they can be reduced to !
This is not just a interface thing but a user expierence thing.
Thanks to Noble Paul for pointing me out this whole new dimension to computing :) , some of his ideas - though radical are quiet convincing and practical (That will come in a normal post - not this 'rant' post ;) )
(I am still waiting for Guru to post about this - he was expected to do so last week : so get your ass moving Vipin !)

I have not yet worked out most of these details of the OS.
I continue to read some very fascinating docs and have some very thought provoking discussions , and so I will reserve my comments on this for later.
This is actually the only part which gives me some sense of satisfaction - though there is no apparent progress !


Post a Comment

Links to this post:

Create a Link

<< Home