Many APIs have emerged since the inception of computer software. Its root can be traced back to the layered software architecture in which high layer calls to low layer. The low layer is not necessarily called APIs, but the other way is mostly true.
Initial APIs were inside a single or multiple vertical call stacks that share same memory space. As a result, you have good performance and ease of use. After that, inter-process communication (IPC) emerged and allowed API services to run in a different process for better Read more... (321 words, estimated 1:17 mins reading time)
It has become a conventional wisdom in software development that you should NOT re-invent a new wheel – reuse an existing one instead. There are many compelling cases in which re-inventing wheels had caused catastrophic failures as described in Joel’s article Things You Shoud Never Do (Great article BTW). One famous example there was the NetScape’s loss to Microsoft in the browser war more than a decade ago.
Nothing is absolute in software however. You can find opposite cases like Microsoft’s successful re-inventing Windows from Window 95 to Windows XP. Actually in a longer term, you cannot stick with a wheel forever; otherwise we are still using wooden wheels in the pre-industrial age. Same is true for software.
I think the question is really not whether to invent a new wheel, but when. In other words, Read more... (676 words, estimated 2:42 mins reading time)
I was working at Rational Software when IBM bought it almost 10 years ago. After the acquisition, we got emails and trainings encouraging us to file patent disclosures. As you may have known, IBM has been the top patent holder in the USA, maybe worldwide as well. At that time, I coined the term “non-patentable software architecture.”
Pattern system was invented to protect and encourage innovations. There are three criteria for a valid pattern: novelty, usefulness, and non-obviousness. Those are all in relative terms. As I can tell, there is rarely anything Read more... (444 words, estimated 1:47 mins reading time)
Google Web Toolkit is an interesting project. It’s basically an AJAX toolkit but presents itself as a Java toolkit. The idea is that you still write Java code as you would with Java AWT, SWING, and the GWT converts it to JavaScript code for you.
But why don’t write JavaScript code directly? Well, you may know Java better than JavaScript. More importantly, Java is a typed language and easier to develop a large system than JavaScript.
Using GWT for Java developers is mostly Read more... (436 words, estimated 1:45 mins reading time)
Communication is always important in any teamwork environment. This is especially true in software development where changes are constant. There are two levels of possible communications in software development: soft communication and hard communication. Let’s go over them one by one.
Soft Communication
It happens among people, those who work on a software project. Two popular forms of soft communication are Read more... (377 words, estimated 1:30 mins reading time)
If you are a software engineer, you may move from project to project over the time. How to quickly ramp up with a new project is always a challenge. The term “new” I use here does not mean that the project is new and you need to start from scratch, but that the project is new to you.
Although we all like to start from scratch, the reality is that 80% of engineers are actually doing maintenance works on existing projects: fixing bugs, adding new features, etc.
When you move to a new project, you have to Read more... (603 words, estimated 2:25 mins reading time)
If you develop FLEX with Java backend, you most likely know BlazeDS already. It’s a web application running with Tomcat that exposes Java objects on the server side as services to the Flex Client written in ActionScript. It combines the best of Flex on the client side and Java on the server side. As a result, it becomes one of the most popular architectural styles for web development these days.
It’s less known that you can also develop Java code on the client that consumes the services on the server side. Check out this wiki page by Adobe on the original design. The implementation of Java AMF Client is added to BlazeDS as of July 2008.
Because I had to hack Read more... (1080 words, estimated 4:19 mins reading time)
Many folks talk about developer enablement today because it’s a key success factor for a platform company. If you haven’t watched this video by Microsoft CEO Steve Ballmer, you want to check it out. Also, my previous blog: CO2: The Formula For A Successful Developer Ecosystem.
To empower developers, we got to figure out who the developers are and what they want. It’s hard, if ever possible, to identify every developer in VMware community. But it’s normally easy to find out the types of the developers. In my observation, there are two types of developers (The title of this article is not that accurate, but Read more... (387 words, estimated 1:33 mins reading time)
I got quite a few SPAMs on my twitter last week. While it’s annoying to be spammed, I did pay a little attention to the spammers and noticed that their commonality: big number of tweets, 0 following, 0 follower.
These characteristics reminded me of the Java virtual machine technology to garbage collect unused Java objects. In Java, you don’t need to explicitly de-allocate memory as in C++. The Java garbage collector (GC) takes care of this for you. It looks at the objects to see if there is any reference to it. If not, it deletes the objects.
In the Twitter case, a follower is Read more... (299 words, estimated 1:12 mins reading time)
There have been long debates on whether object oriented is the future of programming. Repeating it over here doesn’t make it any clearer. As you can tell from my blog, I am an OO bigot because it can significantly improve productivity. If you are not convinced about OO benefit, you can look around those top programming languages mostly support OO these days.
By reviewing the whole software lifecycle, however, you will find a gap between requirements and OO programming today. While describing application requirements, a business user almost always describe them in a number of steps (procedural). It’s not realistic to expect requirements described in an OO way. While developing, programmers write and see classes and objects.
How to bridge the gap between the procedural requirements and object oriented programming? It basically boils down how to Read more... (602 words, estimated 2:24 mins reading time)
Recent Comments