Thursday, December 8, 2016

Warning: Cannot create property 'subarray' on string

For an old project, after I npm install, try to grunt to build the project, I got the following error

Running "uglify:dist" (uglify) task
File "../onFirefox-build/chrome/content/js/MX.js" created.
Warning: Cannot create property 'subarray' on string

Running "cssmin:compress" (cssmin) task
File ../onFirefox-build/chrome/content/css/global.css created.
Warning: Cannot create property 'subarray' on string

A bug may have been created in the way the grunt-contrib-uglify interacts with the underlying uglifyjs api. To resolve this issue, it is better to upgrade grunt-contrib-uglify.

Based on the guess, I updated the cssmin and uglify versions to latest in package.json, then do npm update.

After that, grunt build passed. Hooray!

Sunday, December 4, 2016

China trip (11/17/2016-12/3/2016)

达达第一次回国,2周的行程安排的紧紧的。

11月17号从圣何塞直飞上海,大概14个小时不到的飞行,准点与中国11/18号晚上抵达浦东国际机场。Sister-in-law到机场迎接我们,由于行李件数太多,她还请人开面包车过来接。这次回国大小行李7件另加随身背包几个。第二天19号去阳澄湖吃大闸蟹,晚上吃什么的竟然忘掉了。

20号吃过早饭就急匆匆的赶回老家,中午在饭店宴请了4桌亲戚,因为达达第一次回中国,她们2人还收到了好多红包。当天主要就是聚餐和整理老婆的书籍,从妹妹家拿回了大概200本的书籍。晚上高中同学聚会,张同学非常热情,请吃饭不算还请我们去泡温泉,尽管有些雷阵雨,但小朋友玩的还是非常开心。温泉离市区不远,设施非常新,只是我们去的晚,有些温泉池不开放了。

21号继续雨天,我们选择宅着。22号天气也不怎样,去了大舅家吃中饭。晚上初中同学聚会,大多同学都是20多年或10多年未见了,大家吃着家乡的河鲜,用着浓浓的乡音谈着中学时的往事,那种感觉是很久很久没有过的。

23号,天空下起了大雪,11月应该不多下雪的。天气很冷,小朋友继续在家待着,我跟妹夫代妈妈去了趟人民医院检查。23号晚上我们吃的火锅,天冷就是这个号。然后就是整理行李准备隔天的合肥之行。

24号,妹夫送我们去镇江火车站,然后我们坐高铁去合肥,也就2个半小时。我们赶在中饭前抵达合肥高铁南站。同事把我直接接送到公司新的办公楼,老婆带着2个孩子check in后在附近的景点转转。在合肥的行程是非常紧的,基本上都是聚餐和开会,2天的时间我需要跟所有的team沟通公司的最新进展,和听取大家的意见和建议。2天的中餐和晚餐也是安排好的,有的邀请只好推掉了。25号晚上见到了以前在思科一起打拼的同事,不过变化很大,一个team的同事都基本上散开了,不同公司不同team不同角色。

26号,上午逛了下合肥排名第一的旅游景点逍遥津,然后就赶到高铁南站返程回苏州。晚上跟师兄师妹吃了粤菜,他们从杭州特地赶来的,还带了好多杭州土特产给我们。饭后把小朋友送回家,我们还找了个酒吧喝了点啤酒。第二天他们去逛了寒山寺 (寒山寺再也不是姑苏城外了,现在的苏州东南西北都扩的好大,房价也是好高),我因为有去上海的行程,也不太熟悉新苏州了,所以没有陪同。

27号,中午去石路吃了一个有名的捞仔火锅,然后就赶往上海,参加大学同学聚会。夜宿上海。28号周一,上午去东方医院南院看医生。下午去复旦大学医学院会见曹同学,晚上跟她一起去人民广场参加上海高中同学聚会。曹同学又帮忙联系医生又请客,真是热情。当晚9点的高铁又赶回苏州。

29号上午去银行办理业务,会见了刘同学,大家吃了个藏书羊肉,非常不错。中饭后就赶往家乡。晚上肖同学又请客,在市区,部分初中同学是第一次聚会的时候面孔的,也有几个新面孔,同样,都是20几年不见,大家迈入中年,除了在校时的一些往事,更多的是谈子女,是啊,这个年龄段的我们,上有父母下有儿女,感觉都有比较大的担子在扛着。

30号,表哥拜访,午饭后按照原计划返回苏州。夜宿平江路民宅,闲逛平江路, 晚餐藏书羊肉。1号浏览狮子林和苏州园林的代表作拙政园。小朋友玩的很开心,走的也很累。晚上David请客,在园区湖东商业广场新梅华。晚饭后跟海英姐和红妹妹喝茶到11点。

2号,专程驱车去藏书镇吃全羊宴。然后去天平山看红枫。天气出奇的好,顺顺达达跟着阿姨一直爬到最高顶。麻麻跟潘老师在入口处油画写生。爬完天平山,我去了尼盛广场见了汤同事了解中宏保险的事项。随后李同学请客在星海广场羊羊中餐馆,时间紧但吃得不错。随后有跟朋友喝酒。

3号,返程,早上朱同学用7座suv送我们去浦东机场,一路还算畅通,我们的时间也压的比较好,以后还得再提前一个小时,不然遇到堵车就没有办法了。吃了点日本拉面后,匆匆登机返程圣何塞,结束2周的探亲旅游行程。

Thursday, November 3, 2016

Popular JS Frameworks 2016

reactjs
https://facebook.github.io/react/

angularjs
https://angularjs.org/

backbone.js
http://backbonejs.org/

ember.js
http://emberjs.com/

Knockoutjs
http://knockoutjs.com/

polymer
https://www.polymer-project.org/

vue.js
http://vuejs.org/

Friday, October 28, 2016

Chrome Cookies

chrome://settings/content provides customized settings for Cookies (as well as Storage)

Cookies are files created by websites you've visited. Cookies store browsing information, like your site preferences or profile information. There are two types of cookies:

First-party cookies are set by the site shown in the address bar.
Third-party cookies come from other sites that have things like ads or images embedded on the page you're visiting.

Allow local data to be set (recommended) - allow first-party and third-party cookies and web storage
Keep local data only until you quit your browser - Chrome allows sites to keep information that includes first-party and third-party cookies and web storage while you're browsing, but erase them when you quit Chrome
Block sites from setting any data - block first-party and third-party cookies and web storage, usually Chrome will throw a security error
"Uncaught SecurityError: Failed to read the 'sessionStorage' property from 'Window': Access is denied for this document
Block third-party cookies and site data - allow only first-party cookies and web storage, but block all third-party cookies and web storage

https://support.google.com/chrome/answer/95647

Thursday, October 27, 2016

How to enable js debug in popup window

If there is no redirect,
1. Chrome Settings: check "Auto-open DevTools for popups"
2. In Devtools, add breakpoint in source codes
(Chrome remembers the breakpoint as long as DevTools open)

