Category Archives: Community

Openess v.s closeness

Open v.s close

Open v.s close

I have a long support for open source system, the open standard, a more open and shared data in the web. 3 years ago, I thought that the win of Android is obvious and the reality has proven me right. I was confident with my knowledge and guessing until I read a long fan boy of Apple. Yes, he is a fan boy of Apple, and the article has really favoured Apple. But he made an important point great product wins. Not the great product in terms of technology, nor in terms of openess. It is a great product in users’ minds, either by its value provision or by good marketing.

By opening the platform, Android opens the door for more hardware suppliers. But that openess means nothing if the operating system sucks, it means nothing if the compatibility and the user interface are not good. Looking at Linux and all the free open source operating system. They are more opened, easier to adopt into the hardware by the suppliers, but they suck. Either the UI, the lack of applications and features, but they suck.

I think this article gives a very good point of view as well.

Excel Rules



It is quite surprising for me to see how Excel rules the world of business. I know that many people in different companies, big or small use Excel for their daily jobs. But, until recently, I have understood how much impact Excel does have in the business world, and why it is the case.

These 2 excellent posts describe most of the use case of the Excel, why people still use it in the professional world, even in JP Morgan. I think Excel will rule even in the next few years, due to its ubiquitous usage, and many people support it (or its format): Microsoft (of course!), Google (with Google Docs).

Sorry Geeks, Microsoft Excel is everywhere

The importance of Excel

5 things to know about cross-platform development for iOS/Android

Cross Platform App

Cross Platform App

People love the idea of cross-platform development for iOS/Android or try to use a familiar language to develop apps for either or both platforms. There are many solutions and platforms out there and each of them has pros and cons, here we will try to name a few and analyse them: MonoTouch, Appcelerator, RubyMotion, PhoneGap, HTML5, Java2ObjC…

