I have only been playing with Android for a few weeks. Overall, I think Android has good quality and bring some fresh air to iPhone alternatives. But it is far from perfect, and I think it will have bigger problems with its increasing popularity. People have mentioned the fragmentation problem Android has. In my own experience, it can upset users. I bought my phone with 2.1 Android, and I rooted it to install 2.2 Android. Soon after that, I found out that there are quite a few apps I like disappeared from 2.2 Android Market. I found it may become a reason for people to stay with old version of Android, and the fragmentation will become worse.
I ran into a simple C++ problem recently. The application I was developing uses core library from C API. There are many C objects flow around, managed through pointers, alloc/free. For ease of development, I wrap a few C objects related to one process into this C++ class, with constructors to call C functions to load resources, and destructor to call C functions to free them. For multiple process in application, I choose vector to store instances of this class for each process. So I did: vector.push_back(Class(input)). The immediately I ran into problems. What happened is: when I call vector.push_back, a temporal instance is constructed, memory is allocated, then default copy constructor constructs a new instance in vector with member data copied from temporal instance, after that, the temporal instance is destructed. The instance in vector has pointers but the C object have been freed by temporal objects. The solution to this problem is to make the C++ class non-copiable by declare private copy constructors; or use shared pointers with C objects.
Since I installed Ubuntu on my desktop, I haven’t used Windows for almost two years now. My wife doesn’t like OSX, because she’s used to Windows’ user interface. So she bought a Sony laptop. She complaint this evening that I have used her laptop, and I made it very slow. So I had to “fix” it for her. The problem turned out to be Opera. By default, Opera has “smooth scroll” enabled, which makes scrolling very unnatural. I turned it off for her. I also installed Chrome for her. Now she is happy.
A side note: I think Opera has lost the edge. It was never a major browser, so many website doesn’t really optimise for it. It made more difficult for Opera to gain popularity. It is sad though because it was the best browser, at least used to be.
I am surprised that multi-display is still such a big issue on Linux (Xubuntu). My problem is that my two monitors are running at different resolution. It can work well if I set both monitor to 1280×1024. OSX never had a problem with it. Now I have to give up Xubuntu as my main development environment. (Windows 7?)
(edit: while Xubuntu doesn’t work well, Ubuntu has no problem. on OSX, you have to remember to disconnect your external monitor before you shutdown, otherwise, OSX will not detect it next time.)
The default terminal shipped with OS X is far from perfect. iTerm is a very good option to make your terminal experience happier. Unlike gnome-terminal, which will need you to have MacPorts or Fink, it is standalone, you can have it installed in a minute. It is easy to use as well. The only thing I need to mention is that the profile is managed in bookmarks. You can have a few bookmarks, and each bookmark can have different Keyboard, Graphics and Terminal profiles assigned to it.
Recently I removed Ubuntu dual-boot from my MacBook Pro. The reason is that Snow Leopard doesn’t upgrade with Ubuntu partition. The only time consuming procedure is actually remove Ubuntu partition! If you ever want to modify partitions in OS X, open Disk Utility, right click on the harddisk and select “partition” from context menu.
I am not a huge fan of Chrome. It is an excellent browser, especially when it is very fast. However, I do love Opera more. The only reason is that it is the only browser supports single-key short-cut. If you prefer vim to emacs, you know what I mean. The love comes with a cost: since Opera 9.7, it has been very resource consuming. When I switched to OS X, I started to use Safari. Until I did Snow Leopard upgrade, after which, I found the speed of Safari is unbearable. So I download Chrome for Mac. It turns out to be great. Until now, I haven’t experienced any incompatibility issue with any sites, also it is bleeding fast.