I don’t know if you are familiar with I didn’t until yesterday. I don’t recall how I got there, but the site looks like a search engine like Google, until you notice that you can enter URLs of websites and Alexa gives you a ranking of the site. I thought it was something like PageRank of google but publicly available. The interesting part starts when you find out it describes in detail the website’s traffic.

Master Thesis


Thank god there is Maple… I was trying to calculate the analytical derivatives of a big function today. My brain almost melted, so I found out we have Maple! It is excelent! It can calculate the analytical derivatives for any function… I had to calculate the Jacobian of derivatives for this function :

    (a*A + b*B -a*x - b*y) * A_ + (c*A + d*B -c*x -d*y)*B_ -(a*x_ + c*y_)*A -(b*x_ + d*y_)*B + (a*x+b*y)*x_ + (c*x + d*y)*y_) / sqrt( (a*A + b*B -a*x - b*y)**2 + (c*A + d*B -c*x -d*y)**2

According to Maple the partial derivatives are :

    ja = ((A-x)*A_-x_*A+x*x_)/(a**2*A**2+2*a*A*b*B-2*a**2*A*x-2*a*A*b*y+b**2*B**2-2*b*B*a*x-2*b**2*B*y+a**2*x**2+2*a*x*b*y+b**2*y**2+c**2*A**2+2*c*A*d*B-2*c**2*A*x-2*c*A*d*y+d**2*B**2-2*d*B*c*x-2*d**2*B*y+c**2*x**2+2*c*x*d*y+d**2*y**2)**(0.5)-0.5*((a*A+b*B-a*x-b*y)*A_+(c*A+d*B-c*x-d*y)*B_-(a*x_+c*y_)*A-(b*x_+d*y_)*B+(a*x+b*y)*x_+(c*x+d*y)*y_)*(2*a*A**2+2*A*b*B-4*a*A*x-2*A*b*y-2*b*B*x+2*a*x**2+2*x*b*y)/(a**2*A**2+2*a*A*b*B-2*a**2*A*x-2*a*A*b*y+b**2*B**2-2*b*B*a*x-2*b**2*B*y+a**2*x**2+2*a*x*b*y+b**2*y**2+c**2*A**2+2*c*A*d*B-2*c**2*A*x-2*c*A*d*y+d**2*B**2-2*d*B*c*x-2*d**2*B*y+c**2*x**2+2*c*x*d*y+d**2*y**2)**(1.5)
    jb = ((B-y)*A_-x_*B+y*x_)/(a**2*A**2+2*a*A*b*B-2*a**2*A*x-2*a*A*b*y+b**2*B**2-2*b*B*a*x-2*b**2*B*y+a**2*x**2+2*a*x*b*y+b**2*y**2+c**2*A**2+2*c*A*d*B-2*c**2*A*x-2*c*A*d*y+d**2*B**2-2*d*B*c*x-2*d**2*B*y+c**2*x**2+2*c*x*d*y+d**2*y**2)**(0.5)-0.5*((a*A+b*B-a*x-b*y)*A_+(c*A+d*B-c*x-d*y)*B_-(a*x_+c*y_)*A-(b*x_+d*y_)*B+(a*x+b*y)*x_+(c*x+d*y)*y_)*(2*a*A*B-2*a*A*y+2*b*B**2-2*B*a*x-4*b*B*y+2*a*x*y+2*b*y**2)/(a**2*A**2+2*a*A*b*B-2*a**2*A*x-2*a*A*b*y+b**2*B**2-2*b*B*a*x-2*b**2*B*y+a**2*x**2+2*a*x*b*y+b**2*y**2+c**2*A**2+2*c*A*d*B-2*c**2*A*x-2*c*A*d*y+d**2*B**2-2*d*B*c*x-2*d**2*B*y+c**2*x**2+2*c*x*d*y+d**2*y**2)**(1.5)
    jc = ((A-x)*B_-y_*A+x*y_)/(a**2*A**2+2*a*A*b*B-2*a**2*A*x-2*a*A*b*y+b**2*B**2-2*b*B*a*x-2*b**2*B*y+a**2*x**2+2*a*x*b*y+b**2*y**2+c**2*A**2+2*c*A*d*B-2*c**2*A*x-2*c*A*d*y+d**2*B**2-2*d*B*c*x-2*d**2*B*y+c**2*x**2+2*c*x*d*y+d**2*y**2)**(0.5)-0.5*((a*A+b*B-a*x-b*y)*A_+(c*A+d*B-c*x-d*y)*B_-(a*x_+c*y_)*A-(b*x_+d*y_)*B+(a*x+b*y)*x_+(c*x+d*y)*y_)*(2*c*A**2+2*A*d*B-4*c*A*x-2*A*d*y-2*d*B*x+2*c*x**2+2*x*d*y)/(a**2*A**2+2*a*A*b*B-2*a**2*A*x-2*a*A*b*y+b**2*B**2-2*b*B*a*x-2*b**2*B*y+a**2*x**2+2*a*x*b*y+b**2*y**2+c**2*A**2+2*c*A*d*B-2*c**2*A*x-2*c*A*d*y+d**2*B**2-2*d*B*c*x-2*d**2*B*y+c**2*x**2+2*c*x*d*y+d**2*y**2)**(1.5)
    jd = ((B-y)*B_-y_*B+y*y_)/(a**2*A**2+2*a*A*b*B-2*a**2*A*x-2*a*A*b*y+b**2*B**2-2*b*B*a*x-2*b**2*B*y+a**2*x**2+2*a*x*b*y+b**2*y**2+c**2*A**2+2*c*A*d*B-2*c**2*A*x-2*c*A*d*y+d**2*B**2-2*d*B*c*x-2*d**2*B*y+c**2*x**2+2*c*x*d*y+d**2*y**2)**(0.5)-0.5*((a*A+b*B-a*x-b*y)*A_+(c*A+d*B-c*x-d*y)*B_-(a*x_+c*y_)*A-(b*x_+d*y_)*B+(a*x+b*y)*x_+(c*x+d*y)*y_)*(2*c*A*B-2*c*A*y+2*d*B**2-2*B*c*x-4*d*B*y+2*c*x*y+2*d*y**2)/(a**2*A**2+2*a*A*b*B-2*a**2*A*x-2*a*A*b*y+b**2*B**2-2*b*B*a*x-2*b**2*B*y+a**2*x**2+2*a*x*b*y+b**2*y**2+c**2*A**2+2*c*A*d*B-2*c**2*A*x-2*c*A*d*y+d**2*B**2-2*d*B*c*x-2*d**2*B*y+c**2*x**2+2*c*x*d*y+d**2*y**2)**(1.5)
    jx = (-a*A_-c*B_+a*x_+c*y_)/(a**2*A**2+2*a*A*b*B-2*a**2*A*x-2*a*A*b*y+b**2*B**2-2*b*B*a*x-2*b**2*B*y+a**2*x**2+2*a*x*b*y+b**2*y**2+c**2*A**2+2*c*A*d*B-2*c**2*A*x-2*c*A*d*y+d**2*B**2-2*d*B*c*x-2*d**2*B*y+c**2*x**2+2*c*x*d*y+d**2*y**2)**(0.5)-0.5*((a*A+b*B-a*x-b*y)*A_+(c*A+d*B-c*x-d*y)*B_-(a*x_+c*y_)*A-(b*x_+d*y_)*B+(a*x+b*y)*x_+(c*x+d*y)*y_)*(-2*a**2*A-2*b*B*a+2*a**2*x+2*a*b*y-2*c**2*A-2*d*B*c+2*c**2*x+2*c*d*y)/(a**2*A**2+2*a*A*b*B-2*a**2*A*x-2*a*A*b*y+b**2*B**2-2*b*B*a*x-2*b**2*B*y+a**2*x**2+2*a*x*b*y+b**2*y**2+c**2*A**2+2*c*A*d*B-2*c**2*A*x-2*c*A*d*y+d**2*B**2-2*d*B*c*x-2*d**2*B*y+c**2*x**2+2*c*x*d*y+d**2*y**2)**(1.5)  
    jy = (-b*A_-d*B_+b*x_+d*y_)/(a**2*A**2+2*a*A*b*B-2*a**2*A*x-2*a*A*b*y+b**2*B**2-2*b*B*a*x-2*b**2*B*y+a**2*x**2+2*a*x*b*y+b**2*y**2+c**2*A**2+2*c*A*d*B-2*c**2*A*x-2*c*A*d*y+d**2*B**2-2*d*B*c*x-2*d**2*B*y+c**2*x**2+2*c*x*d*y+d**2*y**2)**(0.5)-0.5*((a*A+b*B-a*x-b*y)*A_+(c*A+d*B-c*x-d*y)*B_-(a*x_+c*y_)*A-(b*x_+d*y_)*B+(a*x+b*y)*x_+(c*x+d*y)*y_)*(-2*a*A*b-2*b**2*B+2*a*x*b+2*b**2*y-2*c*A*d-2*d**2*B+2*c*x*d+2*d**2*y)/(a**2*A**2+2*a*A*b*B-2*a**2*A*x-2*a*A*b*y+b**2*B**2-2*b*B*a*x-2*b**2*B*y+a**2*x**2+2*a*x*b*y+b**2*y**2+c**2*A**2+2*c*A*d*B-2*c**2*A*x-2*c*A*d*y+d**2*B**2-2*d*B*c*x-2*d**2*B*y+c**2*x**2+2*c*x*d*y+d**2*y**2)**(1.5)
    jx_= (-a*A-b*B+a*x+b*y)/(a**2*A**2+2*a*A*b*B-2*a**2*A*x-2*a*A*b*y+b**2*B**2-2*b*B*a*x-2*b**2*B*y+a**2*x**2+2*a*x*b*y+b**2*y**2+c**2*A**2+2*c*A*d*B-2*c**2*A*x-2*c*A*d*y+d**2*B**2-2*d*B*c*x-2*d**2*B*y+c**2*x**2+2*c*x*d*y+d**2*y**2)**(0.5)
    jy_= (-c*A-d*B+c*x+d*y)/(a**2*A**2+2*a*A*b*B-2*a**2*A*x-2*a*A*b*y+b**2*B**2-2*b*B*a*x-2*b**2*B*y+a**2*x**2+2*a*x*b*y+b**2*y**2+c**2*A**2+2*c*A*d*B-2*c**2*A*x-2*c*A*d*y+d**2*B**2-2*d*B*c*x-2*d**2*B*y+c**2*x**2+2*c*x*d*y+d**2*y**2)**(0.5)

Just to get an idea of what I’m going through with my master thesis… the above might be more easy to follow if you gzip it!!!

Open Source Sylphis

Blender, beast under 5MB

I’ve been watching closely Blender since it became open source. It was when I was looking for a modeler to be used with Sylphis3D. I must say it is a modeler that catches the eye. You see very impressive renderings, stunning videos and when you try to download the program you realize that we are talking about a 4.5MB download! You really start to realize there is something different about this modeler. And that can’t be more truth. We are talking about a modeler that :


Speed limits – Don’t need them…

Ok the driving speed limit problem is solved in Greece. The solution? Gas costing 1 euro per litre! It is almost unbeliavable but everyone is driving at 80-100km/h on national roads.

I was returning from vacation and as I was having a headache I thought of going with 80km/h so that I don’t get tired. To my surprise there ware many others going even slower and I had to mess with bypassing them… none was bypassing me – except to some millioners maybe.

Why didn’t we think of this before?!??!?

Open Source Programming

Quake III Engine Source Released

id did it! The source to the famous Quake III engine is out. The ftp site at id software is full of downloaders… get it while its hot!


The trip to Ithaka

I our lives we learn to set goals. Set up bright beacons ahead of us so that we can follow in the dark sea. I wish it wasn’t so easy to be blinded by that beacons and consider that they are all we have. One must remember that the beacon is only there to make a path for him to walk. It is the path that matters after all and not the beacon. The beacon might not be there after all, or be different than when you started. And it will be different because you will have changed.

It is written in many books as in the “Lord of the Rings”.


Project Offset

Yesterday, I stumbled on Project Offset. It is about a 3D game engine. The released videos and screenshots are very impressive! No engine released until now can create such visuals as the visuals are comparable only to Unreal 3.

The project reminded me of the old days back in 2002 when I released Sylphis to the public.

Open Source Programming

Quake III source to be released under the GPL

John Carmack noted at his QuakeCon speech that the source code of Quake III will be released next week!

Gamespy coverage

Even though Quake III is old technology (it is 5 years old) this is big news. A lot of hobby programmers will take it and push it to the limits, which is always fun to watch. Think of Tenebrae for example.

Programming Sylphis

Multithreaded Game Scripting with Stackless Python

The very basic problem that a creator of a game engine faces when it comes to scripting the game engine is: what will be the language that will be used. Of cource there is the option of creating a custom language for the purpose, but today with the plethora of scripting languages available it doesn’t really make sense to go through all the development process of a custom scripting language. No matter how big the development team will be, it will never be possible to match the man-months that have gone into an existing scripting language.

I will try to introduce the scripting language Python and more specifically a special version of it, the Stackless Python, as I used it in the implementation of the Sylphis3D Game Engine. For a basic introduction to game programming with python I suggest you try this book : Game Programming with Python.


River Party

Yesterday I got back from the river party at Nestorio/Kastoria. It is a 4 day party at the banks of the river Aliakmonas. It is a beautiful place, not the best that I have seen but quite nice. The whole event was a big adventure with a lot of rain on Friday and specially on Friday night. It was terrible. The tents was filled with water, there was nothing dry to sit on and the consents scheduled for Friday was canceled 30 mins after starting, letting people in the rain. I was literally wet to the bone. Thankfully, a friend is from Nestorio and offered us the cover of her house for the night.