Category: Software Development

Process or Principle: Which is More Important for Software Development?

By Steve Jin, June 18, 2010

While reading Who Says Elephants Can’t Dance by Lou Gerstner, the following paragraph caught my attention and made me think about it in the context of software development.

We started with a statement of principals. Why principals? Because I believe all high-performance companies are led and managed by principles, not by process. Decisions need to be made by leaders who understand the key drivers of success in the enterprise and then apply those principles to a given situation with practical wisdom, skill, and a sense of relevancy to the current environment.

Although managing a company and managing a software project are two different things, I believe above paragraph is perfectly true for software development as well. Let’s paraphrase it:

We started with a statement of principals. Why principals? Because I believe all high-performance software development teams are led and managed by principles, not by process. Decisions need to be made by leaders who understand the key drivers of success in the software development and then apply those principles to a given situation with practical wisdom, skill, and a sense of relevancy to the current project.

Sounds true? For your curiosity, the principles Mr. Gerstner wrote for IBM in 1993 were:

Read more »

Author: Steve Jin is the author of VMware VI and vSphere SDK (Prentice Hall), creator of VMware vSphere Java API. For future articles, please subscribe to RSS or Email, and follow on Twitter.

Which Web Framework is the Best?

By Steve Jin, June 8, 2010

Web based applications become more and more popular. Not only normal Web sites but also enterprise management systems are adopting this to deliver the functionalities due to the benefit of zero installation on the user’s side.

There are a lot of Web Frameworks today, probably more than anyone can grasp. For each programming language, there is one or more Web frameworks that help you to create Web based applications. Choices are definitely good but may give you a hard time to decide which one is best for your project. More often than not, there is no single best one that suits all your need. In other words, you have to decide the best in the context of your problem.

What should be in the thought process to a decision?

  1. Programming language. You have to decide what programming language to use for your Web applications. With the preferred language in place, you can only use the frameworks supported by the language. This usually limits much fewer options to your list. The most popular programming languages for Web applications are PHP, Java, C#.
    The choice of your programming language is not a choice sometimes. The most rational choice is to use a programming language you and your team are already familiar with. If that happens to be C, you then want to go down your list. Learning a new programming language and a new framework can be daunting. Not long ago, I tried to learn the Lift framework based on Scala language, and found it’s not that easy at all.
    If it’s a team project, you have to find one language that all or most people are comfortable with and at least one person are good at. Read more »

Author: Steve Jin is the author of VMware VI and vSphere SDK (Prentice Hall), creator of VMware vSphere Java API. For future articles, please subscribe to RSS or Email, and follow on Twitter.

Securing Your Applications with Apache Shiro

By Steve Jin, June 2, 2010

Security is a very important aspect of application development. Tonight I learned a new security framework called Apache Shiro, the successor to the JSecurity project.

It’s a great talk given by the founder and lead of the project, Les Hazlewood, who relocated to Bay area not long ago for starting his company katasoft. The presentation ran over for one hour but still got most people seated.

Les introduced four parts of application security: authentication, authorization, enterprise session management and cryptograph. Concept wise, there is nothing new. Interestingly, the authorization model is very much similar to the one in vSphere as we discussed before with user/role/permission elements. Implementation wise, I can see a big simplification, based on samples, over other security frameworks like Sun’s security implementation which got most people confused. One of Shiro’s secret source is to object orientify the old frameworks.

In the end, Les demoed two web based applications: one integrated with Spring framework, and the other as a simple Java Servlet.

Now, what’s in it for YOU? Well, you can use it as an alternative to JAAS or Spring Security. It’s more than Web applications, and you can use it in standalone, mobile applications as well.

BTW, one new term I heard today is the salts for cryptographic hashing. Normally we just supply a string like password as input to a hashing algorithm. While using salts, we need an additional string (salts, only server knows) as input so that the hashed result is more random than otherwise. The other alternative is to repeat the hashing algorithm for multiple times. All these can make hacking code harder to guess out password.

Author: Steve Jin is the author of VMware VI and vSphere SDK (Prentice Hall), creator of VMware vSphere Java API. For future articles, please subscribe to RSS or Email, and follow on Twitter.

Facebook HipHop Compiler for PHP: What Is It For You?

By Steve Jin, May 6, 2010

I attended a great seminar at Stanford by Haiping Zhao on the open source compiler which converts PHP code to C++ yesterday. Haiping is the tech lead for the open source HipHop project at Facebook.

As many have known, Facebook is a PHP shop with all the front end dynamic pages written in PHP. The upside of using PHP is that it’s very easy to read, write and debug, plus platform independent. The downside is that it’s really slow, probably one of the slowest scripting languages.

Why PHP is slow?

Haiping summarized three reasons, which he thinks are common contributors for slowness of scripting languages in general:

  1. Byte-code interpreter.
  2. Dynamic symbol lookups, including functions, variables, constants, class methods, properties, etc.
  3. Weakly typing. The zval has to evaluate the data type of any variable before any operation. Plus, the PHP array is too generic because it can represent any collection. 

Why Should Facebook Care?

When Haiping joined Facebook, new servers cannot catch up the new users. The server farms became so big that any percentage saving could save the company millions of dollars. Like all the big web companies, Facebook does not disclose the number of servers they have. The size of the datacenter is guarded as a secret. One of the professors did an estimate in his questions anyway: 15,000 to 30,000 servers. Read more »

Author: Steve Jin is the author of VMware VI and vSphere SDK (Prentice Hall), creator of VMware vSphere Java API. For future articles, please subscribe to RSS or Email, and follow on Twitter.

Top 20 Most Popular Programming Languages

By Steve Jin, April 30, 2010

If you are a software engineer, you might have known Tiobe popularity index of programming languages. The index is updated on monthly basis. The following table shows the top 20 most popular languages this month.

The index caught many people’s attention this month because C regained its No.1 position. Java, used to be No. 1 for years, dropped to No. 2. Although percentage wise Java is still very close to C, the declining of Java popularity can be eye-catching.

There could be many interpretations on the result, not the least of which is that Java is now owned by Oracle due to its recent acquisition of Sun. The explanation of Tiobe is as follows,

So the main reason for C’s number 1 position is not C’s uprise, but the decline of its competitor Java. Java has a long-term downward trend. It is losing ground to other languages running on the JVM. An example of such a language is JavaFX script that is now approaching the top 20.

In the application development, Java is still clearly the dominant programming language. The JVM languages like Scala (not in top 20 yet, but very promising) definitely worths watching.

Author: Steve Jin is the author of VMware VI and vSphere SDK (Prentice Hall), creator of VMware vSphere Java API. For future articles, please subscribe to RSS or Email, and follow on Twitter.

Page 1 of 71234567

OfficeFolders theme by Themocracy