2012年11月16日星期五

找工作的感想(最后一部分)


从中篇后,又来了三藩两趟,这两次都下雨,而我又碰巧喜欢雨天,感觉不错。
公司:
比起从前,又多见识了四家公司,Twitter,Circle,PInterest和Dropbox。其中前三家都可以给我offer,Dropbox因为四个小时前才结束面试,所以结果没有出来。
除了Circle,说说剩下三家给我的感受。
Twitter很大,里面的人也不错,但是最大的问题就是我觉得他们的HR干活实在让面试者不爽。第一个HR联系我,安排了电话面试,然后说面的很好,然后就人间蒸发了。第二个HR联系我,安排我写一个程序然后发过去,然后就人间蒸发了。第三个HR联系我,我说我现在很着急,于是他安排了第四个HR联系我。第四个HR给我安排了电话面试,然后onsite。第五个HR联系我说有Offer,第六个HR会和你谈。第六个HR现在联系了我,说周一给我打电话。整个过程耗时将近一个月!
从前我听Amber说Twitter联系他,全天面试,Offer当场就出来,所以我对Twitter充满了好感,可是如今看来,Twitter对我既不热情,我也没有能力在他们那里作出impact,所以感情就淡了。
PInterest很好,办公室里一片红火,30多个程序员,面试我的主要是Search Team和Recommendation Team。其中有一个人是从Quora跳槽过来,还给我对比了Quora和PInterest之间的区别。我对PInterest印象不错,估值很高,用户多,最近有很详细的赢利计划,给我谈了好多这方面的可行工作。要是现在是7月初刚和Yiting Wang她们吃完饭的时候,我肯定就去PInterest了!可是时光飞逝,我十月一日投的简历,他们上周联系我加面试虽然只耗了不到一周,但是这让我等的有点久,有些失望。
Dropbox一看就是geek集中营,面试我的人清一色从MIT毕业,感觉他们是想把MIT搬到加州了。听他们的早起员工Albert讲Dropbox的成长故事,就是把MIT的内部云存储实现出来给大家使用。就这一点来看,我觉得Dropbox实在是太Cool了!非常的理想化!
面试题目:
面试题也小总结一下吧,电话面试都是一些常见的算法题目,除了算法题目有一些其他的问题不妨说说。比如C++的vector和list有什么使用的区别?C++的virtual function有什么好处或者短处?什么是deadlock?如何使用mutex和semaphore?浏览器里输入网址后进行的一系列工作流程?
常见的系统面试题:
如何实现短网址服务?背后数据库,数据分布怎么设计?
如果提供一个服务让人实时知道附近的人,附近的名胜,附近的朋友等,要如何设计该系统,数据如何存储分布?
如果要设计一个million people实用的聊天室,当然要分若干小聊天室或者聊天主题了,那么要如何设计?数据如何分布,如何发送消息?
然后有一个网站,其题目与面试题目相差无几,可以参考:
http://codility.com/

2012年11月8日星期四

找工作的经历(杂谈)


这不是最终篇,但是因为被这家公司的个人魅力吸引了,所以特地写一写今天的经历。
美国版的陌陌,但是与陌陌有着不同的理念。那就是Circle,感兴趣的人可以下载手机客户端:http://discovercircle.com/
这里能下载到circle的测试版本,据说一周后会有更新,我今天提前在他们创始人那里看到了更新后的circle,实在是太帅了,可以说是我见到的HCI最友好且酷的一个软件。
软件界面如图所示,可以显示人,以及一些与你的相关性,左下角可以看朋友,右下角可以看推荐的人,新版本向左滑可以看到朋友列表,向右划可以看到附近的人,以及这些人为什么会推荐给你。当你把手机放平后,新版本甚至可以有增强现实功能,看到你面前哪个方位有多远会有你的朋友,这点是我一直想有的功能,避免你和朋友约见在某个地方却找不到对方的尴尬。

