Rest and Flask

After winter break, it’s time to go back to our Capstone blog! During this tough time, there are no friends gatherings, no travel, no delicious restaurants, but I have a clear understanding of the basic information of the Flask web framework during this break. Although I cannot say that I understand all aspects of Flask, I believe I have enough knowledge to find a solution when I encounter a problem.

Flask tutorial is a very novice-oriented Flask tutorial, and now I am very familiar with the application of view functions and templates after going through it. This makes the code refactoring of the project I am taking over now very handy. At the same time, I am also trying to communicate with my team members to ensure they have enough knowledge about Flask to complete this project.

In terms of data visualization, group members and I are using Plotly technology to implement this user story, but currently, we have encountered a problem. When trying to represent multiple dashboards on a single webpage, we found that we can only represent one. Now we are looking for more in-depth Plotly literature to expand our skill pool.

There are three main tasks I should complete by the end of next week:

  1. Refactoring code (especially HTML code) makes our code more concise and readable.
  2. Find a way to represent the data via multiple dashboards on the same webpage by using Plotly.
  3. Make sure everyone is learning the knowledge that contributes to this project.

New Technology in Project

This is the seventh week of the project. My groupmates and I started to feel tired and not as full of energy as we were at the beginning of the project. I wonder if other Project workers have encountered the same situation? It seems that my team and I need a better way to balance work and rest to ensure enough motivation. This is also the seventh week of my term. While working on this project, I am conducting a course related to Computer Graphics. This is not an easy task for me.

Before this week’s project meeting, our team made a big step forward on the learning curve of Webpack and Ploty. But a few people are still a little unfamiliar with these technologies. I will try to help them reach the required level before the implementation of the project starts.

Core Concepts of Webpack

  1. Entry: Instruct Webpack which module should be used as the start of building its internal dependency graph. After entering the starting point, Webpack will find out which modules and libraries are dependent on the starting point (directly and indirectly).
  2. Output: Tell Webpack where to output the result files it creates, and how to name these files. The default value is ./dist.
  3. Loader (module converter): Convert all types of files into valid modules that Webpack can handle, and then you can use Webpack’s packaging capabilities to process them.
  4. Plugins: Inject extension logic at specific times in the Webpack build process to change the build result or do what you want.
  5. Module: The developer decomposes the program into discrete functional blocks, which are called modules.

Webpack Execution Process

After Webpack is started, the module configured in the entry will begin to recursively parse all the modules that the entry depends on. Whenever a module is found, it will find the corresponding conversion rules according to the configured loader. After the module is converted, the current module depends on the analysis. Module, these modules will be grouped by entry. An entry and all dependent modules are also a chunk. Finally, Webpack will convert all chunks into files for output. In the entire process, Webpack will execute the plugin logic at the right time.


Start Technology Preparation

Celebrate that I have passed another busy week, and have finished three midterm exams! In order to improve the communication between team members, we added a meeting on Monday evening. Originally, our purpose was to complete the collaboration of the individual assignment last week. However, we realized that there was no assignment for collaboration this week, so we switched to exchanging information about the project and correct definitions of some terms given in HP’s official documents. At the same time, I started to improve my development environment, such as configuring the Flask and React running environment.

In the middle of this week, I discussed the design tool selection and learning curve with people in the discussion group. Two (to be precise, one, because I already have the experience of using LucidChart) design tools were added to my learning plan and prepared to use them in the design part of the project. I started to use LucidChart as my default UML diagram creating tool after the recommendation of my previous group mates. It is indeed very intuitive to provide users with all the functions needed to create UML diagrams.

I am also learning to use TensorBoard. My project may also involve the use of TensorFlow for NN development in the later stage. TensorBoard is the official visualization tool of Tensorflow, which can be used to display TensorFlow images, draw the quantitative index graphs generated by the images and additional data. When using Tensorflow to train a large number of deep neural networks, we hope to track the information of the entire training process of the neural network, such as how the parameters of each layer change and distribute during the iteration process, such as the model after each cycle parameter update What is the accuracy of the test set and training set, such as the change of loss value, etc. And TensorBoard can record and visualize some information during the training process.

Later, at the meeting on Friday, HP provided us with the code of a part of the project that they have completed. After browsing and running these codes, I have a deeper understanding of the project partner’s performance of the final result of this project.


Improve communication

Week 4 is finishing and week 5 is coming! After two meetings with HP R&B lab, my team members and I have learned more and more about the project. So far our working group seems to have completed the first draft of the customer-oriented document. But after seeing the detailed documents provided to us by HP (including the parts of the project they have completed) at the meeting on Friday, I found that our understanding of this project is far from enough. HP’s microfluidic device that we will work with is the printhead, they provide lots of details about it. And they also assign the labor of the capstone project.

Our partner divided the entire project into two small tasks for our two teams to complete. Our team is assigned to the task of implementing the Data flywheel (mainly responsible for deploying the trained neural network, accepting data, and generating results through AI), while another team will complete the task of research on generative design. In the Data flywheel team, Jacob (the guide of our project) assigned further us three individual implementations so that the three of us have our own missions. It seems that it is time to increase the number of weekly meetings so that we can exchange more Transparent Data Encryption-related technology (of course, I will post links to the incisive related articles I found in the blog later). Moreover, the assignment of missions and the integration of them when completing also require a lot of discussions to decide.

