Thursday, August 13, 2009

Man, if I continue writing like that, my next post will be in October 2015. I certainly hope that blogs will still be around at that time. Anyway ...

What came to my mind these days, could turn out to be a promising idea. I was been working on an alpha prototype for my Rapid Prototyping in Game Development course, when I thought how much better it would be if we could create game prototypes using markup code - just like we create Flex or WPF apps. Imagine how much cleaner and comprehensible it would be for not-so-much-in-dev guys: designers, creative people, etc.

Instead of writing tons of declarations on the C# (or whatever language is used) side, one could declare a scene using xml structures.The code will have all the advantages of MXML/XAML such as event bubbling, code nesting, binding, etc.

Two possible solutions come to mind:
1. Integrating XNA with WPF
2. Integrating Papervision3D with FLEX

I guess that integrating PV3D with FLEX will be much easier to integarte.

Monday, June 29, 2009

Pretty Good Impressions from Flash : Movie Clips

I've just recently started using Flash IDE as a development environment. Having a programming backgroung, I've always considered the Flash IDE too "out of the box" for development work. Plus, the built-in ActionScript editor, which I still do not like and try to avoid using always put out my efforts to deal with it. That's why my first experiments with ActionScript turned out to be using Flex. Flex is great, there is no doubt in that, but every tool has its particular purpose. When one wants to setup a WIMP web or desktop app, Flex is really the right one. For rapid prototyping and game development, though, it is not providing results fast enough. This is where Flash comes in.

I've always had difficulties figuring out what the movie clip was and how it worked. Well, most Flash books tend to explain it in the wrong way. Pretty much, a movie clip is the graphical representation of a class. In Flash, a movie clip is what a class is in programming - an abstract description. Just like in programming, a movie clip can be instantialized and changes to the class apply to all instances. Movie clips can be composed of instances of other movie clips, and every movie clip has its own timeline - every movie clip could have its own states and animations. I am coming to the greatest part for every developer - every movie clip can be linked to an ActionScript class. The only requirement for the class is to extend the MovieClip class. Isn't that great? As an experiment, I setup a simple project in which I created a gameCharacter class with simple logic that my game character should implement (methods like jump(), and accelerate()). Then I linked it to a Charater movie clip, and it worked like magic. Simply great.

Sunday, June 21, 2009

Seamless Interaction With the Player: A Good Example

In one of the latest sessions of my "Rapid Prototyping in Game Development" course, we spoke about interaction, and how important it is for a game to interact with the user, so that he/she could feel totally immersed in the action. Moreover, a good game must do that seamlessly. Recently, I saw a very good idea in this direction.

First, some background. Everyone who's played strategy games, be that RTS, or turn-based, knows that before being able to build a complex construction, or produce an advanced unit, the player has to produce several essential buildings or units, or has to fulfill a quest. Before doing that, the player can see all the buildings, units, or whatever, but cannot select them.

I saw a bit different, and personally, a better idea recently. Sprouts Adventure is a small casual game that turns the player into a deity who controls the lives and activities of a bunch of small unit creatures. The idea is to care for them so that they are always motivated, lively, and fed. As a result, usually, one of them says "I have an idea", a small bulb-like icon appears above its head, and when the player clicks on it, the unit starts turning the idea into a building or a construction (a bridge or something else). In this way the hierarchical development is completely hidden from the player.

This gives a bunch of ideas in the same direction...

Friday, June 5, 2009

Random Thoughts 1

So many things in my head. Random ideas, memories, impressions everything. I guess I should start writing them down at some point. With time,they will probably turn into a proper flow of information. Might be very disorganized at the beginning, though.

Anyway, I've been in Germany for a little more than a couple of months already. My general impressions are that the country offers a lot of opportunities for young and ambitious persons, however, the good knowledge of the German language is almost always a MUST. I don't know whether it is specific for the place I'm living in (Magdeburg) or it's common for the entire country, but I've had hard times communicating with Germans in English. Apart from professors and student colleagues, very few people speak English, or at least try by all means to avoid using it.

At the beginning, this was a bit of a shock for me, because I somehow had overestimated the universality of the English language. Anyway, I've always wanted to learn German, so this has been a perfect opportunity to do so. I studied it in high school, but as it happens with anything done in high school, one has to start it from scratch afterwards. That's what I did. For quite a lot of time I didn't see any signs of improvement, but this week I might say, I am definitely feeling my German better. I guess, it is true that patience and consistent practice might make miracles happen.

Thursday, June 4, 2009

Lost Track of This Blog

I so much wanted to be a proactive blogger, and many times I make myself just sit down and start writing, but nothing comes out. Somehow, I make myself believe that there is nothing about me and my world that is worth writing about. So, what I do in many cases is dump my blogging activity and turn to some other kind of info sharing like the so called re-blogging, known from Twitter and Tumblr. There is nothing wrong with that, and I think that this is a great way to share a message with the world. However, one could do so much more than just reblog. One thing reblogging cannot do is spur creativity. That's what blogging's about. There is nothing wrong in watching someone else's work and appreciating it, but one could could contribute so much more by sharing his/her personal opinion on things.

The point of this pointless post is: Make myself writing.

Tuesday, March 17, 2009

Another Simple Crisis Explanation