创始人Evan的经历很神奇,他本科学过心理学,而且美国人貌似天生喜欢交朋友。美国人喜欢搭讪,但是搭讪毕竟会感到尴尬,比如你在咖啡厅见到一个美女,想和她聊聊天,但是过去Say Hi之后没有下文的情况很多,其实很多时候是因为彼此没有mutual trust,和陌生人聊天是非常困难的一件事情。
但是你可以想象,假设你看到一个美女头上写着想认识Stanford的人,或者喜欢某个地方的小乐队,碰巧你毕业于Stanford,也了解那个小乐队,并且美女知道你的这些情况,那么你和美女搭讪就不在尴尬了,说不定两个人聊的很high。还有一个情况是加入你来自清华,到Stanford读书,从前搞过竞赛,当你看到朱晨光的时候,你发现他也来自清华,搞过竞赛,那么肯定有很多想说的话,在异地交个朋友不容易。如果对方知道了这些,那么他就不会把朱晨光认成朱泽园,造成尴尬的局面。
这就是Circle的来源,同样是找周围的朋友,与陌陌不同的是他更关注两个人的相关性,更关注推荐两个有相互经历,有mutual trust的人认识彼此。

创始人也曾经做过实验,在咖啡厅里带着一个白板,上面写着毕业于Yale,在Stanford读计算机,去过非洲!这样在咖啡厅就会有很多人找他搭讪,聊天,还会觉得去非洲的经历很酷。这让我回想起穿着Google Codejam衣服在UCLA校园里走路的时候,曾经被搭讪过两次,认识了一个搞密码学的印度人。穿着Facebook Hackthon的衣服在Whole Food旁边的咖啡桌那,有人搭讪我Hackthon拿了第几名,做了什么。美国人很喜欢social,所以如果有什么东西能帮助你们建立起mutual trust,那么对交友很有好处。

他们公司的创始经历也很神奇,目前6~7个人。刚开始是他和两个印度人,要创办公司,但是印度人没有H-1B visa怎么办?他们对办理这个步骤都不是很熟悉,于是三个人一起去了印度!在印度工作了三个月,并且通过Evan的联系,帮助两个印度人办理了H-1B visa,然后回到Palo Alto继续创业工作。所以说很多人担心没有去小公司不给办理H-1B怎么办?其实完全不用担心,如果小公司真的要你,那么一定会帮你搞定这一切的。

同时,我也不得不说说他们的员工,个人魅力真的很吸引人。有三个印度人曾经参加过ACM ICPC,进入过World Final,而且还和我一年去的World Final,也就是2008年。他们问我认不认识ACRush,是不是和楼教主一个队,然后又对我表示了对楼教主的崇拜,我也给他们介绍了我的牛队友唐文斌(Open)和龙凡(Ted)。

这些印度人里有一个是Topcoder India的第一名,同时也是参加Google Codejam决赛的最年轻的人,他给我讲当初他们做了一个在对视频进行OCR,方便用户搜索视频中出现的字的软件,可惜没有卖掉T.T。还有一个印度人是物理世界决赛的金牌,当年印度高考的第六名。设计师musho在俄罗斯拿过很多设计比赛的第一名。真心是一个生气的集体。

我深深的被这个高智商的集体吸引了。
该公司介绍结束。
三藩好冷,今天在雨中走了很久,早上出门下雨被雨淋,中午去Stanford找朱晨光,胡伯涛和陈丹奇被雨继续淋,晚上回家的时候又被雨淋了,所以说我每个冬天来湾区都会感冒,怎么破!

2012年10月27日星期六

找工作的感想(中篇)


学校都要开始期中考试了,那么找工作的感想当然也就要到中篇了。
先概括一下,一共投了28份简历,8个内推,20个自己投。发出去的简历全都没有Cover Letter,这也算是一个失误,但其中也包括一点自信的成分,相信自己能够找到工作。
其中16个HR给我回了邮件,8家公司已经过了电话面试一轮,7家公司onsite已经结束。
有2个offer已经发了过来,还有2个承诺了口头的offer,下周应该能够收到。当然拒信也不少,3个拒信和1个口头说还是不要申请我们了。

