This article was selected for the special issue “See You, 2014”

Looking at the “Network Fee Settlement” section marked “Exempt” on my school departure form, I was filled with mixed emotions. I might be one of the few students who never activated the “Network Pass.” Because in the computer room of the Youth Academy, I didn’t need the Network Pass, and later with the LUG server, I didn’t need it either. Now, sitting in my dorm room, I use a wireless signal amplifier to connect to ustcnet from the East Activity Center. Actually, I don’t really care about the 20 yuan monthly network fee. Not activating the Network Pass is more of a symbol, a connection to fragmented memories, a tribute to the quietly passing youth. Just my personal musings, don’t criticize.

10 Years Ago: Programming Began with Tan Haoqiang

When I first entered junior high, I heard about computer competitions. Somehow, my parents thought computer competitions were about playing games. I didn’t know to check online, so I believed it. A month after the course started, a classmate told me that computer competitions involved many problems like those in math competitions, which I should enjoy. My parents then verified with the class teacher and found out that computer competitions were about programming. At that time, my understanding of programming was like the uncle who fixes computers typing commands in a black box. When I taught a classmate to make a website in college, she also referred to the Windows command prompt as a black box, which made me chuckle. We all started from there.

The first time I attended a computer competition class, the computer room with 40 seats was packed with over 60 people, and I didn’t even have a seat. The teacher was explaining printf on the blackboard, and the students were dozing off. Seeing everyone with a green-covered second edition of “C Programming” by Tan Haoqiang, with “7 million copies sold” on the cover, I felt Tan Haoqiang was a computer god second only to Bill Gates. I heard that a senior even bought “Introduction to Algorithms,” although it was a bit expensive, he still “invited” a copy to worship. The reason for worshiping it was that it didn’t have directly copyable C code. Can a book without code be called a computer science book?

The computer room had some rules that seem puzzling now. For example, you had to wear shoe covers to enter the computer room, and if you forgot them, you had to go back and get them. After the computer was on for a while, it had to be turned off to rest, partly to let the computer rest and partly to reduce human exposure to radiation. However, my introductory teacher had great foresight in programming languages. At that time, Pascal source code was everywhere in the computer competition circle, and we often complained about the difficulty of finding C language source code. But he said Pascal was an outdated teaching language, and C was the orthodox language we would use in the future.

My teacher probably never taught university computer courses or interviewed for internet companies, but his methods of torturing us were similar—paper programming. After writing the program, the teacher would input it into the computer, and if there were any compilation errors or incorrect results, we had to copy the correct program 50 times. This devilish training made us extremely sensitive to punctuation in programs, which might be why I’m not very fond of code editors even now. I felt my programming error rate increased significantly after entering university, possibly due to relying on debuggers: expecting the debugger to solve bugs, I became careless when writing code.

Solving problems is always boring, and there had to be some pranks in the computer room to make it fun. The most popular prank was ARP spoofing. Although we didn’t know what ARP was, we could always download some small tools from the internet, which might or might not be viruses. Once run, the entire computer room couldn’t access the internet. The teacher sitting at the podium couldn’t access the internet either, so he would come down to check. At this time, the prankster would quietly turn off the tool, and everything would be back to normal as if nothing had happened.

A more “advanced” prank was data theft. The computer room had some registration systems (such as the college entrance exam information collection system) and exam systems (such as the middle school computer exam practice system). These systems’ data were often stored on local hard drives without encryption. We would try to open these Visual FoxPro or MS Access databases, and you know the rest…

6 Years Ago: My First Website

In the blink of an eye, I was in high school. The computer competition continued, but the mysterious classmate Xiao led me into a new world. Xiao created the “Cosmic Public Welfare Organization,” with a decent homepage, and often taught us about antivirus and network attack and defense techniques. I was determined to learn “hacker” techniques from him, but instead of learning hacking, I learned to make web pages, which was just using FrontPage to create and upload them to FTP.

My personal website originated from a high school computer class assignment to “create a website.” Most classmates made one or two pages to get by, but I made about ten. Since many of my elementary and junior high projects were done by my grandparents, some classmates questioned, “Did your grandma make this again?” However, none of my family knew how to make websites. On the contrary, they often saw computers as demons harming the physical and mental health of teenagers.

Due to the lack of a platform for information dissemination and resource sharing in the competition class (social networks were not as popular back then), I positioned my personal website as a class information portal and even shamelessly created a “BoJie Learning Network” entry on Baidu Encyclopedia. I liked writing articles and was bold, so the website quickly had a bunch of math and computer competition materials, class information releases, and some current affairs comments. The website occasionally held special events, such as a memorial for the Wenchuan earthquake a month after the site went live, turning the entire site gray.

Initially, I was tinkering with secondary domains provided by free static web spaces. Every time the free space went down and I had to change the domain, I had to announce it to the class. Later, Xiao helped me get a top-level domain, boj.pp.ru. I originally wanted lbj, but it was taken, so I used boj. My commonly used username comes from this. When there was “important news” on the website, I never lacked publicity channels because Xiao was in charge of the class blackboard newspaper, and my website often got an ad spot on it.

When the website looked unsatisfactory, it naturally needed a redesign. Redesigning involved two types: changing the style and changing the classification. Changing the style meant modifying the style of each page individually since the website was made with FrontPage table layouts. When the style became complex, it was easy to misalign a few pixels when modifying each page. So, I made a template, copied it many times, and pasted the content of each original article into the template. Sometimes, I forgot to update individual pages, resulting in suddenly jumping to an old version page while browsing. Changing the classification meant moving articles from category A to category B or adding new categories. This seemed simple, but the links on the directory page, homepage, and other related pages had to be manually modified, easily causing dead links. At that time, I didn’t know about dynamic pages or that article content could be structurally stored in a database.

The first time I used dynamic pages and a database was to create an information query system for the class. I can’t remember what it queried, but I found some ASP code online, uploaded an MS Access database to the web directory via FTP, and it worked. (That free space supported ASP and MS Access, but I had been using static HTML!) However, the URL of this MS Access database file was quickly discovered and downloaded by Xiao—this was the real data breach!

Interlude: The Story of “Introduction to Cheating”

In the computer competition circle, there was a famous book called “Introduction to Cheating.” I borrowed this name and created a math competition version, later changing it to a more dignified name.

Above: Cover of "Introduction to Cheating: Math Competition"Above: Cover of "Introduction to Cheating: Math Competition"

Above: Partial Table of Contents of "Introduction to Cheating: Math Competition"Above: Partial Table of Contents of "Introduction to Cheating: Math Competition"

After “Introduction to Cheating: Math Competition” received good reviews (I selectively ignored the bad ones), I created an informatics competition version in the same way. Of course, looking back now, there are many laughable parts. Because I wrote some text at each stage, looking back, I feel my earlier self was a “folk scientist.” Therefore, I feel “folk scientist” is not a terrible term. Five years ago, I was a folk scientist in my current view, and why wouldn’t I be in the view of someone more experienced? “Folk scientist” is not scary; the following two behaviors are:

  1. Staying in self-created theories, not learning from others, and not accepting fact-based criticism;
  2. Being afraid of being called a “folk scientist” and thus being timid and not daring to do things.

Above: A page from "Introduction to Cheating: Informatics Competition"Above: A page from "Introduction to Cheating: Informatics Competition"

At that time, I participated in math and computer competitions and occasionally dabbled in physics competitions. Surprisingly, I had time to write so much, fully reflecting my nature of not doing proper work. On the eve of the 2009 NOI, while other provincial team members were solving problems, I compiled the following “Theory of Numbers.” Unfortunately, only one issue was published, and the content for the second issue was never completed. After entering university, I became even more indulgent. In the first semester of my sophomore year, due to poor grades, I switched from the math direction to the computer direction. However, this did not stop my grades from declining. I failed three courses in my sophomore and junior years. Since there were only two retake opportunities, my graduation transcript still had one failing grade (which I passed after retaking). Fortunately, during interviews, no one seemed to ask about my failing grades. Interviewers were more interested in my poor math grades in my freshman year.

Above: Table of Contents of "Theory of Numbers" magazineAbove: Table of Contents of "Theory of Numbers" magazine

Above: A page from "Theory of Numbers" magazineAbove: A page from "Theory of Numbers" magazine

5 Years Ago: My First Forum

The content of my personal website quickly exceeded a hundred articles, making manual maintenance increasingly difficult. So, I created a forum on the free space provided by Discuz! and named it “Theory of Numbers.” I originally wanted to move all the articles over, but the forum’s formatting was inflexible, so I basically started from scratch. Of course, free forums had their limitations, such as a 2 MB attachment size limit, often requiring “split compression” of materials before uploading them one by one. Today’s website builders are much luckier, with free services like GAE and SAE, without worrying about them disappearing without a trace.

Above: Today's forum homepage. It hasn't changed much since I stopped maintaining it in 2010, except for some ads forcibly added by the free space provider.Above: Today's forum homepage. It hasn't changed much since I stopped maintaining it in 2010, except for some ads forcibly added by the free space provider.

After securing my guaranteed admission, I decided to develop my own forum to avoid the formatting hassles of Discuz! forums. So, I gathered a bunch of materials like the one below and started learning PHP.

Materials for learning PHPMaterials for learning PHP

By the eve of entering university, the forum had 20,000 lines of code (less than 10,000 of which I wrote myself), but the interface was very simple and far from usable. This was my first (failed) attempt at developing a real project, and I realized the significant difference between software engineering and computer competitions, not just in the amount of code but by an order of magnitude.

4 Years Ago: From Gewu Zhizhi Physics Forum to Gewu Network

Less than a month after entering USTC, each dormitory received a copy of the “Gewu Zhizhi Newspaper.” As new students, we were in need of newspapers to wrap things, and the “China USTC Newspaper,” “Youth Class Academy Newspaper,” and “Gewu Zhizhi Newspaper” came in handy. However, I noticed a call for papers in the “Gewu Zhizhi Newspaper” and submitted an article to the “Editor’s Mailbox.” Later, I found out that it was the founder of the Gewu Zhizhi Society and one of the few members at the time.

Call for papers in the "Gewu Zhizhi Newspaper"Call for papers in the "Gewu Zhizhi Newspaper"

I hoped to continue the academic forum format from high school to USTC. But there were two difficulties: first, school policy did not allow private forums; second, the school did not have servers to host forums. Under the guidance of Senior He, the founder of the Gewu Zhizhi Society, I first found Senior Zhou, who managed the Youth Class computer room. He found an old PC in the server room, installed the CentOS system and Apache Web server, but said he didn’t have time to set up and maintain the forum for us, so I had to look up information online myself. At that time, my understanding of Linux commands was limited to a few commands memorized for the NOI written test (NOI is an exam on a custom Linux distribution, but I only knew how to use an IDE). After a week of tinkering, with the help of essential commands like chmod 777, I finally set up the Discuz! forum.

After the forum had some initial content, with the support of our homeroom teacher and Mr. Zhao, who was in charge of the Youth Class Academy’s network, we finally got the dean’s signature and applied for the domain gewu.ustc.edu.cn.

Above: The abandoned Gewu Zhizhi forum homepage, which became a haven for spam posts due to lack of maintenance.Above: The abandoned Gewu Zhizhi forum homepage, which became a haven for spam posts due to lack of maintenance.

The online Gewu Zhizhi forum and the offline physics discussion board complemented each other, and I became quite elated. We hoped to take the Gewu Zhizhi forum beyond the school and turn it into a nationwide online academic discussion area. We formed a network team within the Gewu Zhizhi Society and drafted the following “development plan” (click here to download the “Gewu Network Development Plan” from that year). We even enthusiastically sought sponsorship from Lan Sheng (a company that makes posters) with our plan, but were rejected. Subsequent development was also not smooth; most of the network team members were not interested in acting as water army, so the forum content targets were not met, and internal publicity was not completed. However, external access was opened as scheduled.

Excerpt from the Gewu Network Development PlanExcerpt from the Gewu Network Development Plan

Ambition without a realistic foundation is terrifying. Near the end of the first-year winter break, just as the physics forum was incubating, we began to envision “Web 3.0.” Click here to download the “Gewu Network Design Document” from that year. From the table of contents and content excerpts below and a presentation slide, you can see the feasibility of this plan.

(Note from 2024: This “Gewu Network Design Document” was written in January 2011, when I didn’t know about Bitcoin and yet proposed virtual currency and shared profit distribution. This memoir was written in June 2014 during graduation season, when Ethereum had not yet ICOed, and the concept of Web3 had not been proposed. When promoting Bitcoin in school during my undergraduate years, not many people were interested, and mining on Freeshell brought us quite a bit of trouble. Therefore, in 2014, I thought Web 3.0 was unreliable. Today, the profit distribution mechanism of Web3 is called tokenomics. Truly, ideas are cheap; there is nothing new under the sun.)

Above: Part of the Gewu Network Design DocumentAbove: Part of the Gewu Network Design Document

Above: Part of the Gewu Network Design DocumentAbove: Part of the Gewu Network Design Document

Above: Part of the Gewu Network Design DocumentAbove: Part of the Gewu Network Design Document

Above: Part of the Gewu Network Design DocumentAbove: Part of the Gewu Network Design Document

Above: A page from the Gewu Network presentationAbove: A page from the Gewu Network presentation

At that time, I had not yet broken free from the mindset of “do it yourself, have enough to eat” or “reinventing the wheel,” and wanted to build Gewu Network based on the unfinished forum code from high school. That winter break, besides a pile of documents and some barely running code, I had no valuable results. However, Gao, who was responsible for the math formula part, made a Flash-based math formula input tool and open-sourced it on GitHub.

This “Gewu Network” was eventually realized, but it was half a year later. During the summer vacation of my first year, while working on Robogame with the “Gewuzhe” team, I was also programming for the “secret plan” of Gewu Network. In fact, the actual programming time was only about two weeks; the preceding time was spent designing the “barbecue model”: “The reason why barbecue can be divided into various ‘levels’ is that barbecue is an ‘industry’ that has been highly modularized… Users who want to eat barbecue can have professionals complete these operations, or they can complete any part of it themselves and leave the rest to professionals… Let Internet applications also become like the current highly specialized industrial production, achieving full stratification and modularization, so that users can start from any ready-made general module, customize the remaining modules with minimal effort, without having to rewrite the entire system” (from a document in July 2011). Looking back now, this grand vision was obviously not something that could be achieved by one person, but in the wave of open source, I saw a glimmer of hope.

On the eve of the enrollment of the 2011 freshmen, the prototype of the website was finally built:

The first version of Gewu Network just launchedThe first version of Gewu Network just launched

In the ten days from the start of freshman registration, we set up projections to promote Gewu Network at the entrance of the East District bathhouse and on the road from the West District Student Activity Center to the cafeteria. We moved the physics discussion board from the entrance of the second teaching building to serve as a stand, borrowed projectors and screens from the Youth Class Academy and laboratories, moved tables and chairs from the dormitory buildings, pulled power and network cables from the nearby beauty and hair center and Xiaohei Supermarket, and obtained activity approval from the security office… Under the mobilization and coordination of founder He, almost all members of the Gewu Zhizhi Society in the school participated, taking turns guarding the two positions in the East and West Districts during the peak periods at noon and in the evening. Sometimes the projection showed the promotional video of the Gewu Zhizhi Society, sometimes it displayed live topics from Gewu Network (similar to a Weibo big screen), and when there was nothing else to show, we played the movie “The Social Network.” When students stopped to watch, we distributed flyers and invited them to register on Gewu Network on the spot.

Gewu Network indeed attracted many students to register, but due to many incomplete functions, students logged in a few times and found nothing to do, so they gradually forgot about it. At that time, we mainly strengthened the functions for clubs and classes. The organizational homepage on Renren was still a new thing and could not meet the need for file sharing, while instant messages in QQ groups were fleeting and not conducive to accumulation. This need indeed existed, and some teams discovered it, but whether due to promotion reasons or because the need was not strong enough, to this day, USTC students still do not have an online platform for clubs and classes.

3 Years Ago: The Youth Class Technical Department Started Here

Since setting up the Gewu Zhizhi forum in the Youth Class server room in my first year, I formed an inseparable bond with Senior Guo, the technical guru in charge of the Youth Class server room. Before entering university, Senior Guo was already proficient in Archlinux and was immediately recruited as a member of the USTC Linux User Group (LUG), the strongest computer technology club at USTC. He taught me to register for Gmail and join the LUG mailing list. Since I could only configure LAMP (later changed to LNMP by Senior Guo) and write web pages, and couldn’t handle Linux, the list of responsible persons posted in the Youth Class server room read: “Computer Room Management: Senior Zhou; Server, Network: Senior Guo; Web Services: Me.”

Near the end of the first-year summer vacation, students from the Youth Class Student Union approached a few of us, saying they wanted to establish a technical department to manage the Youth Class computer room and provide technical support for Student Union activities, and also to build a website for the Youth Class Student Union. We were already managing the computer room, so this technical department just gave us a title. Since I had organized several activities in the Gewu Zhizhi Society, I was elected as the head, with Senior Guo, Senior Ge, and Senior Pan as deputy heads, and the entire department had a total of 4 people.

When the fall semester started, the technical department recruited new members along with the Youth Class Student Union, attracting many new technical talents. Over the next year, we proposed many projects, but the only one completed was the website for the Youth Class Academy Week activities, ourscgy.ustc.edu.cn, built by the juniors.

Above: Homepage of the Youth Class Academy Week activitiesAbove: Homepage of the Youth Class Academy Week activities

Above: Software projects on the Youth Class Student Union Technical Department wikiAbove: Software projects on the Youth Class Student Union Technical Department wiki

However, most of the software projects listed on the technical department wiki that year were later realized. Among them, FTP and diskless systems existed before I entered the school, the Student Union website was made by the juniors, scgyshell was later made by me in LUG as freeshell, App Engine was later made by me in LUG as a blog, USTC Student Network became the university activity platform, the storage array was set up by the juniors but not used, offline download was made by me but no one used it, and the C language online compiler was scrapped.

Shortly after the establishment of the technical department, Mr. Zhao, with the support of the academy, upgraded and renovated the activity room for Robogame, establishing the Hands-on Lab. The music Tesla coil that shocked the East Activity Square during the 2012 Youth Class Academy Week was born in the Hands-on Lab.

Above: Tesla coil made in the Hands-on LabAbove: Tesla coil made in the Hands-on Lab

3 Years Ago: From USTC Student Network to University Activity Platform

Continuing with Gewu Network. During the summer vacation of my first year, I was basically the only one writing code for Gewu Network, and I had no design skills, so it was natural to think of expanding the technical team. During club recruitment, I joined the Network Work Office of the Youth League Committee and the Network Center of the Club Management Committee to find more technical talents. However, there were not many students at USTC who liked to tinker with technology, and my personal influence was not strong enough, making it even harder to find them.

We felt that we should organize a website development discussion class to attract technical talents to join the development of Gewu Network through training. Who should we collaborate with? Since I often participated in LUG activities and understood LUG’s technical strength, I decided to use LUG’s name. From the third week of the semester to the week before the final exams, except for the National Day holiday, we held activities every weekend, and the then LUG president, Lao Zhu, attended every session. The front-end design part was taught by Miao Miao, who prepared seriously each time and taught lively and vividly; I, on the other hand, had no experience in this area, and the back-end part I taught felt like those mandatory but boring courses. Ironically, I failed the database course in my third year, even though I taught relational databases in the discussion class in my second year and researched the application of relational databases in networks at MSRA in my fourth year.

Above: Course directory of the website development discussion classAbove: Course directory of the website development discussion class

Click here to download the historical materials of the website development discussion group

Over the course of a semester, a loose team of about a dozen people was formed. Our goal was to build two websites: one was a campus encyclopedia, and the other was a one-stop platform for club and class activities (campus information platform). Our plan received strong support from the school’s network center, but my own execution was poor, and my ability to rally the team was insufficient. Only a few students in the team completed their learning tasks during the winter break. In the following semester, due to my own busyness with LUG and everyone’s academic commitments, both websites were left with just a framework and did not progress further.

With the mediation of the school league committee’s network office, a few students from the Entrepreneurship Association and the Baidu Club joined the development of the campus information platform. They re-evaluated the website design and user needs, cut some formalized functions, and highlighted two core functions: activity information release and club member management. The campus information platform was renamed to the more user-friendly “University Activity Platform.” Wang from the Entrepreneurship Association was responsible for front-end development, Wang from the Baidu Club, Lin from the Youth League Technical Department, and I were responsible for back-end development. The activity platform finally went live at the beginning of the 2012 school year. This is huodong.ustc.edu.cn. Initially, we wanted to bring all the clubs on board, but due to development progress issues, we missed the prime time for club recruitment.

Above: University Activity PlatformAbove: University Activity Platform

Now, Lin from the Youth League is still maintaining the activity platform, and more and more clubs are using it to maintain contact lists and publish activity notices. I feel a bit of comfort, as this is the first project I initiated that has not died out.

Just after the activity platform was developed, the GeWu Entrepreneurship Team (formed by some old members of the GeWu ZhiZhi Society) called me, Guo, Zeng, and others to rent an office outside the South Gate at Hanhai Xingzuo to create an “organizational social network” and fulfill the unfinished wish of “GeWu Network.” With the experience of developing the university activity platform, to be fair, the positioning and function design of this website were much more reliable than before. However, the problem lay in the technology. We decided to use Python’s Django framework for development, and Guo planned to design a widget-based architecture. Designing the technical architecture is the “easiest” part. When I was working on GeWu Network, I designed it three to five times, each time producing dozens of pages of documentation. We were well aware of the consequences of these superficial efforts. However, technical discussions often end when the tech guru in the team mentions some terms that others don’t understand.

So, Guo spent a month or two designing the framework (digging the pit), I spent a week understanding the framework, and then we filled the pit together. During this time, the relatively independent front-end development progressed smoothly, but seeing the lack of progress on the back-end, the front-end team members’ motivation waned. Halfway through filling the pit, the release date for the USTC Blog (blog.ustc.edu.cn) was approaching, so we shifted our focus to that project, and the organizational social network was shelved. Later, we felt that the social network market was already saturated, making it difficult for the entrepreneurship team to attract investment, so we didn’t continue.

2 Years Ago: Becoming the Head of the Linux User Group

After organizing the website development discussion group in the first semester of my sophomore year, we felt that we should continue the weekly discussions in the second semester, with more focus on Linux. LUG Weekly Gatherings started from there. The student committee commented that LUG Weekly Gatherings were LUG’s signature activity. However, this signature activity also faced the difficulty of finding speakers, as not everyone has technical knowledge to share at any time, and some students don’t like to share their technical skills.

We tried multiple times to change the weekly gatherings to a free chat format, but found that conversations often drifted away from technical topics, wasting everyone’s time. This might be because LUG members are not professional programmers but are gathered together out of interest in Linux, with not much technical content to discuss. In 2014, the new leadership of LUG changed the weekly gatherings to introductory public lectures, returning to a format similar to the website development discussion group.

Probably because of organizing the weekly gatherings, I was promoted to president in the second semester of my sophomore year. Before the election meeting, I had never thought of becoming president. However, since I became president, I had to work hard. I wrote an article titled “My Year at LUG“ to summarize my experience.

Overall, I feel that I was not suitable for the position of president; CTO might have been more appropriate. That year, I did not contribute much to organizing activities and recruiting new members, but I managed the USTC open-source software mirror and broke it, and together with my partners, we created the USTC Blog (blog.ustc.edu.cn), virtual machine service (freeshell.ustc.edu.cn), and code hosting service (gitlab.lug.ustc.edu.cn). However, if I had not been president last year, I might not have been able to push through these network services against opposition, as the association’s veterans and my CTO peers focused on stability and maintenance. I was always reluctant to let go of the network services I created, so even after stepping down as president, I continued to act as CTO for a year, often discussing technical issues on the mailing list and launching a new VPN service (vpn.lug.ustc.edu.cn) for LUG members.

Above: LUG Server Maintenance Team's BlackboardAbove: LUG Server Maintenance Team's Blackboard

I can’t forget receiving server alerts at 2 AM, braving the cold wind, kneeling in front of the second teaching building to use the Youth League’s Wi-Fi to fix the server (all because the undergraduate dorms had no internet, and the mobile signal was poor); I can’t forget rushing to the Linux User Party to release the blog right after a minor surgery in November 2012, only to miss the deadline by two days and finally release it on my birthday morning; I can’t forget the frantic efforts to secure a new venue and fix posters when the event venue had issues.

Many people noticed my irregular lifestyle. In fact, I wasn’t following my biological clock but the machine’s clock—wherever there was a fault, it had to be fixed immediately; a bug or a feature might seem like it could be fixed in an hour or two, but in reality, it might take until the next morning. A year of being president cultivated my sense of responsibility: if I couldn’t solve a problem, I didn’t know who could, and it would never be resolved. Facing increasingly complex issues, this sense of responsibility left me with almost no personal life but also provided me with opportunities for growth.

1 Year Ago: From “Industry” to “Academia”

When I stepped down as LUG president in the second semester of my junior year, I had already joined the GeWu Entrepreneurship Team, writing server-side code for several products. I canceled my GRE registration, planning to pursue a master’s degree while experiencing entrepreneurship. At this time, my class advisor mentioned a “Microsoft Young Scholar” scholarship, and of course, I applied. After applying, I had to go through an interview, which was linked to the “Microsoft-USTC Joint PhD Program.” After passing the interview, I not only received the scholarship but also qualified for an internship at MSRA (Microsoft Research Asia). Initially, I almost declined, but after consulting with seniors, I decided to give it a try.

I was assigned to the Wireless and Networking Group. My first question to my supervisor, Dr. Zhang, was whether wireless ad hoc networks could be used for indoor network coverage—because our entrepreneurship team was working on smart routers (which was shelved after I left). After receiving the answer that “wireless ad hoc networks are very inefficient,” I realized that I lacked both theoretical foundation and technical accumulation, far from being able to lead a technical team.

During a summer internship, I was exposed to the new trend of software-defined networking, learned about the hardware architecture and programming interfaces of mainstream data center switch chips. The former might be learned in a school network lab, but the latter is hard to encounter in school. The learning opportunity was rare, and MSRA provided a comfortable working environment and flexible schedule, so I decided to stay.

After the start of my senior year, interviews with various internet companies began. Seeing some classmates submitting resumes, I thought, if I could directly apply to Google, I wouldn’t have to endure the hardship of pursuing a PhD. Somehow, this idea reached the MSRA supervisor of the joint PhD program, who warned me that quitting midway through a PhD would be “mentally and physically exhausting.” I suddenly felt like I had signed a contract of servitude, but on reflection, it made sense. Pursuing a PhD requires focus on one’s research direction, and distractions would hinder progress.

I’m not one to follow rules strictly. If I were to work on a large project in a big company, I might inadvertently hinder the team; however, research, which requires independent thinking, might suit me better. Over the next six months, I worked hard to find interesting aspects of academic research and improve my skills in network and system research. Now, I feel that I have indeed reached a new level this year, enhancing my unique abilities, and at least I feel I can make a living in the networking field in the future.

Earlier this year, our group was busy until New Year’s Eve rushing a SIGCOMM (a top conference in the networking field) paper, which was ultimately rejected miserably, mainly because we lacked understanding of the solutions used in the industry. Our group has a glorious history: the TCP congestion control algorithm (CTCP) in every Windows computer since Windows Vista was designed by our group; the most advanced software radio solution since 2009, SORA, was developed by our group; the first to combine router chips with x86 CPUs to process data packets within the network, ServerSwitch, was also our group’s achievement. However, the team has undergone changes and faced new fields, so we are starting over. But I’m not afraid. When I took over the LUG servers, the knowledgeable seniors had graduated, the technically skilled students were reluctant to act, and I was a complete novice. Yet, through trial and error, I solved problems and gained experience.

0 Years Ago: Graduation

It’s finally over. No, it’s a new beginning. Looking back at the past four years of university, it seems like I muddled through without leaving anything valuable. If I had written fewer design documents and thought less about unrealistic things like Web 3.0, perhaps the “organizational social network” would have been realized long ago. If I hadn’t gone to MSRA and stayed with the entrepreneurship team, maybe we would have become another competitor in the smart router market. If I had persisted in completing the projects in my software engineering courses at school and the advanced software engineering courses at Microsoft to a releasable level, I could have added one or two more achievements to my resume. However, history has no “ifs.” Gains come with losses, and losses come with gains. One should not be bound by “sunk costs.”

From these failed projects, my reflection is to start with small projects, write code quickly, and release products quickly. Don’t need dozens of pages of plans, and don’t need a team of several people. One person is enough, one month is enough. If there is no response after making it, discard the burden and move on. If there is positive feedback, then form a team to improve it. If a product intends to win by “rich features,” then don’t do it.

From a novice to where I am now, my feeling is to always maintain a learning mindset, expand the known world; dare to think and do with the known world, and don’t be afraid of being labeled as “amateur”; cherish the friends and mentors God has given you, as they will guide you and open a door to the unknown world; never worry about being one step behind, technology develops at the speed of Moore’s Law, and the numerical difference is not that significant when you take the logarithm.

Leading a team sounds very tempting, but not everyone has the ability to do it. I am one of those who lack this ability. During my four years in college, I tried various team roles and experienced a wide variety of projects, but I still feel that I am best suited to be a technical expert like Kong Yiji. Time flies, and whether it was worth spending four years to prove that this path is not feasible will only be judged in the years to come.

I dedicate this article to the memory of my lost youth.

Comments