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

2018 New Year Resolution

This year, let me try to draft the new year resolution based on the Willpower Instinct: Step 1:  List down the best things of the past year. 1. I proposed to my fiancee when she and her mum visited Singapore in July. We were then registered as officially married on her birthday on 28th Nov in Beijing. It was really the most important event of my life so far. After years' of long distance relationship, we finally made it. Though it will still take her another half year before coming to Singapore, we were both thankful that we really made it. 2. I bought my own apartment. It was a tough process to look for properties. I was so happy when I received the keys. Before that, I shared with my bedroom with my room mates for 3+ years. 3. Fooyo's sales was quite satisfying. We has two big customers, one in the Tourism Industry and another in the Logistics Industry. The products we produced were pretty pioneering and beneficial to the industry.  4. Fooyo succ

Time to Write sth about the NOC Israel

After more than a month's waiting, I received an email today from the Financial Aid office saying that I am not permitted to go for the NOC Israel programme.  Dear Shaohuan I refer to your appeal to participate in NUS Overseas College (NOC) Israel.   As spoken on 6 November 2012, we understand that you are very eager to attend the NOC and we had submitted your appeal, together with the appeal from NOC to the sponsor.  However, we regret to inform you that your appeal to participate in NOC Israel is not successful.   The sponsor has advised that you look for an internship locally instead, if needed.   We wish you all the best.  Actually, I was informed by the NOC coordinator that she has been informed by her colleagues that the sponsor officially rejected my appeal(together with Prof.Ben's and NOC's appeals) on 21st Nov. She tried to confirm with her colleagues whether the decision is final or not, hoping to help me for the last try. However, I guess the result won't b

IPAD/FB Seminar- Thoughts on Pulse News

Monday's presentation was full of interesting sparks. Of all the eleven teams, only one chose to present FB app, which is Sims Social. The others all chose to present ipad apps. That's not so surprising as Ipad(Tablets) is the most recent platform and there are a lot of blank spaces for us to fill in. The ten ipad apps shared in the seminar covers various fields like e-payment, news-media, education. What surprised me most is that many of us find education a very promising area for mobile app development...As ipads are being utilized as an educational tools in various educational levels, education is really going to be a great pie. Wait, I need to finish comments for my assigned app first. Pulse News, a news media app with good social features. News media are getting more social and mobile and probably "cloudy" in the recently years. Organizing news media contents can be a promising area since there are always interesting things happening around and people just have