My new home is a wordpress blog at www.wgtower.nl
All of my readers should go there for my blogging from now on. This thing here will have no more posts
Thursday, 23 April 2009
Tuesday, 10 March 2009
predictive text isotaps
So, ever since getting a girlfriend, I've been texting like crazy. I actually know my way around the numpad, and I've gotten pretty fast at texting. This has pulled my attention toward the input method most people use for writing text messages on their phone nowadays, called predictive text.
Every button to on your phone is mapped to multiple characters. This is how you can resolve phone numbers like 1-800-pizza, but they are also used for texting. 2 maps to {'a', 'b', 'c'}, 3 to {'d', 'e', 'g'}, et cetera. In the old, traditional texting method, you would press the 2 key once to get an 'a,' twice for a 'b,' and so on. In predictive text you tap the 2 key only once, no matter which letter you want. The software uses a dictionary of words to see which word your sequence matches to. For example, to get 'you,' you type 968. The dictionary reveals that 'you' is the only word with this combination, and that word is printed to the screen. This is much more efficient than old style texting, since you need to press less buttons to get your word.
Of course, there are inevitable some words that have the same number sequence. For example, 'home,' 'good' and 'gone' all have the sequence 4663. These words are referred to as isotaps. In this case you can select the word you want with the arrow keys. The list is of course ordered by frequency of use.
Isotaps are quite annoying, because they require that you keep looking at the keyboard in case you meet one. So, I was wondering, how many isotaps are there in the english language? Using some python magic I got the answer, along with a few other random statistics. This was ran against the Ubuntu word list, which is usually more expansive than a cell phone one, but it gives an indication. It would be interesting to compare against other languages, to see which languages is most amenable to text prediction (for a better indication, weight isotaps with word frequency)
x = 1: 0
x = 2: 4429
x = 3: 980
x = 4: 308
x = 5: 129
x = 6: 39
x = 7: 14
x = 8: 12
x = 9: 3
x = 10: 1
x = 11: 0
x = 12: 1
amount of isotaps of length x:
x = 1: 24
x = 2: 151
x = 3: 645
x = 4: 2134
x = 5: 2937
x = 6: 3389
x = 7: 2603
x = 8: 1366
x = 9: 517
x = 10: 218
x = 11: 81
x = 12: 49
x = 13: 11
x = 14: 5
Note that there are more isotaps of length 14. given is merely an example. The script is available here. I'm afraid I didn't do any fancy graphs, but the data is pretty interesting I think.
Every button to on your phone is mapped to multiple characters. This is how you can resolve phone numbers like 1-800-pizza, but they are also used for texting. 2 maps to {'a', 'b', 'c'}, 3 to {'d', 'e', 'g'}, et cetera. In the old, traditional texting method, you would press the 2 key once to get an 'a,' twice for a 'b,' and so on. In predictive text you tap the 2 key only once, no matter which letter you want. The software uses a dictionary of words to see which word your sequence matches to. For example, to get 'you,' you type 968. The dictionary reveals that 'you' is the only word with this combination, and that word is printed to the screen. This is much more efficient than old style texting, since you need to press less buttons to get your word.
Of course, there are inevitable some words that have the same number sequence. For example, 'home,' 'good' and 'gone' all have the sequence 4663. These words are referred to as isotaps. In this case you can select the word you want with the arrow keys. The list is of course ordered by frequency of use.
Isotaps are quite annoying, because they require that you keep looking at the keyboard in case you meet one. So, I was wondering, how many isotaps are there in the english language? Using some python magic I got the answer, along with a few other random statistics. This was ran against the Ubuntu word list, which is usually more expansive than a cell phone one, but it gives an indication. It would be interesting to compare against other languages, to see which languages is most amenable to text prediction (for a better indication, weight isotaps with word frequency)
- number of isotaps: 14152
- longest isotap: size(14) 78873322846617 ["putrefaction's", "stupefaction's"]
- sequence with most isotaps: (length: 12) 22737 ['acres', 'bards', 'barer', 'bares', 'barfs', 'baser', 'bases', 'caper', 'capes', 'cards', 'cares', 'cases']
x = 1: 0
x = 2: 4429
x = 3: 980
x = 4: 308
x = 5: 129
x = 6: 39
x = 7: 14
x = 8: 12
x = 9: 3
x = 10: 1
x = 11: 0
x = 12: 1
amount of isotaps of length x:
x = 1: 24
x = 2: 151
x = 3: 645
x = 4: 2134
x = 5: 2937
x = 6: 3389
x = 7: 2603
x = 8: 1366
x = 9: 517
x = 10: 218
x = 11: 81
x = 12: 49
x = 13: 11
x = 14: 5
Note that there are more isotaps of length 14. given is merely an example. The script is available here. I'm afraid I didn't do any fancy graphs, but the data is pretty interesting I think.
This is why I don't like Mines