If there is redirect, follow below steps:
1. Chrome Settings: check "Auto-open DevTools for popups"
2. In js source code, add 'debugger' where you want to break
3. When do js uglify, don't drop debugger
    compress: {
        drop_debugger: false
    }

Monday, October 3, 2016

坎昆之行 (Day 8)

Day 8: (Saturday)
Hotel & Cancun -> SFO

今天很早我们两人就起床了,在酒店阳台上看日出。看着2个小的熟睡的样子,我们就斗胆去酒店的一个玛雅文化遗址朝拜了下,然后开始去海边漫步了。天气出奇的好,晨曦的阳关洒落在一望无际的加勒比海上,泛着粼光,有点耀眼但也有点暖意。老婆很有兴致,开始在海边做起瑜伽来,沙滩上有些动作简单,有些平衡动作就很难了,这个时候对抢拍的要求就很高了。偶遇一个摄影师,我们本来没有看出来,主动问他要不要帮他拍照,他指着远处的单反说自己可以遥控拍。他很热情,哗哗的帮我们拍了很多照片,也用他的单反给我们拍了好多,最后还拿了个名片,上面有他的名字和Facebook信息。漫步完晨曦下的沙滩,回到酒店房间,顺顺跟达达还在猛睡着。清理冰箱里面的东西,准备早饭,因为早饭后我们就准备把行李寄到酒店大厅,然后在酒店的游泳池玩了。

10点过后的太阳很大,2个小的不遗余力的玩着酒店的滑水道,无边泳池边躺躺也是一种享受。达达到处找小朋友玩,当然我的眼睛也一直盯着她。期间还有一个小插曲,达达玩久了,尽然把救生衣脱了,没多久,一到深水区就不知所措,喝了2口水,哭的稀里哗啦。安慰她的就是吃了,我们点了Bar里面的饮料和主食,边吃边消磨时间了。玩了2-3个小时,小朋友估计也累了,她们就冲洗完毕赶紧吃饭,玩水结束了顺顺又跟妈妈去酒店对面的Mall逛了逛,买了些礼物。

晚上7点的飞机,所以BD Travel安排的是3:15pm在酒店大厅送机。大概20-30分钟,我们抵达酒店,托运好行李,我们就安检去候机大厅。安检的时候顺顺背包的剪刀被查了出来充公了,奇怪的是去的时候SFO机场没有查出来,顺顺说她不知道背包里有剪刀,要不就是顺顺记错了。Cancun机场里面好热闹,我带着小的玩玩游戏,老婆去逛店消磨时间了。6点的时候,我们找了一家日本料理吃晚饭,然后就是登机回旧金山湾区了。UA飞机上没有吃的卖,所以我们自己准备了粽子面包之类的,一路上到也还好。抵达SFO已经晚上11点多了, Rain接我们回到家已经半夜12点多了。

8日7晚,一家的坎昆之行也画上了圆满的句号。达达第一坐飞机,顺顺第一次出国,我们第一次去墨西哥。每次旅行都有好多第一次。除了照片,用文字写下来也是另外一种回忆的形式吧。

坎昆之行 (Day 7)

Day 7: (Friday)
Tulum and Coba

今天我们选择去Tulum和Coba两个景点,没有去Xeha,主要考虑到达达还不会游泳,而且几天下来水项目也蛮多的。Tulum是位于海边的玛雅文化遗址,非常漂亮,有temple, 有海滩,有海景,当然还有让人忘不掉的巨型蜥蜴。具体关于Tulum的历史大家应该很容易Google到。有几个值得提一下的,整个景区只有一个厕所,就是入口处,里面没有厕所,带小孩的要注意,不然来回走一趟也要15-20分钟。停车场到入口的一段路是必需的,大概要走10分钟,应该是为了保护景区才这样设计的。天热吃不消的可以坐他们的车,每2-3分钟发车一次,轮子怎么也比2条腿快。我们去的时候入口在修建一个Tulum的牌坊,应该是景点介绍吧。

Tulum里面的每一处都是有故事的,除了了解历史,也要记得从不同角度来欣赏美景哦。一定要向里面向海边走,才可以拍到宣传画上的美景,才可以看到海滩。因为导游只给了1个小时的时间,我们拍照都很赶的,更不要说到海滩上坐坐看看海景了。Tulum同样离Canun Hotel zone 有2个小时不到的路程,所以真的应该住在附近的酒店或者Airbnb, 然后自己租车去玩。那种体验一定会更好。这种典型的到此一游的旅游可能对第一次旅客比较省心,但精华部分是很难体会到。

离开Tulum, 路边不忘买椰子汁消暑,小朋友当然最爱是冰激凌了。天有点热,但因为近海,其实还好的,只要记得带帽子和涂防晒霜就可以了。下一站就是Coba, 好像距离Tulum也不远。Coba有名的就是唯一让人爬的金字塔和景区的自行车三轮车了。Coba入口处后不久就可以看到租赁自行车的地方,我们租了2个自行车,顺顺和妈妈骑,达达跟我坐三轮车。三轮车车夫很nice, 天天在这边工作的原因,非常清楚哪个景点停,哪个景点带过,他说时间关系,我们需要先去爬金字塔。达达非常带劲,她嘴里数数,数一下爬一个台阶,我在后面不停的喊慢点,金字塔的台阶不规律,有些跨度很大也很陡,所以还是有点难度的。可她一口气爬到顶,数了130下左右,究竟是多少阶,看来只有下次了,当时下家伙数的究竟准不准还是问号。一口气爬到塔顶的达达,2个小脸红扑扑的,补充些水,就开始找阴凉的地方等妈妈了。登高望远,远处都是绿绿的一片,很养眼。上山容易下山难,的确如此,从上往下看还是蛮陡峭的,一步一步的下来明显比上去慢了。达达小家伙抓着绳子仍然很带劲。下了金字塔,就回程了,一路停一路看,拍了不少照片,大家都喜欢在树荫下骑车,更不要提在文化遗址景点了。

离开Coba就返程了,中间我们被旅游公司放在一个小镇上(一时想不起名字来了),让自己闲逛。达达上了车就睡了,估计是怕金字塔爬累了,我抱着她下车,坐在街边的凳子上,一睡就是半个多小时。等达达醒了,我们就去找顺顺和妈妈了。她们逛了街也买了pizza给大家晚饭。旅游大巴究竟去什么地方不得而知,但应该是去接另外一拨人了,让我们早回的在这边逗留消耗时间。我们回到酒店,好像没有出去吃晚饭,而是在酒店自己搞了些吃的,因为有厨房哦。由于明天就要回了,所以晚上还有收拾的重要任务,晚上收拾好了,明天可以多些时间在酒店玩玩。

心得:Tulum和Coba值得一去。

坎昆之行 (Day 6)

Day 6: (Thursday)
Hotel Preview and Dolphin Ride

