Presenting At 360|Flex Conference in San Jose 8/18-8/20

I am pretty excited about the opportunity to present at the upcoming 360|Flex conference in San Jose from August 18 to 20. My coworker and I will give a talk about our experiences and what we had learned from developing an internal SOA application at Yahoo!. This application uses Flex and a host of Java technologies on the server side. Come and check us out in August in San Jose.

Understanding Spring Framework Hierarchical Context

Not many people are familiar with the support that Spring framework has for hierarchical context. The question is why do we need such feature. This feature is useful in the scenario where your product has multiple web applications and all of them depend on a common framework or library. Instead of deploy that framework or library in each web application, you can deploy it in the Tomcat top level class loader, which affectively makes the framework or library available to all web applications deployed in that Tomcat server.

This is when hierarchical context feature comes to the rescue. A very good write up about this feature is at this blog.

JavaOne Week - CommunityOne Summary

JavaOne week was kicked off with CommunityOne event on Monday 5/5.  If you didn’t attend, you missed a free event that was packed with interesting session.

It seems like Sun is open up in a big way in terms of creating various open sources projects, supporting various popular scripting languages, supporting startups, and embracing open source in a big way.  I think that is great, but I wonder how they will make money from it.

One of the tracks at CommunityOne is NetBeans.  I must say NetBeans has improved a lot and I am impressed with recent features that were added.  I got my hands dirty with NetBean 6.1 and surprised its speed and rich feature set like UML, scripting languages support like Ruby and Rails, PHP and Python (in the near future).   Highly recommend that you check out the latest feature of NetBeans.  The folks at Sun created a layer called GSF services to allow NetBean to support future languages easily.  I saw a demo of developing PHP in NetBeans and it was great.  All the usual convenient features like code completion, debugging and deployment are there in NetBeans.  This should make a lot of PHP developers happy.

Who would think that Sun is working on a soon to be an open source game server.  I attended a presentation about project Darkstart - game server and learned the interesting challenges that they are solving for their massive and multiple online game server.  They combine a lot of techniques from various disciplines like enterprise development, distributed system to solve the scaling and failover issues.  The main goal is to allow developer to write online games that can scale easily, but without having write code to deal with scalability.

Another interesting session that I attended was about another Sun’s open source project call SocialSite, which basically is an implementation of the OpenSocial specification and more.   I think this is great.  In the near future it will be easy to integrate the social networking features into a Java web-based application.  I am intending to keep an eye on this project and possibly would like to contribute.

Stay tune for my report on JavaOne.

10 Tips For Success Career

I found an old email in my mail box dated back in 1999, but the content is still pretty applicable. The content of the email contains 10 tips for a successful career. Since I haven’t really taken all those tips seriously over the years, it is no surprise that my career is not as successful as it can be :) Looking back though, I can see that I unconsciously practiced some of those tips and I can totally say the pay off is good and led to unexpected pleasant surprises. So for the next 5 years, I am planning to take these tips seriously and constantly going back to them for reminders.

Here are the tips:

  1. Don’t wait for permissions
  2. Don’t burn bridges
  3. Respect others
  4. Be a team player
  5. Be Flexible
  6. Have confidence in your decision
  7. Learn technologies
  8. Find a champion
  9. Be both patient and tenacious
  10. Thinks two steps ahead

There is one tip that I would like to add:

11. Have a health disregard for the impossible

Love to hear your career tips.

Looking for job or looking to hire

If you are looking for a job, you need to know what employers are looking for. If you are looking to hire, you want to hire the right candidate. What sits in between these two sides of the table is a list of questions. An article from http://www.artima.com lists out six hiring points that it will be worth to check it out.

Here is the six hiring points:

  1. Technical knowledge
  2. Critical thinking
  3. Problem solving
  4. Learning ability
  5. Adaptability
  6. Are you toxic

Startup - Live and Learn

This post is about the learning from a failed attempt to develop an idea into a possible start-up. My friend and I invested a considerable amount of time in trying to develop a prototype for an idea that we had. And at the end, we were not able to launch it.

As newbies in the start-up world, we made several classical mistakes. One of the mistakes is we didn’t follow the rules listed in the blog Loic Le Meur’s Ten Rules For Startup Success.

Rule #7 is something that is commonly advocated by other folks in the start-up world as well as Web 2.0 community. Among them is the folks from the 37signals.com. If you haven’t checked out their book Getting Real book, I would highly recommend it. It is a treasure. You will find all kinds of great ideas and resources about developing successful web based applications (more on this later).

Being A Productive Java Developer

A highly productive Java developer will often figure out the right tool to use for the right task. If you are a Java developer and you use Eclipse IDE, then you are on your way to being productive.

One of the things about Eclipse is that it can suck up your computer memory and you may encounter ‘OutOfMemoryError’. To give Eclipse more memory to use, you may want to add the following to eclipse.ini file.

-vmargs -Xms512M -Xmx1024M -XX:PermSize=128M -XX:MaxPermSize=256M

To verify the settings are properly configured go to menu Help->About Eclipse Platform and then click on the ‘Configuration Details’ button.

For more info. see this article on Eclipse Zone.

Cool Google Collections Library

I stumbled across an article on TSS.com about Google Collections Library and I must say I like what it offers. Mainly because

  1. You end up writing less code
  2. Your codes will be cleaner
  3. Your codes will have less bug
  4. More time to write more code

You can read more about this library at http://www.javalobby.org/articles/google-collections/

Annual Health Check On Your Career

Everyone who is working for some else should perform an annual health check on their career. The beginning of a year is a perfect time for do this. So what does an annual career health check consist of? Well, I can’t really tell you that, but there are three fundamental question you should ask:

  1. Does your current employer help you build your skills?
  2. Will your current employer continue to challenge you and give you opportunities to grow?
  3. Does your current employer show appreciation for you work?

I think the above three questions is a good start.

Ten Things Java Programmers Should Know About Python

In recent years, scripting languages are used more and more for developing web sites and web applications. Among the popular scripting languages is Python. If you are a Java developer and is looking to learn what Python is all about, this post is for you.

  1. Python is a general programming language invented by by Guido van Rossum back in 1990.
  2. It is a very high level, dynamic, objected oriented and cross-platform language.
  3. Described by one of the authors of the book “Python Cookbook” as a language with syntactic ease of Rexx, the semantic simplicity of Tcl, the intellectual rigor of Scheme, and the awesome power of Perl.
  4. Python is more than a language, it has a set of standard library and other extension modules. This is similar to Java language.
  5. There are two production-quality implementations: CPython and Jython. Python .NET is an experimental implementation.
  6. Python does not use braces or begin/end delimiters around blocks of statements. Indentation is the only way to indicate such blocks.
  7. Some of the interesting keywords are: lambda and yield.
  8. One of the built-in number objects is complex numbers.
  9. The built-in type None denotes a null object.
  10. Python is an OO language, but it doesn’t force you to use OO paradigm. It also support procedural programming paradigm with modules and functions.

You can find a lot of information, tutorials, about Python at http://www.python.org/doc/. There is a free Python book at http://diveintopython.org/.

Have fun.