I'll wait a second while everyone absorbs that screen shot. Just click it and look at it in full size. still waiting... You got it? So yeah, that's a game of Mines (that's minesweeper if you use windows) that I just finished. 99 mines, time is 5:12. That's pretty awesome. Except that I messed up on the last mine. Those who are familiar with Mines will see, though, that the square I picked is equally as valid as the other one. I did not lose due to a logic error, but merely because I was forced to guess.
And that just bothers me. I like Mines because it is a simple logic game that does not take much mind power to solve but does require some thinking. The problem with it is that most of the games I play end up requiring some guessing to finish. This is frustrating. One guess reduces your chances of winning to a mere 5o percent, due to no fault on your part.
Which makes me wonder, is it possible to generate minefields which are ensured to be solvable without guessing? How expensive is that?
Thursday, 19 February 2009
the GUI, CLI style
For the more tech-literate users, the Linux command-line interface is the best productivity boost one can get. Literally anything can be done with a few magical commands, and all without having to move this pesky mouse. Typing a command like 'locate' is much faster than launching whatever desktop search application you use, and you can go on to doing something with the found file in the same step using a pipe.
But the GUI has its uses. For one, it looks a lot snazzier. Second, any kind of data visualization is much better done in graphical mode (graphs, any kind of WYSIWYG editors including office applications). Still, it would be nice to be able to use the keyboard, which is a much more efficient input mechanism than the mouse (albeit with a steeper learning curve).
A recent project has emerged which attempt to bring the CLI to the GUI: Ubiquity. Ubiquity is a Firefox plug-in, which adds a natural language-like command line to the browser. For example, one can select some text, press CTRL-K (the shortcut to bring up Ubiquity), type "translate this to english," and press enter. This runs the selected text through Google's translator, and replaces your selection with the result. There is much more that can be done with this plug-in. I suggest you check out the video I linked above.
Another CLI-like interface, though much more limited, is Gnome Do (KDE users should check out the KDE equivalent, KRunner). It allows you to basically do away with the Gnome menu. You can open files with it, run applications, extract or create archives, tweet, etc. If you have the right plug-ins, there is almost nothing that cannot be done. Granted, the actual command line is still far more powerful. But Gnome Do can allow you to be much more productive, if you take the time to set it up and learn it.
Ubuntu has Gnome Do packages in its repositories, but they are unfortunately far out of date. Gnome Do has its own repo's, but they, too, lag a release behind. the only feasible option to get a recent release is to compile from source. luckily, Gnome Do's wiki provides good instructions, and compiling is fairly straightforward if you have gone through the process before. There is one caveat if you're running an older Ubuntu release: mono, one of the dependencies, is out of date. You can compile the latest version of mono yourself, or you could fall back to the latest official Gnome Do release:
But the GUI has its uses. For one, it looks a lot snazzier. Second, any kind of data visualization is much better done in graphical mode (graphs, any kind of WYSIWYG editors including office applications). Still, it would be nice to be able to use the keyboard, which is a much more efficient input mechanism than the mouse (albeit with a steeper learning curve).
A recent project has emerged which attempt to bring the CLI to the GUI: Ubiquity. Ubiquity is a Firefox plug-in, which adds a natural language-like command line to the browser. For example, one can select some text, press CTRL-K (the shortcut to bring up Ubiquity), type "translate this to english," and press enter. This runs the selected text through Google's translator, and replaces your selection with the result. There is much more that can be done with this plug-in. I suggest you check out the video I linked above.
Another CLI-like interface, though much more limited, is Gnome Do (KDE users should check out the KDE equivalent, KRunner). It allows you to basically do away with the Gnome menu. You can open files with it, run applications, extract or create archives, tweet, etc. If you have the right plug-ins, there is almost nothing that cannot be done. Granted, the actual command line is still far more powerful. But Gnome Do can allow you to be much more productive, if you take the time to set it up and learn it.
Ubuntu has Gnome Do packages in its repositories, but they are unfortunately far out of date. Gnome Do has its own repo's, but they, too, lag a release behind. the only feasible option to get a recent release is to compile from source. luckily, Gnome Do's wiki provides good instructions, and compiling is fairly straightforward if you have gone through the process before. There is one caveat if you're running an older Ubuntu release: mono, one of the dependencies, is out of date. You can compile the latest version of mono yourself, or you could fall back to the latest official Gnome Do release:
bzr checkout -rtag:0.8.0 gnome-do-0.8.0 gnome-doand install mono 1.9.1 from the badgerports repo. This will allow you to use Gnome Do's basic functionality. Building the plug-ins from source was somewhat more difficult. Dependency hell ensued, and I failed to build the plugins from source. I was finally able to get the plugins by downloading the gnome-plugins-0.8.0 deb for intrepid, manualy extracting the plugin files with the archive manager, and placing them in /usr/share/gnome-do/plugins. Not very amenable to upgrades, but working nonetheless. When you do get the package working, the functionality is pretty sweet.
Friday, 13 February 2009
pygame: decoupling rendering from game logic
The basic execution profile of any computer game almost always looks basically the same. The devil is in the details, of course, but the basics are always like this:
We can see that it is, therefore, desirable to make your game run at the same speed no matter what happens. With one caveat: We always want to render as many frames as we possibly can. More frames is a smoother experience, after all.
So we can see that it is in our interest to decouple the game logic updates from the rendering. The rendering should then proceed as fast as possible, but the game logic should proceed at a constant rate regardless of the frame rate.
The right way to do this, of course, is to look at the clock. First we must decide how many logic updates we want to do per second. For most games, about 20 to 25 will suffice. So the time between to updates should be 1/25 seconds. Then, every pass through the rendering loop (which still runs as fast as possible) we check to see how much time has passed, and, only if it is necessary, we make an update to the game. Then we proceed with rendering. If the update is skipped, we need the renderer to interpolate between the two logic updates, so that it does not just render the same world multiple times. This will result in a smoother game experience for fast computers, but will not slow down the game on the slower, older hardware.
in my gunge framework, there is a new Clock class in the experimental branch time-exp that handles this transparently for you. It watches over two things: real time, which advances continuously, and game time, which can be advanced by 1/(updates_per_second) by updating the game. It is worthy to note how game time advances in discrete units, since the game world is updated in steps every iteration of the main loop.
To decide whether the game should update, the Clock has the concept of game latency, or how far game time lags behind the real time. The continuously advancing real time increases the game latency, and it is decreased when the game updates, by 1/(updates_per_second). There are two strategies for deciding when to update the game:
- listen to user input, change game data appropriately
- update game objects (move objects, do collision detection, etc.)
- render world to the screen
We can see that it is, therefore, desirable to make your game run at the same speed no matter what happens. With one caveat: We always want to render as many frames as we possibly can. More frames is a smoother experience, after all.
So we can see that it is in our interest to decouple the game logic updates from the rendering. The rendering should then proceed as fast as possible, but the game logic should proceed at a constant rate regardless of the frame rate.
The right way to do this, of course, is to look at the clock. First we must decide how many logic updates we want to do per second. For most games, about 20 to 25 will suffice. So the time between to updates should be 1/25 seconds. Then, every pass through the rendering loop (which still runs as fast as possible) we check to see how much time has passed, and, only if it is necessary, we make an update to the game. Then we proceed with rendering. If the update is skipped, we need the renderer to interpolate between the two logic updates, so that it does not just render the same world multiple times. This will result in a smoother game experience for fast computers, but will not slow down the game on the slower, older hardware.
in my gunge framework, there is a new Clock class in the experimental branch time-exp that handles this transparently for you. It watches over two things: real time, which advances continuously, and game time, which can be advanced by 1/(updates_per_second) by updating the game. It is worthy to note how game time advances in discrete units, since the game world is updated in steps every iteration of the main loop.
To decide whether the game should update, the Clock has the concept of game latency, or how far game time lags behind the real time. The continuously advancing real time increases the game latency, and it is decreased when the game updates, by 1/(updates_per_second). There are two strategies for deciding when to update the game:
- game_latency > 1/(updates_per_second) -- this updates the game if the latency lags behind more than one update_length
- |game_latency - update_length| < |game_latency| -- this updates if it reduces the absolute value of the latency, i.e. if the game time comes closer to real time because of the update.
Wednesday, 11 February 2009
pyton: everything is an object
Remember that python game framework I was creating? The one with the silly name? (I won't actually tell you what the silly name was, dig through the archives or something). Well, I don't have access to the original code, since it is all in a nice git repository on my pc at home. But this has not prevented me from working on the code.
I've started a new fresh repository on my system here, and to make sure I won't make the same mistake, I've set up a github repository. The new name for the framework is gunge, but the only part that is currently available is the event handling part. I have, however, come across an interesting design challenge that really made me appreciate the fact that in python, everything is an object.
You see, the event system provides a decorator called bind that allows you to statically bind events. It would be used something like so:
The function on_keya would then be called whenever a KEYDOWN event occurs, and furthermore, only if event.unicode is equal to 'a.' There are a few more powerful features to this second argument, called the attribute filter, but that is for another time. How would this be implemented? there is a difference between this function and an actual instance method, bound to an instance.
My first idea was to store the information in some class variable called handlers, and have each instance use this variable to bind its actual methods upon initialization. This works in the simple cases, but becomes problematic with inheritance. A class variable does not carry over nicely between inherited classes, and furthermore, there is the problem of overidden functions. If a function is bound to a certain event in the parent class, and that function is overidden in the child, what should happen? should the parent binding still count, and how would this be implemented?
Implementation issues aside, this method also requires the user to create a new class variable in each class that is an event handler, and pass this handler into the bind decorator so that it can be used for annotation. The problem seemed insolvable. But then a wise lesson came to me: If you're design runs into implementation issues, do not try to solve the implementation issues. It is likely that you need a different design.
It came to me that functions, like pretty much everything in python, are just objects. With types, attributes, the whole shenanigans. So, it seemed much simpler to simply store the binding information as an attribute of the function. Since introspection can be used to find all of an instances methods, it is trivial to retrieve this information. This means that the boiler plate code of the class variable is gone, and that derived classes will retain the bindings of their parent class, unless that particular function is overridden. In that case, the parent functions is not part of the child class, and the binding must be respecified. And this is actually desirable, for clarity's sake.
Furthermore, we can allow a single event Binder object to allow multiple callbacks. This means that a class method can simply store its own Binder object, and each new class instance can simply add its own callback to this object. This reduces the amount of event Binder objects in the event manager drastically, as a class with one method bound to an event will have one Binder object, no matter how many instances of that class exist. This can have huge benefits in both space and speed, since an event has to be tested against an attribute filter just once.
The 'everything is an object' paradigm, together with powerful introspection capabilities, allow you to do a lot more with functions than would normally be possible. And the lesson for this week, of course: If your design has problems, don't try to work around them. Instead, change the design.
I've started a new fresh repository on my system here, and to make sure I won't make the same mistake, I've set up a github repository. The new name for the framework is gunge, but the only part that is currently available is the event handling part. I have, however, come across an interesting design challenge that really made me appreciate the fact that in python, everything is an object.
You see, the event system provides a decorator called bind that allows you to statically bind events. It would be used something like so:
class SomeClass(gunge.event.Handler):
@gunge.event.bind(pygame.KEYDOWN, {'unicode': 'a'})
def on_keya(self, event):
print "some code"
The function on_keya would then be called whenever a KEYDOWN event occurs, and furthermore, only if event.unicode is equal to 'a.' There are a few more powerful features to this second argument, called the attribute filter, but that is for another time. How would this be implemented? there is a difference between this function and an actual instance method, bound to an instance.
My first idea was to store the information in some class variable called handlers, and have each instance use this variable to bind its actual methods upon initialization. This works in the simple cases, but becomes problematic with inheritance. A class variable does not carry over nicely between inherited classes, and furthermore, there is the problem of overidden functions. If a function is bound to a certain event in the parent class, and that function is overidden in the child, what should happen? should the parent binding still count, and how would this be implemented?
Implementation issues aside, this method also requires the user to create a new class variable in each class that is an event handler, and pass this handler into the bind decorator so that it can be used for annotation. The problem seemed insolvable. But then a wise lesson came to me: If you're design runs into implementation issues, do not try to solve the implementation issues. It is likely that you need a different design.
It came to me that functions, like pretty much everything in python, are just objects. With types, attributes, the whole shenanigans. So, it seemed much simpler to simply store the binding information as an attribute of the function. Since introspection can be used to find all of an instances methods, it is trivial to retrieve this information. This means that the boiler plate code of the class variable is gone, and that derived classes will retain the bindings of their parent class, unless that particular function is overridden. In that case, the parent functions is not part of the child class, and the binding must be respecified. And this is actually desirable, for clarity's sake.
Furthermore, we can allow a single event Binder object to allow multiple callbacks. This means that a class method can simply store its own Binder object, and each new class instance can simply add its own callback to this object. This reduces the amount of event Binder objects in the event manager drastically, as a class with one method bound to an event will have one Binder object, no matter how many instances of that class exist. This can have huge benefits in both space and speed, since an event has to be tested against an attribute filter just once.
The 'everything is an object' paradigm, together with powerful introspection capabilities, allow you to do a lot more with functions than would normally be possible. And the lesson for this week, of course: If your design has problems, don't try to work around them. Instead, change the design.
Thursday, 5 February 2009
variable assignment in python
Hello everyone, welcome to the blog that rarely has posts! I should really stop making jokes about this. I think it's time for another programming blog post.
The following confusion often arises with programmers new to python, who come to understand that assignments in python are done by reference, not by value. This is correct, after a fashion, and not really that different from other languages. But a little knowledge is often more dangerous than no knowledge at all. While the following statement is not all that confusing for a c programmer who knows nothing about python, it is confusing if he has learned that all assignments are reference assignments:
>>> a = 1
>>> b = a
>>> a = 2
>>> b
1
>>>
The expected result, of course, is 2, not 1. Doesn't a reference the same data as b after the second statement? So shouldn't b reflect the change that was made in a?
No, it, shouldn't, because integers are immutable, which means we can't change them. This might seem strange. We could change the value of a without problems, couldn't we? how can it be immutable then? Well, Let's look at what happens when a simple kind of assignment happens in a fresh python interpreter. What goes on inside if we do this:
Python 2.5.2 (r252:60911, Jul 31 2008, 17:28:52)
[GCC 4.2.3 (Ubuntu 4.2.3-2ubuntu7)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> a = 1
Two things are being created here. First, a name. Second, some data. These things exist separately, something that becomes relevant later. Let's visualize the names and data in the interpreter at this time (cheesy graphics will follow):

Right, so we have one name, "a," pointing to some data, in this case an integer object with the value of 1. Pretty straightforward so far. Let's continue along this line. We'll execute the second statement in the above little piece of code:
>>> b = a
The result of this is that a second name is created, b. This is pointed at the same integer object as a, as we specified in the statement:
Now, let's shake things up: we're going to reassign a to something else:
>>> a = 2
Most people would think that the data would simply change it's value to 2, and the picture would remain basically the same. But this is where python catches you: integers are Immutable. That means their value can not change. Ever. So, what happens instead? A new integer object is created:
a is now pointing at the new integer object specified. But what about b? Well, we never told it to point to something else, so it is still pointing at the same old object that a used to be pointing at.
Here, then, is the fundamental aspect to grasp. You can make two names point to the same thing, but if that thing is immutable, it cannot be changed. Therefore, it makes no sense to think changes to one name would be reflected in the other. Because you cannot make changes, only make that name point to something else, which, indeed, messes up your synchronization.
In a language like C, creating two integers a and b will immedeately result in the creation of two integer objects in memory. The above behaviour of these two is expected, since the two names are pointing to two different objects. Upon learning that in python, the assignment b = a results in what is essentially the behaviour caused by the C statement int * b = &a, confusion arises. The missing gem here is the immutability, which makes the python behaviour sane again.
python: intuitive to the newbie, yet without being inconsistent.
The following confusion often arises with programmers new to python, who come to understand that assignments in python are done by reference, not by value. This is correct, after a fashion, and not really that different from other languages. But a little knowledge is often more dangerous than no knowledge at all. While the following statement is not all that confusing for a c programmer who knows nothing about python, it is confusing if he has learned that all assignments are reference assignments:
>>> a = 1
>>> b = a
>>> a = 2
>>> b
1
>>>
The expected result, of course, is 2, not 1. Doesn't a reference the same data as b after the second statement? So shouldn't b reflect the change that was made in a?
No, it, shouldn't, because integers are immutable, which means we can't change them. This might seem strange. We could change the value of a without problems, couldn't we? how can it be immutable then? Well, Let's look at what happens when a simple kind of assignment happens in a fresh python interpreter. What goes on inside if we do this:
Python 2.5.2 (r252:60911, Jul 31 2008, 17:28:52)
[GCC 4.2.3 (Ubuntu 4.2.3-2ubuntu7)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> a = 1
Two things are being created here. First, a name. Second, some data. These things exist separately, something that becomes relevant later. Let's visualize the names and data in the interpreter at this time (cheesy graphics will follow):

Right, so we have one name, "a," pointing to some data, in this case an integer object with the value of 1. Pretty straightforward so far. Let's continue along this line. We'll execute the second statement in the above little piece of code:
>>> b = a
The result of this is that a second name is created, b. This is pointed at the same integer object as a, as we specified in the statement:
Now, let's shake things up: we're going to reassign a to something else:
>>> a = 2
Most people would think that the data would simply change it's value to 2, and the picture would remain basically the same. But this is where python catches you: integers are Immutable. That means their value can not change. Ever. So, what happens instead? A new integer object is created:
a is now pointing at the new integer object specified. But what about b? Well, we never told it to point to something else, so it is still pointing at the same old object that a used to be pointing at.
Here, then, is the fundamental aspect to grasp. You can make two names point to the same thing, but if that thing is immutable, it cannot be changed. Therefore, it makes no sense to think changes to one name would be reflected in the other. Because you cannot make changes, only make that name point to something else, which, indeed, messes up your synchronization.
In a language like C, creating two integers a and b will immedeately result in the creation of two integer objects in memory. The above behaviour of these two is expected, since the two names are pointing to two different objects. Upon learning that in python, the assignment b = a results in what is essentially the behaviour caused by the C statement int * b = &a, confusion arises. The missing gem here is the immutability, which makes the python behaviour sane again.
python: intuitive to the newbie, yet without being inconsistent.
Saturday, 31 January 2009
“There is nothing wrong with change, if it is in the right direction”
So, the new semester's started, and there's some changes coming this way. First off, I'm moving out, away from the host family I've been staying with, and into to the dorms. This is at the same time a sad and happy tiding, but I believe it to be a necessary and good step in my program. Betty and I discovered that my social life was gravitating away from her house and in to the dorms. In short, I figured I was spending so much time there I might as well get myself a bed. They are way more comfortable then the chairs I spent nights in, in rooms not my own.
I haven't been doing a whole lot of interesting stuff since California. Classes are progressing normally, Chinese is hard, my algebra class is ridiculously easy (come on people, linear equations? It's a flashback to year one of my Vossius career), but getting more interesting every class. On the free time side of things, there's the regular multi player starcraft sessions like always (needless to say, I can kick the asses of a lot, but not everyone in the dorms. Ulukman is like a machine, unbelievable). Also, I've started to play the old Diablo games in anticipation of Diablo 3. While the original will get old in a matter of minutes, Diablo 2 is definitely a time-sucker. I recommend it to anyone who wants to play a good old hack-n-slasher.
The other thing soaking up my time (what I have left after taking off my social life) is Stargate: Atlantis. I have come into the possession of all five seasons of this sci-fi show. I watched the older Stargate: SG-1 a few years ago, and it was pretty good. Atlantis is a step up, however. I can recommend this series to anyone who is lamenting the absence of new, good star trek shows, and also fans of sci-fi in general. This is stuff worth watching.
So, tomorrow is move day. I do not know my room yet, but my roommate will most likely be Kersten, who is also moving out of Betty's house. We will still visit them of course, and call regularly. But it'll be a new and exciting semester.
Today's quote is from Winston Churchill. Couldn't find anything better, sorry.
I haven't been doing a whole lot of interesting stuff since California. Classes are progressing normally, Chinese is hard, my algebra class is ridiculously easy (come on people, linear equations? It's a flashback to year one of my Vossius career), but getting more interesting every class. On the free time side of things, there's the regular multi player starcraft sessions like always (needless to say, I can kick the asses of a lot, but not everyone in the dorms. Ulukman is like a machine, unbelievable). Also, I've started to play the old Diablo games in anticipation of Diablo 3. While the original will get old in a matter of minutes, Diablo 2 is definitely a time-sucker. I recommend it to anyone who wants to play a good old hack-n-slasher.
The other thing soaking up my time (what I have left after taking off my social life) is Stargate: Atlantis. I have come into the possession of all five seasons of this sci-fi show. I watched the older Stargate: SG-1 a few years ago, and it was pretty good. Atlantis is a step up, however. I can recommend this series to anyone who is lamenting the absence of new, good star trek shows, and also fans of sci-fi in general. This is stuff worth watching.
So, tomorrow is move day. I do not know my room yet, but my roommate will most likely be Kersten, who is also moving out of Betty's house. We will still visit them of course, and call regularly. But it'll be a new and exciting semester.
Today's quote is from Winston Churchill. Couldn't find anything better, sorry.
Wednesday, 12 November 2008
"happiness is like peeing your pants: everyone can see it, but only you can feel its warmth"
I figured I might as well take another month break from this place. Regular posting schedules are hard, man. I set up Google calendar to e-mail me every day a post is due, but I tend to just ignore the e-mails. I am bad, I know. But I'm out here again today, to praise my laptop.
And my trusty Eee has plenty of reasons to be praised. First, it gets you girls. That is usually not the case with technology, but there's something about a tiny laptop that attracts them like honey attracts bees. Maybe it's the cute factor, I don't know. I will refer you here and stop talking about it now. The second reason to praise my laptop is this: it's got linux on it. And that is cool, because it means that
what prompted this? Well, this morning I woke up and started my laptop as usual. I had obtained some Linkin Park music the previous day, and wanted to sync this to my iPod. This I do using the Banshee media player. It had sort-of kind-of iPod support, which means it will see your iPod. And after an inordinate amount of time, sometimes it loads some of the songs on it for playing on your pc. And you can drag files to it to upload them. Hopefully. However, today was different. Suddenly, everything worked flawlessly, within seconds. Turns out the trusty package manager had updated Banshee to its new version, 1.4.0, and this version works.
This, my friends, makes me happy.
Today's quote is unsourced. I saw it on bash.org, unsourced. You may have figured out already that I don't know what the source is.
And my trusty Eee has plenty of reasons to be praised. First, it gets you girls. That is usually not the case with technology, but there's something about a tiny laptop that attracts them like honey attracts bees. Maybe it's the cute factor, I don't know. I will refer you here and stop talking about it now. The second reason to praise my laptop is this: it's got linux on it. And that is cool, because it means that
- It never crashes
- You can click the little terminal button and noone will understand what you're doing anymore (including you, sometimes)
- Most things actually work
- Things that don't work magically start working some day, making you happy
sudo apt-get -y install Yand that, my friends, is awesome. Not only does this install and set up the software ready for use, it will download future, newer versions of Y automagically, and set them up without your intervention. And that is why things that don't work suddenly start working someday, making you happy in the process.
what prompted this? Well, this morning I woke up and started my laptop as usual. I had obtained some Linkin Park music the previous day, and wanted to sync this to my iPod. This I do using the Banshee media player. It had sort-of kind-of iPod support, which means it will see your iPod. And after an inordinate amount of time, sometimes it loads some of the songs on it for playing on your pc. And you can drag files to it to upload them. Hopefully. However, today was different. Suddenly, everything worked flawlessly, within seconds. Turns out the trusty package manager had updated Banshee to its new version, 1.4.0, and this version works.
This, my friends, makes me happy.
Today's quote is unsourced. I saw it on bash.org, unsourced. You may have figured out already that I don't know what the source is.
Monday, 13 October 2008
“There is no such thing as accident; it is fate misnamed”
You might have noticed another on of my post hiatuses the past two weeks or so. This time I did not go on a trip, nor did I forget or let laziness get the best of me. So what happened? (Bear with me here, I'm trying to create some suspense. All will be revealed).
You might also notice how I was singing an ode to cycling and exercise in my last post. And I mention that with a reason. Because I was pretty happy riding my bicycle, until September 29, at about 6:45 PM, when I hit reality. And reality, in this case, was in the form of a car. I will keep the accident report short: I flew over the hood, through the air, woke up in the ER with a concussion and a gap the size of a day in my memory, and spent the past two weeks recovering.
So there you go. Americans just can't take anybody doing something healthy on their roads. Seriously though, it was totally my fault. I ignored a stop sign. And well, if reality throws a stop sign at you, and you ignore it, people are going to get hurt. That's just a fact. So now I can't even run for the next month, and I am already bored out of my mind. Might as well start watching the terrible TV over here. The only good thing is the SciFi channel.
today's quote is from Napoleon. My new goal is to get a fantastic friends quote in there, but the only one that made me laugh so far was the one with a star trek reference. Go figure.
You might also notice how I was singing an ode to cycling and exercise in my last post. And I mention that with a reason. Because I was pretty happy riding my bicycle, until September 29, at about 6:45 PM, when I hit reality. And reality, in this case, was in the form of a car. I will keep the accident report short: I flew over the hood, through the air, woke up in the ER with a concussion and a gap the size of a day in my memory, and spent the past two weeks recovering.
So there you go. Americans just can't take anybody doing something healthy on their roads. Seriously though, it was totally my fault. I ignored a stop sign. And well, if reality throws a stop sign at you, and you ignore it, people are going to get hurt. That's just a fact. So now I can't even run for the next month, and I am already bored out of my mind. Might as well start watching the terrible TV over here. The only good thing is the SciFi channel.
today's quote is from Napoleon. My new goal is to get a fantastic friends quote in there, but the only one that made me laugh so far was the one with a star trek reference. Go figure.
Thursday, 25 September 2008
"Life is like riding a bicycle. To keep your balance you must keep moving"
Did I mention I was in Minneapolis, Minnesota, this weekend? anyway, it threw a spoke in my posting schedule. We don't do catching up on the net, and I don't have time for that anyways, so I'm just going to continue on as consistently as I can.
For the last, say, 10 years of my life, the bicycle has been my preferred mode of transport. The Netherlands has a deeply ingrained bicycle culture, which is both the reason this preference exists and the method by which it is sustained. Riding your bike through Amsterdam is possibly the only sane way to navigate it. Since no one on a bike there has any regard for traffic laws, driving a car there is virtually equal to murder (suicide is not really the right word here).
However, in The good old USA, riding a bike categorizes you as definitively out of your freakin' mind. Why, that's why god gave us the car, isn't it? Added to that is the complete lack of bicycle-friendly infrastructure, and the fact that everything here is so damn far away from other things. Riding a bike here is, in other words, is a royal pain in the ass, no matter how good a saddle you have.
Having said all that, my host father has recently bought me a bicycle. Not one of those things we Dutchies would use to navigate traffic comfortably, but a racing model. This thing was built for speed. 10 gears on it, which are necessary with all the hills around here. So despite all my complaints, I have been cycling my way to school recently, and it is an absolute joy. Finally exercising my muscles again! What I'm trying to say is, get off your fat ass and go do some physical exercise, you damned americans!
today's quote supposedly came from Einstein, though this has not been difinitely confirmed
For the last, say, 10 years of my life, the bicycle has been my preferred mode of transport. The Netherlands has a deeply ingrained bicycle culture, which is both the reason this preference exists and the method by which it is sustained. Riding your bike through Amsterdam is possibly the only sane way to navigate it. Since no one on a bike there has any regard for traffic laws, driving a car there is virtually equal to murder (suicide is not really the right word here).
However, in The good old USA, riding a bike categorizes you as definitively out of your freakin' mind. Why, that's why god gave us the car, isn't it? Added to that is the complete lack of bicycle-friendly infrastructure, and the fact that everything here is so damn far away from other things. Riding a bike here is, in other words, is a royal pain in the ass, no matter how good a saddle you have.
Having said all that, my host father has recently bought me a bicycle. Not one of those things we Dutchies would use to navigate traffic comfortably, but a racing model. This thing was built for speed. 10 gears on it, which are necessary with all the hills around here. So despite all my complaints, I have been cycling my way to school recently, and it is an absolute joy. Finally exercising my muscles again! What I'm trying to say is, get off your fat ass and go do some physical exercise, you damned americans!
today's quote supposedly came from Einstein, though this has not been difinitely confirmed
Thursday, 18 September 2008
"People accept their limitations so as to prevent themselves from wanting anything they might get"
I've been quite happy with my Eee PC 901. You get noticed by everyone in the cafetaria (and sometimes mocked, but who cares?), and it's a nifty little thing to have around. Honestly, I sometimes think I only bought it for the cool-factor. You know, like drooling at the iPod section of a store? My inner gadget-freak acting up. However, the Xandros-based linux distro installed on the thing is, frankly... awfull. For, one, the simple GUI which seems to emphasize easy, is just too limiting. And the advanced mode is KDE based, which is just not my cup of tea.
So today I installed Eeebuntu on my little Eee pc, after first trying Eeedora and failing to get either wifi or ethernet working. Now, Eeebuntu doesn't actually support them out of the box either, but at least it makes it possible to install them. Let me show you a list of some things eeedora does not provide out of the box:
- GCC
- make
- G++
- wget
- man
- open-office
- any multimedia applications
today's quote was already harder to find. It comes from Celia Green. Also, WikiQuote is my newest friend.
Tuesday, 16 September 2008
If you can't decide in a day... you can't decide
I can get quite irritated at the the indecisiveness of some people, Most likely because I am one of those people myself. Nothing annoys us more than seeing our own flaws accentuated in someone else. A few days ago, I went with Betty to the Wal-mart to buy me a cellphone. Of course, it is impossible to go Wal-mart with a woman and a shopping list, buy what you need, and get out. At a certain point you will hear the line "Oh, while we're here..." or one of its many variations, which will be the start of a shopping spree no man can easily endure.
To Wal-mart's credit, they have quite a few different products. And by that I don't mean that they have everything from hunting rifles to peanut butter (they do), but that they have a hundred different brands of peanut butter. Including one that sells 16 kilogram(!!) buckets. But I digress.
On this particular day, Betty had decided to buy some bread, and so it was that I found myself at the giant store's bread section. And Betty was dancing around it like a child around a Christmas tree. Feeling the texture of all the different breads, admiring their looks, marveling at all the different flavours. Seriously, this went on for 10 minutes. I mean, how hard is it buy some friggin' bread!?!
And that's when it got even worse. I know, it's hard to imagine, but she managed it. She did the one thing possible to make this situation even more dire: She asked for my opinion.
As you may have guessed, I don't give a **** about bread. And I was annoyed. Normally, when faced with such a situation, men use tried methods that have been known to work, such as the no-no-yes rule. However, this only works for specific questions ("do you like this?"), not when asked for an opinion. Needless to say, I panicked a bit, and opted for the simple approach: point at the nearest bread and pray she'll just go with that. Luckily, it worked this time, though she caught on to the arbitrary nature of my decision.
The funny thing is, I did the exact right thing one can do in such a situation. If it is that hard to choose between the different breads (and one can abstract this advice to other concepts), it is likely that the choices are equal in value. Which means that more important than what you choose, is that you choose. The worst option you have is not making a choice at all.
Epilogue
Betty's indecisiveness cropped up again yesterday, when we were at an auction. I swear, this man talked so fast it was unbelievable. But I'm straying again. The problem was that by the time Betty decided she wanted to bid on some item, it was already sold. I was determined not to get caught in that habit, so when an old keyboard came up for auction I immediately cast aside any doubts and vowed to get it. And I did. For a measly 80 dollars, I now have a keyboard standing in my room, a re-branded JVC. It doesn't even come near a piano, but anything is better than nothing at all.
Today's title is a quote from "Munich," which is a good movie. Go see it. And sorry I didn't make it with the post. I'm only an hour late in my timezone though.
To Wal-mart's credit, they have quite a few different products. And by that I don't mean that they have everything from hunting rifles to peanut butter (they do), but that they have a hundred different brands of peanut butter. Including one that sells 16 kilogram(!!) buckets. But I digress.
On this particular day, Betty had decided to buy some bread, and so it was that I found myself at the giant store's bread section. And Betty was dancing around it like a child around a Christmas tree. Feeling the texture of all the different breads, admiring their looks, marveling at all the different flavours. Seriously, this went on for 10 minutes. I mean, how hard is it buy some friggin' bread!?!
And that's when it got even worse. I know, it's hard to imagine, but she managed it. She did the one thing possible to make this situation even more dire: She asked for my opinion.
As you may have guessed, I don't give a **** about bread. And I was annoyed. Normally, when faced with such a situation, men use tried methods that have been known to work, such as the no-no-yes rule. However, this only works for specific questions ("do you like this?"), not when asked for an opinion. Needless to say, I panicked a bit, and opted for the simple approach: point at the nearest bread and pray she'll just go with that. Luckily, it worked this time, though she caught on to the arbitrary nature of my decision.
The funny thing is, I did the exact right thing one can do in such a situation. If it is that hard to choose between the different breads (and one can abstract this advice to other concepts), it is likely that the choices are equal in value. Which means that more important than what you choose, is that you choose. The worst option you have is not making a choice at all.
Epilogue
Betty's indecisiveness cropped up again yesterday, when we were at an auction. I swear, this man talked so fast it was unbelievable. But I'm straying again. The problem was that by the time Betty decided she wanted to bid on some item, it was already sold. I was determined not to get caught in that habit, so when an old keyboard came up for auction I immediately cast aside any doubts and vowed to get it. And I did. For a measly 80 dollars, I now have a keyboard standing in my room, a re-branded JVC. It doesn't even come near a piano, but anything is better than nothing at all.
Today's title is a quote from "Munich," which is a good movie. Go see it. And sorry I didn't make it with the post. I'm only an hour late in my timezone though.
Friday, 12 September 2008
Happy Birthday Dad!
Today is my fathers forty-seventh birthday. Congratulations from the states dad! Don't miss me too much!
I've been having trouble getting posts out ever since coming to the states, so I have decided to put myself on a more strict posting schedule. Posts will be every Monday, Wednesday, and Friday. Sunday posting will be optional. for those of you following the mailing list, posting there will be twice a week, Wednesday and Saturday. These have all been recorded in my google calendar to remind me. There may be an overlap in topics, so if you follow both of these outlets, be prepared for repetition. Together with the new schedule will be a new format: every post title will be a quote from a video game, movie, book, or other such thing. The post topic will relate to the quote in some way but not to the source of the quote in question. Exceptions are made when a political event or other recent real-world thing will be discussed. I'm hoping this format and schedule will help me write some more interesting posts.
I bought a tennis racket and some balls this week. I haven't had the chance to use them yet but I'm really pumped about that. A few people at the dorms play tennis and I want to play them. There are a few things still on my to-buy list, including a mobile phone and a camera. I've been drooling over iPhones, but I'm definitely not going to buy one at the ridiculous 2-year plan (60 bucks a month!) that they come with. the iPod touch is also tempting, but the 32 gig is too expensive and I still have a good iPod. My inner gadget freak is just acting up again. Especially after seeing the refurbished section at the applestore, with 80GB iPod classics going for just 176 dollars. Every geek in the world has a thing for Apple I guess.
My current favorite songs are "the poet and the pendulum" by Nightwish and "I'm yours" by Jason Mraz. I guess it shows my conflicting musical tastes. If anyone is interested, I will keep listing these as theey change
I've been having trouble getting posts out ever since coming to the states, so I have decided to put myself on a more strict posting schedule. Posts will be every Monday, Wednesday, and Friday. Sunday posting will be optional. for those of you following the mailing list, posting there will be twice a week, Wednesday and Saturday. These have all been recorded in my google calendar to remind me. There may be an overlap in topics, so if you follow both of these outlets, be prepared for repetition. Together with the new schedule will be a new format: every post title will be a quote from a video game, movie, book, or other such thing. The post topic will relate to the quote in some way but not to the source of the quote in question. Exceptions are made when a political event or other recent real-world thing will be discussed. I'm hoping this format and schedule will help me write some more interesting posts.
I bought a tennis racket and some balls this week. I haven't had the chance to use them yet but I'm really pumped about that. A few people at the dorms play tennis and I want to play them. There are a few things still on my to-buy list, including a mobile phone and a camera. I've been drooling over iPhones, but I'm definitely not going to buy one at the ridiculous 2-year plan (60 bucks a month!) that they come with. the iPod touch is also tempting, but the 32 gig is too expensive and I still have a good iPod. My inner gadget freak is just acting up again. Especially after seeing the refurbished section at the applestore, with 80GB iPod classics going for just 176 dollars. Every geek in the world has a thing for Apple I guess.
My current favorite songs are "the poet and the pendulum" by Nightwish and "I'm yours" by Jason Mraz. I guess it shows my conflicting musical tastes. If anyone is interested, I will keep listing these as theey change
Tuesday, 19 August 2008
academic programming
School has started over here in Wisconsin, and so far I have had a Web development class and a Visual Basic class. So far, I'm okay with each of them, but not particularly impressed. I guess my level of skill exceeds either of these classes, but they are prerequisites for the more interesting C# classes that I'll get in the second semester.
The web development class jumped right into coding HTML, which I regard as a good thing to do. Though I think more effort could have gone into explaining the nature of HTML code, like the differences between content and markup, I was happy to learn that old ways of doing styling were no longer used, and basic CSS was taught in the class.
The teacher explained to us how she had learned that it was okay not to close your p tags, but that this was regarded as wrong these days. So far so good. I did, however, regret that she did not always use strict XHTML, and sometimes lapsed into incorrect structures like these:
The visual Basic class was a bit more disappointing. First off, we did not get into any coding whatsoever the first class. Most of the class was spent looking at different types of flowcharts and UML stuff. Second, I was quite disappointed to learn that the software development lifecycle we were taught was basically the waterfall. Then the class went of trying to explain OO design, inheritance, polymorphism... these are things that cannot be taught without knowing some coding. The result was that the subjects were being dumbed down and incorrectly explained.
On another note, our VB teacher is female (which I find surprising, though I carry no judgement) and used to work as a COBOL programmer (well, nobody's perfect). She also teaches the C# and information security classes, though my info security class is not taught by her. I'm feeling lucky that I already have programming experience, because I think I would feel very confused coming out of the VB class had I had no previous experience.
Overall, I liked the HTML class better than the VB one. I think the teacher was a lot better (should I note my WebDev teacher is also female?), and it at least adheres to current development standards, or at least makes an effort in that direction. We'll see how things progress
The web development class jumped right into coding HTML, which I regard as a good thing to do. Though I think more effort could have gone into explaining the nature of HTML code, like the differences between content and markup, I was happy to learn that old ways of doing styling were no longer used, and basic CSS was taught in the class.
The teacher explained to us how she had learned that it was okay not to close your p tags, but that this was regarded as wrong these days. So far so good. I did, however, regret that she did not always use strict XHTML, and sometimes lapsed into incorrect structures like these:
To be clear, what I'm referring to here is the incorrect order in closing tags. (sorry about the dots and everything, I'm trying to get blogger not to eat HTML tags but I'm so far unsuccessful. Entities, on the other hand, are not recognised).<.tag1><.tag2>some content<./tag1><./tag2>
The visual Basic class was a bit more disappointing. First off, we did not get into any coding whatsoever the first class. Most of the class was spent looking at different types of flowcharts and UML stuff. Second, I was quite disappointed to learn that the software development lifecycle we were taught was basically the waterfall. Then the class went of trying to explain OO design, inheritance, polymorphism... these are things that cannot be taught without knowing some coding. The result was that the subjects were being dumbed down and incorrectly explained.
On another note, our VB teacher is female (which I find surprising, though I carry no judgement) and used to work as a COBOL programmer (well, nobody's perfect). She also teaches the C# and information security classes, though my info security class is not taught by her. I'm feeling lucky that I already have programming experience, because I think I would feel very confused coming out of the VB class had I had no previous experience.
Overall, I liked the HTML class better than the VB one. I think the teacher was a lot better (should I note my WebDev teacher is also female?), and it at least adheres to current development standards, or at least makes an effort in that direction. We'll see how things progress
Tuesday, 12 August 2008
I have arrived
Welcome, everyone, to my first message from the United States.
The trip to Wisconsin was mostly smooth, without any delays or other annoying stuff. It was, of course, tiring, but such things are unavoidable. My digestive system is still a bit upset, and I'm also still tired, but I'm sure I will eventually adapt. The weather here is a nice 25 degrees, mostly sunny (though today is a bit overcast). My host family is a married couple called Betty and Ron (I won't go into last names because of privacy). They have four children who are all out of the house already, and live mostly in Arizona. Ron is a long distance truck driver, so he'll be home mostly on weekends. Betty is part-time medical transcriptionist who I believe works for a dentist.
There is a nice mountain right across from the house, with a few skyslopes and everything. I'm looking forward to winter snowboarding and everything that goes along with that.
School hasn't started yet, it will begin next monday. I met a woman from NTC (my school) at the airport, who gave me a super thick booklet which I haven't read yet, but will. I've driven around town with my host mother, and seen the college already. She seems to think of everything as small, though it is all a lot bigger than what we have in the Netherlands.
This post was written from Betty's computer, but I'll be buying my own soon for the most work I have to do. So I'll see you all soon from my own pc. I'll also be buying a camera so you can all see what my new home looks like.
The trip to Wisconsin was mostly smooth, without any delays or other annoying stuff. It was, of course, tiring, but such things are unavoidable. My digestive system is still a bit upset, and I'm also still tired, but I'm sure I will eventually adapt. The weather here is a nice 25 degrees, mostly sunny (though today is a bit overcast). My host family is a married couple called Betty and Ron (I won't go into last names because of privacy). They have four children who are all out of the house already, and live mostly in Arizona. Ron is a long distance truck driver, so he'll be home mostly on weekends. Betty is part-time medical transcriptionist who I believe works for a dentist.
There is a nice mountain right across from the house, with a few skyslopes and everything. I'm looking forward to winter snowboarding and everything that goes along with that.
School hasn't started yet, it will begin next monday. I met a woman from NTC (my school) at the airport, who gave me a super thick booklet which I haven't read yet, but will. I've driven around town with my host mother, and seen the college already. She seems to think of everything as small, though it is all a lot bigger than what we have in the Netherlands.
This post was written from Betty's computer, but I'll be buying my own soon for the most work I have to do. So I'll see you all soon from my own pc. I'll also be buying a camera so you can all see what my new home looks like.
Wednesday, 30 July 2008
Pre-leave post
It's not that far away now anymore, the exchange. I may or may not have mentioned this, but I will leave for the states august 11, just under two weeks from now. I am strangely calm. Serene, I would almost say. In contrast, my mom is sort of freaking out all of a sudden. She has the impression that I need to do a lot of things before leaving. I wouldn't know what, really. Clean out my room, pack my bags, and we're all set.
Tania, my mexican alter-ego who will be replacing me during my time abroad, will arrive the ninth, two days before I leave. She'll have to bear with the guest room for a few days, but I don't think that's such a big deal. I'm floating between excited and nervous about meeting here. She speaks decent english, so it probably shouldn't be a problem, but I'm still nervous. More than about my own host family, which incidentally I don't know a thing about.
I should probably mention the dark knight. A friend of mine had tickets to the (Dutch) pre-run, the night before the official opening. We were seated basically exactly in the center of the IMAX theater, which was really awesome. As a bonus, free beer and nachos were served. And let's not forget the movie, which is awesome for a three reasons: the performance of Heath Ledger, the character that really drives this thing along. Second reason is not placing all attention on awesome special effects. They're there, but they don't take center stage for a change. And third reason is Morgan Freeman, one of my favorite actors of all time. In my eyes, a movie gets points just for him being in it.
I'll be seeing Wall-e tomorrow. I'm really expecting a lot from that movie. I'm hoping it'll be a pixar movie worth owning, which I haven't seen since Finding Nemo. Ratatouille is also good, I heard, but I never got the chance to see it. Maybe I'll rent the DVD once.
Tania, my mexican alter-ego who will be replacing me during my time abroad, will arrive the ninth, two days before I leave. She'll have to bear with the guest room for a few days, but I don't think that's such a big deal. I'm floating between excited and nervous about meeting here. She speaks decent english, so it probably shouldn't be a problem, but I'm still nervous. More than about my own host family, which incidentally I don't know a thing about.
I should probably mention the dark knight. A friend of mine had tickets to the (Dutch) pre-run, the night before the official opening. We were seated basically exactly in the center of the IMAX theater, which was really awesome. As a bonus, free beer and nachos were served. And let's not forget the movie, which is awesome for a three reasons: the performance of Heath Ledger, the character that really drives this thing along. Second reason is not placing all attention on awesome special effects. They're there, but they don't take center stage for a change. And third reason is Morgan Freeman, one of my favorite actors of all time. In my eyes, a movie gets points just for him being in it.
I'll be seeing Wall-e tomorrow. I'm really expecting a lot from that movie. I'm hoping it'll be a pixar movie worth owning, which I haven't seen since Finding Nemo. Ratatouille is also good, I heard, but I never got the chance to see it. Maybe I'll rent the DVD once.
Friday, 4 July 2008
for the sake of content
So, after almost a month hiatus, I am now back to entertain you with another post. I'm not going to think up any more excuses for not posting. Frankly, with my day job progressing normally, there's just not much going on worth blogging about. I am of course kept busy, implementing the A* algorithm in python and other such niceties. This one jumps out at me since the use of a heuristic makes A* annoyingly unpredictable. Moving around the goal or start points of a graph might work just fine. Alternatively, it could blow up in your face for no apparent reason and take off finding a path to China.
I'm writing this at work right now, to keep myself from falling asleep. Yesterday was my friend's birthday party. The main dish was the movie The Happening, a horror/disaster movie not unlike The Day After Tomorrow. This time around, the plants are angry at us and dispense a neurotoxin that makes people want to literally kill themselves. I am not joking. The movie started with construction workers jumping off their buildings en masse, in an enactment of the infamous lemmings. Though we noted and appreciated the ties between this movie and the suicide bunnies, we feel safe in recommending that you do not go see this movie.
Despite resolutions to the contrary I was (mis)led by temptation to party on far too long, finally hitting the sack at about 3:30 AM. Of course our little kittens no longer have any qualms about going into my bedroom, jumping on my bed, and start hunting one of my body parts that happens to be moving at the time. This was not appreciated, and I conveyed this message to them in clear and concise manner. No excessive violence was used, of course.
I will make a feeble attempt at dragging myself through the day. I am afraid that with my limited concentration, the bugs/lines of code ratio would exceed one, which makes programming an extremely bad idea at the moment. I've decided to focus on the simple things, letting the hard ones for after the weekend, when my mental state has returned to normal levels.
I'm writing this at work right now, to keep myself from falling asleep. Yesterday was my friend's birthday party. The main dish was the movie The Happening, a horror/disaster movie not unlike The Day After Tomorrow. This time around, the plants are angry at us and dispense a neurotoxin that makes people want to literally kill themselves. I am not joking. The movie started with construction workers jumping off their buildings en masse, in an enactment of the infamous lemmings. Though we noted and appreciated the ties between this movie and the suicide bunnies, we feel safe in recommending that you do not go see this movie.
Despite resolutions to the contrary I was (mis)led by temptation to party on far too long, finally hitting the sack at about 3:30 AM. Of course our little kittens no longer have any qualms about going into my bedroom, jumping on my bed, and start hunting one of my body parts that happens to be moving at the time. This was not appreciated, and I conveyed this message to them in clear and concise manner. No excessive violence was used, of course.
I will make a feeble attempt at dragging myself through the day. I am afraid that with my limited concentration, the bugs/lines of code ratio would exceed one, which makes programming an extremely bad idea at the moment. I've decided to focus on the simple things, letting the hard ones for after the weekend, when my mental state has returned to normal levels.
Tuesday, 17 June 2008
School's over for me!
I've been back for a few days now, but there has been so much going on I didn't have the time to get around to posting something. Well then, where to start, where to start...
Probably most important is that I passed my exams with flying colors. Here are my marks:
There will also be german and french marks appearing on my diploma, but I passed those classes 3 years ago with similar marks. Festivities have already commenced to celebrate my diploma.
And when I say festivities I actually mean my job as a python programmer has just started. I'm sitting in an office right now, making a wxPython application that I won't bore you with. It's actually quite fun, though I have spent most of my time reading documentation and experimenting with the GraphicsContext API.
In my previous post I said I would be going on a vacation with some friends. I mentioned Ameland as a likely destination, but actually the goal was Terschelling, the island next to it, throwing all my rabid fans and paperazzi off my track. Actually, I just forgot what island we had decided upon and picked one at random, but he former story sounds more exciting.
Anyway, we had a lot of fun there, the weather was great, and we played midget golf. That's all you need to know really. I will give you one more nugget of information: our vacation at some point involved beer and a soccer match, which we won.
Now onto more important news: exchange. In the middle of my vacation, I took a leave of my friends and traveled to the city of Arnhem, where the exchange information and preparation weekend was held. About a hundred of my fellow exchange students showed up. Strangely, about eighty percent of those also went to the USA, with rather a lot of them going to states in the lake michigan area. About the weekend I could also bore you with endless details, but it should suffice to pass judgement in a single word: exhausting. There was beer here also, and the amount of hours spent sleeping were surprisingly little. Though we were talked to a lot, I would not call the weekend informative. Most of this talking carried the same single message: judge not, for thy culture is different. A not altogether surprising variant to the well known biblical saying.
Last but not least: two little kittens can now be seen walking in our house, chasing each other or sleeping lazily in the sun. The chasing must be quite tiring, I believe. I love them already. Pics will be coming up ASAP. They do not dare enter my bedroom yet, granting me my sleep at night. The stairs are a very intimidating obstacle, I concur. But this will not likely last long. They already wake up my sister wrestling in her room at night. Sometimes even on her bed.
Probably most important is that I passed my exams with flying colors. Here are my marks:
| Dutch: | 7 |
| Latin: | 6 |
| Philosophy: | 6 |
| English: | 8 |
| Chemistry: | 8 |
| Physics: | 8 |
| Math: | 8 |
There will also be german and french marks appearing on my diploma, but I passed those classes 3 years ago with similar marks. Festivities have already commenced to celebrate my diploma.
And when I say festivities I actually mean my job as a python programmer has just started. I'm sitting in an office right now, making a wxPython application that I won't bore you with. It's actually quite fun, though I have spent most of my time reading documentation and experimenting with the GraphicsContext API.
In my previous post I said I would be going on a vacation with some friends. I mentioned Ameland as a likely destination, but actually the goal was Terschelling, the island next to it, throwing all my rabid fans and paperazzi off my track. Actually, I just forgot what island we had decided upon and picked one at random, but he former story sounds more exciting.
Anyway, we had a lot of fun there, the weather was great, and we played midget golf. That's all you need to know really. I will give you one more nugget of information: our vacation at some point involved beer and a soccer match, which we won.
Now onto more important news: exchange. In the middle of my vacation, I took a leave of my friends and traveled to the city of Arnhem, where the exchange information and preparation weekend was held. About a hundred of my fellow exchange students showed up. Strangely, about eighty percent of those also went to the USA, with rather a lot of them going to states in the lake michigan area. About the weekend I could also bore you with endless details, but it should suffice to pass judgement in a single word: exhausting. There was beer here also, and the amount of hours spent sleeping were surprisingly little. Though we were talked to a lot, I would not call the weekend informative. Most of this talking carried the same single message: judge not, for thy culture is different. A not altogether surprising variant to the well known biblical saying.
Last but not least: two little kittens can now be seen walking in our house, chasing each other or sleeping lazily in the sun. The chasing must be quite tiring, I believe. I love them already. Pics will be coming up ASAP. They do not dare enter my bedroom yet, granting me my sleep at night. The stairs are a very intimidating obstacle, I concur. But this will not likely last long. They already wake up my sister wrestling in her room at night. Sometimes even on her bed.
Thursday, 29 May 2008
I am a free man!
Hurray! The exams are finally over, and until august, I am basically a free man! No more school, no more boring stuff, no more nothing. Just me and the things I want to do. And THAT means programming.
But first, next week I'm going on a vacation with two friends of me. A camping trip of sorts. Our destination will most likely be Ameland. Or another of the Wadden Islands. We'll be leaving saturday, and I expect to be back sometime the week after that.
But first, next week I'm going on a vacation with two friends of me. A camping trip of sorts. Our destination will most likely be Ameland. Or another of the Wadden Islands. We'll be leaving saturday, and I expect to be back sometime the week after that.
Subscribe to:
Posts (Atom)