先从不要我的公司说起:
Microsoft,我从前的老板调到了微软总部,于是我给他发了邮件,打了电话。他很相信我能拿到Google,Facebook和Twitter的offer,而且觉得我更适合这样的公司,于是告诉我不帮我内推Microsoft了,如果找不到工作再联系他,我想了想,觉得他说的也对,于是就没有申请Microsoft。
Palantir,一家我听说后比较想去的公司,胡伯涛推荐给我的公司,不过不是内推。做数据挖掘,有很多国家项目所以很有钱,但是可能是因为我没有Cover Letter的原因,于是简历发过去一周之后就收到了我们不会面试你这样的拒信。
Box.net,和Dropbox提供类似的服务,公司规模不大,130个Engineer,300+的销售人员,主要针对大客户。我个人很想做他们的Backend,不想做他们的Client。可是面试的时候Backend的team面我效果不好,Client的team面我很喜欢我,但由于个人回答上的问题,他们认为和我的职业规划不一致,于是给了我拒信。该公司面试从12点到6点,主要是system design和algorithm,一共和6~7个员工扯淡,非常辛苦。
Quora,我10月26日前最想去的公司,面试设计算法,公司的idea,修改open source的代码。我很喜欢这个公司的主要原因就是因为里面有很多聪明人。比如MIT,Caltech毕业的人,新加坡IOI队99,00,01年的成员,他们的CEO是美国IOI对02年的成员,每个聪明的人都有个人魅力吸引着我。可是由于我open source修改时的表现不好,给公司提改进意见时候一个数学公式没有推出来,很关心公司的盈利计划(因为CEO想10年内都不打算盈利的),所以他们给了我拒信。有幸是下周六还能去湾区参加CEO举办的聚会,到时候还可以聊聊天,认识一些牛人,对此我充满期待。该公司面试从下午2点到6点,轮数不多但是难度比较大,因为之前有和他们的大老板通过邮件,所以面试官都对我比较客气,也留下来吃了晚饭,可是结果还是没要我。

接着是不知道要不要我但是我不是很喜欢的公司:
Google,唉,其实我非常非常喜欢Google的产品,但是在Google的实习经历让我明白了加入大公司就只能面对一个小项目的小feature的痛苦,所以我并不想加入Google。另外,和人聊天了解到很多内容,比如Google并不自己去衡量如何给你订offer价位,很多情况下都是去match别的公司的,比如Facebook,Twitter的offer,于是你要是没有别的公司的offer,就很难和Google砍价。当然,Google牛人多自然不care一个新员工的重要性,这都可以理解。用来当养老的公司不错。Google的面试是intern转正的面试,所以在实习期间直接给我onsite面试了,结果我已经不care了。
Chopper Trading,我之前调查了一些trading公司,但是后来觉得和自己的理想不一致,于是都没有投。这家trading公司是一个师兄把我的情况介绍给了一个师姐,于是联系了一下我。公司很牛逼,但是我没有什么感觉,面试的问题非常的基础,但是基础的往往就是我们容易忽略的,比如List和Vector的长处和短处分别是什么?Virtual function的继承以及优缺点等?问的我一头雾水。

要我但是我并不感兴趣的公司:
Imo.im,小公司,程序员一共十几人,主要产品是手机上的聊天软件(iphone上用来登录Gtalk的主要软件),还有一个web平台。他们的面试好多轮,每轮两个员工来面你,面完你就认识他们一半以上的员工了。中午和CEO吃午饭,一路上聊了很多聊天软件的问题,比如Gtalk的不爽的feature,中国市场的微信,QQ,陌陌。他知道微信和QQ,但是不了解其中一些神奇的功能,比如摇一摇和附近的人。CEO人很nice,给我的offer也非常的高,估计是因为他们面试全都是算法题目,而且是在电脑上写不是在白板上写,所以我解决的比较好吧。但是我主要担心的是和别的公司竞争聊天软件没有什么市场,所以拿到了offer也不是很想去。
Storm8,叶阳师兄推荐的公司,做手机游戏。他们的发家史比较有趣,CEO和co-founder都是facebook的员工,观察到了Zynga在facebook上的成功,很早就开始做手机游戏(iphone1时代)。营销策略非常完美,他们从来不投广告,因为他们有很多游戏都在iphone app排名前50,所以他们在自己的游戏里给新游戏打广告,很容易让他们的新游戏进入排行榜前列。美国人为了玩游戏爽,很愿意在游戏里面花钱(不是购买游戏,而是购买游戏币)。所以他们的盈利非常高,并没有风头介入。从offer的角度上来说,钱不如Imo.im多,但是股票给我非常多,比我知道的其他人都高,Sign Bonus也很高,比我知道的new grad在他们工作的都高,让我很是心动。可是!他们的offer只给48小时考虑时间,这是某些硅谷公司的挖人手段,欺负新手!
我本来不想做游戏,觉得游戏公司和我想要去的互联网公司差距太大,可是面对白花花的银子忍不住动心,后来和唐总打了个电话,终于打消了我做游戏的念头。做游戏是个大坑,往里跳了之后世界就不一样了,所以要是热情不够,还是不应该做游戏的。

