In Jan 2021, I had the chance to start my first internship at baixing.com 百姓网 :baixing-logo: (formerly Kijiji China). The company was founded in 2015 after being re-branded from Kijiji China.
It essentially offers a https://en.wikipedia.org/wiki/Classified_advertising platform and local marketplace for cities in China. The main services that the company provides include job hunting, automobile and apartment rentals, education, and much more.
The team I joined was called Mira, which was an internal startup team aiming to create an in-flight AI based video editing and storage solution. I wanted to share a little bit about my experiences throughout the 12-months, what I learned, and some self-reflections.
I want to start off by breaking down the entire 12-months in half, with the first 6-month of me interning at Baixing and the second 6-month of me at MiraVideo (since the startup team was established as a separate company).
I want to start off by discussing my experience at Baixing. As my first ever internship, it is fair to say that the interview and first couple of weeks was a pretty daunting experience. Though, as I gradually grow as a part of the team and gained more experiences throughout the 4 months, this internship turned out to be one of the best experiences I have ever had! I will break down the 4 months at Baixing into different periods, mainly based on the project that I was working on.
The interview starts off by having a quick chat with some of the team members, as well as the CEO Jianshuo Wang(王建硕).
I was intially quite shocked that the CEO himself is taking the time to chat with an intern candidate. What’s more surprising is that late on, I realized he also built a lot of the video editing libraries we were using, also comes into the office and codes with us 3-4 times a week.
Later on, I moved onto a take home assignment round.
<aside> 🧑💻
The Task
I was given 3 video streaming platforms, BiliBili, TikTok, and Youku.
My task is to create an automation system where the user inputs a keyword/category, the system should then perform a search query on all three platforms, and download the topN
vidoes returned from the search result. Where topN
is also an use input that specifies the number of videos to download.
</aside>
I was given three days for researching and coming up with the implementation, and on the fourth day, I need to code it out in an hour in front of the team. Since I was a first year student, I was also granted the privilege to seek for advices, help, or ideas from the current team members. Needless to say, as a first year student with no experience in automation or webscraping (or anything), I struggled a bit at first to come up with a scraper using Selenium and Chromium. I ran into lots of problem with authentication and anti scraping system that these platforms have.
The final solution was somewhat of a finesse 😶🌫️. One of the engineers on the team told me about a tool called Appium, which is used for click-automation on IOS and Android devices. That was the perfect tool for me since I don’t have to worry about bypassing anti-scraping anymore. I quickly came up with an auto-clicking implementation with Appium on my Android phone and was able to code it up in 27 minutes on the fourth day.
As a side note, the task I was given was not the usual task that a candidate gets. An usual candidate will have to go through the coding challenge called mini-chaoge (迷你朝歌), where they have to finish a fullstack app that functions like the baixing.com homepage.
Wechat miniprograms are essentially mobile apps that runs on top of Wechat. Wechat provides you a developer account and portal for accessing all resources used for it. It aslo had to be written in the Wechat frontend languages (wxss, wxs, wxml).
Mira Educator was my first ticket, I had to complete a new feature for the app to enable in-app video editing. As my first ticket, the task itself isn’t too technically challenging (besides learning about Wechat languages). I spent a majority amount of time on getting myself famaliar with the dev procedures (daily reports, ticket management, permission setup, how to seek for help, etc). I thought that was the perfect ticket to get myself started.
There was also a huge mall right beside my office building. We usually grab lunch there as a team, there are way too many shops there so we usually try a different place every day.
Next up, I was assigned a research and PoC design ticket of PaddlePaddle where I actually have to do a lot more including writing design docs, building an app from scratch, and present the MVP at the end. For this task, I built out a video tagging system that utlizes PaddleVideo for filtering and categorizing a sample video database. Eventually, I presented this at a monthly tech-talk, and this PoC actually got approved!
Meeting picture for the video tagging demo