I have three midterms and test this week, but I just don’t have the mood to study.

Last two weeks is the Gatech Career Fair, it was the first time I realize that Georgia tech has so many students on campus. I has been wait endless lane to talk those recruiters, uh.. maybe 3 minutes. The most crazy one was facebook. Three hours wait lane, and got nothing.

Interview Question

Anyways, This is a reminder for the interview questions.
For the first round of university interview, most of them are easy questions. Super basic data structure and agorithn.

Remind!. Study Books and Brush Coding questions earlier.


  1. there is an n-steps stair, we can choose either walk 1 step, or walk 2 steps for each action. So How many ways we can acomplish the stair.

    Concept: for each action, we have two branches, a. 1 step, b. 2 steps. we need to make same choice each time, until we reach the end.

    I went to wrong direction, I tried to use binary tree to express all the possible solutions. I felt it should be something related with recursion, but forgot to use the most easy recuirsion method. I made it way to complicated.

  1. We have millions-size n-array, full with intergers, unsorted. Find out the second maximun number. and find the kth maximum number. Follow up: if we use p computer to process the array, how to dive the task.

    At the beginning, find out the second maximum number, I use two variables to hold the max and second maximum to trivial the whole array. So the time complexity is O(n). I was lost at the kth maximum number. I kept the variables idea, use K variable to keep tracking the kth max number. It is correct, but the concept they want is heap. heap can maintain the order by itself.

    Concept: Use a Kth size Heap to trivial the array, at the end, the heap is the result they want.

    for the follow up, we need to implement kth size Heap for each computer, to process n/p of array each. pop the top of heap (top of heap is the max) for k value. then it is answer.


  1. how to compare the two string are anagram.

    it was a very short interview, and only one very easy questions.
    the most easy way to check the anagram, is sort the two strings, and use string Compare, then we get the solution.


##About Me

Hi, my name is ze chen, from Georgia Tech.
I am a Senior Computer Engineer student. Some people maybe know me from last year presetation. Yeah, this is my second co-op term at PASA. I work at Advance Software Engineer team at Georgia Tech office.

##Phone is Brain

In the last year, Advance Engineer team worked on the phone is the brain project for six months and successful demo at the detroit auto show last year.

In this project, we refactor and implement solid functionality by using panasonic global platform framework aka GPF. in this project, customers can make multimedia playback on the head unit, and more important, we launched Apple’s DIO, they call it Carplay right now. So customers can plugin their iphones to take over the control, like audio/video playback, maps and navigation, send and receive the message by siri, etc, etc.

The host system is Linux, and we developed on Qt Framework. because Qt is well-known cross-platform support. This is key I can port it from linux to QNX easily.

Tata is the HMI name. HMI is human machine interface. basiclly users only look and handle wit HMI.
to increase the perfomance and user experience, I migrate Tata from HTML webkit version to Qt version.

This is what we did on the last year.

##Problems and solution

When I come back to the office this year, all of our engineers were focus on the ford project, and I was assigned to work with silicon valley office’s demo project. This demo project is focus on Carply and Google Auto, but it was developed on EB for the HMI and use GTF, a test version to handle all the services.

This is how it was look like.

When they know our Phone is The Brain project, and they are very intereted. So they want to merge Phone is the brain into their demo.

This is want they want, full looking Hmi on the Qt engime. running Their services instead of GPF, and run on the QNX system, not linux. and Specificly on the TI’s J6 board.

Last year we spend six months, and more than two teams to develop the Phone is the brain on the linux. We tried and failed to develop the QNX version in the same time.

We don’t know how much blocks and difficult to build the Qt and HMI on the QNX, the way to communicate between HMI and those service like audio, Carplay ext.

To solve all of these problems, is the job I have done in this summer.


After a few talks and dicsussion with Germano and Kesuge san, we decide to implement a system like this. Keep using silicon valley’s service, and turn off the HMI connection to our GPF service. And I am going to develop the GTF handler and hook up the connections between HMI, GTF sevice handler and GTF service.

In this case, we can make it simple that Code will be pollute and we can keep them in the same code repository.


