A year ago I complained about Twitter. I thought writing tweets and following others on Twitter were a waste of time. A year later I changed my mind: (1) using Twitter is not a waste of time if I use it with a purpose in mind, and (2) microblogging empowers people to voice their opinions, reversing the typical consumer-producer role in mass communication.
The usage of Twitter is very simple. Instead of writing long blog posts, write short posts. Each post must be less than 140 characters. Instead of subscribing to blog RSS feeds, follow tweet messages and communicate with other users using a special language syntax.
Twitter is not a waste of time
Twittering could be a waste-of-time. But, it can also be useful if we write posts with some objectives in mind, e.g., posting messages to report the state of an ongoing crisis and telling others about events that they can't attend. If you care about spreading words around the web, using Twitter can help you to deliver messages fast and reach more people. If you want to learn about what people think about a particular topic or a product, Twitter is a great source for conducting market research and sentiment analysis.
Speak aloud using Twitter
Microblogging is the product of web communication evolution. It empowers people. In the past, individuals have little or no power to influence how the world thinks. The emergence of microblogging encourages media companies, business and government policy makers to pay attention to the common voices of people.
Summary
It's hard to predict where Twitter will end up as a business in the coming years, but I believe that the idea of microblogging is here to stay. Since I find myself using Twitter more often for many good reasons, I recommend all web users to try out Twitter. As long as we use Twitter to help people learn and spread ideas, it's a meaningful activity. Speaking aloud of our minds through Twitter will encourage free speech and encourage businesses and governments to pay attentions to our needs.
Monday, April 27, 2009
Thursday, April 23, 2009
The Economist on world economy
In this issue of The Economist, it paints a rather cautious outlook of the world economy. Recent economic data shows signs of the world economy could be in a recovery. But, that could be an illusion, the article warns.Among many tricky issues, reading economic data is always difficult. Even if the economy is on its way to a recovery, the path is going to long and painful. During this recovery period, we will likely to see multiple up-and-downs in the market.
History doesn't repeat itself, but it does rhyme.
... between 1929 and 1932, the Dow Jones Industrial Average soared by more than 20% four times, only to fall back below its previous lows. Today’s crisis has seen five separate rallies in which share prices rose more than 10% only to subside again.Why is it important for us to be cautious?
"... optimism contains two traps, one obvious, the other more subtle. The obvious trap is that confidence proves misplaced—that the glimmers of hope are misinterpreted as the beginnings of a strong recovery when all they really show is that the rate of decline is slowing. The subtler trap, particularly for politicians, is that confidence and better news create ruinous complacency".I think the article is a good read. It gives a good overview of the current world economic conditions and intricate relationships between the government financial polices and macro- and micro-economics.
While the economy looks grim, but I have hope. The world's economy will eventually bounce back. In between now and then, there are many good investment opportunities. Individual investors need to be patient and cautious. The Economist article is a friendly warning that "those who try to time the market is a fool".
Sunday, April 19, 2009
Programming languages should die
Recently I wrote a blog on learning new programming languages and how to think about the constant changes of programming languages. Learning a new programming language is easy, but mastering it, able to use it well, is often difficult. It would be ideal if the world has only one or two programming languages. All engineers can master them and program with them effectively. Unfortunately, that's not the case.
It's necessary for us to develop new program languages every few years, I argued in the previous blog. Today I come across a related article on Javalobby, which titled "Languages Should Die".
Central to the article is the idea that programming languages are like animal species, they evolve and they die. Programming languages should die (i.e., we should avoid using them) when they become unusable. We should be prepared to abandon languages when they become less effective to program.
In reality, the problem is a bit more complex. Sometimes the industry may continue to use a programming languages because it's too costly to replace, or it's worthy of fixing. For example, COBOL is an ancient programming language. It's a language that should have died in the last century. It's still used today because certain organizations refuse to change for political and financial reasons. The Java programming is a good language, but has its imperfections. While we could create new language to replace Java, but it's probably worthy the effort to fix it.
A programming language evolution is a good thing. Every few years we should create new languages (or fix the existing languages), so that when we develop software, we can avoid inheriting "bad" and obsolete designs from the previous generation of languages. Hopefully, those improved languages will help us to build more robust and reliable software.
It's necessary for us to develop new program languages every few years, I argued in the previous blog. Today I come across a related article on Javalobby, which titled "Languages Should Die".
Central to the article is the idea that programming languages are like animal species, they evolve and they die. Programming languages should die (i.e., we should avoid using them) when they become unusable. We should be prepared to abandon languages when they become less effective to program.
In reality, the problem is a bit more complex. Sometimes the industry may continue to use a programming languages because it's too costly to replace, or it's worthy of fixing. For example, COBOL is an ancient programming language. It's a language that should have died in the last century. It's still used today because certain organizations refuse to change for political and financial reasons. The Java programming is a good language, but has its imperfections. While we could create new language to replace Java, but it's probably worthy the effort to fix it.
A programming language evolution is a good thing. Every few years we should create new languages (or fix the existing languages), so that when we develop software, we can avoid inheriting "bad" and obsolete designs from the previous generation of languages. Hopefully, those improved languages will help us to build more robust and reliable software.
Saturday, April 18, 2009
Apple product as new U.S. military weapon
One of the ubiquitous Apple iPod products is emerging to become new "weapon" gadgets in the US military. Using the Apple iPod Touch, new military programs are underway to build systems that would link up soldier communications.
The iPod Touch seems to be a good candidate for new US military programs that seek to improve real-time communications between soldiers, command centers and intelligence units. Comparing to iPhone, iPod Touch is relatively cheap and has almost the same feature as iPhone. Moreover, it's easy to create military iPhone applications to run on iPod Touch. The touch-screen feature of the device made it easy for the soldiers to use, even in a dynamic and mobile environment.
From the Newsweek:
The iPod Touch seems to be a good candidate for new US military programs that seek to improve real-time communications between soldiers, command centers and intelligence units. Comparing to iPhone, iPod Touch is relatively cheap and has almost the same feature as iPhone. Moreover, it's easy to create military iPhone applications to run on iPod Touch. The touch-screen feature of the device made it easy for the soldiers to use, even in a dynamic and mobile environment.
From the Newsweek:
Since sharing data is particularly important in counterinsurgency operations, the Pentagon is funding technology that makes it easier for the soldier on the ground to acquire information and quickly add it to databases. Next Wave Systems in Indiana, is expected to release iPhone software that would enable a soldier to snap a picture of a street sign and, in a few moments, receive intelligence uploaded by other soldiers (the information would be linked by the words on the street sign). This could include information about local water quality or the name and photograph of a local insurgent sympathizer.
The U.S. Marine Corps is funding an application for Apple devices that would allow soldiers to upload photographs of detained suspects, along with written reports, into a biometric database. The software could match faces, making it easier to track suspects after they're released.
Wednesday, April 15, 2009
Create singleton classes in Java
The Java singleton design pattern restricts the creation of a class to one object. There are two ways to create a singleton class in Java. While both approaches are correct, but deciding which approach to use requires some discussion.
Let's see how to create a singleton class Foo, which has one method doFoo that prints a string message to the standard output stream. By being a singleton class, at anytime only one instance of this Foo class can be instantiated by a single Java classloader.
Approach 1: Use enum to create a singleton class
Approach 2: Use private static variable and static factory method to create a singleton class
In the two usage examples, the calls to Foo.doFoo look very similar. But, technically they are very different. In the first example, we access the singleton object through an enum instance of the class (i.e., Foo.INSTANCE). In the second example, we access the singleton object through a static factory method, which returns the static variable singleton. This private variable is statically created when a Java classloader loads the Foo class.
So which approach is more preferred when writing a Java singleton class? Some developers prefer the second approach because it is the de facto approach to create a singleton class since the birth of the Java programming language. They also argue that since all experienced Java developers are familiar with this approach, software programs that adopt this approach should be more maintainable and readable.
Personally I prefer the first approach. First, it's easy to create singleton classes using enum -- if you know how to create an enum class, then you know how to create singleton. Second, it eliminates the possibility for multiple objects of the same singleton class to be created through a careless custom Java serialization implementation.
Let's see how to create a singleton class Foo, which has one method doFoo that prints a string message to the standard output stream. By being a singleton class, at anytime only one instance of this Foo class can be instantiated by a single Java classloader.
Approach 1: Use enum to create a singleton class
public enum Foo {
INSTANCE;
public void doFoo(){
System.out.println("Hello World!);
}
// Usage Example 1:
// Gets the singleton Foo object, and calls doFoo
Foo.INSTANCE.doFoo();
Approach 2: Use private static variable and static factory method to create a singleton class
public final class Foo {
private static final Foo singleton = new Foo();
// Make the default constructor private
private Foo(){
// no code
}
public static final Foo getInstance(){
return Foo.singleton;
}
// Usage Example 2
// Gets the singleton Foo object, and calls doFoo
Foo.getInstance().doFoo();
In the two usage examples, the calls to Foo.doFoo look very similar. But, technically they are very different. In the first example, we access the singleton object through an enum instance of the class (i.e., Foo.INSTANCE). In the second example, we access the singleton object through a static factory method, which returns the static variable singleton. This private variable is statically created when a Java classloader loads the Foo class.
So which approach is more preferred when writing a Java singleton class? Some developers prefer the second approach because it is the de facto approach to create a singleton class since the birth of the Java programming language. They also argue that since all experienced Java developers are familiar with this approach, software programs that adopt this approach should be more maintainable and readable.
Personally I prefer the first approach. First, it's easy to create singleton classes using enum -- if you know how to create an enum class, then you know how to create singleton. Second, it eliminates the possibility for multiple objects of the same singleton class to be created through a careless custom Java serialization implementation.
Monday, April 13, 2009
Blogger category feed URL
By default, all blogs hosted on Blogger come with a single RSS feed URL. Many bloggers use "labels" to tag their blog posts, so that the posts of different categories can be grouped. Labels are extremely useful for organizing posts and directing readers to a specific topic of blog posts.
To create an RSS feed URL for a specific blog topic (i.e., posts tagged with a specific label) use the following URL format:
Technorati Tags: Blogger, Tips, RSS
To create an RSS feed URL for a specific blog topic (i.e., posts tagged with a specific label) use the following URL format:
http://[blog.host.domain]/feeds/posts/default/-/[label]For example, the feed URL of this blog's posts tagged "Business":
http://harry.hchen1.com/feed/posts/default/-/BusinessSource: Blogger Data API
Technorati Tags: Blogger, Tips, RSS
Saturday, April 11, 2009
Nintendo DSi to compete with iPhone
The best selling iPhone applications are video games. Knowing this we can safely predict that the market of casual gaming, especially on mobile devices, is likely to expend in the few years. iPhone seems to be the leader in mobile gaming. To compete, Nintendo recently released a revised version of DS console called Nintendo DSi.

The DSi has two key improvements: (1) better multimedia support -- take photos using the built-in camera, record audio notes and listen to music, and (2) wireless game downloads -- similar to Wii, DSi users can download games using points from Nintendo's online store.
Arc Technica has an in-depth review of the Nintendo DSi
The design of DSi is an obvious attempt to compete with iPhone. In the world of mobile computing and social web, the fine line between a device being a game console and a communication tool is blur. iPhone evolved from being a communication tool to being a multimedia player and a game console. The design of DSi is an evolution from the opposite direction.
Here is my speculation. Given that DSi already comes with the Opera browser (a non-game application), soon we will see more non-game applications from Nintendo. It will allow individual developers to sell third-party applications through its online store. Maybe Skype, Facebook and Google will all compete for application users, not just on iPhone and Blackberry, but also on Nintendo's mobile platform.
Technorati Tags: DSi, Nintendo, iPhone

The DSi has two key improvements: (1) better multimedia support -- take photos using the built-in camera, record audio notes and listen to music, and (2) wireless game downloads -- similar to Wii, DSi users can download games using points from Nintendo's online store.
Arc Technica has an in-depth review of the Nintendo DSi
The design of DSi is an obvious attempt to compete with iPhone. In the world of mobile computing and social web, the fine line between a device being a game console and a communication tool is blur. iPhone evolved from being a communication tool to being a multimedia player and a game console. The design of DSi is an evolution from the opposite direction.
Here is my speculation. Given that DSi already comes with the Opera browser (a non-game application), soon we will see more non-game applications from Nintendo. It will allow individual developers to sell third-party applications through its online store. Maybe Skype, Facebook and Google will all compete for application users, not just on iPhone and Blackberry, but also on Nintendo's mobile platform.
Technorati Tags: DSi, Nintendo, iPhone
Friday, April 10, 2009
On learning new programming languages
Programming languages are the building blocks of computer science. New programming languages often emerge every few years. Recently I come across a new language called Scala. This new language attempts to unify object-oriented programming and functional programming. Its syntax is similar to Java and C# with some additional features.
This paper gives an overview of Scala.
After reading up on Scala and its recent buzz in the new, I thought about the relationship between new programming languages and software development.
Business requirements will continue to change. For this reason, new programming languages are necessary to help engineers to get their job done faster and better.
Answering Q2. Develop software programs using cutting-edge technologies don't always yield the best result. For example, Twitter was built on Ruby, and it proved to be problematic. If it had developed the system using PHP or Java, I suspect many scalability issues could have been avoided. However, this doesn't mean new technology has no value. Building systems with new languages usually encourage new way of thinking, opening new doors to innovation. For example, Google Maps is successful because its innovative usage of Ajax, and which helped spawning a new generation of "cool" web applications.
Answering Q3. What separates good software engineers from the rest is in the ability applying software design and engineering skills to problems that don't have conventional solutions for. Fluent in new programming languages is not a substitute for programming experience and skills. However, knowing the intricacy of different programming languages and having the will to learn new technologies can certainly help engineers to sharpen their skills.
Technorati Tags: Scala, Programming
This paper gives an overview of Scala.
After reading up on Scala and its recent buzz in the new, I thought about the relationship between new programming languages and software development.
- Q1: Why do we invent new programming languages every few years?
- Q2: What benefits do we gain by developing software with those new languages? Can't we just program with the languages that we are already familiar with?
- Q3: Should all good software engineers be expected to be fluent in cutting-edge languages at all time (i.e., should I go learn Scala today)?
Business requirements will continue to change. For this reason, new programming languages are necessary to help engineers to get their job done faster and better.
Answering Q2. Develop software programs using cutting-edge technologies don't always yield the best result. For example, Twitter was built on Ruby, and it proved to be problematic. If it had developed the system using PHP or Java, I suspect many scalability issues could have been avoided. However, this doesn't mean new technology has no value. Building systems with new languages usually encourage new way of thinking, opening new doors to innovation. For example, Google Maps is successful because its innovative usage of Ajax, and which helped spawning a new generation of "cool" web applications.
Answering Q3. What separates good software engineers from the rest is in the ability applying software design and engineering skills to problems that don't have conventional solutions for. Fluent in new programming languages is not a substitute for programming experience and skills. However, knowing the intricacy of different programming languages and having the will to learn new technologies can certainly help engineers to sharpen their skills.
Technorati Tags: Scala, Programming
Saturday, April 4, 2009
Another powerful Twitter use case
People use twitters for many different reasons. For businesses and investors, some use cases are more compelling than the others.
From the BusinessWeek, this use case describes how businesses can use Twitter to reach potential customers:
Technorati Tags: Twitter
From the BusinessWeek, this use case describes how businesses can use Twitter to reach potential customers:
Here's what happened when Chris Savage, the chief executive of Wistia.com, searched for the phrase "private video sharing" on Twitter, a social networking site. One post he found read, "A teacher requested a private 'video sharing' Web site so that specialists can observe student behavior—can anyone refer one?"
That got Savage's attention. He e-mailed back: "Still looking for a private video sharing site?"
Minutes later came the reply: "YES! It's the first request for one—thought I'd hit up my tweets before [I] go digging."
Savage: "Cool. You may want to check out Wistia.com. Full disclosure, I'm the CEO ;-)"
Technorati Tags: Twitter
Thursday, April 2, 2009
Google to acquire Twitter, for real?
The blog community seems to be saying that Google is in talk to acquire Twitter. By the way, not too long ago, Twitter turned down a half-billion deal from Facebook.
Twitter is a fascinating business and service. It's a simple service. People of all ages can quickly learn how to use it. To some it's an addictive communication and mind-broadcasting tool. However, while Twitter interests many people, but it doesn't really make any money as a business. The question here is why would a search engine company Google want to buy Twitter?
Google is a company that makes money by getting people to pay attention to their online products, e.g., search engines, gmails, news, blogs. The more people they can attract to their online "real estates", the more revenues it will generate from online advertising.
Blogger.com is an good example. It's a platform that attracts visitors, both publishers and readers. While publishers host Google Ads on their blogs, readers click through ads embedded in the blog posts. Blogger.com doesn't charge people for its service. It's free to publish and free to read. But, it helps Google to distribute advertisements and generate ad revenues.
I think Twitter is like Blogger.com. It's a platform for generating extremely high traffic and for distributing advertisements to a vast population. If Google does acquire Twitter, it's not because Twitter is cool, but because it's the new Blogger.
Technorati Tags: Google, Twitter, Business
Twitter is a fascinating business and service. It's a simple service. People of all ages can quickly learn how to use it. To some it's an addictive communication and mind-broadcasting tool. However, while Twitter interests many people, but it doesn't really make any money as a business. The question here is why would a search engine company Google want to buy Twitter?
Google is a company that makes money by getting people to pay attention to their online products, e.g., search engines, gmails, news, blogs. The more people they can attract to their online "real estates", the more revenues it will generate from online advertising.
Blogger.com is an good example. It's a platform that attracts visitors, both publishers and readers. While publishers host Google Ads on their blogs, readers click through ads embedded in the blog posts. Blogger.com doesn't charge people for its service. It's free to publish and free to read. But, it helps Google to distribute advertisements and generate ad revenues.
I think Twitter is like Blogger.com. It's a platform for generating extremely high traffic and for distributing advertisements to a vast population. If Google does acquire Twitter, it's not because Twitter is cool, but because it's the new Blogger.
Technorati Tags: Google, Twitter, Business
ABC Nightline on Netflix
ABC's Nightline recently featured a short story on Netflix. It takes you to behind the scene of the "red envelopes": how DVD's are handled in the distribution sites, the giant machines that process millions of DVDs and the workers that checks received DVD for damage at 3 o'clock in the morning.
Do you know Netflix spends $300 million in postage every year?
Watch the ABC Nightline segment

Technorati Tags: Netflix
Do you know Netflix spends $300 million in postage every year?
Watch the ABC Nightline segment

Technorati Tags: Netflix
Subscribe to:
Posts (Atom)

