About this blog
Given infinite time even a monkey should be able to produce something useful, let's see...
Entries in this blog
This journal should denote the beginning of a period of fruitful productivity as far as my side projects go. I hope that by updating this journal I wont neglect my side projects as I'm used to.
So who am I? Currently I'm a 4th year student of Artificial Intelligence (Intelligent Systems) at the University of Amsterdam. I've been on and off developing games and what not since the age of 14 now I'm 22. Due to my slackful nature I hardly finish anything. Let's hope this will change now :o. Apart from the activities every nerd should involve himself in, I have trained a lot of martial arts in the past (7 years of mainly traditional ju jitsu with a lot of cross training), also I have participated in running events at the recreational level for about two years (10 km. in 40 min./ 5km in 17:55). Due to injuries sustained, I have given up on the goal of reaching a higher level in athletics as far as running faster goes. A long term goal would be to run a half-marathon, but since I'm very susceptible to injuries (weak knee joint) I'm quite hesitant to up my training load as far as weekly mileage goes, so running that distance is indeed a long term goal. Lately I have been getting the urge to pick up the art of BJJ again after a break of two years. I have to say I have succombed to this urge since I'm training now under Marcos Flexa in Amsterdam. It's great!
So what can you expect here? I'll be posting updates on my projects as well as random thoughts that I think would interest someone. Now I'll have to get cracking so I have something to post..
I'm currently following an introductory Computer Graphics course at the department of Computer Science in Amsterdam. The first week was of course on elementary rasterization algorithms, such as the midpoint line algorithm. This led me to the idea of creating a little program which shows the effect of rasterization as far as their discrete nature goes. The idea is to create a little paint-like GUI that demonstrates the various 2D rasterization algorithms for drawing (including filling, clipping anti aliasing) some primitives like lines, circles, rectangles and arbitrary polygons.
It's been two weeks since I worked on it (which show my slackful nature) and hope this journal will give me that little push I need to continue and of course finish this project. It'll be tough since I have been slacking off at school lately and I need to catch up on that as well.
What have I done so far? I have implemented the basic GUI in Java using intellij (the best java IDE I have come across), also the interfaces are coded which are necessary for dealing with the user input when a new primitive needs to be drawn. Expect some screenshots and more in-depth information on the project soon.
So this is the first screenshot, hopefully nobody minds the size/file format, etc. This shows the basic GUI and the IDE in the background. Notice the different project name, iterga, which stands for interactive tool for the education of raster-graphics algorithms. Then I somehow started to call it itegra, which as a friend of mine pointed out, is incorrect. Now I dropped the name for intEGA: interactive tool for the education of graphics algorithms. This just shows how difficult it is (for me anyways) to pick a good name and be satisfied with it :o
Unfortunately I have been very busy with school related work the past week, so I haven't been able to do much work on intEGA. Hopefully I'll be able to squeeze out some code during the weekend but it doesn't seem likely.
However, since I study a computer science related field (Artificial Intelligence), I have been doing much development :) During the last week I have involved myself in implementing a couple of density estimators for pattern recognition (nearest neighbor and the parzen multivariate gaussian estimator) and a database application which is to be a slimmed down version of Google. It's interesting work but very time consuming and at the moment we're (the aforementioned projects are to be made in teams of two students) running behind schedule so that doesn't make it any easier at all.
Besides these A.I. courses I'm also following a computer graphics course which isn't that time consuming since I have already had some experience with computer graphics while engaging in game development. Also, I'm a teacher's assistent in a couple of A.I. courses. This can be time consuming indeed, especially when I have to grade 30, 7-page, papers in only a couple of days. Next semester I'll be teaching the practical course on imperative and object oriented programming which will be much fun, because I'm suppossed to come with the exercises the students have to make. And since I'm very much interested in game development, I suppose the students will be making a couple of small games during the course :) I'm thinking of a Puzzle Bobble clone and perhapse also a more continuous type game like Asteroids.
That's the status update for this week, hopefully more screenshots and the like will follow this weekend.
intEGA seems to be coming together now :) I've implemented the line raster algorithm, including anti aliasing which does not look good because of the sheer size of the raster elements. I'm considering dropping this feature. The circle shape has been dropped, since an ellipse is more generic there is no real need for a circle shape. An ellipse is only drawn using the Java2D api, the raster algorithm still has to be implemented. Rectangle was pretty easy to implement (filled as well as border) and the polygon still has to be implemented.
This update's screenshot:
Also, you can get the .jar here. Note that because I can't upload .jar files it is packaged in a .rar file.
Now, I really have to get back to school related work.
So, I actually could get some work done on two projects. First I finished the density estimator project for the Pattern Recognition course I'm following, we had a tough time trying to debug the nearest neighbor density estimator. The bug was typical with respect to my Matlab experience, namely "/" had to be replaced by "./"...
Also, after two weeks of neglecting intEGA, I actually got some work done. Fortunately, I have a good idea of all the work that has to be done so that's a plus. Basically I have to write out and implement all the event listeners for each shape drawing command. Also, the raster graphics algorithms have to be implemented for drawing these shapes (filled or only the borders, antialiased or not). But that should not be a problem since these algorithms have been around for a long time and it is not my goal to reinvent them.
This evening I set out to get in touch with the project again. That means going through the code and reading the design documents and trying to get back in the mindset I had when I last worked on it. This went well and I continued to implement the event listeners for drawing a line and completed it. The line is still not drawn in the raster only the "perfect" line.
The idea is that the user draws arbitrary shapes on a raster. These shapes are drawn on the raster but also the "perfect" version is drawn with seemingly infinite precision. The goal is to raise the awareness of how the raster based approach modern video boards use affects the drawing of these shapes. This in contrast to a vector based approach. So the problem of having a discrete grid upon which an infinitely thin line should be drawn is shown.
This update's screenshot: