- Put most code into a function or class.
- Use __name__ to control execution of your code.
- Create a function called main() to contain the code you want to run.
- Call other functions from main().
Monday, November 15, 2021
[Python] Python Main Functions
Thursday, November 4, 2021
怀念我的导师
我的导师埃里克去世了。我失去了一位精神上的父亲。对于这个领域的研究者来说,损失了一位巨擘。我们如同失去了领袖的羊群,无家可归。又如同丛林里最古老的苍天大树,苍茫倒地,地撼天摇。
导师一生积极进取,带有骨子里的固执和坚持。他对学生的思考程度和科研品质一如既往高要求,因此带出了我们领域一批又一批的大牛。他评价学术工作向来直截了当、一针见血。老人家坚持自己的观点,从不趋炎附势,从不在意别人的评价或误解,也从没有怕过任何学术势力,不管对方规模多大、名气多响。和癌症搏斗的这几年,他对自己也很少有懈怠放松,日日坚持来办公室,周周和学生讨论不断。
但他也吃了很多苦头。他的生活向来有格调,喜欢红酒和美食,也常去健身房锻炼。他生病以来,诸事不便,而世态炎凉,我也算见证了研究组的萎缩,身边亲友的流失,学校院系的冷落。看着他罕有的虚弱,心有戚戚焉。其实,抛开声名远扬的名教授身份,他也爱跟朋友谈天说地,喜欢热闹的城市,向往退休的生活。学生看导师,都把导师当成神。也是因为生病的缘故,我们得以从人的角度去发现更多维度的他。
仙人掌满身是刺,内里却是柔软。
读博士这几年,我因为种种事情对导师的感情非常复杂,有敬畏、有害怕、有不甘、有自豪、有感动。五味杂陈,往事只能回味。博士最后一年,所有的感情都汇聚成感激和感恩。是他、他的精神、他培养的师兄师姐,让我成为了今天的我。在这疫情阻隔相聚的时刻,我无比怀念他,希望他一路走好。
人生终需一死,只是不知道是哪一天。生命有短有长,只是不知道其重量多少。唯有做有心的事情,才不枉此生来人间走一遭。我也会好好努力,如果他能想到我,希望他也会感到安心和骄傲。
Tuesday, November 2, 2021
[Windows 10] Multiple displays with docking station II - enable Night Light
After I reinstalled all the drivers, I found that the external monitors didn't react to the Windows 10 Night Light adjustment through the dock. This Night Light feature is super cool and it is annoying that the dock cannot support it naturally.
I found the instruction from this DisplayLink webpage How to enable night light or f.lux on DisplayLink displays on Windows. It worked! The only thing - you need to run the Registry Editor using the administrator credential.
[Windows 10] Multiple displays with docking station I - cannot change display resolution
Monday, September 27, 2021
[R] What does the R-squared of the Fixed Effects model summary mean in R?
I used R to implement the Fixed Effects regression model on panel data. Basically there are three major packages for FE model, lm, plm, and lfe. I want to evaluate the R-squared of these Fixed Effects model outputs as well as the F-statistics for significance. I found that lm produces one R-sq, plm produces one R-sq, and lfe produces two R-sqs. However, if you really look into them, they are all different! What the heck is going on?
According to the definitions from STATA, there are three types of R-squared of Fixed Effects model, within, between, and overall. Within R-sq means how much of the variation in the dependent variable within each entity group is captured by the model. Between R-sq represents how much of the variation in the dependent variable between each entity group is captured by the model. You can see the same structure in plm package, where you will define the model ("within" or "between") before fitting. This shows us, we should not just look at one R-squared to determine the model performance!
Monday, August 23, 2021
人生是一场马拉松
1. 坚持好习惯和断绝坏习惯并不是靠意志力,而是靠信心和耐心。意志力有点像兴奋剂或者抑制剂,只能短暂有效。
2. 永远不要等待或者期待某个“最佳状态”,“完全平衡”。比如找对象,找工作,买房子,生娃。事情永远在变化,可能会急速上升,然后螺旋式地上升,或者断崖式地下跌,总之不可能一成不变。
3. 永远不要等待或期待解决所有的问题,或者等解决了所有问题之后才感觉满足条件再开启下一步。问题永远解决不完,解决了一个问题,另一个问题必然会出现。还是因为生命的状态是连续的,生了之后就会老,老了之后就会病,病了之后就会死。人生的目的并不是实现没有问题。恰恰相反,解决问题正是修炼的过程。
4. 等待或者拖延满足条件的背后,并不是没有准备好,而是没有踏出舒适区的勇气。只有在舒适区和挑战区之间,做的事情才能够有所突破和进展。
5. 困难只有不断地分解,才能清晰。就如同水中的泥沙不分离,看不清楚问题的本质。
Thursday, August 19, 2021
小事情列表(持续更新)
- 转不愿为愿意
- 拒绝做手机的奴隶,受其使唤
- 只看打算看的内容,并计算好时间和后续的任务,不要安排太多
- 倾听对方说的话,不要管这个是不是对我有用或者是不是有趣有道理。
- 日常生活
- 早起叠被子
- 收拾和处理回收纸箱
- 锻炼健身
- 每天下楼走一走
- 每半个小时起身,做一些转换动作
- 平甩功
- 累的时候七动功
- 拉伸肝经或脖子膝盖
- 短的keep
- 瑜伽等功课
- 随便乱跳
- 作息
- 八点前吃完饭(七点前做饭)
人生只有一件事
最近看了樊登与台湾著名的文化人金惟纯的访谈,在介绍他的新书《人生只有一件事》。
这一件事是什么呢?修炼。修炼相当于是升维的行为,有点像仙侠小说里面的历劫飞升。升维之后,不会囿于左右之争。
怎么理解修?是佛教的修行,儒家的修身治国平天下的修,还是道教的修身养性或者修真养生的修?
书里其实讲的还是世俗层面的道法术,所以既然是世俗层面,这三家应该都是通的,即接受自己从而改变自己的生命状态。接受自己,承认自己的不完美,意味着要看到自己的缺点阴暗面,并且敢于承担过错,也就是孔子说的不怨天尤人。改变自己,则是在接受自己的基础上,不断培养起心动念,从小事起转念头,发大愿,这个和禅修的不同阶段很像。
我印象深刻的一个地方就是在接受自己和改变自己的中间过渡环节——认错。佛教叫忏悔,儒家则是吾日三省吾身。真正的认错,力量非常大,是让人激动和兴奋,让人看到自己的无限潜能。可惜我们都习惯了表面应付式的认错,自然毫无益处,有时候则是悔恨多过认错,对自己的怪罪和记恨太多,充满负能量,也是无法让人提升的。
最后,金先生说我们没有必要把工作和生活做一个彻底的分开,应该把工作当成道场。这个想法很妙,如果这样就轻松很多,不会再想生活和工作不能平衡的矛盾。不管顺境逆境,都是磨练自己心境的对境。很好!
Sunday, June 6, 2021
空心人
每一天都晚起,
习惯打开了手机,
一条条无关的消息,
关闭又点击。
上午没有会议,
懒汉般慢慢爬起,
看着镜子里的自己,
想不起工作任务明细。
打工一刻钟,
新闻八卦半个钟,
摸鱼聊天一个钟,
不敢放纵也不想用工。
夕阳西下开始急,
啥也没干怪自己,
熬夜补牢难放松,
痛苦煎熬想逃避。
一整天没有感到真正的快乐,
空虚如同摄魂怪包裹着全身,
偶尔一丁点的开心稍纵即逝,
席卷而来的是对自己的怨恨。
剥开痛苦不堪的躯体,
想看看是什么可怕的物体,
让自己对生活没有兴趣,
让自己不喜欢自己。
安坐闭眼深呼吸,
感到了从小到大读书做人的压力,
听到了别人和社会对成功的定义,
然后看到了迷茫和无以为继。
啊,原来我是个空心人。
对自己的仇恨让身体生起了熊熊怒火。
抑郁和无助,
是空心人的痛苦,
像掉进了一个坑,
轻易找不到出路。
焦虑和恐惧,
是空心人的诅咒,
不知道为谁而转的陀螺,
被社会的鞭子抽着走。
每晚发誓要早睡,
想要改变没成功,
三顿饭都不按时,
健身读书心理学,
禅修太极儒佛道,
样样研究无章法,
没有坚持亦徒劳。
Saturday, May 15, 2021
DC护照换发日志
前情
我的护照今年夏天过期,最近在忙着续护照,顺便记录一下全过程。
因为疫情,DC驻美大使馆从去年4月份关门到现在。看着病例持续高涨,去年我就估计在我的护照过期之前,大使馆依然无法正常开门办公。
去年9月,我试着到网上预约了一个账号(海外申请护照在线预约),照片也都拍好上传了,到了最后一步预约时间的时候无法继续,于是我发邮件给DC大使馆签证处询问。他们马上自动回复一封信介绍了当时业务办理的基本情况,DC这边办护照得先通过邮件预约和审查,使馆同意了之后才能用我之前发现的网上系统继续申请。另外,使馆只能受理紧急情况下的护照换发,并且需要申请人提供很多证明紧急情况的材料。我在几个DC群里问了一下,有人说他护照过期了都不能算是紧急情况,使馆回复说如果是要回中国,可考虑办旅行证。这一看,我也没有马上到期,那也不符合要求,就先搁置了。
去年年底的时候和纽约的同学朋友聊到此事,他们都说纽约领馆这边也是邮件预约的形式,但是并不需要什么紧急情况,申请了都拿到了。我当时有点着急,想着咋还区别对待呢,还想能否在纽约直接递交材料。我后来知道了,邮寄地址是最关键的,使馆和领馆会按照申请人的地址所在的领区来决定是否受理。我后来又从朋友那里得知纽约是整个美洲的制证中心,住在纽约的同胞们有福啊。
今年2月份,陆续听说其他旧金山芝加哥的朋友们也都能够办到护照了。我跟旅行社联系了一下,他们告诉我DC的业务是最多最慢的,等了好几个月都没有下文,还建议我等到护照过期了再说。我一方面说服自己别着急,反正也不马上要出境,一方面又因为使馆的业务是否开放让人难以捉摸而有点焦虑。
抢号
3月份,我的DC同事告诉我她成功通过邮件预约到了,符合紧急情况的要求。我这时候决定要再试试,当时酝酿了几周紧急情况的理由。转眼到了清明节,我当时听了一个华府北京同乡会关于护照和签证办理的专题讲座,得到了一个非常关键的信息:最近开始不需要通过邮件预约护照换发,可以直接在网上约号,约到哪天,哪天可以寄材料。我当时傻眼了——当时并没有任何网上的通知(其实每一个使馆领馆的具体情况都得靠自己去多方调研,网上都没有),而讲座里说已经很多人在网上系统直接预约成功了!!我去年9月份这么早的提前量就弄好了账号,这回还蒙在鼓里,感觉好像错过了一千亿。在此要感谢华府北京同乡会组织的讲座,信息量很大很实在,不然我到现在还会以为需要紧急情况才可以申请。
网上预约的第一步是建立账号,填写申请表的基本信息,上传照片,这些我之前都已经打好了基础。所以讲座结束后,我的第一件事就是上网抢号。一开始我低估了抢号的严峻性,以为多登陆几次就能看到新的位置,结果第一周前两天上午登陆都没有看到空位。我无意中得知(非常偶然)大使馆每周二、四下午两点放号,周二下午我慢悠悠进去,没号了。周四我第一次掐点进去,发现我刷新得太早,1:59刷新进去,号还没有放,2:00再刷进去50个号全都被抢光了。另外,我太紧张了,再点那几个验证码的时候手都在抖,可能慢了0.005s吧……我想起来大学刷课的时候,心有余悸。周四那天真的有种绝望崩溃的感觉,真的不知道自己猴年马月才能刷到号码。
事情永远不像想象中顺利,然而也不见得有想象中那么糟糕。第二个周二,我吸取了上次经验,稍微晚了一点刷进去,然后尽量手不抖心不跳地完成了验证码,我终于成功预约到了5月份递交材料!
申请材料的准备
预约成功之后,我就有俩号码了,一个是档案号,一个是预约号。我点了发送确认邮件,但是至今未收到……好在我没有鲁莽地关掉页面。点击打印申请包,打印出来十一页纸,其中有几张是业务办理须知,其他是表格和知情书等。申请表其实之前在网上都已经填过了,所以基本上剩下的只有几处是需要签名的地方。我当时感觉特别简单,跟办签证相比太小菜儿了。事实证明,我又天真了!
表格都还好,基本上仔细检查都不会漏填。签名的时候要小心,正楷并且不能“越线”。其实这个要求来说是Print Name,不是Signature。大家如果没有仔细看要求可能会掉进去,这个也算是个隐形坑吧。接下来就是真坑了:
1. 回邮通知和回邮服务申请表:我打印的十一页纸里面,并没有这两项!我一开始并没有意识到这个表缺了,更不知道这表应该长啥样,是某天对照清单的时候发现了我没这个表。。。同事说她当时邮件预约的时候是有这么个表格的。我在大使馆官网上搜到了回邮服务申请表,回邮通知就没找到了。回邮服务申请表上第一个空“取证单号”我没有填,因为根本没有得到过这个信息。我在一亩三分地上也搜到了类似问题。我的理解是,这个月是邮件预约和网上直接预约两种受理方式的过渡期,政策发生了些许调整,但是通知上并没有及时地更正和说明,造成了许多矛盾的地方。
2. 照片!!我去年9月份就准备了照片,也正常上传了,但是业务说明里讲上传不代表通过。我是在家拍了之后,自己在网上制作了id photo,2x4八张排列的那种,然后去CVS打印。我前后一共打印了六回。第一回是因为没有去现场打印,网上下单的,取的时候发现颜色底色不对,必须是纯白色。这时候发现在家拍照的问题真是太多了,灯光不行,会有背景和脸部的阴影。后来回家重新PS,把背景抠出来全部变成白色,把身上的一些阴影去掉。第二回发现打印了出来之后有些瑕疵就又打印了第三回。
以为到此为止,结果就在寄材料的当天,得知同事因为照片不合格需要重新寄照片,问了原因说是头发不能遮挡肩部。我就只好延迟寄材料的时间,重新拍和制作了一遍。因为CVS的机器打出来有色差和噪音,有一回弄了好几个机器都失败了,一波三折又打了三回才弄好。业务须知和网上办理护照提醒上还说到如果和上传照片不一致,需要附上上传照片的版本。所以最后寄的时候,有旧的,也有新的。
3. 邮寄。业务须知上说要用USPS寄,USPS挺慢的,但确实便宜。一分钱一分货吧。需要两个USPS的带tracking的信封,一个是回邮的,一个是寄材料的,回邮的先付邮资然后折半放在寄材料的信封里。
业务须知上还注明需要在寄件人处写预约信息。网上这个地方信息又不统一,我打印出来的通知上是说写预约时间就可以。但我在论坛上看到如果没有写“邮寄编号”是会退回原址的。我一开始还以为“邮寄编号”就是邮编的意思,但是反复看到大家强调这件事我才发现此“邮寄编号”非彼“邮编”也。我的理解是这个又是邮件预约期间的规定,后面就改变了。我根本没有邮寄编号,所以我在上面写了档案号和预约号。
我在网上办理护照的提醒上看到了回邮信封寄件人收件人都是写自己的地址。这个也是业务须知上没有的。另外,在USPS那里就可以直接购买money order。
邮寄材料之后
Thursday, January 21, 2021
[Git] How often do I commit and push?
I "commit" every time when I finish a single task. It can be anything small or big depending on the purpose of the task. It can mean a block of code to add, a few comments to add, deleting an outdated function, adding several new scripts, or changing the outputs. The rule of thumb is the "finished" task. You should be able to run the code without bugs. The frequency can be half an hour or 1-2 hours.
I have a final commit check and push every time when I close the project. Since I am working on the repo on my own right now, I usually push once or twice a day.
Tuesday, January 19, 2021
[Python] Learning a new package pbr
https://pypi.org/project/pbr/
https://michaelkuty.com/howto/build-python-with-pbr/
https://dzone.com/articles/packaging-python-software-with-pbr
Wednesday, January 13, 2021
[Git] Study git and github in Pycharm
Set up git in Pycharm:
- https://www.jetbrains.com/help/pycharm/set-up-a-git-repository.html#add-remote
- There are two ways of set up. One is that you create a new repo on github and then git clone to the local file. The second way, which is more convenient, is to share your local project to Github.
Set up run/debug configuration:
- https://www.jetbrains.com/help/pycharm/creating-and-editing-run-debug-configurations.html
Configure project structure in Pycharm:
- https://www.jetbrains.com/help/pycharm/configuring-project-structure.html
Unversioned a file:
- https://superuser.com/questions/898165/remove-file-from-git-version-control-without-deleting-it-from-the-filesystem
Manually delete file and then manage through git:
- https://stackoverflow.com/questions/12987907/git-how-to-commit-a-manually-deleted-file
- https://stackoverflow.com/questions/492558/removing-multiple-files-from-a-git-repo-that-have-already-been-deleted-from-disk
- https://www.educative.io/edpresso/how-to-change-a-git-commit-message-after-a-push
Compare different files in Pycharm
- Use compare with clipboard to compare current file (in editor) with the copied file
- In "Show history", at the left navigation pane, right click on one commit, and select compare with local. Local will show up on the right.