I’m ashamed to say, but always think that our team’s weakness is the lack of communication, and this defect may hurt us more in the future than our unskillfulness in some certain technology. I think Monday night and Saturday afternoon would be good meeting times. On Monday, we can integrate the individual files of due on Sunday night and share the resources that we think are helpful to the project. On Saturday afternoon, we can sort out the questions encountered in the routine meeting with HP on Friday and send it to our project partner.


On track

Through exhausting Week 2, all the processes of missions start running on the track. During week 3, our team had the first meeting with the project sponsor. The background of project sponsors confirms that I will learn a lot in this project. They come from well-known universities such as Cornell, and most of them have PhD degrees from various fields, such as machine learning, electronic engineering and mechanical engineering.But because of the short duration of the meeting, we may still lack a lot of information related to project requirements. In this part, we will get more information in the follow-up email exchanges and follow-up meetings with Project partner.

This week I shared information about React.js with people in the discussion. React.js belongs to one of the three mainstream web app architectures. Among the three mainstream web apps framework, Angular’s application field is relatively narrow. Vue is relatively lightweight, so it performs well on small websites. React can be extended to the server end and the React Native can be applied on the mobile side. Some people may think that the use of React.js is too cumbersome. This is because When we discuss React, we subconsciously count the new features that are developed step by step in the React community. This may make React development look a bit cumbersome and bloated. But these cumbersomeness provide convenience for the development of large projects.

When I discuss with people that I want to spend my life on artificial intelligence or automation, some of them indeed question the possibility that these businesses may take away the jobs of factory workers. But what I want to say is that the difference between humans and animals is that people use tools. Regardless of how artificial intelligence develops, its role contracts to humans will not be different from that of the calculator. On the contrary, a convenient and powerful tool can better improve people’s lives rather than make them worse.


An imperfect start, but I will never give up!

After finishing the warm-up, the new school year began to work intensively. In the first three days of this week, I was waiting for the project assignment with excitement. However, at this time I did not realize that I had made many indelible mistakes. And when I realized this tragedy, it was already four o’clock in the morning on Sunday this week.

Until Wednesday of this week, I was busy completing the explorations and assignment of other courses this term, and I did not look through and understand Capstone’s plan for this week. Because I mistakenly thought that not being assigned to the project and team members would make it difficult for me to start this week’s tasks. On Thursday, after receiving the assignment result of the project, I slowly gathered my teammates, which finished on Friday night. After completing the Team Rules file that evening, it was a terrible deepening of my misunderstanding, there was still plenty of time. As a result, I missed the most important information in the announcement that the Instructor, Bill sent me. “If you haven’t contacted the Sponsor, this is very tremendously bad.” I did send a Reach-out email to my Project sponsor by using the email address provided by Bill on Friday night, but there was no mention of the request for a more detailed project description and scheduling a meeting because at this time I was still waiting for the reply from the last team member. While waiting for a response from the Project partner on Saturday. I tried to follow the Instructor’s commend to use project proposal and internet searches as a source of ideas to complete the Problem Statement. Finally found that this is a task of Hell difficulty.

At the end of this series of incidents, what was left was me who continued to sit in front of the monitor at 4 AM with a cigarette and tried to complete the Problem statement. This experience led me to sum up a few lessons, and I hope I can avoid these mistakes in my future study and work.

  1. Never trust weekend deadlines and Never start them on Thursday or Friday instead of start earlier.
  2. Don’t expect others can reply to you immediately, find ways to begin move and reach them.
  3. If it is really impossible to start in advance, try to understand all the information about this task (be able to write down the key points).

Finally, fortunately, I am not an easy person to defeat. Even if there is no perfect start, I will try my best to perform perfectly in the following. Now, first, complete what I can do.

  1. Reply to Instructor’s email, trying to get more help from him on how to contact the project sponsor.
  2. Send another email to the Project Sponsor requesting more detailed information about the project and asking the earliest possible time for the meeting.
  3. Read the Project protocol again and try to find more information from the Internet to complete the Problem Statement.

Hope it will go well in the future.


Hello CS world, it’s me!

As a beginner of the blog, there are endless missions to complete and knowledge to learn. But, first of all, I would like to talk about myself. I am an international Computer Science student who comes from a country on the other side of the earth.

Some people may think that I may have ambitious goals for learning CS from such a faraway place. Ashamedly, my motivation for starting to study computer science is actually because of the higher wages in the programmer industry compared to other industries. Because university tuition is not a small amount for my family, I want to be financially independent as soon as possible. But while studying OSU, I slowly began to be interested in the knowledge contained in computer science itself, especially the assemble language involved in the underlying implementation of computers and the NP problem involved in mathematics. Outside the course, Machine Learning, and the application of TensorFlow are the two main topics that I pay attention to them. Now I am looking for research opportunities related to AI. Therefore, the project, “AI Based Webapp for Microfluidic Design Automation” from HP is really charming for me. Well, I know such a good project will filter lots of applicants, so I am willing to be involved in any Machine Learning related project.

Finally, I have to say that I am a boring person who has few interests. Like a proverb from my hometown, I am surviving life instead of enjoying life. The life routine of me is learning and working, except for maintaining daily life. But who can say that this is not good, everyone has their own ambitions.