The final goal for this demo project has these features. Users can in and out between the CarPlay Mode and Native HMI, once you plugin the phone.
Users can turn on/off the FM audio.
Users can check the Native Navigation and iphone’s navigation.
Also We can simulate a fake incoming Call pop up.

All of these features and functionalities are based on the Silicon Valley’s demand.


This summer, my teammates are all locate at silicon valley. I am working alone here. All of discussion We need to use email and web meeting to coordinate the progress and features we want or something we can cut it out. That is not easy but I make it.

Turn out communication is not bad and is so important. I mean to make sure your understanding is in the same page with other people. Specially, to understand what they are asking for, and how to evaluate the methods to implement the feature before you start it.

Agile Development, working as a independent member in this project, I learn an important lesson. the Agile Development. How to quickly start to work. fail quickly and correct quickly, push fast to develop a new feature and version.

不知不觉中, 很多人在我的世界里消失. 他们曾经出现过. 曾经是如此的重要, 但最终, 却离开了.

自己也忘了外婆和外公的样子, 甚至是街道我妈的电话知道外婆过世的消息的那一刻, 脑海里也只是一个模模糊糊的背影. 想努力让她清晰, 最终也什么也没有得到. 这时候, 应该是难过得大哭起来, 至少会流泪, 会痛苦才是的呀. 可是我什么也没有, 只是觉得胸口堵得慌, 仿佛潜水的时候, 氧气瓶中的氧气即将耗尽的时候, 充满新鲜空气的海绵,看似很近却触手而不可得. 请假回家, 把自己关更衣间里面. 小小的密室里面, 没有光线,没有声音, 只会听到自己心跳和浑身控住不住的抖动. 那种想哭却哭不出来的感觉, 觉得自己特别的无力. 用尽力气发泄.

那天下午,一时的冲动就和老板请假第二天离开的. 自己却傻傻的忘了和舅舅联系, 什么安排都不知道. 第二天不得不和John重新调整了一下安排, 然后就像什么都没有发生过一样, 继续工作和生活. 其实我知道这只是自己傻傻的在拒绝, 拒绝相信外婆已经走了的事实. 仿佛只要我没有回去, 我没有亲眼看到, 那就一定不是真的. 离回国的那天越近, 心里的不安也越来越多. 生离死别.

我从小就是和外婆一起长大的, 十几年来, 对我妈的印象几乎什么也没有, 虽然叫着外婆但是更像是妈妈一样. 我很努力得试过去回忆和外婆的一切, 记忆却如此模糊. 最后到自己也分辨不清那些回忆是真的曾经发生过的,还是自己臆想出来的了.

那年也不知道是几岁的时候, 左手手指被门沿夹断之后就搬到了福州的外婆家生活. 我,弟弟,妈妈,表弟,外公,还有外婆, 住在三十平不到的小房子里. 小朋友被要求很早就要上床睡觉的晚上, 可以通过电视投影在墙上变幻的颜色和声音来判断妈妈看的电视的剧情.

小学一年级的秋天, 大院出口依旧铺满了一层黑黝黝的煤渣, 两旁的梧桐树叶枯落被踩着喳喳得想得早晨, 妈妈就留了一句:”我去找爸爸了, 你要好好照顾弟弟”, 然后我只能看着她拖着行李的背影慢慢不见. 我不记得了她当时说话的表情, 甚至都不记得了她的样子. 只是那个背影, 深深得记在了心里.

在那之后的一年, 弟弟不停得问外婆和舅舅,”妈妈什么时候回来?” 然后大家默默的不说话.

从此, 外婆就变成了妈妈. 每天早上, 白粥和咸菜, 有时候买回来油条和锅边. 吃完早饭后, 像赶鸭子一样带着表弟,弟弟和我去上学. 外婆家在的大院, 四周围了一圈的小房子. 每家每户大概也就十平方大小, 既是厨房,也是柴火间. 厨房门口一个小沟, 隔着4米左右的距离就是三层楼的大屋子. 中间的空地就是大家的餐厅了. 夏天的时候, 小学四点多就放学了. 几个小泥猴一样的我们就直接在厨房前面水龙头脱光光了开始洗澡. 等洗完澡之后就把小桌子摆在空地上, 等外婆做好了饭菜就坐在地板上开吃了. 还能记得的外婆的拿手菜, 只有一道荔枝肉. 外婆的荔枝肉喜欢放蒜头, 多酱油, 并不是正宗的酸甜口, 咸味重但是好吃.
一大家子人, 就属我挑嘴. 每天都在嫌这也不好吃, 那也不好吃. 每天吃饭都剩下大半碗, 有的时候外婆就会自己做扁肉给我做宵夜, 那时候的扁肉的味道是什么样的早已不记得了. 只是有一天, 反常得连续吃了好几碗的扁肉, 还使劲的往里面放醋, 然后就不知道为什么发烧了. 连续几天的高烧, 外婆只能把饭菜放到床前给我吃, 发烧出汗过多的时候给我用毛巾擦身子和换衣服. 最后当然痊愈了只是留下了奇怪的后遗症, 就像是吃够了一辈子的醋和扁肉一样. 一直到高中,每次吃扁肉还有醋的味道就会反胃和呕吐.

外婆一直以来都是温柔的女人, 在我的记忆力, 她从来没有和任何人有过争执和矛盾. 也没有和外公吵过架. 唯有在我妈回来后, 因为我和我妈吵架, 然后讨厌我了.

后来, 搬家了. 买了更好的单元房. 但是, 小时候的和外婆的记忆大多都留在了那栋又破又旧的木房子里面. 夏天的知了, 老猫, 路口的煤渣, 茂盛的木棉花和梧桐树, 空地上的大石板凳子, 木屋子可以媲美恐怖片片场的黑漆漆走廊.

去年外婆诊断出了癌症晚期, 回国去看望外婆的时候. 看着外婆喝着重要, 然后吃好多的蜜饯的样子, 便感到一阵心酸. 和外婆聊了几个小时, 也总是在重复相同的话. 上次带着陈小猫去见外婆的时候, 她还偷偷把我拉在一边, 问我”也不事先说一声, 孙媳妇的见面礼,金首饰什么的今天都还没有呢, 下次过来, 见面礼就给了她哦, 早点结婚”

而今, 物是人非.

回来的飞机一路上都在睡觉, 刚刚在梦里看到几个月前我妈发来的那条短信,”今天是外婆生日, 其他人都打了电话了, 打电话回来祝福一下吧! 也许就是最好一次生日快乐了!” 梦中惊醒, 默默得打开了手机的微信, 看着这条短信. 平时不玩微信的我, 在一个礼拜之后才看到那条短信的. 最后也没有给外婆一个电话.


进入PASA之后,在danny的指导下才慢慢接触到了cmake, 然后还有ninja.
周末在家有空, 决定写一个日志, 以后可以忘了还有地方找一下.

关于make 和cmake 的关系.
首先, 编译命令. 当我们写好了一个.cpp文件之后, 我们需要编译成一个可执行文件, 在linux下面就是我们的.bin也就是window里面的.exe
当我们有一个简单的project, 这个project里面只有一个server.cpp文件. 我们只需要执行下面这条命令来编译它.

gcc server.cpp -o server


好的, 现在我们的文件要稍微复杂一点了. 这个project文件有两个文件, server.cpp和client.cpp文件. 我们需要把他们分别编译成server和client的文件.

gcc server.cpp -o server
gcc client.cpp -o client

但是,每次需要的时候都要输入这两条. 很累的喵. 所以,我们需要把这些命令写入一个文件,然后只需要执行这个文件就好啦.

    gcc server.c -o server

所以呢, 你只需要执行

make server

就可以得到server文件. 如果我们把两个命令都放在一个文件里面呢

    gcc server.c -o server
    gcc client.c -o client

这时候,你可以选择那个文件来编译, make server 或者是make client
恩恩. 是不是很方便呢.. 就好像是从农业时代一下子就进入了工业时代一样. 所有的编译都写好然后重复不断的编译都可以得到一样的结果.
恩.. 但是如果,假如,我们现在有好多好多的src文件.. 怎么办呢.
make也是可以支持variable来代替大量的.c和.h文件. 比如说.

