Evolved Virtual Creatures
A pretty cool video showing evolved virtual creatures:
More infos here, with Karl Sims Siggraph's 1994 paper..
another video from Nicolas Lassabe
more on Lee Graham's page :
programming stuff, free software and gnustep things.
A pretty cool video showing evolved virtual creatures:
Publié par Nicolas à Sunday, September 23, 2007 0 commentaires
Libellés : cool, geek, programming
Just a quick note: Fred Kiefer fixed the last issue I had (bad text clipping / smearing) with the Cairo backend... so, no more little glitches, it's really usable now !
Publié par Nicolas à Sunday, September 09, 2007 0 commentaires
Looks like it didn't take long for Yen-ju to play with the Cairo backend and partial transparency :)
Publié par Nicolas à Tuesday, September 04, 2007 3 commentaires
Libellés : cool, étoilé, gnustep, screenshots
After some effort, I finally managed to find a solution to the annoying scrolling bug in the Cairo backend... There's still some little graphic glitches appearing sometimes -- it looks like some clipping/refresh issues -- but overall it's nearly there :)
Publié par Nicolas à Tuesday, September 04, 2007 0 commentaires
Libellés : cool, étoilé, gnustep, screenshots
Publié par Nicolas à Sunday, September 02, 2007 2 commentaires
I was at AlpenStep this weekend (photos will follow..) which was quite cool. I teamed with Fred Kiefer (the GNUstep gui maintainer) to try to iron out some of the quirks of the Cairo backend. The main problem (recopy of surfaces is not always done well, which impact scrolling) is still here, although we improved some things, and it looks now like it should be solvable with a bit more work. We also added 32 bit surface support when choosing x11 visuals : a cool side-effect is that you can then use directly the alpha channel on the window :) and thus draw semi-transparent windows.
Publié par Nicolas à Sunday, September 02, 2007 5 commentaires
On est pas sorti de l'auberge maintenant. Ca donne pas envie de revenir en france en tout cas... :-/
Resultats de l'election presidentielle
Publié par Nicolas à Sunday, May 06, 2007 1 commentaires
...You know when people tell you to do backups ? Feeling guilty ? :-)
Well, most of my data is usually backed up, but... even so, there's still a lag usually, particularly for "not-so-important data", etc. Add to this usual mix some data put away "temporarily" from my main computer... and that's when my LaCie 250Gb external drive choose to die. Around 200Gb of data lost, among them some that I could get back with various difficulty somewhere else, eg on some dvd or other computers (the LaCie *was* the main/more used backup plan), and some truly lost (yes, this "temporarily moved" data, yes, it's you I'm talking about), or some data recently copied only on the LaCie... Of course this drive is around 3 years old, and I actually had some thoughts recently of doing a proper backup of everything there was on it, for convenience, and for fear of such an accident. Of course too, I ended up way too busy to actually do it...
Publié par Nicolas à Saturday, April 28, 2007 2 commentaires
Publié par Nicolas à Saturday, March 24, 2007 1 commentaires
The GNUstep project just announced that it was accepted in the Google Summer of Code 2007 :
GNUstep provides a cross-platform solution for Objective-C/OpenStep/Cocoa developers. This year, it offers various projects for SoC, such as adding new classes from Mac OSX 10.4, enhancing text system, porting WebKit to GNUstep, improve GNUstep on MS Windows platform, etc. It is a great chance for students to learn programming in many aspects.
read more | digg story
It's an excellent news ! we tried to be accepted first two years ago if I remember, and last year we were in but under the GNU umbrella... and no projects were accepted. Beeing accepted as a separate organisation should help us, hopefully !
Beside, any progresses on GNUstep will be immediately useful for Étoilé :-)
If you are a student, it's definitely worth a look -- GNUstep is one of the best OO api available here, and a fun place to hack.
update: Squeak is also in ! :-) great news too...
Publié par Nicolas à Friday, March 16, 2007 1 commentaires
Libellés : étoilé, gnustep, google, summer of code
Today I was in london for a job interview, and had a few hours to kill after it before going back to wales.. so I walked around a bit, and ended up reaching the Thames (duh! not surprising in london, is it ?). But I just ended up in front of the Battersea Power Station :
Publié par Nicolas à Thursday, March 01, 2007 3 commentaires
Following a mail from david on étoilé dev about how it could be nice to try allocating ObjC objects on the stack, I played with a couple of things...
First I wrote a mini benchmark -- get a very basic object (a couple of ivars, one method "plop" assigning a value to an ivar), and then create an instance, initialize it (call the init method), call the one method the object has, then deallocate the object. 10000000 times. As far as micro benchark goes this one is pretty stupid but well, that'll give us some ideas of what's going on.
Without optimizations: ~4.10s (on a macbook pro 2.16Ghz, core duo)
Not that great -- doing the same thing in C++ with a similar object here is the timings I get:
Objects created on the stack: 0.24s (17 times faster !)
Objects created on the heap: 1.37s (3 times faster)
Ouch, the poor Objective-C... not a surprise when allocating objects on the stack, but even allocating them on the heap C++ is still 3 times faster.
One obvious reason is that Objective-C calls a lot of methods when creating an object; and a method call is more costly than a C++ function call. Still...
So the obvious idea here is to cache some method calls (ask their address then call the function directly -- as a C function). I restrained myself to alloc/init, the method the object had ("plop"), and the release method. Of course, there's other methods that are called by those, that won't be cached.
Caching method calls: 2.77s
It's still twice as slow as creating the C++ object on the heap, but it's anyway a nice performance increase.
Ok, then our only option left is to allocate the Objective-C object on the stack. Surprise:
ObjC objects created on the stack: 0.23s
ObjC objects created on the stack + cached imps: 0.13s
:-)
[note of course that it's a stupid micro-benchmark that doesn't prove much, but it's fun]
...
What ? how can you allocate objective-c objects on the stack ? ah well... you can:
#define STACKCLASS(class) typedef struct { @defs(class) } \
__CLASS_ON_STACK__ ## class;
#define STACKOBJECTISA(objectName,className,classIsa) \
__CLASS_ON_STACK__ ## className __INSTANCE_ON_STACK__ ## objectName; \
__INSTANCE_ON_STACK__ ## objectName.isa = classIsa; \
className* objectName = (className*)& __INSTANCE_ON_STACK__ ## objectName;
#define STACKOBJECT(objectName,className) \
STACKOBJECTISA(objectName,className,[className class]);
STACKCLASS(Test);
int i;
for (i=0; i< 10000000; i++)
{
STACKOBJECT(test,Test);
[test init];
[test plop];
}
#define CALLIMP(imp,object,sel,args...) \
(*imp)(object, @selector(sel) , ##args)
#define GETIMP(class,sel) [class methodForSelector: @selector(sel)];
IMP imp1 = GETIMP(Test,alloc);
id p = [Test new];
IMP imp2 = GETIMP(p,init);
IMP imp3 = GETIMP(p,plop);
IMP imp4 = GETIMP(p,release);
[p release];
int i;
for (i=0; i< 10000000; i++)
{
id test = CALLIMP (imp1, c, alloc);
CALLIMP (imp2, test, init);
CALLIMP (imp4, test, plop);
CALLIMP (imp3, test, release);
}
Publié par Nicolas à Friday, January 19, 2007 2 commentaires
Libellés : gnustep, hack, objective-c