今天我们的安排是参加酒店的preview和带顺顺去Dolphin Ride, 所以睡了一个懒觉。此前Tripadvisor上了解到酒店的Timeshare营销活动很费时间,但明知山有虎,偏向虎山行。为什么呢?主要两个原因,一是想今天休整下,连续几天起早摸黑还是有点累的,二是想看看Timeshare究竟是怎么一个游戏。我们吃过早饭按时来到酒店大堂,可是怎么也找不到preview的地方,转了2圈才问清楚,但已经浪费了15分钟,填了表格,把小的送到Kids corner后,销售人员就带我们上二楼给我们介绍酒店的情况,主要重点就是酒店的ownership program, 介绍了很多Westin酒店的特点和世界各地的情况,我不停点头,等时间差不多的时候,我就直接问多少钱,他们有不同户型,大体就是2万到3万美金可以拥有每年2个星期的度假住宿,但需要用他们系统内的,不然就要找exchange, 听上去还是麻烦的。对我们来说还是不太实际,不管是钱方面还是时间方面,哈哈,听听就好,掏钱免谈。

完成了住宿酒店的Preview, 我们就出发去离Hotel Zone大概40多分钟车程的Veda resort去了。我们是打车去的,大概费用是600墨西哥peso,不过酒店cover了,不要我们自己付。度假区环境非常不错,豪华安静,里面有很多景观,泳池,餐厅,也有高尔夫球场。抵达后有服务员带领我们去登记,然后带我们去销售大厅,接着就开始有一个销售人员陪同我们了。他首先问了下我们的基本情况,然后就带我们去吃自助早餐,其实已经是中午时分了,所以我们就当午餐来了。餐厅景色也不错,很有江南水乡的设计味道。销售人员是从Mexico City来的,说家里人都搬到Cancun这边搞旅游来了。我理解Cancun周边2个小时车程左右的城市都被坎昆旅游业带着发展起来了, 因为大多景点都在这个半径内,除了奇琴伊察稍远。

销售人员带我们稍微转了一下,或者说是顺路带我们看了几个景点,就直接带我们去看样板房了。样板房说真的还是不错的,但每年去趟墨西哥好像对我们还不太现实,所以怎么好也无法说动我。看完样板房,销售人员就带我们回到销售大厅,一个个小圆桌子边坐满类似我们的被推销对象和一个个热情的推销员。因为是90分钟的sales pitch, 所以销售人员要在1.5个小时的时间内使出浑身解数说服客户Timeshare的好处,进而签约。所有的介绍都是围绕酒店,Timeshare, Ownership or Memmbership介绍,搞的人晕晕的,而且推销的压力很大。但我抗压能力很强,毕竟来之前已经给自己定好了基调,不管听上去怎么美好,都是NO. 我的这一招果然有用,Timeshare的报价从最初的50k, 一路降到35k, 8k, 但每个报价都是一个不同的人给出来的,感觉是级别很高。在我对8K的价格说了NO后,那个销售人员还是非常失望的,我心理也在看他们下一步是什么,最多出buffet和taxi的钱,不致于绑架我们吧,毕竟也是墨西哥著名旅游地。过了好一会儿,他们看没有办法说服我,就写了个抽奖卷给我,说如果有被抽到会电话通知我。我松了一口气,心想终于可以走了。谁知出了销售大厅,又来一个自称是developer的人(也就是开发商)过来跟我review, 他办开玩笑半认真的说,8K觉得多,你们这次旅游的费用我给你们报销了,这样只要我们拿3K就可以了。虽然3k的条件不是ownership, 但是一个membership, 说每年可以有一周的免费酒店住宿时间,还免费送油轮旅游,听的老婆在一旁说这个好实惠啊。但仔细想想的我,自己还不是要拿3K吗,其他优惠都是说说的,只有自己拿出来的钱是实打实,所以我还是NO, 不想花3K来继续探索下去。最后斩钉截铁的NO终于把我们送上回Cancun的中巴车了。本来计划2个小时可以结束的tour, 最后整整用了4.5个小时,整个下午就在那边消耗了。酒店的中巴司机还是很Nice的,一路上接了另外一家人就直接送达我们要去Westin酒店对面的livepool mall.

顺顺的海豚Ride预定在下午5点,时间非常紧迫,因为到达的时候是4:50pm. 我跟顺顺边走边跑,终于按时到达水族馆了。整个program是30分钟,每个人大概3分钟的时间会有跟海豚的亲密接触,当然水族馆除了水里的海豚,泳池上有好多摄影照相的工作人员。Ride with Dolphin, 每个小朋友就是抓着海豚的鳍游大概20米。节目的价格还可以,但结束后的照片就是非常坑爹了,没有一个合算的,最后花了几十刀买了个光盘。(这边旅游照片上的花销还是蛮多的,跟景点不一样,这边都是背对着观众的,所以一定要买他们的照片的,不过买了到了家还没有看过呢) 顺顺还是蛮enjoy的,可惜就是时间短,感觉她意犹未尽的。节目结束后,我们就逛了逛巴掌大小的水族馆,跟湾区Monterey的水族馆简直没有办法比,真的建议他们改名,不要用Aquarium这个单词。

出了水族馆,天下起了瓢泼大雨,带过来的雨衣终于派上用场了,我们就去Mall的餐馆区买晚饭了。点了龙虾牛排等外卖回酒店吃晚餐了,大家都说晚饭不错。时间还好,但刚下过雨,所以2个小的也没有游泳的想法,就浴缸里玩玩,早点睡觉等待明天的节目吧。

现在想想,这天的安排可以去Cancun的downtown转转,和去其他的Mall或酒店逛逛可能更充实。不过Cancun不像Las Vegas每家酒店都对外开放的,但如果行人的话,应该没有人管的,所以有些好的酒店应该可以过去逛逛,也为以后的访问做些实地考察。


坎昆之行 (Day 5)

Day 5 (Wednesday)
Chichen Itza

今天要去的Chichen Itza景点是玛雅文化的一个重要部分。大凡第一次去Cancun旅游的都会去看看传说中的金字塔。我们这次还是跟了Dreams的一日游,没有办法,之前都定好了,要退就亏了。Chichen Itza离坎昆大概3个小时的车程,所以早上大概9点就出发了,没有像Xplor要等到11点。

大巴一路开得还算顺利,中间在高速路边停下,让大家去趟洗手间。其他时间就一直朝着中饭的地方奔去。网上有人戏说Chichen Itza就好比是Shopping Itza,果然如此。在大巴上导游就用双语不停的介绍当地的产品和手工艺品,有石头日历等等。有些记不清了,要打开照片库才能回想起。抵达中饭地点,首先是30分钟的自由采购时间,整个地方都是纪念品店,价格不菲,我们本以为可以还价就选了一些,等去付钱的时候,竟然不让还价,所以我们就买了1-2件,其他的都放回去了。终于熬到中饭时间了,导游带我们去餐厅,进入餐厅前每家都需要跟穿着土著服装的人合影。中饭是传统的坎昆旅游自助餐,能够吃得饱,因为有鸡腿,自己花费买些饮料就可以了。现场有人跳舞,墨西哥人能够善舞,到哪里都有跳啊唱啊的人。中饭吃完了后,出去的人都要给小费,刚才跳舞的姑娘站着那里收费呢。

中饭后大巴开往目的地Chichen Itza(奇琴伊察),今天非常热,好像有93度左右,站在金字塔的广场上,听当地导游介绍金字塔的历史和特别之处,真有点吃不消。这边的导游都非常了解,介绍的也很生动,让人感觉再现了那段历史。Google上太多介绍这个景点的文章了,包括历史,文化,如何拍照等等攻略,我这里没有重复的必要。我们2个小的很快就站不住了,所以我们听了前2个介绍后,就自己转起来了。从进入景点后,最吸引眼球的不是著名的金字塔,而是2边的地摊,各种小商品真的是琳琅满目,顺顺跟妈妈当然不会错过这个shopping的机会,我们买了不少,但其中也了解了当地砍价的"学问",我们越买越砍得多,最后基本上50%的砍价,摊主不卖就去另外一个摊子,因为各个地毯大多商品有重复,当然质量良莠不齐,需要仔细看。有些爽快的摊主一见我们不买了,就自己喊价了,蛮有国内小商品市场的味道,感觉自己在淘宝了和对方搞心理战。我想这应该是Shopping Itza的由来吧。导游只给了我们2个小时的时间,要买小商品,要拍照,再加上各个temple和Pyramid,时间还是非常紧张的。我们出去的时候,导游已经让司机开车了,说我们迟到了3分钟,要我们自己打的去下一个景点。中饭的地方少放点时间不就行了嘛,到了主要景点尽然这德性,完全就是购物团的典型做法。休闲游还得自驾啊。

离开奇琴伊察,我们的下一个景点是当地一个著名的Cenote Ik'kil. 这个景点非常漂亮、安静、友好。我们有一个小时的游泳时间,我要带达达,所以顺顺跟妈妈去游了,最cool的就是有跳台,最高的跳台大概有10米,顺顺可开心了,先后跳来跳去,应该好几次。她们游了一会说非常舒服,也把达达拉了下去,达达当时还不会游泳,所以要先租个救生衣,她不敢跳,但游得还是很舒服。从Cenote的上方俯瞰溶洞,简直就是百人大浴缸,但是地下水,很清很绿,看起来很养眼,游起来非常relax,比Xcaret的地下河好玩多了。

离开Cenote后,大巴就把我们带到一个小镇中心广场,有一个教堂和非常不错的中央公园,四周是商店和饭店。不过天上下着雨,加上达达要上厕所,我们匆匆拍了几张教堂和中央公园的照片,就四处找厕所了。问了几家饭店,都不让非客人用,最后有一个人指着一个food court的位置让我们去,总算找到一个收费厕所。在美国久了,很少遇到这种情况。运气比较好的是那边还有一家中餐馆,我们赶紧买了盒饭,好久没有吃到中餐的小朋友饭量好的很,一人一盒也吃得干干净净。

回坎昆的途中也有雨的,天空的景色很迷人,直到抵达酒店,大概晚上8点多,天黑了雨停了,这也是我们抵达坎昆后的第一场雨。雨后的Cancun还是非常凉爽的。

Thursday, August 11, 2016

坎昆之行 (Day 4)

Day 4 (Tuesday)
Xplor

没有想到六月下旬的天气尽然出奇的好,今天又是太阳高照,但也不太热。今天的目的地是另外一个主题公园Xplor, 著名的项目就是zipline. 这个公园也是靠近 Playa del Carmen,所以从坎昆的Hotel zone跟去Xcaret的距离差不多。由于公园里玩的项目不适合达达这个5岁不到的小孩,所以我们兵分两路,我跟ss去Xplor, 妈妈跟达达去swim with Dolphin.

早上7:30am起早在大厅等Travel Agency的车,BD Travel的大巴准时到达, 可我们定的Dreams Vacation左等右等还没有等到,只好去前台请工作人员帮忙催。催了后又等了10几分钟才有一个很破的面包车过来,把我们接走。本以为就是坐面包车去景点了,没有想到尽然是到Flamingo Mall那边去汇合,要转大巴。注意这个Mall, 很破旧,早上只有一家店开门,所以只好干等,最恶心的是等了2个小时后,让我们出去排队,太阳出来后还是在外面站着还是蛮热的,本来以为可以上车了,没有想到又让我们转到一个中巴车去Xplor. 看到这里,大家可能会认为就是耽搁了2个小时,谁知道这个中巴一路竟然绕道去接了2家人,跟我们一起从Flamingo Mall出发的夫妻两人也是被搞的郁闷无比,不停问什么时候可以到公园,可以想象我们家ss会有多心急。最后我们到达公园基本上快12点了,要知道公园5-6点就关门,因为晚上有Fire zipline. 留给我们的时间很少的。这段经历告诉我们Dreams Vacations的确是一个垃圾旅行社,导游的素质也比BD Travel差,强烈建议考虑BD Travel或找私人地陪,这家能绕过就绕过吧。除了价格便宜10-20%外,其他真的是一团糟。

到了公园后,我们就check in取了安全帽寄存好衣服后,就直奔著名的Zipline了。这个时间段人真的很多,应该先去吃点buffet, 因为11点就供应免费自助餐了。门票包括中饭和饮料的,但忙着玩,基本上没有时间享受,因为我们到了公园后就中午了。排了大概1个多小时,终于轮到了,绑好安全带后,就冲过去准备玩了。可是一进后又傻眼了,里面的队伍也很长,大家都在一步一步的缓慢向上走,目标是一个很高的Tower。漫长的等待,只好跟看看远处的风景,跟队伍里的人聊聊天。

Zipline有2条线路,每一站都会有些不同,因为Tower在的地点和高度会带给游客不同的View。我们边玩边拍照,大多数的滑道ss因为体重不够,都不能独自滑翔。第一条router不知道玩了多少个塔,最后回到了出发地。我们结束后立即赶去吃中饭。吃完中饭后我们赶紧把其他的项目玩了下。Xplor公园的项目不是特别多,但zipline和越野车还是比较特别的,其他公园没有看到。整个公园以大大的心脏为中心,走近心脏区就听到心跳的声 音。我们先后玩了Zipline, 越野车,地下长河游泳(这个地下长河结尾的地方还是很特别的),rafting走了 shortcut, 不过可以近距离的看到大量的钟乳石。

玩好了主要的项目后,我很想再去吃点东西,但ss兴致很高,要求去玩另外的一个路线。这个时候已经快5点了,我们去了后发现人出奇的少,每个Tower等待的时间大概5分钟,不过太阳落山后越来越冷。辛亏人少,不然估计要冻坏了。第二个滑道线路跟第一个还是有些不一样的,这个有一个很长的水泥滑道,在天空滑多了,跑到地上还是感觉很特别的。划完了第二个,ss还是意犹未尽,很想再滑一次。不过由于时间关系,我们只好换掉安全帽出去等车了。在等车的时候,ss买了套纪念游泳衣 ,价格60刀,以为质量不错,谁知回来后发现掉色太厉害了,洗了一浴缸的水都是粉色的。回程还是非常顺利的,中间没有停,这样我们可以赶上晚饭的时间。

达达跟妈妈一天估计也很忙碌,在酒店的泳池和沙滩上玩,去水族馆swim with Dophin, 还把房间搬到了1号楼的无敌海景套房。旁边还有一个Maya建筑的遗址,非常不错。

第四天心得
1.  不要找Dreams Vacation 这家旅行社
2.  Xplor比较适合大小孩玩,早到可以转转放松放松,赶去Zipline也是排队,晚到公园可以考虑先去餐厅吃点东西,因为Zipline排队很长
3.  不要买纪念品商店的衣服,质量太差,价格比Costco还贵

Sunday, July 31, 2016

坎昆之行 (Day 3)

Day 3: (Monday)
Isla Mujeres

昨天去Xcaret玩的有点晚,所以今天起得晚了些。今天不跟团,自助去女人岛玩玩。出了酒店路边的公交车站坐bus去码头。有趣的是公交车上也有人唱歌,墨西哥人也太能歌善舞了吧。一路上没有电视倒是一个歌接着一个歌,大概唱了4-5首后,他就过来要小费了,一般10-20墨西哥比索吧。大概20分钟的时间我们就到码头了,下车就是轮渡的售票厅。 物价飞涨,网上看到攻略中的价格已经再也找不到了,往返票价成人$19, 小孩$12. 轮渡是每小时一班,我们不巧到的时间是11点多点,只好在沙滩上买点啤酒和椰汁喝起来。2个小的一见白沙和碧海,只顾玩起来。晒了半个小时的太阳,觉得无聊,就转了转,发现有空中滑翔伞,还了还价,2个人$100,大概前后15分钟,真正在天上的时间是9分钟,老婆和ss去了,我带着dada继续玩沙。 因为加了Parasail的节目,我们12点的Ferry也没有赶上,只好等下午一点的,这个点真是不好,坐下来吃饭又怕赶不上,不吃呢又觉得浪费时间。我说就喝点饮料,开始排队,保证能够坐上1点的轮渡。排队的过程中,有人过来卖浮潜+中饭+鲨鱼合影的套票,每人$25, dada还是享受着到哪都免费的待遇, 感觉很便宜,就买了。结果是被骗了,太浪费时间了。下面介绍就知道了。

我们坐了1点的轮渡,大概20-30分钟就到女人岛了。我们在女人岛码头拍了些照片,就朝着订单上的地址去了。路边都是那种拿着牌子揽客的人,我们被带到一个小码头,说很快就要浮潜去了。可我们还没有吃饭呢,快速买了墨西哥卷,边吃边上船了,连游泳衣都没有来得及换。坐着小船看着岛上的风景,非常不错。我们很快就到潜水的地方了,大家涂好防晒霜就下水了。水很清很清,低下头就能看到各种鱼在水里游来游去。渔夫带我们好长一段路,看到了大大小小的雨,也看到了一个水底的雕像。不过他们动不动都是西班牙文,我是好多都不了解。这块的节目还是不错的,大概20分钟的游程。ss非常开心,她不怕水,dada就有点纠结了,低头可以看鱼,但不适应。也不知道她看到多少。

结束了浮潜,渔夫就带我们去一个小岛,莫非是岛中岛,没有搞清楚状况。经过了海豚馆,就到了,岛上还是很有热带岛屿的氛围的,椰树冰啤还有音响里的歌曲,搞的人好口渴。我们大概2:40到达的,然后大家排队下水跟一只顺服的小鲨鱼合影照相,然后就去找位置等中饭了。这个非常坑爹,我们等了应该有一个小时,最后搬出来的烤鱼就是每人2块,其他都是白饭和白菜。吃不吃都无所谓,主要是时间啊。吃完返程,大概4点半了,白白浪费了2个小时。强烈建议不要贪图便宜跟不正规的。渔夫还厚着脸皮要小费,我本来是不会給的,但看着返回前他送来一盒鱼饭的"友情", 我还是给了100ps.

终于完成了浮潜的tour, 上了岸,我们去租高尔夫车了,因为5点了,第一家尽然不租了,我们就顺着他们介绍的方向,找到了第二家去租。我们对这个岛的路况没有概念,就花了400ps租半个小时(正常一整天的价格也就400-500ps), 我们糊里糊涂的转了一下,返回还车的时候只用了45分钟。我就问店里的小伙能不能退我200ps, 开始他不同意,我就说我搞错了,现在要赶Ferry, 多了一个小时。没有想到小伙还退了我200ps.

我们不想等最后的轮渡,因为回去还得吃晚饭和报明天的团。所以我们赶6点左右的返回了。然后回到酒店对面的mall找了个墨西哥餐厅用餐。价格还可以,但我们都没有点墨西哥的菜系,而是牛排,鱼排和汉堡。价格还可以,可是小费要的太狠,直接25%加到账单中。有了这次教训后,后来我们都是to-go, 不要給小费,哈哈。

吃完饭就在Mall里面定旅游团了。结果可以写大篇来描述其中的猫腻。我后来明白呢这个Mall中的大部分travel agent都是代理一家叫Dreams travel的,这个应该是当地比较大,但一定是二流的旅行社,整个管理服务都是二流,没法跟BD travel比。价格会便宜20%左右。

女人岛体验
1.  不要定什么tour, 到了岛上想浮潜就浮潜,想吃饭就吃饭,想海豚就海豚馆,自由并且节省时间
2.  高尔夫车租还是要租的,有些景点还是要高尔夫车才能到达的
3.  留点时间去沙滩上躺躺
4.  早点上岛事件会充裕些

坎昆之行 (Day 2)

Day 2 (Sunday)
Xcaret

第二天是周日,早上7点15分就需要到酒店大厅集合等待旅行团的导游。因为有2个小时的时差,其实是早上5点,还真的有点起不起来。今天的旅游目的地是Xcaret公园,报的是BD (Best Day) Travel的,非常准时非常规范。一路上导游带着大家看公园地图,双语介绍Xcaret的景点和游玩注意事项。 大概开了一个多小时,9点多就到公园了。因为晚上有表演,所以今天的游玩时间会超过12小时。

 一进公园,就看到有人排队拍照,2只鹦鹉做为道具,我们一家人也拍了,可惜最后买照片的时候没有看到。这边的旅游景点都有拍照的点,只要站在标记的位置,对着相机,就能排出构图不错像素清晰的照片。回过头来想想,如果不带相机,全靠公园的相机或许也够了。

我们第一个节目决定swim, 在地下长河里swim, 人好多,排队拿救生衣和游泳鞋。入口处的景色不错,下水有点冷 ,我们带了Costco买的防水相机,一路由ss负责拍摄。不过游了一段时间,人挤人,感觉也蛮无聊的,所以到了第一个出口我们就上岸了。上岸后沿着路标转了几个地方。Xcaret的公园路标还是蛮有创意的,路标几种颜色来引导游客,路上也是相应的颜色的石子或地砖铺成的,非常清楚每条路通往的景点。因为swim前我们把手机钱包什么的都放到locker里面了,换洗的衣服也打包送到长河的终点了,所以我们只好一路走到终点,洗换好就在沙滩上的吊床玩。时间过起来很快的,看看都12点多了,我们就决定在海边上的餐厅吃饭,跑到二楼,坐在椰子树下,可以看到沙滩和海,边吃自助餐边休息,非常不错。我们买的门票包括中饭,不然费用大概是$20每人,老婆还搞了些啤酒。

