My second and third Co-op rotation is from January to August 2013 with Compunetix. I separated them into two posts. Part 1 is from January to May. Part 2 is from May to August.
Compunetix is a telecommunication company. I was in video system division. I was hired mainly to develop iOS apps for video conference control.
The First App iWOC
My first App is called "iWOC". It is iOS client to control the video conference.
Video conferencing is different from one-to-one video chat, e.g, skype, facetime. Video conferencing is used by companies rather than individuals. Setting up and controlling a video conference require a control server. iWOC connects to the control server via HTTP and sends requests wrapped in JSON.
HTTP,JSON and REST
iWOC sends HTTP asynchronous requests to the server. e.g creating a conference, adding endpoint to a conference, changing a conference video setting.All parameters were wrapped inside a JSON object. I used JSONKit to create and parse JSON string.
NSURLConnection and NSURLConnection API are used to send HTTP request.
The control server does not keep the state of the iWOC. The sent requests include all necessary data needed by the server.
The control server provides one single URI address for iWOC to send requests.
Based on the above characteristic, I can conclude that iWOC is a REST (Representational state transfer) client.
Event Notification Push
To inform clients the change of the conference in realtime, the server usually will push an event notification to the client and the client should change the UI accordingly. The problem was that iOS does not support AJAX push the way JQuery does.
I hacked it by making iWOC send the "listEvent" request to the server and asking if there is any event periodically. After receiving the response from the server, the app will send a new "listEvent" request to ask if there is any event .
It is like:
the UI screenshot
Translation Project
There were two software inside Compunetix whose interface were translated into Chinese and Japanese by Google Translation. The translation quality was basically unreadable.
I spent two weeks to translate them into Chinese and Japanese on my own.
Translation File Parsing
All my translation files were saved as .docx. It was difficult for my co-workers to use it.
I saved the file as XML and wrote a python command tool. The python command tool parsed the XML file and generated text files. I used Beautiful Soup for parsing.
Beautiful Soup parses the XML file and returns a nice XML tree. The program then just does the tree traversal and extract the information. It then saves information into text file.