微软更新.Net源代码检索网站

微软最近更新了查看.Net源代码的网站,.Net Framework团队也发了篇blog: A new look for .NET Reference Source

新的网站体验非常不错,搜索响应非常迅速,还支持”Go to Definition”跟”Find All References”,URL即是链接到某个assembly或者是某个文件的第几行,比如像这样:/#System.Core,或者是像这样:/#mscorlib/system/environment.cs#56。这些都是由还在CTP阶段的Roslyn API(微软的.Net compiler as service)项目构建。另外.Net源代码也可以下载下来,还附带了.sln的solution文件,方便在Visual Studio里直接查看。目前的代码是基于.Net 4.5.1这个版本的,.Net团队意思是以后网站会随着.Net重大更新而同步更新。

这次的更新,还带来了直接在Visual Studio里debug .Net代码的功能。如何在VS2013里设置可以戳这里:”How to configure Visual Studio for debugging .NET framework“。

目前,社区里也有人做了一个Visual Studio的插件,就是按F12直接转到这个网站上相应的代码。

最后值得一提的是.Net源代码的license是MS-RSL(MS Reference Source License)。

“Reference use” means use of the software within your company as a reference, in read only form, for the sole purposes of debugging your products, maintaining your products, or enhancing the interoperability of your products with the software, and specifically excludes the right to distribute the software outside of your company.

2013年度OPT+H1B报税

又是一年报税季,本着早报早拿钱的心态,今年一拿到W2就开始着手报税了,前不久刚拿到退税,现在过来总结下。

2013年度,我是10月份从F1(OPT)转到了H1B,但是因为过去三年以H1B身份在美国没满183天,所以还是以非居民(Non-resident)身份报税。有些人会申请延期报税以便用dual-status身份报,可以多拿点退税,但是嫌麻烦,就算了。我就一张W2,也没有股票啊什么的,所以就还是用的1040NR-EZ

这样的话,报税过程跟去年几乎没有区别,仍然是参照IRS的官方指南杜克大学中文报税指南,以及需要附上证明是非居民的8843表,然后就是各项加加减减了。因为前10个月是OPT,所以中美5000 treaty还是适用的。

今年有个地方倒是折腾了很久,就是收到了一张加州政府寄来的1099-G。这是去年州政府退税的证明,于是困扰了我很久到底应不应该报上去。上面说如果去年用了Itemized Deduction就要报,用Standard Deduction的就不用报。我在这两个deduction上纠缠了很久,因为Standard Deduction仅适用于居民,而我又不记得去年报税有Itemized Deduction这一说。但其实每年非居民填1040NR-EZ的时候,Line 11上填的就是包含州税的Itemized Deduction,所以,今年就需要将1099-G上的数字填到1040NR-EZ上的Line 4里。之后,就是各项数字做加减法。填完之后,连同跟你身份有关的文件复印件寄过去就好了。

报完联邦税之后,报加州税就是非常简单的,还是跟去年一样,去加州税务网站如实填表就行了,大概一个礼拜左右就拿到了。联邦因为我是邮寄的,所以略微慢了一点,不过大概三个礼拜左右也拿到了退税。

在洛杉矶申请日本签证

打算4月底的时候回国休假三个礼拜,顺便把工作签证给转好。于是心思活络地就想要么先取道东京玩几天,而且早就听闻在美帝申请去日本的旅游签证比在国内申请要简单得多。订机票的时候,先看multiple city的路线发觉也并没有很划算,于是就先买了LA到东京再从上海飞回LA的往返票,然后趁着东航促销,再买从东京飞回上海的机票。

鉴于像这种情况,去日本签证性价比最高的就是过境签(Transit Visa),就是适合日本只是经停一下待几天再前往第三方国家的,而且签证费也便宜只要9美刀。虽然过境签是日本认可的,但是查日本驻洛杉矶领事馆官方网站上并没有列出如何办过境签,而只是列出了短期旅游签。在查了一番别的领事馆网站以及打电话咨询了洛杉矶领事馆之后,其实办理需要的材料跟短期旅游签证是一样的,但是在签证申请表上”Purpose of visit to Japan”那里需要注明transit去哪里而已,另外过境签发的应该是单次入境且最多待15天的签证,然后签证颁发3个月内不用即失效,而短期旅游签证根据行程可能会多次入境或者可以待更久。