口头要我且我感兴趣的公司:
Facebook,面试facebook的过程非常奇葩,电话面试的时候貌似表现不好,于是就加面一轮。当时我在湾区,于是和他们的HR商量直接onsite,他们的HR在onsite前4个小时给我打电话确认了onsite。我满心欢喜的决定去onsite后,发现只是onsite进行第二轮电话面试。聊天中我告诉HR我已经有别的offer了,于是完成了onsite的“电话”面试,开始和facebook的朋友一起吃午饭的时候,突然接到HR的电话问我有没有时间直接下午进行onsite,那我当然有了,于是下午就连着onsite了。Facebook面完后就给我发了一个打算给我offer的邮件,让我等一等,因为还有一些手续。其实facebook想要招我的那个组我并不感兴趣,做一些给他们marketing,ads的internal tools,但是由于听说了下半年facebook给的疯狂的Sign Bonus数额,我不得不把facebook列为我感兴趣且口头要我的公司了。
Klout,这家公司的主要业务是分析用户在社交网络上的影响力,推荐大家都去注册,提升一下我的影响力。公司规模不大,算上sales什么的也就70~80人,公司创立于09年,但是已经盈利了,且9月底与Microsoft签下了一个很大的合同。他们做的东西很有趣,且作为小互联网公司能盈利我非常感兴趣,所以多说一点。
一开始去的时候,HR说CEO和他们的Chief Scientist很欣赏我的简历,要过来Say Hi,我当然非常荣幸了。于是开始和他们的CEO聊天。他们的CEO Joe辍学创业,和朋友开过几家公司,听到我讲去小公司的原因和职业规划的时候,对我表示了赞赏,同时,我自然也欣赏他们的公司,最后他给了我张名片,让我有问题可以给他发邮件。第一个面试的是一个印度人,在Yahoo工作了几年(这是我后来才知道的,我知道前还告诉他我不喜欢Yahoo,真是太囧了),该印度人问了我system design的问题和map reduce的问题,我感觉回答的不好(后来收到一个人的来信发现的确这个很吃亏)。第二个面试还是印度人,不过面的是算法题,轻松解决。中午一起吃午饭,和他们几个新来的员工讨论了些问题,感觉那里的人非常友好,并且我还得知一个一起讨论的美女是清华计算机系3字班的学姐(贵系3字班女生出人才啊,林希德,项荣璟,还有这个美女)下午第一轮面试是Chief Scientist,面了一个简单的算法题,聊天中才发现他们会重视我的原因,主要是贵系前辈们表现的好。该Scientist是当初Facebook的第二个中国人,之前看我的简历的时候发现搞过竞赛,于是问我认不认识符文杰-付老大,这时候死马也要当成活马医啊,我当然说我认识了啊,于是他还给我讲他和魏晓亮一起工作的故事,虽然他本科是复旦的,但这个时候我感觉就是自己人啊,所以聊的很投机。最后一个面试是他们的Backend manager,擅长系统,面试内容是聊天,所以我就把自己仅有的一点数据挖掘的知识讲啊讲,努力表现一下。
其实这次面试之后,我才明白面试结束并不是最后的结束,因为我知道第一个人我面的效果很差,如果坐以待毙的话肯定会死。但我非常喜欢这家公司,美国人相信数据和个人的影响力,公司够小不到100人且盈利,晚饭之后我就开始撰写邮件。先给chief scientist发邮件,告诉他我对中国来湾区比较成功的前辈的崇拜之情,以及看过的分析influence和community detection的paper。再给ceo发邮件,告诉他我对他们公司解决的问题的喜爱与热情,以及对于加入“小公司”的憧憬。于是今天收到了他们的邮件,scientist劝我多了解了解hadoop,hbase,hive这些open source,HR告诉我大家很impressed且我周一谈一谈,ceo给我了很好的feedback且让我有问题可以继续联系他。