Marketplace Senior Editor Paddy Hirsch uses a only a whiteboard to explain and visualize how CDO's (Collateralized Debt Obligations) became the cornerstone of the credit crisis

Saturday, March 14, 2009

Samsung NC10

For quite some time I've been looking at ultra-portable notebooks (so called netbooks) as an alternative to my current 14'1 inch notebook. I completely understand the fact that the display is (much) smaller, and it will be harder to write code (at least at the beginning), but on the other hand, lower weight and smaller overal dimensions are quite an issue. Mobility is becoming more and more a factor I can't underestimate. Of course, I am not considering the smallest netbooks, like the original EEE PC, not because they're not good, but because they're  just not suitable for my work. Lately, I found out about the Samsung NC10 model. It has a 10-something inch screen, which is pretty much enough for my needs. I will need to find out if any developers have used it an dwhat their impressions are, but so far, I like it. 

This is a short video review of the machine:

Friday, March 13, 2009

Thursday, March 12, 2009

Inspirational Photo of the Day



















5 P.M. New York City - courtesy of Tony Shi

Issues with event bubbling in Flex

These days, I came up with a pretty obscure situation, which took me two hours of useless browsing, and an icq session with a colleague of mine to solve. The solution (at least, its implementation) was far simpler than I expected. So, here is the situation:

In the main application's MXML markup, I declared a FormComponent (a custom component that extends Form). The FormComponent declares a FormController, which is an AS 3 class that deals with the data management, and some other features of the form. At some point, the FormController dispatches a custom event that is supposed to be caught by the FormComponent . In this way, when I declare the FormComponent in the main application, I could assign a handler for this event without even knowing who dispatched it. This happens because of the principle of event bubbling, i.e when an event is dispatched, it goes up the object tree (the MXML hierarchy, respectively) until it is caught by a listener.

Unfortunately, in this case, event bubbling would not happen (i.e, nothing will really work) unless some changes were done to the AS 3 class. The reason for this is that event bubbling pretty much happens when we use visual objects (trees, comboboxes, lists, etc). In order to make my FormController class applicable I had to make it implement an interface called IMXMLObject. This interface requres only one method to be implamented - initialized. This method would work instead of a class constructor (we don't have to provide a constructor - anything has to be declared in the initialized method. The syntax of the initialized method is as follows:

initialized(document:Object, id:String):void

In simpler words, when my FormController is initialized, it would be provided with these two arguments. the id is clear enough, any MXML object has an id, regardless of whether we declare it or not. What is more interesting is the document. I haven't had the time to go deeper in that, but it turns out that the document provides a reference to the MXML document that created the object. what I had to do in this initialized method is simply to assign a reference to the document parameter in a local variable - _document.

now, when I needed an event to be dispatched, rather than doing this:
this.dispatchEvent(....)
I had to do it this way :
_doucment.dispatchEvent(...)

... and it worked perfectly

Tuesday, March 10, 2009

Inspirational Photo of the Day

Multitasking is not for me

Everyone wants to be like Napoleon and do various tings at the same time. For quite some time, I have tried to live with multitasking in mind, but the more I am trying to apply it, the more counterproductive it gets. Of course, very few are those who are supposed to work on one thing only. Mostly, we switch between two or three things at once. This is rather normal. No one says that we must start doing one thing only; what we need to do is pick a limited amount of tasks that we could easily handle instead of dozens of things that we can't even remember.

The truth about counter-productiveness comes from the task switching itself, Since our brains are programmed to fully concentrate on one thing, every time we switch tasks, there is a static period of adjustment that is impossible to eliminate. In fact, according to a study, it could take up to 40% of our working time. So, be sure to think about it the next time you write three papers, speak on the phone, and check your facebook at once :)

Monday, March 9, 2009

Facebook App of the Day: Nexus

The Nexus application is the ultimate tool for all to-be social researchers, data miners, marketers, or simply fans of complicated graphs. What it does is extracts your fried data and presents it as a complex graph of nodes and connections, where the nodes in the center of the graph are the ones that you have the most identical friend connections with. Other than that, when you click a node (i.e. one of your Facebook friends, the application pops out other similarity information about that person, such as the groups you share, similarities in interests and so on.

This is how my network of friends looked like this morning:

Sunday, March 8, 2009

Incredibly simple explanations of the crisis and what led to it

With everybody speaking about the economic crisis all day long, I began feeling more and more confused. Despite having taken corporate finance at the University, I moved away from the scientific explanations of the situation and rather preferred a single, truly lame explanation that would fill all the voids. I actually found found two of those, and I am posting them here. I'd be happy if my finance teachers could see this post and use the way of explaining as a lesson.


The Crisis of Credit Visualized



This American Life: The Financial Crisis in 59 Minutes

Sunday, January 18, 2009

Alistair Mcleod's Presentation about Cairngorm @ MAX Milan 2008

One of the creators of the Cairngorm Flex microarchitecture spoke about the framework and explained some best practices in the field at MAX Milan 2008. These are the slides of his presentation:

Friday, January 16, 2009

Cal Henderson's Keynote on DjangoCon 2008



This video is a bit humorous but fairly interesting talk from Cal Henderson, a software architect at Flickr. Cal speaks a lot about Django and frameworks in general. Maybe the most interesting part of the talk was his answer of the question: "Why use fraeworks?"