签证所需的材料就按网站上给的短期旅游签证需要的材料准备就行:

  • 有效护照
  • 2寸X2寸照片一张(贴在签证申请表上就行,不用额外的)
  • 签证申请表
  • 所有航班的行程单(重要的是必须要有你的名字、出入境的日期和机场)
  • 证明你在美国合法身份的材料(像我H1B的话就是I-797 Approval Notice和Notice of Action,学生就是I-20,绿卡就是带着绿卡,美国公民的话你不需要签证)
  • 最新的银行statement(我是BOA的eBanking,直接去ATM选打印full statement就是截止到当天的最近交易记录,我还带了份上个月的,但是最后签证的时候他们说不用。至于余额要多少,其实完全根据你将在日本待多少天定的)
  • 因为我工作了,就带了最近两张pay check
  • 宾馆的预订确认单(如果不确定住哪,可以先找那种会full refund或者入住当天才付钱的酒店先订好,注意确认单上也必须要有你的名字以及check-in、check-out的日期)
  • 旅行每天详细的计划(签证的时候会查是不是每天都写了,但是不知道他们会不会细看)

另外,

  • 有个很热门的问题就是要不要担保人的邀请函。其实很tricky,如果你说你是去日本看朋友的,那就要对方的邀请函,如果你说你是去旅游的,那就不要,可以省去很多麻烦。
  • 签证申请表上有个问题”ID No. issued to you by your government”,我的理解就是身份证,但其实无所谓。
  • 第二页的监护人按照自己的情况填,邀请人的话,旅游/过境签都不用填。
  • 一般的情况,照这样准备就没问题了,反正最保险的就是先网站上看好然后打个电话过去问下。
  • 关于递签,一般在你附近有领事馆的话,就不能递签,必须面签。洛杉矶的面签速度很快,我的经验就是1点半过后去基本没有人,直接过去交材料,签证官会审核一下,大概20分钟就完事了,一般隔一天就能拿到,我周二去签的,周四就拿到了。

日本驻洛杉矶领事馆在臭名昭著的downtown。

周边停车最划算的其实是Grand Central Market自带的停车场,只要在那里消费满10块钱,就可以免费停一个小时,停车场的地址:

从S Hill街的门口出来走楼梯或者乘Angel’s Flight(暂时关了)上去就行,别忘记要先在门口check-in。

2014

年末了,总归要在这里做个交代的。

2013年上半年还是有点意思的。1月份的时候托朋友的福,冒充音乐人去Anaheim参观NAMM展,见到了Deep Purple的Steve Morse、Dream Theater的John Petrucci还有Primus的Ler,路上还偶遇了Stevie Wonder。去NAMM主要就是有机会试试各种吉他,但是Gibson展位不是很给力,倒是Fender把所有目前在生产的量产吉他都带了过来,试得还挺爽的。3月份的时候去了Austin感受SXSW,没有买那个贵得要死的badge,就是借一个机会去看看,见识到了一个小小的酒吧竟然可以分成左右两半、上下两楼、楼里街上都有不同的乐队各演各的。还去了SRV的雕像膜拜了,后来那个周日晚上还去看了大神Eric Clapton的演出。因为每年SXSW也是国内一些乐队借机来美国巡演的时候,所以有幸近距离接触到了Carsick Cars跟嘎调,只可惜那天他们在洛杉矶演出跟Green Day撞车了,因为那是第一次看GD,也只好放弃了。之后4月,就是去了朝思暮想的Coachella音乐节,两次。没什么说的,不论从阵容、舞台、音响及各种周边都应该是全美国最好的了,唯一的遗憾就是Lou Reed因身体原因没能来于是就永远地错过了。

至于下半年,不好也不坏,就是没有什么特别值得在这里交代的了,或许搬了新家算是一件大事吧,一个人住舒服是挺舒服的,但有的时候确实也是挺无聊的。

