My DevOps Story

by
Linfeng Wang


Team: Coding

Write Up Book: The Use of Knowledge in Society


About Linfeng Wang

  • LinkedIn
  • Github


  • Hi, here is Linfeng Wang. A CS master student in NYU. We gonna use DevOps method to build a DevOps concern website to introduce and practice DevOps. Sounds like a philosophy of life and nature. I responsible for coding in a group of ~10, and here is what I do in those weeks.


    Week Notes


    Week 3

    This week we(Tingjun Zhang and I) are allocated for task "Integred NYU Class, Stack and Trello to our website". We had the open source LMS(Learning Management System) called Sakai, which is the basement of NYU Classes. We also get some help from our NYU Classes developer Jeff Pasch. He give us the particular API that NYU Classes uses. I also successful got JSON from our NYU Classes with the condition of complete and maintaining NYU Multi-Factor Authentication in advance.

    mfa
    NYU Multi-Factor Authentication: it blocked as from login automatically.


    Week 4

    This Friday, we have a video meeting with Jeff. He told us that if we want to avoid Multi-Factor Authentication, we could use instructor's account to create annoucements. First, we try to show Trello and Stack on website by html or javascript. But I found out that Trello now must use its RESTful API to get infos, so if we want to do so, we need to decode those info and write an UI on our website to show info. There was a quick task for us in this week. The website has a html checker now and it needs a url checker. There are mutural python library tools, so it is easy to achieve. We also connected to staff from NYU IT department, they had experience about how to build "/class" command in Slack to create NYU Classes annoucements. We would try that in next week.

    Week 5

    This week I finally find out what wrong about my python. My python 3 get crashed sometimes and it only happens at specific situation. And I rebuild all my environment before this week task. Then I tried to build a new program(script) for stack. Because it is an individual part, I don't think I could commit this part and let others confuse about and rewrite what I just uploaded. In another word, it is not a part could use agile method, it should be the smallest unsplitable unit in our task.

    Week 6

    We could automatically forward all information from NYU Class to slack as a general announcement through IFTTT as long as we(now is my NYU account) could get notification email from LMS system. And you also could text “/class” command in Slack, but it would be denied since 1. Our Django website is not built so I have no where to place my Django script(I would try on AWS Lamda) and 2. LMS only have API for check, so we could not push a new one from Slack.

    email -> IFTTT
    NYU Class -> email -> IFTTT -> Slack.
    /class
    "/class" command registered in Slack.

    Week 7

    I write the document about how to use this integration and how it works. Also, we find out and fix those bugs in html checker.

    Week 8

    Spring Break.

    Week 9

    Go to Mountain View to have an interview.

    Week 10

    Rewrite url checker and html_checker code and push them to production. The problem of submodule solved. Also, about the new feature of html checker. There are a large amount of rules for html and now we gonna imple a few of it.

    Week 11

    Search and conclude the initial simple rule of html. Mainly reference to HTML5 Tutorial and HTML5 Style Guide and Coding Conventions. Base on those rules, I write a graph of logic and pseudocode, then write a java code of basic logic test code, after that I send to Tingjun to implement it in htmlchecker in python.

    Week 12

    Our colleges reported two bug to us. One is about "../" to jump out(it should be a warning now), the other is "html_checker.html does not exist". And it turns out that somehow the command of “submodule” in the script of “make local” doesn’t work automatically. We also have reported this problem to build team.

    Week 13

    Change some warnings to none and remove flags. As my team member(tingjun) solve utils submodule problem, we could start new nested checker using a simple two stacks structure.

    Week 14

    The nested checker part is finished. It only have four tags now. But easy to extend due to the priority settings. The start flag stack and end flag stack would record the order of it and if some other tag nested in "< p >", so far we ignore it.

    Week 15

    Contact with unit test member and do unit test. Thinking of writing a document of html checker if someone(like a test guy) could easily know what we have done.

    Week 16

    Update the document of html_checker and url_checker.