中期感想,虽然收到的offer都不是自己最感兴趣的,但是得到了自己很感兴趣的公司的口头offer,算是一个比较好的期中答卷了。
我很感谢周围的人的帮助,无数人帮我内推,比如郭华阳,冯威,谢居晨,叶阳,项荣璟等前辈。
我同时对硅谷某些公司的老板非常感谢,比如Joe,Ralph,Adam D'Angelo,他们很关心潜在的员工,并且愿意与他们交流,得到一些公司外,或者来自不同国家的人对于他们的产品的看法,这种氛围让我觉得自己非常的荣幸。
最重要的是在我选择职业上给了很多建议的人,郭华阳对每个产品都能提出很宝贵的批评意见,让我面试的时候能够更好的给公司的人展现出自己能做出的改变。叶阳师兄推荐的游戏公司虽然我不是很感兴趣,但是他创业的想法和精神一直影响着我。李老师告诉我很多工作经验,让我明白在公司工作的同时要提升自己成为某一个方面的专家。唐总深刻的告诫了我做游戏要有精神,让我坚定了自己不做某些选择的想法。还有在Klout认识的丁前辈帮我分析了下我投的那些公司的长处和短处,以及发展前景,如果没有他的分析,我就不会知道Quora十年内都不想赚钱的这样的想法,真为当初打听Quora怎么赚钱的行为感到窘迫。
最后,这只是中篇,因为我还打算去面一下Twitter,Yelp,Foursquare和Dropbox,他们专注的领域有很多不一样的地方,如果让我分类的话我觉得四家公司完全是做不同的事情,要抓紧自己还在学校的时间多和不同的公司做做交流,多了解行业动态。

写不动了,待续。

2012年10月15日星期一

[Read] Why Choose Pyramid

http://www.quora.com/Is-pyramid-is-better-than-turbogears-2
Pyramid is a low-level framework, like Pylons.
The design goals of Pyramid are to provided just a little infrastructure and let the developer decide what s/he wants to actually use.

http://www.quora.com/How-do-Rails-vs-Flask-vs-Pyramids-compare-as-web-frameworks
Using a lot of tools that are not traditionally used with Django, i.e. MongoDB. Django to be too tightly coupled.
Flask: simple and clean. Doubt whether there are enough plugins at the moment. Don't know whether Flask will get big in the future.
Pyramid: Bigger than Flask, smaller than Django. New, fresh, quite stable and widely used in industry.
Raild: The language is not as clean as python. Huge community and lots of plugins. There are some problem like scale.

http://www.quora.com/What-kind-of-web-applications-does-Pyramid-specialize-in
Pyramid does not 'specialize' on a specific kind of web application. Pyramid is much more loosely coupled. One of the most visible demonstrations of this is that Pyramid doesn't come with an Object-Relation-Mapper or data access layer by default.
Pyramid is also more low-level framework compared with Django. It does less out of the bow, and assumes you'll write more functionality yourself, or plug in other libraries to help you.

http://www.quora.com/How-difficult-is-the-Pyramid-framework
The author is able to setup his first Pyramid application in three hours.

http://blog.fruiapps.com/2012/05/Choose-your-Python-Web-Framework-the-Hard-Way

2012年10月11日星期四

[Linux] Connect to My EC2


To use SSH connect to my EC2:

ssh -i "key file" ubuntu@ec2-23-23-28-26.compute-1.amazonaws.com

To use SCP copy file to my EC2:

ssh -i "key file" "source file" ubuntu@ec2-23-23-28-26.compute-1.amazonaws.com:"destination file"

Now I plan to deploy Django on my EC2 server!

2012年10月9日星期二

[Linux] Auto Indent in Vim


Basically, other IDE already support this function.
For VIM, we have to type in following command in ~/.vimrc

set cindent
set smartindent
set autoindent
set expandtab
set tabstop=2
set shiftwidth=2

Also, there is a documentation about indent in VIM available here:

2012年10月4日星期四

找工作的感想(前篇)


最近有些神经衰弱,每天一点左右睡觉,七点多就自然醒了。
白天很困,今天还在校车上睡着,差点就坐过站了,囧。
因为打算这个学期拿Master毕业,所以最近一直在忙找工作的事情,投了将近20家公司,当然看情况也许会继续投一些公司,和将近10家公司的HR有了一些联系和了解。
最主要是联系到了一些贵系的前辈,所以想写点东西记录一下想法。

找工作最重要的是什么?
我认为是个人未来的发展前景,但是我一直不了解职业规划什么的,没有真正的思考过。
我一直认为自己还年轻,可以多尝试,但是其实我并没有定下好的尝试方向。与李老师,叶阳学长的交流过程中,我获得了一些启发。
每个人都有创业的梦想,然而不一定能实现,在工作中可以选择一些公司去培养自己,使得自己变成一个generalists,对于很多方面都应该去积累经验。
如果想跳槽,升职,或者成为一个公司的骨干,也需要培养自己成为一个specialist。
现在才23岁,有充足的时间进入公司学习,成长,发现自己的专长,然后内外兼修,使得自己各方面得到充足的发展的同时,掌握一门拿手的技术。

