# Written interview

## Education

### How did you fare in high school mathematics, physical sciences and computing? Which were your strengths and which most enjoyable? How did you rank, competitively, in these subjects?
I'm not good at high school mathematics at that moment. But since I've learned how to do the programming, I then know how exactly logic thinkings are, which starts to make the math learning an enjoyable thing.

Talk about 'computing', this is definitely my favorite subject, but unfortunately, my high school didn't offer such an subject, so I learned everything by my own.

The school also do not offer physical-sciences subject either, but I learned it at middle primary school previously.

If you ask me to do a rank about those subjects, I would definitely put 'computing' at the top.

### What sort of high school student were you? What would your high school peers remember you for, if we asked them?
Just normal high school student.

They will always remember that I'm a hard-working guy, which spent most of the time to do the learning.

### In languages and the arts at high school, what were your strongest subjects and how did you rank in those among your school peers?

My strongest subject is English. And I could say I'm the best in that subject among my school peers.

### Please outline some high school achievements considered exceptional by peers and staff members.

1. the first man who speaks English fluently
2. the first man who learns how to do Python programming all by himself.

### Which degree and university did you choose, and why?

#### Associate degree: Nanjing Institute Of Railway Technology
I choose it simply because at that moment I don't have enough choice. I have a low score on College Entrance Examination.

~~But I still choose the one that is related to computers most, which is: Communication and Information Technology~~

#### Bachelor degree: Beijing Jiaotong University
I choose it simply because it has a cooperative relationship with the last university I attended.

### What did you enjoy most about your time at university?
Sitting in the library, do the coding, or read a book.

### Which university courses did you perform best at? How did you rank in your degree?
`English` and `Data Structure and Algorithms`

I think they can be put on the top, since it seems like nobody is doing better than me in programming at the university I attend.

### Outside of class, what were your interests and where did you spend your time?
Generally speaking, there has two part: 

1. In library, I do the coding or reading.

2. In a lab, where I play with robots (cars, drone, arms and so on), do the low-level hardware coding.

### What did you achieve at university that you consider exceptional?

1. Made a lot of prizes in robot matching.
2. Have a trip to japan for free because of the honor I bring in for the university.
3. Pass the College English Levels 4 and 6.


## Career development

### Please describe any experience as a professional software engineer, working on commercial products.

Use Flutter(getx) to make the home page of a stock app. It includes the realtime market overview page and the detail page of a stock.

From this project, I have learned something important for developing flutter applications.

For example, how to get real-time data. how to refresh a widget when new data comes automatically, and how to switch to different pages by using routes.

It's quite successful. It meets every requirement of what a trading app should have. And it's now been published in the AppStore. You can see it here: https://www.igoldhorse.com/cn/download

### Please describe any experience as a software engineer working on internal company projects rather than commercial products.

#### 1. Analytic Article Management System
This is a simple management system that was written with Python And React.js.

Python needs to save article information that comes from the front-end.

