Thursday, June 28, 2007

Came back from Kuk Ki Won

I'm tired now, yes, very tired. But I had a lot of fun, yes, a lot. KOIVA organized an workshop for foreign high-tech professionals at Kuk Ki Won and I attended it.

I played Taekwondo, it's the first time. I enjoyed it very much although my actions are very basic. I met Martin - an Irish guy, Dung - a Vietnamese guy I knew before, Tien - a Vietnamese girl she live in Hochiminh City and has worked here for 3 years, and many people. I listened a Chinese girl sang "Big big girl" (actually she's a small girl, not big ;-). I watched a Yoga show which was performed by an Indian Yoga instructor and he made me say "WOW" and clapped many times. I took some pictures (I will post them later if possible). I had a new Romanson watch. And over of all I had a lot of fun :-)

The workshop was very interesting and I will attend it next time (this workshop is organized every year)

Work hard and play much when you can. Enjoy your life!

Monday, June 25, 2007

Are there any places to use contructors of an abstract class with public or default access modifier?

As we already knew, we cannot create instances of an abstract class. So there are only 2 places to access constructors of an abstract class:

+ From the internal of that class (we can use private access modifier for this situation, it's enough), and
+ From its subclasses (we can use protected access modifier for this situation and it also satisfies the above situation)

And for other reasons, if we need to use instances of an abstract class, we will provide factory method(s) to create them (actually, at this time, we will return an instance of a "DEFAULT" subclass). So I don't see any reasons to declare constructors of an abstract class with public or default access modifiers.

Can you give me the reasons why I "need" to do it? Thank you.

Sunday, June 24, 2007

Sorry Firefox, you don't understand "polymorphism"

While I was typing for my previous post, I found that Firefox displayed a red-dot-underline line under "polymorphism". It means Firefox doesn't recognize "polymorphism" as a valid word in English. Or it means Firefox doesn't understand "polymorphism".

Hey Firefox, you should learn more. And please start from here.

Interface - Where and When?

I understand that if I use interface, my application can a high flexible construction. I can easily extend class to add more function, and also make use of strong point of polymorphism and dynamic binding. But I'm wondering that where and when I should use interface.

At this time I'm developing a small application it contains a Tourist class and I can't imagine that when I need to create some more specific kinds of Tourist. Even I need to extend Tourist, I can re-factor Tourist to be a abstract class (or keep it unchanged) and then create subclasses of Tourist. Where is the place I need to consider to use interface here?

As I told you, I'm developing a small application and I know it still keep in small level, hardly to become bigger. So what is the matter I need to use interface here? That is WHEN question.

What do you think about the WHERE and WHEN?

Saturday, June 23, 2007

Lack of something

I spent a little of time to think about my work, my knowledge and my experience. And I found that I'm lack of knowledge, MUCH.

I'm a techno guy. I love new technologies, really love. And I always try to catch the trend of new technologies by collecting every little amount of information about them. I cannot remember how many times I said "WOW" when I found something interesting. But when I knew about it (a little, again, sadly) I threw it away to catch a new one.

Till now, about 6 years from the time I graduated university. I knew Spring, I knew Hibernate, I knew JSF, Struts, Wicket... and many things but I'd just knew, NOT UNDERSTAND. Even I can use them but I don't know how they works, how they make this or that interesting.

Of course, you cannot UNDERSTAND everything, but you should understand SOMETHING, something that can make you love, are interested in, something can make you fun and of course, it can help you to earn money. And here is my list, something I want to understand:

+ Algorithms
+ OOP (and how to apply it CORRECTLY)
+ Design Patterns
+ Software Development Process (I choose ICONIX to start)
+ Swing
+ Servlet
+ Spring
+ Hibernate
+ Struts
+ Wicket
(the list will be continued...)

Thursday, June 21, 2007

JetGroovy - Groovy plugin for IntelliJ IDEA

Michal already figured out how to build JetGroovy from source. (Thanks Michal!) But if you're lazy, you can get JetGroovy here.

Installation: Download groovy.zip and extract it to IDEA_HOME/plugins, then start IDEA to fight ;-)

Note: This JetGroovy build ONLY works with IDEA 7 EAP build 7020. I'm not sure that it will work with other EAP builds (and of course it doesn't work with IDEA 6 or earlier)

If you have problem in downloading groovy.zip, please replace "us.share" in "http://us.share.geocities.com/t800t8/2007-06-21/groovy.zip" by "www". Sorry for inconvenience. (Yahoo suck!)

Update: I've just updated to IDEA build 7027 and JetGroovy doesn't work anymore. IDEA hangs while loading JetGroovy and there is no exception in log file.