这一年在工作上嘛,最主要的还是工作签证搞定了,从4月申请到最后7月才拿到还是费了点周折的。然后这一年也从自己业余写的几个小项目上收获了一些。5月份的时候还有机会尝试了下Google Glass,但是因为目前应用有限,还是被eBay上高几倍的价钱给收买了。

这一年有这两本书我觉得挺好看的,一本是Nate Silver的The Signal and the Noise,还有就是Peter Hessler的Country Driving。前者讲了概率论在实际生活中的各种应用,很有意思,”There is a widening gap between what we really know and what we think we know.”。后者则是一个美国人讲他在中国生活的故事,写得实在太真实了,写别的国家的感受我们身边天天都能接触到,但都是去一个国家几天看到一些不一样的就发出强烈感叹那种,而他的这本非常贴近中国老百姓的生活,作为一个外国人能写出这样的书确实不容易。其实Peter Hessler的中国三部曲都挺不错的,但有一本还差一点没看完是年末的一个小遗憾。

这一年听了点新的唱片,我作为一个土摇,十大的豆列戳这里,还做了一个Rdio的playlist

这一年有一个有意思的地方,就是攒钱技能学到一点点。其实主要就是放弃了很多看演出的机会,不过好不容易攒到的一点钱,最后年末的时候都折腾在搬家上了。

说到演出,这一年尽管少看了不少,但还是有一些值得一提的。

  1. Triumph Dog @ Festival Supreme。13年最大的改变就是越来越喜欢看各种喜剧了,接触了蛮多comedy电视电影、深夜脱口秀和stand-up。正巧Tenacious D的两位在Santa Monica Pier搞了这个喜剧节,请来了诸如Noel Fielding、Zach Galifianakis、Sarah Silverman、Adam Sandler以及他们自己the D。当天最搞笑的还是这只狗,短短的15分钟,把13年一年可以嘲笑的事情都嘲了一遍。那天嘉宾还请到了Conan O’Brien跟Andy Samberg的Lonely Island。
  2. Dylan Moran @ Largo at the Coronet。他是喜剧Black Books的主创跟主演,欧洲的不论是乐队还是comedian都很少有机会来美国的,所以逮着就得去捧场啊,最后笑了整整一个多小时。
  3. the Who @ Staples Center。”Who are you? Who, who, who, who?”。都是年事已高的老人,再也没有现场砸吉他了,但是还有机会能看到Pete在台上演他的甩风车手就知足了。
  4. Robert Plant @ Shrine Auditorium。尽管是他的个人solo巡演,但还是演了不少耳熟能详的飞艇的歌,小小地满足了下。
  5. Eric Clapton @ Frank Erwin Center, Austin TX。克拉普顿老师是现在活着的吉他弹得最好的白人,句号。
  6. the Rolling Stones @ Staples Center。他们叫滚石乐队,他们演了50年了,就是这样。
  7. Black Sabbath @ LA Memorial Sports Arena。Ozzy这个烟酒毒了四十多年还没挂掉的传说在六十多岁高龄下也还是演一场少一场的。尽管去年看过了,但是这次多演了两首新专辑的歌:End of Beginning和God is Dead?。像Paranoid这样的经典听几百遍都不会厌的,更别提在现场看了。
  8. Green Day @ Fox Theater。这个对于我的意义太大了,大学的时候Dookie跟American Idiot听了几百遍,跟寝室同学一起排练他们的歌,这次终于有机会见到真身了。因为我买了Idiot Club,所以直接站到了最前面的pit区。他妈的Biilie Joe跟Mike就在我跟前啊!爽死了!
  9. Pearl Jam @ LA Memorial Sports Arena。这是我第一次去看他们,Eddie Vedder去年121212演出作嘉宾出现的时候就已经泪流满面了,所以这次更是尤为期待。Pendulum + Release开场,差点就哭出来了。尽管两场下来还是有一些歌没有演,但是大部分我喜欢的都演了,很尽兴。还有不足就是第一场太远了,人声听不清楚,所以这也是他们列在第二的原因。
  10. Stone Roses @ Coachella 2013。我这里说的是第一周,因为,从来没有看过石玫瑰演出的我被他们彻底地吹走了脑子。尽管不晓得有时候主唱猴王拿着两根棒棒在干什么,但是,但是John Squire的吉他实在是太棒了。整场演出无论从灯光还是音响等等,都做到了极致。