ss一直不开心,后来一问才知道她把上午拍的照片不小心全删了,我没有windows电脑,mac上disk recovery都要买license. 所以吃过饭后我们又跑到水里游了段时间,主要是为了补拍一些照片。拍完照片我们去了一个pool, 里面水不深,有巨大的救生圈让小朋友玩,2个家伙玩的不亦乐乎。玩了后我们去看了一些动物,然后去看了海龟,海豚等。不过规模都比较小,不是那么让人impressive. dada是困的不行了,我就带着她在树荫下,让她睡了近一个小时。很快就下午4点多了,公园的大多数表演都安排在5-6点这个时间段,不知道是怕天太热,还是怕人太多,所以都扎堆表演,我们只好选择了Maya village的表演。表演很精彩,我一句话都听不懂,不过大意好像就是Maya文化是族长求火的过程。

看完表演后我们就一路边走边看,朝着晚上7pm表演的剧院去了。沿路很热闹,有离园的游客,有看马表演的,有购物的,有吃饭的。我们没有吃晚饭,直接冲过去买了饮料和爆米花,完全看电影的节奏。在表演开始的半个小时左右,沿路上有Maya人让游客拍照。早了遇不上,晚了也遇不上这些Maya人。他们也是从一个场地转战到新的场地。

一天的重头戏就是晚上7点到9点的表演了。非常好,非常值得一看。分上下2篇,上部分演述的是历史,从最早的ball game到西班牙殖民地,下部分演述的是墨西哥现代文明,每个城市和地区的特色文化。实在是太精彩了,载歌载舞,言语很难描述出来,只有自己亲身体会下。

坎昆Xcaret旅游初体验
1. 防水相机非常有用。没有的话可以在园区购买手机防水套。饮用水是必需品,防晒霜和驱蚊液也是必需品
2. 上午不应该游泳,应该先逛,下午游
3.  晚上的表演非常值得看,有条件可以早上进园就预定他们的表演晚餐,边吃饭边看演出,应该更好。不是露体舞台,所以不受天气影响的。
4.  自拍照片要多拍,因为购买全套的时候是不管你拍了多少张的
5.  吃饭还比较合胃口,不难吃。 自助餐厅啤酒饮料都是随便喝的,只要有时间和肚子。

第二天心得
1. BD travel 贵是贵了点,但服务和巴士都是一流的,一个多小时的路程,车上也有厕所。建议购买他们的3天团,打20%的折扣,如果会还的话,估计还可以便宜10-20刀每人
2.  这些公园其实都不在Cancun,每天来公园,路上都要1-2个小时,后来才明白其实住 Playa Del Carmen 反而方便。如果喜欢折腾,可以考虑住一段这边,然后再搬到Hotel zone去体验下豪华酒店。
3. 跟团所有费用都在里面的,所以不需要额外付小费的。
4. 这样玩法,还真的用不上租车。


Thursday, July 28, 2016

坎昆之行 (Day 1)

Day 1 (Saturday)
SFO -> Cancun

我们是6/18 周六上午的飞机,邻居开minivan送我们去SFO. 本以为周六不会太挤,没有想到机场上人还是非常多,等了半个小时有机场人员大声喊去韩国仁川和坎昆的乘客到快速窗口check in. 我们有一个大箱子,除了checkin麻烦,美联航还需要付25刀的费用。到机场晚了些,所以从check in到安检到登记都急急忙忙的,所以也忘掉出示我们的UA Mileage 会员卡号了。不过美国的管理就是科学啊,除了让我们走快速窗口,见到小女儿,安检也是快速通道,所以到了候机大厅,稍微等了5分钟就可以登机了。

美联航上的电视需要付费的,上了飞机就刷卡,可以一直看,我们是小孩要看动画片才刷的,估计就是看了一个动画片,感觉有点亏。最不好的就是没有免费午餐,连想买都买不到,我们是经济舱比较后的,所以到了我们这边只能买点snack了,还好饮料免费,不然要饥渴大半天了。建议自己准备些干粮带上飞机,这样买不到不会饿到。

上午10点多的飞机,下午6点当地时间到达坎昆。飞机滑翔的时候看到地面上的积水,可以判断下了很大的雨。天空也是雾蒙蒙的一片,心里不由担心接下去的行程了。如果天天有雨不见太阳,估计会郁闷坏的。

接我们去酒店的旅行社叫BD Travel, 后来才知道是一家比较正规上规模的公司,服务特别好,尽管价格稍微贵些。这个具体的细节在第二天的行程上会写。面包车很干净,司机不太讲话,不过倒是开的很稳,还高速我们车上有免费 wifi。到达酒店后,check in, 当天没有全海景房,但前台说周一可以换,我们也只好作罢了。我还以为她不肯,就用最近学到的$20 tip trick,她红着脸说真的没有,周六人比较多。

因为是连锁酒店公寓,房间装修跟我在国内住的都差不多。套房面积很大,一个沙发床刚好給老大睡。我们安段好,2个小的吵着要方便面,因为有厨房,弄什么都比较方便。期间收到前台电话,说有什么welcome package. 我们当然不知道是什么,所以就去大堂了。后来才搞清楚,是酒店 timeshare的推销节目,让我们参加他们的一个timeshare的presenting, 然后就给我们去旅游景点的discount。我因为没有做功课,所以也不知道这个是怎么回事,所以就预定了hotel preview的时间和第二天去Xcaret Eco Theme park的门票。dada是5岁以下,除了XICHEN,其他景点都不要门票,所以我们定了2个大人和一个小孩,一共$248. 这个价格还是不错的,而且Xcaret主题公园值得去。原因下回介绍。

坎昆之行 (序言)

暑假去坎昆还是要有些勇气和运气的,因为4月过后就是坎昆的雨季,闷热多雨,不太适合第一次去的游客。本想4月份春假去的,但赶上公司产品3.0的上线,因为有在线收费的功能,担心有问题的话到时候不能专心度假,所以就推迟到暑假。今年小孩放假都比较早,所以我们安排到6月份。好多年没有全家长途旅行了,可能最远的就是拉斯维加斯了。这次主要是想去看看加勒比海。我想我的blog主要是放在如何计划旅游上,不放图片,希望对第一次去的朋友有些帮助。
 我在微信上了问了问去过的几个大学同学,他们都推荐Costco上定package, 不需要做任何功课,所以我就只是定了个时间,然后就去costcotravel上定酒店、机票和接送。坦白说,Costco的性价比还是比较高的,相同的机票和酒店,Expedia上会贵$1000左右。

机票,最好直飞,我们是从旧金山直飞到Cancun的,大概5个半小时。之前有同事转机的,费时费心,尽管票价便宜不少,但真心推荐直飞。

