Skip to main content

Done with GSOC

Last week's blog was written on Douban when Blogger editor wasn't working behind the Great Fire Zone. It's a brief summary on my four weeks' trip in Beijing. There are also some thoughts about managing a NGO.

This is the last week for the GSOC project. Thankfully, I managed to write a 20 pages documentation for the work I've done in these three months. Though it doesn't sound like a complicated project, there are quite a number of technologies being explored. Honestly, a right direction/instruction is somewhat more important than the actual coding. I'm grateful that my mentor Ashish gave me good suggestions on the importance of each sub project at the very beginning. This helped save a lot of time.

In this patient timeline project, we examined novel ways to create an environment to display a patient's medical records and medical history. There are three sub problems to address.

  • How to import the patient’s medical records
  • How to process the raw data and restructure the records data
  • How to render the data to the clients

After several weeks' trials and errors, we finally used bindaas server for data storage and database query interface. Node.js is served as the application server for data processing and user authentication. For data rendering, we use ejs template engine for clean templating and ajax for dynamic data rendering.

I've tried CodeIgnitor(a PHP Framework), Rails( a Ruby Framework) and Node(a Javascript Framework) for the application server. However, we finally picked Node since there is an official decent Javascript library for Medical Data Processing named BlueButton.js which can be used for data processing. The timeline data should be stored into the data server via Restful API after they are processed in the backend. Node.js is capable of handling JS scripts on both backend and front end. Thus it's a perfect framework for this project. Bindaas is a database middleware developed by Emory University which can handle database queries without concerning about the database management system types. The two reasons why we still need an application server instead of letting the client to directly communicate with the Bindaas API are 1. the Bindaas API requires a secure API_Key for the API queries. It is not safe to exposure the API_key in the client ajax calls. 2. there need to be some user authentication scheme in the whole system for the whole system to better store user related medical records.

The biggest challenge came when we want to render pieces of patient medical record data asynchronously in the client. Normally, a template engine updates a whole page after passing data from the controller. However, that would not be an efficient approach if the data come from different controllers&APIs. We need a better way to render sub pages piece by piece asynchronously without affecting the whole page. The first idea came into my mind was to use ajax since it's famous for asynchronous data transactions. However, my previous ajax experience told me that simply appending blocks of updated HTML data to a particular div tag results into dirty codes which is not elegant. There must be a better way! Luckily, we've found the ejs+ajax example . The biggest problem of asynchronously transfer data+clean code has been solved. That's quite a big progress.

There are some more stories about this project. e.g., the timeline data restructuring, design implementation, etc. For more details regarding the timeline project, please refer to the documentation.

Most of the skills were picked up at the spot, e.g., Node, Ejs, Bootstrap Grid System, etc. It is a very good learning experience. At least I'd say I'm twice more familiar with front end developments now. Personally, I believe that one right approach to better master a technical skill is to practise with real projects. I wouldn't say that I mastered node.js since I've only done with one small node project. However, I'm confident to say that I can build my own web projects with the web technics learnt along the way. Ruby on Rails(ror) is so far my most familiar web framework and Bootstrap is my most familiar css framework. Actually, I've done more than three ror small projects and three bootstrap 3 sub projects during the three months. It's really one of my most fruitful summers ever.

Bad things about GSOC. Maybe it's an individual case, but in my project, I am the only one who is in charge of the whole project(with mentor's help). That's more of a individual project than a group project. There is no peer monitoring or code collaboration, thus the whole project is not that tightly structured. I guess the whole project would be more interesting and efficient with collaborations between other developers. Another bad thing comes from my over commitments. I could have spent more time and energy in this project though there were unexpected important commitments during this short summer. Other than those, the GSOC program is really good for students-- a lot to learn, high mobility,good pay,etc.

It's good that I started to delete tasks and redistribute workloads. For instance, I trained a ruby developer for the CodeRobot company so that they can move forward without my involvement. I also guided another web developer to continue working with the CATS project in It's not self-boasting, but I did learned a lot this summer. I find it grateful :-) After the GSOC project officially finished on Oct 1st, I'll have only two commitments left next month-- one full-time web development with Prof. Anthony and one part-time backend development for Wanmen's content management system. Hopefully, I'll get to be more focused.


One lesson I notice among great people is that they normally read a lot! I should learn from them.

Another lesson I learned this week about losing weight comes from this BBC video. I started to practise the tips. Wish I can persist in long term.


Popular posts from this blog

InnovFest 2015

I attended the innovFest 2015 event. It was quite eye opening. Besides the booth, some topics in the forums also interested me. The first topic I joined was the Kopi Chat with Yossi Vardi, a famous Israeli entrepreneur and investor. He is straightforward and humorous. When talking about the most important reason why people wake up with a great idea but ended up sleeping without executing anything, he collected answers from the audiences. One answer pretty much fitted his appetite-- "People fear about losing faces". He shared his opinion with the quotes from Theodore Roosevelt, “It is not the critic who counts; not the man who points out how the strong man stumbles, or where the doer of deeds could have done them better. The credit belongs to the man who is actually in the arena, whose face is marred by dust and sweat and blood; who strives valiantly; who errs, who comes short again and again, because there is no effort without error and shortcoming; but who does actually st

Time Goes By, So Fast

It's been a week since the last blog entry, time goes by so fast. This week's highlights: 1. Rethought about career development. 2. Treated my friends a traditional Shaoxing meal. 3. Started to learn Ruby on Rails. 4. Started to read the book "Simple and Usable Web, Mobile, and Interaction Design" by Giles Colborne. 5. Recorded some vocals. 6. Watched this Ted speech: 7. Followed Ahbei(founder of Douban) on Zhihu(Chinese version of Quora). 8. " 我认为世界上不存在一流的人才,世界上只有存在一流的人才一定是学习能力,谦虚,把自己当平凡的人" --马云(Jack Ma)

Consistency Matters

I didn't post anything last week, which means consistency has been broken. There's a need to reflect the task management skills, otherwise I'm very likely to driving the wrong road Priority changes. A good exercise would be to list the priorities down everyday and assign reasonable time to the tasks. Then never second-doubt. 100% focusing on the task when doing it. Priority changes from time to time.  Human minds are single-threaded, thus, we'll need to keep focused when doing one particular task. Be Grateful. I received the confirmation from NOC Israel that I got admitted by the programme and I'm heading to Israel next Jan:-) Thanks a lot for Prof.Ben and Karl's help. Ultimately, it might be a plan from God. Thanks every one. The additional interview from Google went well, however, I didn't get the winter intern opportunity this time. Though it's a bit too greedy to ask for too much, I still feel a bit sad after informed that I didn't get th