2013年总得来说不好也不坏,最大的转变就是突然觉得”Back home in LA”这个expression还挺酷的,或者说美帝没有别的地方会让我不顾一切过去重新开始的,本来以为波士顿会是那个地方的,但是10月份回去了一趟发觉那里的朋友走的走,结婚的结婚,也并没有我什么事情了。

2014年,我也没觉得会有什么大的改变,至少现在没看出来一些不好的会有什么转机,但是,还是得继续过呗。

最后,听歌吧。

石玫瑰的Made of Stone,没有能比这首能更贴切地叙述我这2013年。

Xamarin Evolve 2013

不久前,Xamarin在德州Austin举办了第一次他们自己的程序员会议,但是因为各种原因我没法现场参加。而且由于时差的问题,也错过了keynote和很多session的现场直播。

今天,Xamarin终于把第一天的keynote发布了出来。在keynote里,介绍了Xamarin从成立到现在的一些有趣的故事,进军移动领域的原因,他们CTO Miguel是如何从Linux粉转向果粉的,Xamrin 2.0的介绍,F#和Async开始beta测试,新的内嵌iOS designer,以及新产品Xamarin Test Cloud。Keynote地址在这里:Xamarin Evolve 2013

重点提下Xamarin Test Cloud,这是一套自动化UI测试(Automated UI Testing)框架。因为在iOS有几个版本,还有几个不同的设备,测试会变得很繁琐。在Android平台上这个情况更加严重,不仅版本众多而且还有两三千种不同的设备。面对这么繁多的设备,在所有真机上测试你的程序变得几乎不可能。在我实际Android开发的时候就碰到过这种情况,说得夸张些就是几乎每增加一个测试的真机就会出现一个新的问题。而Xamarin Test Cloud正是想解决这个问题。目前提供他们web app,可以上传你的程序的apk(Android)或者ipa(iOS)文件,选择想要的机型然后开始测试。当然,除了web app,也有API可以嵌入到你自己的开发过程当中。

Xamarin Test Cloud

既然叫Automated UI Testing,手工点app上的各种按钮,填写各种文本框等等这类根本算不上自动化测试。Xamarin Test Cloud最令我激动的是提供了一套脚本来自动化这些测试,比如定义脚本来进行“打开app->输入用户名和密码->点击登录按钮”这样的一系列操作,然后就可以在各个设备上看到跑这个脚本的情况,多少通过了,哪些有crash,crash的话就会有相应的log,哪些反应比较慢就会给出警告,非常方便和使用。最后提一点,Xamarin Test Cloud是适用于所有Android/iOS app的,并不仅限于用Xamarin写的app。

除了keynote,会议的session部分也即将上线,非常期待。一些有意思的session更新后,我会在这里及时更新。

2012年度F1 OPT报税

今天终于拿到联邦的退税了,加上前一阵拿到的加州退税,现在来总结下今年的报税。

2012年,我还是学生F1签证,期间也没有任何校内校外的工作。接着毕业后用OPT全职上班,所以今年报税过程其实不是很复杂。

因为作为非居民的外国人,很多网上的报税软件都不适用,而且很多软件也没有方便地将中美5000 Treaty作为抵税的一部分,所以还是得自己动手去IRS网站上下表格填好邮寄过去。作为外国人,要填的无非是1040NR表以及其附属的一些证明身份的表格。因为我除了毕业后上班也没有别的收入,所以就用简化版:1040NR-EZ。至于怎么填写1040NR-EZ,有两份指南必须要看,一个是IRS官方的1040NR-EZ Instructions,还有一个就是杜克大学中文报税指南。前者是最详细的官方指南,里面附有每年缴税的基线什么的。后者则是给看不懂官方指南里专有学术名词的人的简易指南,非常实用。两个要结合着看。另外,要证明自己是non-resident,还得额外填下8843表,不过因为是F1,所以只需要填写Part 1 General Information和Part III Student部分就可以。填完后,把两张表打印出来,再加上自己的I20、EAD卡、护照首页和签证的复印件各一份寄给IRS就行,地址在官方指南里有。