酒店,第一次最好一半在All-inclusive的酒店,一半在非All-inclusive的酒店,当然预算多的就全不All-inclusive了。坎昆的Hotel zone跟Las Vegas大道类似,一家酒店挨着一家酒店。整条路上都是比较好的酒店,5星或者4星,一般来说第一次去,肯定要外出玩,基本上酒店就是睡觉的地方,几星真的无所谓。我们定的是Westin Lagunamar, 也是一个同学推荐的,应该是4星,这个是酒店公寓的性质,带厨房,洗衣机烘干机,跟家里住没有太多的区别。每天可以弄早饭夜宵,也可以洗衣。开始2天住的海景一般,后来搬到海边的2号楼,就是无敌海景房了。后来出发前看功率去哪里玩,才看到有人推荐Rui和Dreams等。

接送,Costco的package一般都是带的,不需要定private接送,因为我们定的一般,4个人加行李基本上就把小面包车装满了,结果也是单独接送到酒店。

时间,大多人都推荐11月到4月份这段时间。以后有机会也旺季去看看。

定好了行程后就是稍微准备了,关键的几个东西买好,分别是防晒霜、驱蚊液、太阳帽、雨衣、防水相机,凉鞋。后来也打包小包的搞了3个箱子3个背包。女儿还是蛮激动的,大的搞了一个行程安排,小的整天念着Maya. 老婆还从图书馆借了关于Maya文化的书給他们看。

Friday, May 27, 2016

Finance websites

http://www.taolifeagent.com/chinese (One of the best blog in Chinese I have read)
http://theinsuranceproblog.com/ (Very informative, with podcast)

http://www.ladymoneymanager.com/cn/
https://houfinancial.wordpress.com/

allianz-222-annuity
http://www.annuitygator.com/independent-objective-review-of-the-allianz-222-annuity/
http://blog.runnymede.com/an-impartial-review-of-the-allianz-222-annuity

Buying home websites

https://www.redfin.com/

http://www.zillow.com/

https://www.ziprealty.com/

http://www.remaxaccord.com/
Focus on East bay area


Thursday, March 10, 2016

Traffic Breaks

When you see policy car zig-zag on the highway, it is doing traffic break. Yesterday I met this situation on highway I-280, and the officer was moving to clear a road block.

A traffic break is any separation in the flow of traffic—naturally occurring or otherwise—along a road or highway.In heavily congested traffic, natural breaks occur rarely, thus the term traffic break most commonly refers to the manual separation of traffic, normally conducted by highway patrol officers.

We all know the term Round Robin as it relates to sporting competitions, but California Highway Patrol (CHP) also uses the term Round Robin when they need to slow or stop traffic on a freeway. The official term is traffic break.

The most important thing to know about traffic breaks is that they are only used when absolutely necessary. The goal of the CHP is to keep traffic flowing, so when it becomes necessary to run a traffic break you can be assured it is necessary to provide for the public’s safety. It may be due to a hazard in the roadway, a victim of a tragic accident being treated by paramedics, or it may be that the roadway ahead is impassible.

A traffic break is started by a patrol car or motorcycle officer making their way across all lanes of freeway traffic with the emergency lights activated.  You will see them veering from left to right and you should never attempt to pass them. It is not only unlawful, but also dangerous.

When faced with a situation where you see a patrol officer running a traffic break, remain patient and stay behind him or her.  It’s for your safety, as well as the safety of others.

https://www.quora.com/Why-would-a-police-car-zig-zag-on-the-high-way-for-a-few-miles-blocking-the-traffic post has more details regarding traffic breaks

Traffic breaks are used by law enforcement to:

  • Slow or stop traffic to remove hazards from the roadway.
  • Conduct emergency operations.
  • Prevent traffic collisions in heavy fog or unusually heavy traffic.

During a traffic break, the officer turns on the rear emergency lights, slows the vehicle, and drives across the lanes of traffic in a serpentine manner. To assist the officer in conducting a traffic break:

  • Activate your emergency flashers to warn other drivers there is a hazard ahead.
  • Slowly begin to decrease your speed. Do not slow abruptly unless it is necessary to avoid a collision. Slow to the same speed as the officer, while keeping a safe distance from the patrol vehicle ahead of you.
  • Do not attempt to drive past the patrol vehicle. Do not accelerate until the patrol vehicle has turned off its emergency lights and traffic conditions ahead allow the return to normal speeds.

Monday, March 7, 2016

momentjs usage

Date Formatting
moment().format('YYYY MM DD');

Date Validation
moment(dateEntered,'MM-DD-YYYY').isValid()

Manipulating Dates
moment().add('days', 7);

Time From Now
moment().fromNow();

Calculating the Difference Between Dates
dateB.diff(dateC)

Date Queries
These methods are isBefore(), isAfter(), and isSame()

International Language Support
moment.lang('fr' {})

Tuesday, February 16, 2016

52 Places to Go in 2016

Mexico City
Mexico
A metropolis that has it all.

Bordeaux
France
An ancient wine region gets a stunning update.

Malta
The Mediterranean on a dime.

Coral Bay
St. John
Visit the U.S. Virgin Islands’ quiet corner before big development.

Theodore Roosevelt National Park
North Dakota
A century of protecting America’s magnificence.

Mozambique
New island lodges and beach breaks — and more tolerance.

Toronto
Canada
Canada’s largest city is ready for its close-up.

Abu Dhabi
United Arab Emirates
New museums and hotels and a greening desert.

Skane
Sweden
Nordic cuisine’s next big thing.

Viñales
Cuba
Looking for the real Cuba? You’ve found it.

Guadeloupe
Easier access to wild beauty and a new look at a complicated legacy.

Park City
Utah
Always fun, now bigger — a lot bigger.

Aarhus
Denmark
Thriving Danish culture beyond well-trodden Copenhagen.

Cesme
Turkey
An Aegean region grows a food scene.

Road of the Seven Lakes
Argentina
A newly paved road to beautiful vistas.

Hangzhou
China
State-of-the-art museums and more in an ancient city.

Korcula Island
Croatia
Experience authentic life on the Dalmatian Coast.

San Sebastián
Spain
A culinary capital expands its repertoire.

Virunga National Park
Democratic Republic of Congo
Newly accessible, gorillas and a volcano in idyllic surroundings.

Grand Rapids
Michigan
A furniture-making city champions urban renewal and art.

Garzón
Uruguay
A new wine region blooms near celebrated beaches.

Dublin
Ireland
A city spruces up to celebrate a centenary.

Todos Santos
Mexico
A Pacific Coast retreat hosts a new green community.

Tamil Nadu
India
New gateways to India’s cultural core.

Vaud
Switzerland
The Lake Geneva region attracts new and renewed museums.

Washington
D.C.
Developments raise the bar downtown.

Brno
Czech Republic
Unexpected cuisine and nightlife in an architectural mecca.

Saint Helena
An isolated wonderland opens to air travel.

Barcelona
Spain
Celebrating a beloved architect all year.

Dalat
Vietnam
A cool alternative to the usual steamy Vietnamese destination.

