Tuesday, August 30, 2011

Thoughts on Evernote Peek

Summary:

After the presentation, what this application impressed me most is its cool operating method and its beautiful UI. It is probably these two features that help it reach the top in the store. Moreoever, the market potential should also be emphasized because it determines the application's life cycle.
1. Unique use of smart cover. The presentation team strongly emphasized on this point. From the ad video, this application can be used anywhere at anytime, and it copies the traditional way of learning, i.e. using cards into an electronic-based learning. Compared with other apps on education, this app is innovative and marks a new way of utilizing the peripherals and integrate them into the application.
2. Beautiful UI. Even without smart cover, this application is still fascinating because it has a very intuitive and beautiful UI, which can attract many users as well as ideal for kids. Moreover, honstly speaking, for an application that lacks functions, a beautiful UI will even let it surpass those who have more functions but are not that good-looking. This is particularly true for mobile platforms like iPad.
3. The developer can make money by setting up online store to let people download more resources to support the app itself. This idea is important. iOS is a good example. Initally Apple doesn't allow developers to develop applications for iPhone besides web applications. Later they start to provide SDKs and document support and it is proved to be a huge success. For this application, setting up a store is doable and if done well, the profit is prospective.
My thoughts:

Evernote peek is a quite cool application. Before it is released, I already thought developers might make use of the smart cover to do some cool stuff. This application is probably the first application that achieves this goal.

In terms of functions, this application is actually quite simple: it doesn't involve fascinating features that attract professionals. Instead, its unqiue operating methods will attract people who are still learning - mostly students. I don't think at first glance, people will treat it as a must-have app but they may be impressed that it is fun and creative. Since it is free, people won't bother trying it. Its innovative design and beautiful UI will definitelly receive a large group of positive reviews and I believe some people will love it too much to part with it.

On the other hand, an innovative design doesn't mean that it will increase productivity. This app is aimed at education (as it is in the education category), but I doubt whether people can learn more by using this app than by the traditinal way. An attractive UI may make someone feel pleased, but it may also potentially distract people from their work. I have similar experience that sometimes I just slide my fingers on the iPad to feel the smoothness but completely forget what I am going to do. Therefore, I'd rather put it into the entertainment category. :)

I also have some doubt about whether it will have a large market potential. One way to make money is that the developer makes it a paid app. But will many people still use it once they have to pay for it? Its most unique feature is only the smart cover. If people don't bother using smart covers, they may turn to use other similar apps. Another way, as was mentioned in the presentation, is connect it with other information sources or set up a store. But since its user group is not broad, it is hard to say if it will survive.

Just for joking, I guess the purpose of this app is purely for fun. Since its company is already very successful, the developers try building an innovative and beautiful app (and most important, free!) so as to attract users to buy their other products. I think this is also a cool way of advertising. :)


Sunday, August 28, 2011

HTML5 vs Flash & Thoughts on Cloud

I have no expereince in HTML5 (and even HTML4 a few weeks ago) and actually I knew nothing about javascipt before the first assignment was issued. But since I have some experince in ActionScript, I feel that it is similar to javascript to some extent (actually they follow the same standard). No wonder why Apple is relunctant to support Flash because they think HTML5 can throw Flash away. :)

But currently what annoys me is the debugging of javascript. I need to use add-ons and debug it in a browser, whereas for actionscript, it is much easier (at least for me) because the debugging is integrated in the IDE. Since I am only a newbie, I am not sure whether there is a more efficient way, but I hope there be a HTML5 IDE with javascript debugging supported. :)

From the guests' speech, I agree that HTML5 is really cool. It supports more tags; it has a canvas; it supports non-flash videos and audios. Basically, it seems that it can do whatever Flash is capable of. And it really gives me an impression that a web page is not a page anymore, it can be an application - same as those on our hard disk.

I like this idea: data is stored in the cloud and what we have is only a front-end. This can be quite convenient since we don't need to sychronize our devices.

But there are also some issues.

One issue is safety. Currently the cloud service is provided by some giant companies which own a huge number of servers. What if my data is lost? Who should be responsible for it? I guess for those service providers, they will have some terms like they are not responsible for data loss. If this really happens, then WTF.

Another issue is privacy. The customer really don't know the back-end of the service and they even don't know if their privacy is violated (and continue to use the service).

As we can see, more things need to be negoiated and there is a long way to go. Currently I doubt if I am willing to put my important files into the cloud...

Sunday, August 21, 2011

Some thoughts on software engineering

Software engineering is more focused on team work rather than solo coding. Of course a person can develop a software himself applying the software engineering rules, but in most cases, we need to work with other people.

Working with other people improves the productivity (in an ideal situation) but also brings many issues. One thing we concern about is how to divide the work. If we want everyone to write a piece of code that is able to be integrated and works, we need to plan the tasks well. Therefore we need a leader (or an architecturer) to make a good model of the software. How good the model is? Well, I think it depends on how easy it is to distribute the work to programmers and whether each programmer can test his code without knowing others' code. This can be concluded as "low coupling", which is important for managing complexity. Another issue is about communication. Team members should know what each other is doing. This can minimize misunderstanding so there is no repeated work and the whole progress can be evaluated. On the other hand, the communication is also in the code. Good code quality and sufficient comments may help other members know how your code works therefore there is less chance to call your code wrongly and let the whole system crash.

The software development on evoloving platform is different from the traditinal one, i.e. the waterfall model. Developing applications for platforms like Facebook is more like a flow of the following processes. First we need to have an idea. The idea may be initially very simple but can evolve into some complex ones later, which we call features. The first two processes are very important since it almost determines the rest length of the development cycle. Then it's time to implement it, test it and finally release it. Deploying the application is not the end because each iteration is relatively quick and simple. The development is driven by user requirements. After getting the feedback for the first interation, we may plan new features or modify existing features and restart the cycle again (if the application is not dying).

Thursday, August 11, 2011

What I hope to learn in CS3216

I applied for CS3216 because I believe that people who take this course are all determined to do something and do it well. Thus it provides me with a good chance to work with talented and hard working people and finally we will have something amazing to show. :)

At first I was a bit hesitated because I don't know a lot about web applications. But then I think: web applications are also applications; they are just web-based or related to web. Therefore I don't need to mind much about the platforms and tools I use. What is important is the idea and the process to realize it.

So in short, there are mainly two things I want to learn. The first is the technical skills of developing web applications (and probably can apply to other kinds of applications). The second one, which is what I am concerned about more, is the skill to work with other people to design, to implement, to integrate and to debug. I want to have some experience of the process of team software development and this course provides me with a damn good opportunity to get all what I want to learn. :)