December 30th, 2007
Many software products are released as so called OpenSource but how do the different kinds of OpenSource software licenses differ from each other?
For example Firefox is licensed under MPL/GPL and LGP. But what’s the Mozilla Foundation Licence? Often heart about that…
VLC media player makes it easy to me it’s just released under GPL which says something to me.
If you are the same way confused as me you might be interested in O’Reilly’s Openbook called “OpenSource & Free Software Licensing”
“This book will show you the licenses, explain how they can be used, and give you the information needed to make informed decisions. Knowing the details, the factual ones and not the FUD, will make you the ‘go to’ person when these type of questions arise.”
–Brian Turner, Free Software Magazine
Although a lot of questions I had got answered there are still serveral licences which are a mixture of others or explecit remoddeled.
A good example might be my beloved boost libraries which stand under a “Boost Software License”.
All links are to PDF documents:
I hope it’s useful for your aims.
December 27th, 2007
I’m just passing by to tell you that Firebug is an excellent extension to Firefox for all webdevelopers and people who are related to that.

Firebug integrates with Firefox to put a wealth of development tools at your fingertips while you browse. You can edit, debug, and monitor CSS, HTML, and JavaScript live in any web page…
from getfirebug.com
December 25th, 2007
Here is some straightforward C++ code:
The variable “a” is declared as being an array of 5 integers. I also could say:
const int n = 5;
int a[n];
The variable “n” is a compile-time constant and can be used interchangeably with the constant 5. The address of a global variable is also a compile-time constant. Therefore, this is valid C++ as well:
int b;
const int n = reinterpret_cast<int>(&b);
And it does indeed compile, at least under gcc 4.1.2 and Visual C++ 2005. The variable “n” no longer has the value 5. It has the value of the address of “b” reinterpreted as an integer.
Now the interesting part (to me anyway!). What if I combine the two examples so that the constant “n” is initialized with the address of “b” and then “n” is used as the size of the array “a”?
int b;
const int n = reinterpret_cast<int>(&b);
int a[n];
Although “n” has the same datatype as it did previously (constant integer), this code results in a compile time error under Visual C++ and a runtime error under g++. I can understand why this is the case. Consider:
// foo.cpp
extern int b = 0;
// bar.cpp
extern int b;
const int n = reinterpret_cast<int>(&b);
int a[n];
The compiler has no way of knowing the value of “n” at compile time. Only the linker has sufficient information to determine its value. But this is too late because the compiler is responsible for allocating the storage for the array “a”.
My conclusion is that the type of “n” seems to go beyond its declared type of constant integer. Behind the scenes, the compiler must track whether “n” can be resolved at compile time or not. Sort of like, is “n” constant or really constant.
The morale of the story? Never fool yourself into thinking you fully understand the mysteries of C++!
December 23rd, 2007
The incredible google labs recently released a new tool on their technology playground as they call it theirself.
With Google Trends (www.google.de/trends) , you can compare the world’s interest in your favorite topics. Enter up to five topics and see how often they’ve been searched on Google over time. Google Trends also shows how frequently your topics have appeared in Google News and in which region of the world people have searched for them most.

Just for the fun of it I looked up ‘vodka‘ and the result was amazing: In region ranking Sweden is on first place althougt Sweden has a very strict law concerning alcohol. Alcohol consume is forbidden under 20 and can only be sold by govermental sellers. Maybe they try to find a backdoor on the internet 
December 22nd, 2007
Didn’t you ever wanted to know where the corious server from which you’re currently downloading is located?
I did! Here’s the solution:
geoiplookup - look up country using IP Address or hostname
The .deb package for installing is called geoip-bin
The output is not very detailed it just prints out the country, but if you download this .gz and extract it to /usr/share/GeoIP you can also find out what city/town.
geoiplookup amazon.de
GeoIP Country Edition: IE, Ireland
GeoIP City Edition, Rev 1: IE, 07, Dublin, (null), 53.333099, -6.248900, 0, 0
GeoIP City Edition, Rev 0: IE, 07, Dublin, (null), 53.333099, -6.248900
December 22nd, 2007
You might know warnings like this very well:
MyDialog.cpp: In member function âvoid MyDialog::Init()â:
MyDialog.cpp:79: warning: unused variable âbtnCloseâ
It’s a simple and nice features compilers offer us but when projects are growing also the number of unused variables, the ones that are volitional unused, is growing. If you want to keep a clear head anyway what variables are unmeant unused you can use the following template:
template<typename T>
void ignore_unused(T const&) { }
Just put it into a file that is included at beginning. I usually have a glob.h which provides all defines and stuff like that to me.
Now you can determine yourself which variables shall not cause a warning: