Social networking sites come and go. There hasn't been a social networking product that has really lasted. I believe it is because they were only a single product company and eventually people lose interest and move on to another product. Facebook, despite what they say, is also really a single product company. Everything they do is meant to get you to continue to use that single product whether it is with new features or apps (which are essentially features of FB that they got outside developers to build).
How can Facebook avoid the fate of other social networking sites? They only have to look to Yahoo. Facebook is not the next Microsoft, Apple or Google even though they're trying to be. The product and business offerings are just too different. What they are is really the next Yahoo. I think it's fortunate for them that their user demographic has changed to an older crowd similar to Yahoo's. If they didn't attract this crowd, they'd be like MySpace who lost the mindshare of their demographic and couldn't attract new users. The current Facebook/Yahoo crowd tend to not like change as much and are more conservative. At the same time, they also tend to be pretty loyal to what they know. While the media love to talk about the demise of Yahoo, the reality is that millions of users are used to going to Yahoo for news, sports, horoscopes and nothing will make them change their daily ritual.
This benefits Facebook even though there are short term pains as this group tends to be less open and more concerned about privacy so Facebook has to change itself to fulfill the needs of their current user base. Thus, I believe that Facebook has to decide if that is a future they want. Facebook likes to point out that they have surpassed Yahoo and they did it by becoming the next Yahoo. Now they just need to accept it.
Tuesday, May 25, 2010
Apple's Garden and Android's Openness
There are a lot of talk lately about Apple's iPhone vs Google's Android. There are comparisons on features, prices, market share, and growth. Since Google I/O, I've also started noticing that there is also a growing focus on the cultural differences between the two platforms.
Apple is, and has always has, been an advocate of control. They follow the school of thought where choice is not good for the consumer because consumers find it difficult to make decision when there are too many choices. It's a lot like Henry Ford's quote "Any customer can have a car painted any colour he wants so long as it is black."
Google believes in providing technology to the masses and letting the masses guide the direction and use of the technology. The consumer might not like having to chose between between 100 nearly identical choices, but the consumer will also eliminate the weak choices until the right amount of choices are left for them to comfortably choose from.
Between these two cultures, who will win? Both? Neither? Google? (Usual disclaimer: I'm an employee of Google but any thoughts here represent my personal views and are not necessarily that of my employer.)
Apple is, and has always has, been an advocate of control. They follow the school of thought where choice is not good for the consumer because consumers find it difficult to make decision when there are too many choices. It's a lot like Henry Ford's quote "Any customer can have a car painted any colour he wants so long as it is black."
Google believes in providing technology to the masses and letting the masses guide the direction and use of the technology. The consumer might not like having to chose between between 100 nearly identical choices, but the consumer will also eliminate the weak choices until the right amount of choices are left for them to comfortably choose from.
Between these two cultures, who will win? Both? Neither? Google? (Usual disclaimer: I'm an employee of Google but any thoughts here represent my personal views and are not necessarily that of my employer.)
Thursday, April 8, 2010
Setting up GIT for home network.
I have a few different computers that I use at home and I wanted to set up GIT that I can access my code from any of them. It took me a bit because I was too used to working with a client-server model where I designate one machine as the "server" that holds the repository and everything else was a client. Instead, GIT seems to operate more like a merge tool and every local copy is its own "master." Once I understood that, it turns out that setting up GIT is very simple and just needs GIT itself and SSH.
Let's start with 2 machines. The first one, "remote", is where you want to store the code and could be where other users will also pull copy of the code from. The second one, "local", is the machine where you want to check out the code and make your edits.
On "remote" we want to store the repository in /usr/local/src:
On "local" we want to work on the code in ~/workspace and we already have some files to populate the repository with so we first create a local git repository:
Now let's push this code to the remote server:
Done! Now we have both servers with the files. Files can be edited locally, commit locally and periodically synced/pushed to the remote server.
Now, on another computer, we want to "check out" the source code to work on it:
Some things to make it easier to work with:
1. Use ssh keys so that you don't have to put in your password each time you push to the remote host.
Let's start with 2 machines. The first one, "remote", is where you want to store the code and could be where other users will also pull copy of the code from. The second one, "local", is the machine where you want to check out the code and make your edits.
On "remote" we want to store the repository in /usr/local/src:
cd /usr/local/src
git --bare init
On "local" we want to work on the code in ~/workspace and we already have some files to populate the repository with so we first create a local git repository:
cd ~/workspace
git init
git add .
git status
git commit
Now let's push this code to the remote server:
git push ssh://@/usr/local/src
Done! Now we have both servers with the files. Files can be edited locally, commit locally and periodically synced/pushed to the remote server.
Now, on another computer, we want to "check out" the source code to work on it:
mkdir ~/workspace
cd ~/workspace
git clone ssh://@/usr/local/src
Some things to make it easier to work with:
1. Use ssh keys so that you don't have to put in your password each time you push to the remote host.
Saturday, March 20, 2010
Google App Engine can further encourage Open Source.
One of the challenges of open source web applications are that they require users to have their own web hosting solution in place, but recently I've been noticing more open source web applications being released as Google App Engine applications. This is a great direction as it removes the barrier of having to setup one's own web servers, network access, etc. Users can download the the GAE project's source and either run it locally using the GAE SDK's own web server or use the free GAE instances that Google provides.
I've been using GAE a lot recently and have come to really like it despite some of the limitations.
I've been using GAE a lot recently and have come to really like it despite some of the limitations.
Friday, March 5, 2010
VIM copy/paste/navigation in Insert mode.
A few months ago, I made a commitment to learn the VIM editor. I was primarily an EMACS user, but I wanted to become proficient with VIM since EMACS is not always available I found myself too slow when using VIM. To learn it, I pretty much told myself that I'm not allowed to use any other editor while programming and just immerse myself in VIM. For the most part, it worked. I've been using VIM daily for about 4 months now and I've gotten used to it... mostly.
I can see the reasoning and benefits of having a separate mode for inserting text, but for me it isn't as intuitive to use. Maybe my fingers are just to conditioned to be able to write chunks of text and still be able to copy, paste, etc. The way I work, I edit text while jumping around a lot and that mode leads to a lot of hitting ESC to the point where I'm using more key strokes then on EMACS (where the criticism is that it requires mult-combos to do an action such as 'C-x C-c'). So I found myself editing text, ESC, move around, 'i', edit text. For the most part, I was willing to live with that, but the breaking point is that I just kept making mistakes editing. I'd hit 'i' when I'm already in edit mode or be typing outside of edit mode leading to typos and jumping to another part of the screen. I figure that 4 months is enough and while I'll stay with VIM, I'll likely be in Insert mode a lot and so I want to reduce bouncing back-and-forth between modes.
I made the following changes to my .vimrc to allow me to do things like move around (without using the arrow keys) and copy/paste without leaving Insert mode:
I can see the reasoning and benefits of having a separate mode for inserting text, but for me it isn't as intuitive to use. Maybe my fingers are just to conditioned to be able to write chunks of text and still be able to copy, paste, etc. The way I work, I edit text while jumping around a lot and that mode leads to a lot of hitting ESC to the point where I'm using more key strokes then on EMACS (where the criticism is that it requires mult-combos to do an action such as 'C-x C-c'). So I found myself editing text, ESC, move around, 'i', edit text. For the most part, I was willing to live with that, but the breaking point is that I just kept making mistakes editing. I'd hit 'i' when I'm already in edit mode or be typing outside of edit mode leading to typos and jumping to another part of the screen. I figure that 4 months is enough and while I'll stay with VIM, I'll likely be in Insert mode a lot and so I want to reduce bouncing back-and-forth between modes.
I made the following changes to my .vimrc to allow me to do things like move around (without using the arrow keys) and copy/paste without leaving Insert mode:
" Key mappings in INSERT mode
" Tired of lifting hand to hit ESC or having ctrl-[
imap ;;
" navigate without lifting hand off of keys
imap
imap
imap
imap
" paste in Insert Mode
imap
" undo
imap u
" Select text
imap vgG
Monday, February 22, 2010
Wednesday, February 3, 2010
WordPress for Android
Another app I've been waiting for has been released. WordPress for Android is now available. Each day takes me further from the iPhone.
Friday, January 15, 2010
Chrome OSX with Bookmark Manager
The latest dev channel build of Google Chrome now have a basic bookmark manager and cookie manager.
With a bookmark manager, even though it is very basic, Chrome for OS X has the basic set of features that I feel makes up a browser and might can make Chrome my default browser on OS X soon.
With a bookmark manager, even though it is very basic, Chrome for OS X has the basic set of features that I feel makes up a browser and might can make Chrome my default browser on OS X soon.
Monday, January 11, 2010
Android 2.1 SDK released
For those who has been asking for the 2.1 SDK since the Nexus One launch, the new SDK can be downloaded here: http://developer.android.com/sdk/android-2.1.html
Monday, January 4, 2010
Google APIs
"Eat your own dog food" is not an uncommon term in Silicon Valley. It means for a company to use the product they built themselves. If a company offers an email product to customers then they should also be using that same email product. It's not always easy to eat one's own dog food especially when that dog food provide a critical business functionality or is fairly new. Email, for example, has become vital for companies and they depend on it to be scalable, stable and reliable, but if you're eating your own dog food you might be using the pre-production version which might not be 100% stable or it's missing some functionality and which you need to build yourself. Because of this, even though many tech company talk about eating their own dog food, but don't really pull it off.
I find Google to be very serious about eating their own dog food. Everything released to the public is also used internally and this includes their APIs. Often companies release APIs but don't use them internally because they have direct access to the underlying technologies. Google does use their own APIs and during my first two months here, I've been learning a lot of the APIs in order to do my work. There are some amazing stuff out there and they are all listed at code.google.com.
Specifically, I've been learning the Google Data APIs. There is an amazing amount of access to APIs to allow developers to build sophisticated applications so I encourage everyone to try them out!
I find Google to be very serious about eating their own dog food. Everything released to the public is also used internally and this includes their APIs. Often companies release APIs but don't use them internally because they have direct access to the underlying technologies. Google does use their own APIs and during my first two months here, I've been learning a lot of the APIs in order to do my work. There are some amazing stuff out there and they are all listed at code.google.com.
Specifically, I've been learning the Google Data APIs. There is an amazing amount of access to APIs to allow developers to build sophisticated applications so I encourage everyone to try them out!
Subscribe to:
Posts (Atom)