And an interesting part about this project is that the user can upload a docx file as an article. (Due to that, we need to parse that docx file and convert it into an HTML page. In general situation, I think it would be better to directly let users edit the HTML code, then do the following work

It's working pretty well for it does what it requires. And because of that, now the stock app has some information(articles) that users can read.

#### 2. Golden Securities Account Management System
Here we use vue3 and element-plus to make forms, tables, pages.

It does the status management of a general securities account opening.

Such as taking information from users, manually verifying if the user is qualified, drop out it to the pool if the user is not qualified.

We even have the role/permission management system inside.

And along the way, I've learned so many things about web development.

For example, take the information from the input of users by using element-plus components. And load it back to those components by using the server's data.

It completes the whole process of what an online securities company should do. It makes the business work as a whole and gives other employees the chance to contribute to the securities business.

#### 3. Golden Securities Help Center
This is the management system for Frequent Questions and Answers.

It uses vue3 and antdesign.

It leverages the tree component.

It let those average people could modify the 'Help Center' content without a developer involved.

### Describe your skill in your preferred development language, and how you attained it.
```python
print("""
I basically could use Python to do anything. Because the python community already covered a lot of areas in tech history. All I have to do is to use those popular libraries.

For example: Flask, FastAPI, Django, Numpy, Pandas, Keras, Pytorch, transformers, librosa, MoviePy, databases, pyboard
""")
```

I learned all those programming skills by reading books, posts, and watching youtube videos. And of course, it has to thank the help from Google.

> It all starts from a book called: `OReilly.Introducing.Python.2014.11.epub`


### What are your strengths as a software engineer?
I'm super good at writing understandable docs.

And I'm also good at pythonic variables, functions, class naming.

And of course, since I did a lot of leetcode programming, so I'm also good at data structure and algorithms.

### What experience do you have with Linux system administration? What is the largest group of servers you have helped operate?
I'm personally a linux user, I use linux everyday. If one thing could be done with command line, I won't do it with UI.

And then, I've bought countless VPS now and then, since I need to set up VPN and some little projects from time to time.

The largest group of servers? probably 99, but I never have a chance to really operate on all those machines. I simply wrote an `ansible script` for the company I work on to automatically set up a service.

### What experience do you have with site reliability engineering, keeping production services online and available?
Use `docker-compose`. Because it will auto start and keep services running.

Sometimes I also use `crontab` or `systemctl(systemd)`.


## Experience

### Describe your level of experience in Python, and how you have attained it.
I think I'm in the middle. I could use Python to do a lot of things, but I can't modify or contribute to the Python source code.

I reach this level by doing a lot of code, and practicing in real projects, in different areas.

### When did you start working on Linux? Describe your level of experience as a user & developer on Linux.
2016

When I'm in Linux, I feel like everything is configurable, everything is under control.

### Describe your experience with container technologies (Docker, LXD, Kubernetes, etc)
Docker || docker-compose: I simply know all those features.

Kubernets: I only know `kubectl`, the basics.

### How do you prefer to drive documentation for your products?
By using `markdown`.

By using auto-generation tools.

### How do you think about quality in your products?
1. It has to be stable, so the service is always online and working normally.
2. It has to be scalable, from both network structure and software structure. 

    (For network level, it has to be able to utilize load-balance and micro-service-mode(JWT))

    (For software level, it has to be sperate into different sub-modules when necessary)

### Describe a case where it was very difficult to test code you were writing, but you found a reliable way to do it.
Write logs.

### What would you like to achieve in career development and skills development?
Become CTO or CEO.


## Context

### Are you involved in open source software?
Yes

### Describe any significant contributions to open source (with links where possible), if any
I've added quite a lot of docs for others' open-source projects

But if you are only talking about code, I personally maintained one repository, auto_everything. It is a python package that does automate things under Linux.

https://github.com/yingshaoxo/auto_everything

### What do you think are the key ingredients of a successful open source project?
1. Solve real world problems.
2. Easy to use.
3. Involve people in, no matter if it is developers or users. Because after all, people have to know this project, then they'll be able to use it.

### Why do you most want to work for Canonical?
1. I think Ubuntu is a great project. So the company behind it is also a great company.

2. I'd love to work for global companies.

### Which other companies are building the sort of products you would like to work on?
Google. 

Docker, Inc.

Rancher Labs.

Tencent.

Alibaba Group.

Meta(Facebook).

### Which companies have the most interesting approach to devops and site reliability engineering?
Google. Despite they use Kubernetes. They also created a platform to automatically check if a site is up or down, and how many problems a site has.

https://search.google.com/search-console/about

### What do you think could raise the bar for site reliability engineering, globally?
1. Use docker-compose.
2. Use Cloudflare.

### What do you think Canonical needs to improve in its engineering and products?
I never worked for Canonical before. So I don't have advice for the engineering part.

But if you just ask for product advice, that would be: I think the ubuntu team could try to hire a UI/UX designer to improve the beauty of the gnome system.

### Who do you think are key competitors to Canonical? How do you think Canonical should plan to win that race?

System76: https://pop.system76.com

deepin: https://www.deepin.org/index/en

Plan in hardware: See if you can get inspired from `system76`, try to sell mobile hardware. Order first, Produce later (https://ubuntu-touch.io

Plan in software: Learn from `deepin`. Try to merge the Android and Windows simulators into the ubuntu platform as a feature.