填完联邦税,州税就容易太多了。尽管我上半年在麻省波士顿读书,下半年搬去加州洛杉矶工作,但在波士顿的时候没有收入,所以我只需要在加州报税。报州税直接去加州的Franchise Tax Board网站上一步一填就好了,在折腾完联邦税之后,这个真是小菜一碟。填完大概一个礼拜就收到退税了。

对于我来说,除了这两个报税,还有一个另外的退税。因为以OPT身份上班,理应不该缴纳Medical Tax跟Social Security Tax,不过公司不知道这个还是缴了这些税。一来我当时也忘记这回事,二来等我想起来的时候已经过了2012年所以没法及时向公司要回这些钱,得自己跟IRS打交道填表要回。现在我还在等这部分的退税,待我拿到后会在这里及时更新。

—-Updated on Feb 17th, 2014—-

经过几次周折之后,终于在10月份拿到了Medical/Social Security Tax。要回的过程主要就是填8438316表。843表大部分要填的地方都比较简单明了的,就第7个问题要填原因,我也是网上找的模板,大致是这样的:

I am a non-resident alien for tax purposes (I have been here for less than 5 calendar years) and am in (F-1) student status. I worked with (OPT) authorization at XXX company and while I worked there, they withheld Social Security taxes in the amount of $XX  and Medicare taxes in the amount of $XX. According to IRS Pub. 519, I am not subject to Social Security and Medicare taxes. I have attached a letter from my company stating that they would not refund the taxes to me. I have attached my visa status and work documentation to provide my eligibility to work in the United States. I request a total refund of $XXX.

8316的话也是比较简单,特别double check第一题要选NO,否则都白搭。然后要从公司管这类事情的地方(比如Payroll部门)要一封说明没法直接从公司拿回这些钱的信。把这些材料再加上证明学生身份的I20、签证、EAD卡的复印件全部寄过去,接着就是漫长的等待了。注意,要先把那一年的税先报了,然后再去要Medical/Social Security的税。

MonoDroid.TimesSquare发布

之前看到Square发布了一个在Android上选择日期的widget,觉得挺不错的就想着把这个小项目移植到Mono for Android上。经过一段时间的开发,算完工了。代码库放在了GitHub上。

用法

CalendarPickerView作为custom view嵌入到layout里,像这样:

<monodroid.timessquare.CalendarPickerView
    android:id="@+id/calendar_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    />

对于layout还想多说几句。因为这个控件占用比较多的控件,所以最好给足空间。在屏幕小的设备上最好用对话框、全屏的fragment或者单独一个activity。屏幕够大的话倒是不推荐全屏显示,用一个fragment或者对话框就行了。

接着在activity/dialog里的 OnCreate 方法中或者fragment里的OnCreateView方法中,需要用一段有效的日期和当前选择的日期来实例化这个控件。比如像这样:

using Java.Util;
...

var nextYear = Calendar.Instance;
nextYear.Add (CalendarField.Year, 1);

var calendar = FindViewById (Resource.Id.calendar_view);
calendar.Init (new Date (), new Date (), nextYear.Time);

然后就可以用calendar.SelectedDate来得到所选择的日期。

实现细节

Square当时是如何想到写android-times-square这个小项目的可以看这里

Android上,用Java Calendar类(MonoDroid里有这个类的绑定)来计算日期。我们曾经考虑过用别的第三方库来实现,不过还是觉得让我们的库越小越好。在layout上,我们就自己写了个ListView:每行代表一个月,对于每个月再分别计算尺寸啥的,这样可以加快滚动速度。

下载

这里下载最新版本,然后以library project加到你的程序里。

软件许可

使用Apache 2.0许可。其实这倒是让我稍微补了一补课的地方。