Posts

Meine Programmier-Historie

Dieses Jahr ist es dreißig Jahre her, dass ich mit dem Programmieren angefangen habe. Die ersten drei Jahre programmierte ich hauptsächlich in BASIC. Zuerst mit der Variante auf dem C64, dann mit QBasic, Quick Basic und Power Basic auf dem PC. Zu meinen frühesten Werken zählen die Adventure-Games "Tyrwago in Astrein World" (1994) und "Die Reise zum Mond" (1995). Danach habe ich die Diskmag-Engine für den Hugi entwickelt, ab Ausgabe 6 mit Borland C++, wobei ich fast reines C verwendet habe, mit nur einigen wenigen Features von C++ wie dem new-Operator, die das Ganze ein wenig vereinfachten, und ohne objektorientierte Programmierung. Zu dieser Zeit brachte ich mir auch x86 Assembler bei. 1998 nahm ich an einem vom Diskmag Pain organisierten Programmierwettbewerb teil und erreichte den ersten Platz. Es ging darum, eine vorgegebene Spezifikation möglichst platzsparend zu implementieren, und meine Lösung war die mit der kleinsten Executable. Im selben Jahr erschien Hugi

What I'm doing in August 2022

I'm going to start a new position in September 2022. In August, I am on vacation. I am using my time for sensible purposes. Among other things, I have resumed to learn Japanese and already master Hiragana well, and have completed the first couple of modules at Duolingo, I have started the Deeplearning specialization at Coursera to get my AI knowledge up to date (after all I have a MSc degree in computational intelligence), I have learned a bit about C# and WPF, which I'll need for my new job. I've also worked on a new game project I'm doing together with a person I met in the Unsolved Problems mailing list.

Bildung - wozu?

In zwei Monaten feiere ich meinen 39. Geburtstag. Derzeit habe ich aufgrund eines Jobwechsels etwas mehr Freizeit als sonst. So ist es gekommen, dass ich mir wieder Gedanken darüber gemacht habe, wie viel Zeit meines Lebens ich mit dem Erwerb von Bildung verschwendet habe. Ich bin jetzt acht Jahre als Software-Entwickler berufstätig. In Wirklichkeit ist es aber bereits dreißig Jahre her, dass ich mir das Programmieren selbst beigebracht habe. Zweiundzwanzig Jahre habe ich also dadurch verloren, dass ich mir Bildung angeeignet habe, um im Rahmen des Systems Qualifikationen zu erwerben, die ich beruflich verwerten konnte. Genauer gesagt, habe ich sechs Jahre durch mein Medizinstudium verloren, das ich für meine Berufslaufbahn nicht gebraucht hätte. Es war die Schuld meines Vaters, dass ich Medizin studiert habe - er bestand darauf, dass sein Sohn Arzt werden sollte. Eigentlich wäre es schon längst klar gewesen, dass ich Informatiker werden würde. Das medizinische Wissen, das ich habe, di

Mein Verständnis von der Sozialdemokratie

Die Sozialdemokratie entstand, als sich eine neue Bevölkerungsschicht, das Industrieproletariat, formierte. Diese Menschen waren berufstätig, verdienten aber gerade einmal so viel Geld, dass es zum Leben reichte, und kein Vermögen. Weiters gab es eine große Masse an Arbeitslosen, die in Armut lebten, und einige wenige Privilegierte, die viel Geld hatten und nicht arbeiten mussten. Dazu kam die Landbevölkerung, die einst Leibeigene gewesen waren. Inzwischen gab es Bauern, die eigenes Land besaßen, und Knechte, die ähnlich wie das Industrieproletariat nichts besaßen. Das Ideal der Sozialdemokratie war eine Gesellschaft, in der jeder arbeitet. Jeder sollte so leben wie das Industrieproletariat. So nobel es sein mochte, dass man auf diese Weise die Armut bekämpfen musste, so sehr verabscheue ich den Neid und den Hass auf die privilegierte Schicht, der man ihre Privilegien entziehen wollte. Ich will, dass man so viel verdient, dass man jeden Monat ein bisschen Geld zur Seite legen und auf d

Intellect as the sixth sense

Reading the blog of Ed Close I had the idea that we perceive our thoughts, dreams and ideas just like the input from our five senses, so our intellect is our sixth sense. This is in accordance with Jungian theory which postulates that intuition is the sixth sense. However, intuition should be more properly named intellect. 80% of the population primarily relies on their five physical senses, while 20% prefers to use intellect.

Day 6 of the Level Editor project

I decided that I would make the level scrollable today, so that tiles could be placed outside the first screen. In game.h, we define two new variables unsigned int currentPosX; unsigned int currentPosY; which we set to zero in the Initialize method. These variables will store the current position in the world, where x,y = 0,0 is the bottom-left corner. We need to consider this position whenever we work with coordinates of tiles. So in the Update method, we have to write: case Solid: newElement->coordX0 += currentPosX; newElement->coordX1 += currentPosX; newElement->coordY0 += currentPosY; newElement->coordY1 += currentPosY; level.push_back(newElement); break; and evaluate the keypresses: if (g_keys->keyDown[VK_UP]) { currentPosY++; } if (g_keys->keyDown[VK_DOWN]) { if (currentPosY > 0) currentPosY--; } if (g_keys->keyDown[VK_LEFT]) { if (currentPosX > 0) currentPosX--; } if (g_keys->

Day 5 of the Level Editor project

I've decided that today we will implement a delete functionality. If levelEditorDrawMode is set to Delete, the user shall have the power to draw a rectangle and as a consequence all objects that are completely within the boundaries of this rectangle will be removed from the level. To the Update method, we have to add code that checks for the keypresses: If the user presses '0', Delete mode shall be activated, if he/she presses '1', Solid drawing mode. if (g_keys->keyDown['0']) { keyPressed->keyDown['0'] = true; } else if (keyPressed->keyDown['0'] && !g_keys->keyDown['0']) { levelEditorDrawMode = Delete; keyPressed->keyDown['0'] = false; } if (g_keys->keyDown['1']) { keyPressed->keyDown['1'] = true; } else if (keyPressed->keyDown['1'] && !g_keys->keyDown['1']) { levelEditorDrawMode = Solid; keyPressed->keyDown[&