这就不得不提到大公司和小公司的区别了,我在两家大公司实习过,Microsoft和Google。在Microsoft主要从事研究的实习,虽然只是面向某一个产品的某一个方面,但是我积累了很多知识,现在某一领域如果出现新的paper,我都能初步理解他们的做法。在Google的实习经历比较糟糕,加入了一个大产品的小部门,每天就做一点点事情,感觉并没有学到什么东西。
这两点经历让我对未来选择小公司去工作更加坚定,去小公司可以更好的学到一些本事,掌握一个产品End to End的开发过程。并且学习一些开源软件的用法,而不是大公司自己内部的架构。

选择一个小公司,相对来说就没有那么稳定,而且可能会比较繁忙。
需要常考虑的一个问题是这个小公司的前景如何?拿什么赚钱?是否会上市?是否会被卖给大公司?
还有一个严重的问题就是公司文化如何?我不是一个很social的人,所以如何融入公司,表现出自己的价值是很重要的,需要考虑的方面。
目前HR问我有什么问题询问,我常常只是问问这个公司现在有多少人,了解一下他们的规模。今天经过李老师提醒,才发现原来还是有很多问题需要考虑的。

关于经历方面,我突然发现有三点经历对我的事业起到了很大的帮助。
1.高中搞竞赛,取得了不错的成绩,更重要的是进入了一个不错的圈子,认识到很多牛人,这些牛人直到今天一直对我有很大的帮助,比如李老师,唐文斌,龙凡,郭华阳等。进入一个好的圈子的还有一个好处就是彼此认可对方的能力,对对方的未来有期待,这对于找工作有很大的帮助。
更加庆幸的收到一个IOI meet-up的活动邀请,由Quora的CEO,前Facebook的CTO举办的。因为他在2002年也参加过IOI,所以想把这个圈子里的人聚集起来聊一聊,想想能见到很多老朋友,心情莫名的激动起来。
2.上大学选择了清华计算机系,这也是一个不错的圈子,与上一个圈子不同的是这里的很多人他们也许并没有出色的竞赛成绩,但是他们在计算机圈内有一些我觉得很不错的成就,比如叶阳学长,有创业过,对选择工作有很深刻的理解,并且给我推荐了一家不错的公司。
3.参加ACM竞赛,与高中竞赛不同,更多要求更快,更准确的coding,写出bug free,clean maintenance的代码,在工作面试的时候非常有帮助,而且实习期间老板也觉得我写的代码比较易读。

最后,在与人交流方面,我发现不在硅谷还是欠缺很多。
从前我只注意大公司,比如Google,Facebook。通过与在硅谷的人交流,我开始注意到一些不是那么大的公司,比如Box,Storm8,Palantir。在硅谷的跳槽很频繁,但一开始的职业选择也同样重要,如果不了解硅谷的一些故事,那么很难想到要申请这些中小型的公司。这些公司分别是不同的学长或者同学推荐给我,可以看出与硅谷的人多交流的重要性。
因此,我开始更加觉得现在跳出UCLA去湾区是很重要且正确的一个选择。

待续。

2012年4月8日星期日

[Android] Using camera to capture pictures.

To prepare the surface:
  this.surface = (SurfaceView)findViewById(R.id.yourSurface);
  this.surfaceHolder = this.surface.getHolder();
  this.surfaceHolder.addCallback(this);
  this.surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);

To start the camera:
  this.camera = Camera.open()
  this.camera.setPreviewDisplay(this.surfaceHolder);
  Camera.parameters parameters = this.camera.getParameters();
  parameters.getPreviewSize(x, y);
  this.camera.startPreview();

To reset or pause the camera:
  this.camera.stopPreview();
  this.camera.release();

To take a picture:
  this.camera.takePicture(shutterCallback, rawCallback, jpegCallback);

To check SD card inside:
  android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED);

To save picture:
  Bitmap bm = BitmapFactory.decodeByteArray(_data, 0, _data.length);
  File myCaptureFile = new File(strCaptureFilePath);
  BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(myCaptureFile));
  bm.compress(Bitmap.CompressFormat.JPEG, 80, bos);
  bos.flush();
  bos.close();