files = foo.elc bar.o lose.o 

$(filter %.o,$(files)): %.o: %.c 
        $(CC) -c $(CFLAGS) $< -o $@ 
$(filter %.elc,$(files)): %.elc: %.el 
        emacs -f batch-byte-compile $< 

好吧,是不是看上去很复杂呢.. 恩. makefile确实在可读性上有一定的缺点.

cmake其实是一个makefile generator. 我们不需要面对复杂的makefile. cmake简单且直观的语法能够让我们很容易的生成makefile. 具体语法以后讨论喵.

  1. 语法简单,可读性强
  2. 多项目管理方便
  3. 分离编译

make在编译过程中会产生object文件,链接文件. 对于git来管理的源文件而言,这些都是垃圾.为了尽量保证源文件的安全性.. cmake在任意的文件夹下面生成makefile以及编译过程中的文件.. 这样保证的编译文件与源文件的分离. 在你不需要的时候,把整个文件夹删除即可. 例如:

mkdir build
cd  build
cmake ../
make –j5

make -j5命令是让系统通过多核的方式来进行编译.编译所需要的时间大幅减少.


Ninja是一个google开发的build工具.. 他的作用是和GNU的make一样.. 对make文件进行编译.. ninja并不需要-j的指令来开启多任务模式. 它自动使用的是使用的系统的核心数+2的jobs

mkdir build
cd  build
cmake ../

以上, 具体的cmake的心得. To Be Continue.

why I self-host blog

My first answer is..

I don’t know. Yes, I don’t know why I start to write blog. Actually, my first blog is post at last year. I bought a vps host and run a WordPress blog from Godaddy. well, shamely, I only wrote five blogs for the whole year. Totally waste money

Last year, I joint a course Startup Programming at Coursera. In the class, the Node.js app at the backend is host by Heroku. Users client will call API from Server side to achieve some data and feature. Then, I realized a VPS is more than on Web Server. Woops. Find a new world, like Hello, World! World. Ok, I need to go back to my VPS. I go to GoDaddy’s control panel, find my vps’s IP address, and try to ssh into this machine. And it failed.


YES,the costumer support from GoDaddy replied me that,

Sorry, the Host you purchased is not support the ssh feature.

> < Fine. I move out.


I search the vps topic online for weeks, and A lots people recommend Linode. Linode indeed has pretty good reputation, and its price is pretty nice, the cheapest plan is $10/month. uh.. Affordable.

Wait, wait. What we are talking? oh, Why I start to write blog.

Why I start to write blog

A place I can talk

If QZone counts, I start to write blog for years. Junior High, maybe. Most of Words is about the feelings, and her. I started to write my love dairy, happiness and sadness, to her. She is the only lisener, until QZone became popular in the social network. People who you know are were always visit your QZone, read your diary and your feelings.

Weibo, Renren, facebook. I kinda don’t understand the point of social network now. At the beginning, we want to invite people who you like to share your feeling into your social network circle, and someday, Whoever you know, they all become your friends Follower in your Circle. I just want to hide a little bit from Some of You. So Blog is a place I can talk to myself, or who I don’t know but you like my idea and words.

A notebook for Tech

I am procastinator and easily distracted. I tried a lots of interesting technologies, but somehow, I lost them.
Or some technoloy I am still using, but when I have to explain it to friend. I can’t tell, which means I know one thing, but I don’t know it well. Daniel suggested me to write some blog to re-phrase your understanding. You can clearly to see, what do you know, and what don’t.

Sounds good?

My Food Recipe

I like to cook food, and I want others appriciate my arts. Food can’t storge too long, so pictures and blog record is the best show off.

English or Chinese

I don’t know, and I don’t even know why I use English in this post.

I read an article in somewhere I don’t remember. It said

language people prefer to use to discuss a knowledge depends on the language when the knowledge have been taught.

So, Let’s see.

ok, it’s time to clock out and go home.

Happy blogging.