The pro is quite clear, it supports both platforms at the same time, you only need 1 guy with 1 skill (either it is C#/Javascript/HTML5 or Ruby) to learn and quickly produce apps for both platforms at the same time.

The cons are quite depending on which you choose to go with, but we will analyse them in some aspects: easy for maintenance, native performance, delay for update, community support, pricing/bankrupt, talent hiring

1. Easy for Maintenance

I found some of the platforms are challenging to maintain, just to name a few: appcelerator and phone gap… With javascript and not available debugger, when it comes to debugging, you will spend as twice/three times as much to debug. Other platforms do support debugging well like MonoTouch or RubyMotion…

One thing that most cross-platform framework has problem is that it adds another layer of complexity into your system. If some bug happens or something does not run as intended, you have three times of works. You have to check if the bug is your bug, is your framework’s bug, the interaction between the framework and the iOS/Android platform, and finally, if that is a bug of iOS/Android. Let’s take a simple example:
iOS had an old bug with rotation and I encountered that bug when I tried to use Appcelerator to build my simple project. It took me the whole day to find that bug was an Apple bug, there is a work around in Apple way but that is not well supported by Appcelerator….

2. Native Performance
When it comes to native performance, I can say that most of the third-party frameworks do well in this area. However, HTML5 is not an excel when it comes to this, or at least, not yet. Facebook has shown us an important lesson with its decision to be back to native to improve its performance. I think that in the future, when the WebKit, the hardware and the requirement for a good app has matched each other, more and more apps will be developed using HTML5 and other open web technologies. Simply, because it is open.

So, if you are building something simple and may grow well over a long time, you may consider the hybrid approach to combine HTML5 and native code. This could work well with if you can integrate it with the web service at your backend.

3. Delay for update/community support/pricing
All of them come to the same problem of third-party frameworks, that middle complexity layer that you add into your project. Most of the frameworks will update quite fast when Apple release a new version, except many minor bugs. I used to have code that is working well with Apple in the iOS4 release and stop working when iOS5 is released. The problem gets worse when most iOS5 beta still works well with my apps. So, when I try to run our app on iOS5 final release, I get panic. I don’t know what is wrong with my code, is it the middle framework, is it just Apple’s release has changed something. I finally figure out that Apple has changed some rules in their API and that affects the old way the middle framework is working. I need to wait for their update to get it work.

Most of the middle framework has their premium supports but you either have to pay more or you have to wait a hell long of time. And most of the communities are a fraction of either the iOS/Objc communities or Android communities. At there, at least somebody has worked with your problem, somebody tested and figured a work around.

4. Bankrupt?
There are quite a lot of third-party frameworks around, and I am quite sure many of them will go bankrupt or stop working after a while. Or the price can go up, or the support rate gets slow down. You don’t know what the hell is waiting for you there. If your product is very important, be careful, you don’t want to throw tens of thousands of lines of code away and start all over again. These middle frameworks code, unfortunately, are not much reusable. You can generate Objective-C/Java code from them and then continue working from that. But, believe me, reading, understanding and maintaining those generated code are as twice as hard as you write it from the beginning. I don’t say all of them may have problems, but be careful which framework you pick, how long your project will last, and make sure there is a good match. If your project is pretty longer than 3-5 years, maybe thinking deep about it…

5. Talent Hiring
This is a people management, a project management issue. I remember 3 years ago, finding a good iOS developer is as hard as hell. Although it is easier now, it may not make sense to have a whole team of engineers in Ruby/C# and 1 guy in iOS and 1 guy in Android (or 1 guy for both iOS/Android). That means you have to feed 2 more guys, training them with company’s culture, to understand the domain knowledge that you have. And when things grow, each of these 3 teams grows. Another solution is that 1 of the web guy need to learn both iOS and Android development. That’s why it may make sense for you to reuse your team’s talent. It is also a good thing to consider to have a guy with HTML5 to approach the app in hybrid (HTML5+native code) model.

It is never too late for you


Just read this fantastic post on Quora feeling that I might have some further thoughts about it. I have seen many people obsessing about getting things right at the first time, and if they cannot, they think things are too late. However, what I see is that chances and opportunities are almost everywhere and after every couple of years, those chances and opportunities will come back.

Should I switch what I am doing?

I was once asked by my friend, a developer, if he should switch to Business Analysis or not. He feels like it more than programming but if he tries it and he does not fit it, he would waste 2 years of his career. And this kind of switching is raised a lot by my friends and other people. “Should I switch from a big company to work for startup/startup by myself?”, “Should I switch and try doing this/that?”, “My first job/internship was terrible, it would affect my career…”. The answer is you should not worry.

Any Experience Counts

Any experience that you learn, either from a big company, from a small company, from another job or career would bring you a unique point of view into the new career. If you work as sale and now want to move to programming, your sale knowledge is unique, 90% of programmers I know have no knowledge in sales. Understanding sales and customer would bring you a competitive advantage that most don’t have. And vice versa, if you work as programmer before and switch to be business analysis, you really understand the programming work, you understand the technical difficulties and you can help the customers and programmers to talk better. Any experience counts, any unique experience counts twice.

Why not join with a startup idea?

Idea vs Execution

Idea vs Execution

Just found a brillian post, says all I need to say for most of my friends or people. And a good advice to people, please think through and not so disappointed if some developer does not want to go with your idea. The #1 item is the most important thing, imo:

  • Ideas are easy, execution is hard.
  • People approaching developers often dramatically underestimate the amount of development work, or the complexity of it.
  • Proposing a revenue share means the developer has to take as much risk as the idea guy (for very low pay, given the point above), and trust that the business will receive the right amount of marketing/sales follow-through.
  • There’s an opportunity cost to working on someone else’s idea instead of for paying clients.
  • The idea being proposed is often very unrealistic (and the developer, having worked on a number of such ideas, can tell).
  • Developers have their own ideas to work in anyway.

Online Education and Interaction

Education Video

Education Video

Coursera is cool. Online Education is cool. Content is cool. But do you know what is not? The interaction. It is damn boring to stay focused in 3 hours for a video lecture. Recently, my wife and I tried our best to study Introduction to Finance and Financial Computation Econometric. The interaction environment in the normal classroom is not always interesting, it is even worse in an online course. Maybe we haven’t used all the resources we have or we haven’t tried hard enough. But to make the model more successful, interactions would be the key.

Offline watching has its benefits: people can watch anytime, anywhere and any videos you like. It sounds good until it comes to practice. People get lazy, some of them are watching half the video and have to stop to do something else. When they come back, they lose time to get into focus again. It takes more time and efforts to really focus and learn quickly with offline video.

Obviously, they are still free, I have no complaint about a specific site. What I mean is “Hey, this is my problem and may be others’ problems, hope you guys can fix it”. I think we need to give more benefits for people, as gamification and gaming theory often do, to let them spend a specific of time in their schedule to finish the video, to really focus. Maybe these sites offer some chance to chat with the professor, some small quiz that can be both challenging and rewarding.

In the long term, I really think that solving this problem is the business key and competitive advantage for any company.

Reality is Broken – Why Game Matters (part 1)

Reality Is Broken

Reality Is Broken

This book offers me a novel approach and surprising idea of thinking. I am influenced by my country’s media on how bad the game can affect people and students’ mind and how bad games are. But this book challenges my long-time sticky idea, and it does a good job. It sounds like a gamification book or articles that me can read somewhere on the Internet, but it actually gives me more than those boring theories.

Good theory of gamification
It provides me a good understand, not just the theory of gamification. How game designers think, how they plan and write stories that are attractive, human friendly and feel very personal to you. The game challenges you, the game rewards you, the game praises you and welcomes you, the game gives you chance after chance when you keep failing.

The book author makes a good comparision with the real life. The real life challenges you, no rewards, punishes you for being wrong, makes you feel like shit when you fail and noone ever cares about how you feel.

The book makes me stop here and start thinking and observing people around me more. People are worried too much about their future, their failure and their life. Games give them what people actually dream for. It actually explains to me how people are addicted to game. It is not just people want to be fun and entertain, it is normal that people are seeking for respected, value recognition and a better life.

Understanding about sociology and psychology
The book also gives a deep understanding of how Massively Multiplayer Online Game works, how it can be used to resolve real world problems. It is quite interesting for me when the author analyzes the World of WarCraft to demonstrates how gamers actually collaborate, get to know each other and together do something to achieve the goal.

Many other examples are also useful and interesting: Wikipedia is a big multiplayer online game, where people try to collaborate, edit and create better articles to achieve a big goal together. Or this fun and interesting game: FreeRice (, where you try to achieve your goal and also help to heal the world.

The author analyzes many different aspects of a game that help people to try to achieve their goal, stick to their purposes and try again and again until they got the goal. If we know how to design a good game, we can make people work together to reach one really big goal.

World Of Warcraft  

World Of Warcraft



Education would be the next wave

This is our research about the electronic education market, as the CMU Assignment

To look at the whole report, you can read it from here:

In short, we are seeing the new trends in technology, business, politics and market landscape is moving to allow better competition and creates better platforms.

In technology, we have better network bandwidth, better cloud computing, better consuming device (ipad/iphone) and better content generation tools like iBook Author.

In business, we have seen recent trends in education, from traditional education, to distant learning with the materials downloaded/sent to you via DVD, and then to e-learning when you can get interactions with teachers in the online place. The e-education would bring it further, to help you with more interactions with the teachers, with other students, and you can study wherever and whenever you like.

Domain + Tech + Design









We can see the new hype about education, health care or photography. I believe that in this new era of technology startup, it is time that we are innovating in each industry, to transform the industry into a better format. We have technology there, we have social network there, we have better design there, in iOS or Android platform. The technology industry have gone quite far comparing to other industries like education, healthcare, design, news, food, lifestyle.

We have seen innovations in Education with Coursera, Ucademy, Khan Academy… We have seen more innovations is coming in Healthcare with Misfit Wearable…News is already transformed with iPad, iPhone, social network and how we share news together….

I agree with the article:

The only way out of this innovation gridlock is an expansion in founding team diversity. I believe the missing piece from the DNA in the founding teams of transformational companies is now the domain expert, who has deep insight into the industry they are trying to disrupt.

I think we will see more innovations in each industry, rather than just technology improvement like the last few decades with Microsoft, Google, Facebook, Apple and Amazon.

In the meantime, our project team in CMU has spent a significant amount of time to produce a quite good report on the Education Innovation.×482-1971.jpg