Turin
Italy
Renewal in a former industrial capital.

Isla Holbox
Mexico
In Yucatán, an ecotourism gem emerges.

Providence
Rhode Island
The East Coast’s answer to Portland, Ore.?

Mosel wine country
Germany
Biodiversity, new hiking trails and a castle stay.

Pyeongchang
South Korea
Ski South Korea before the Olympians get there.

Tyrol
Austria
Bond, Swarovski crystal, new ski lifts and hotels.

Colmar
France
A revival fueled by modern art and architecture.

Kansai
Japan
An ancient region with new resorts and G7 ahead.

East Bay
California
Urban wineries and a soon-to-be-transformed waterfront.

Île de Ré
France
Who needs the French Riviera?

East Coast
Sri Lanka
Remote stillness — and world-class diving — beckon.

Rosine
Kentucky
Make a pilgrimage to the birthplace of bluegrass.

Málaga
Spain
Beauty, but now a cultural capital, too.

Guizhou
China
Authentic Chinese hill tribes without mass tourism — yet.

Phnom Penh
Cambodia
A design renaissance in Cambodia’s capital.

St. Louis
Missouri
A blues tribute near a more accessible arch.

Thessaloniki
Greece
Greece’s second-largest city is first in food.

Marfa
Texas
An offbeat cultural hub with a new hotel to shelter the curious.

Ubud
Indonesia
A spiritual destination reinvents itself.

The Southern Gulf Islands
British Columbia
Near Vancouver, islands with simpler charms.

Sydney
Australia
Embracing nature in two urban reclamation projects.

Beaufort
South Carolina
A peaceful Low Country town with a stylish new inn.

http://www.nytimes.com/interactive/2016/01/07/travel/places-to-visit.html

Monday, February 8, 2016

Enterprises Benefit from Node.js

https://blog.risingstack.com/how-enterprises-benefit-from-nodejs

Advantages:
  1. It makes development faster and increases the productivity of teams with more than 230,000 npm modules
  2. The high-scalability of Node lets you spend less on infrastructure, since you can handle the same amount of load with less hardware.
  3. A well-established Long Term Support plan ensures that each release is going to be maintained for 30 months.
Enterprise uses Node.js:
  1. Dow Jones
  2. Uber
  3. GoDaddy
  4. Paypal
  5. Netflix
Should we also go with this stack for backend APIs? Pros and Cons?

Saturday, January 23, 2016

Handlebars.js basic

Expression - {{body}}
Compilation - Handlebars.compile
Execution -  template(context)
Escaping - {{expression}}
Non-escaping - {{{expression}}} or Handlebars.SafeString
Block - {{#each}}
Content goes here.
{{/each}}
Helper - Handlebars.registerHelper, {{#helperName name="value"}}
Path - {{author.name}}, or ../parentName
Helper and data name Conflict - this.name or ./name
Comments - {{!-- --}}
Literals -  literal values passed to them either as parameter arguments or hash arguments
Partials - Handlebars.registerPartial, {{> partialName name="value" }}
Built-In Helpers - if, else, unless, each, with, lookup, log

Thursday, January 14, 2016

scaffold to make js library support amd and commonjs

Here is the scaffold using IIFE (Immediately-Invoked Function Expression):
(function (root, factory) {
  if(typeof define === "function" && define.amd) {
    // Now we're wrapping the factory and assigning the return
    // value to the root (window) and returning it as well to
    // the AMD loader.
    define(["postal"], function(postal){
      return (root.myModule = factory(postal));
    });
  } else if(typeof module === "object" && module.exports) {
    // I've not encountered a need for this yet, since I haven't
    // run into a scenario where plain modules depend on CommonJS
    // *and* I happen to be loading in a CJS browser environment
    // but I'm including it for the sake of being thorough
    module.exports = (root.myModule = factory(require("postal")));
  } else {
    root.myModule = factory(root.postal);
  }
}(this, function(postal) {
  // module code here....

  var sub;
  var ch = postal.channel("myModule");
  var myModule = {
    sayHi:function() {
      ch.publish("hey.yall", { msg: "myModule sez hai" });
    },
    dispose: function() {
      sub.unsubscribe();
    }
  };

  return myModule;
}));
Here is the reference blog:
http://ifandelse.com/its-not-hard-making-your-library-support-amd-and-commonjs/

Monday, January 4, 2016

Bootstrap 3.x review

We are based on Bootstrap!!!!! Semantics, reusable, customizable

We are using HTML5 for semantics tags!!!

<article>    Defines an article
<aside>    Defines content aside from the page content
<details>    Defines additional details that the user can view or hide
<figcaption>    Defines a caption for a <figure> element
<figure>    Specifies self-contained content, like illustrations, diagrams, photos, code listings, etc.
<footer>    Defines a footer for a document or section
<header>    Specifies a header for a document or section
<main>    Specifies the main content of a document
<mark>    Defines marked/highlighted text
<nav>    Defines navigation links
<section>    Defines a section in a document
<summary>    Defines a visible heading for a <details> element
<time>    Defines a date/time

Variables:
    colors (grayscale and semantic),
    Scaffolding (bg-color, text-color),
    Links (link-color, link-hover-color)
    Typography (font-family, font-size, line-height, headings)
    Icons (icon-font-path, icon-font-name)
    Components (padding vertical/horizontal, line-height, border-radius, active-color, active-bg, caret-width-base)
    transitions
    animations
    opacity
    placeholder

Mixin: Use mixins, like size(), sizable(), opacity()

color/background color
border
spacing (padding/margin)
font weight (400, 500, 600)
font size (xs, sm, default, md, lg, xl, )
h1-h6
text
floating (pull-left, pull-right)
pull/push
variables (font-size-base, line-height-base)
alignment (text-left, center, right, justify, nowrap) - we need a mx-text-wrap
list (either ul/li, or div/div, list-inline, list-unstyled)
block (p, pre, pre-scrollable)
table
contextual (active, success, info, warning, danger)
forms (form-group, form-control, inline-form, input-group, input-group-addon, form-horizontal, .form-control-static)
input: text, password, datetime, datetime-local, date, month, time, week, number, email, url, search, tel, and color
textarea
checkbox/radio
select
validation states (.has-warning, .has-error, or .has-success)
button: Use the button classes on an <a>, <button>, or <input> element.
button-style:default, primary, success, info,warning, info, danger, link (.btn-block to span the full width of a parent)
accessibility: additional text hidden with the .sr-only class (screen-reader)
utility class: states: active, disabled,
images (img-responsive, center-block, img-rounded, img-circle, img-thumbnail)

Contextual colors
Contextual backgrounds
close
Carets
pull-left/pull-right/navbar-left/navbar-right
center-block
clearfix
show/hidden/invisible (block element, sr-only)
Print classes

Inline text elements (mark, del, s, ins, u, small, strong, em, )

Bootstrap's global default font-size is 14px, with a line-height of 1.428. This is applied to the <body> and all paragraphs. In addition, <p> (paragraphs) receive a bottom margin of half their computed line-height (10px by default).