Post

2005 Year-End Summary

2005 Year-End Summary

My blog has been barren for a long time. I don’t know what I was busy with throughout December, but I never had time to write even a little bit. Now that the holiday has started and I’m back home in the warmth, I can finally write something.

First and foremost, 2005 has passed. Time for a summary. I won’t do a boring chronological record like last year. I’ll pick a few worthy topics and write about them:

Reading

Teaching

Traveling

Technology

Life

Other

Reading

From the beginning of 2005 until June was my first year as a graduate student. During this time I was mostly on campus taking classes to earn credits.

Overall, my life during this period was still somewhat like a student. I experienced staying up late surfing the internet and waking up at 11 to eat lunch; I experienced going with a few people to eat at the small shop at the entrance; I experienced cafeteria lines; I experienced falling asleep in class (falling asleep in class was once the only new skill I thought I learned in the classroom during grad school); I experienced intense final exam review; and I also experienced being late and skipping class.

The only things from these six months that left any impression were: in the first semester English class, performing Jingle Bells at the Christmas party with some classmates — I played a Christmas tree… In the second semester’s intermediate oral English class, performing “The Emperor’s New Clothes,” where I played the naked emperor, captivating the whole class with my “exaggerated and slightly pompous” acting… Other than that, almost nothing left an impression.

The roommates I lived with were all great friends. Each had their own characteristics. Yuan Lulai, also in computer software like me, struck me as very scholarly — diligent and eager to learn. His advisor was also someone devoted to academics. Sometimes I heard his complaints about grad school. He probably wasn’t an undergraduate at Tongji, came here with anticipation, and found more disappointment than hope. Gao Jingjing was a year ahead of us, a civil engineering graduate student at Tongji — serious, not very talkative, but very meticulous about things and people. Lu Chun, like me, did his undergrad at Tongji. He was known for rarely attending class yet still passing exams, and had strong opinions about things. I still remember the days of chatting with them. I remember after the first year ended, we had a farewell dinner together, then went to Fudan University and lay on the lawn in front of their newly built landmark “Twin Stars,” talking freely, and the carefree days of eating watermelon on the lawn in Hudong.

As for classes, I remember skipping almost two-thirds of English class, yet still getting enough points to qualify for the PhD exemption line (though I would never take it — it would be a disservice to the country, the people, and myself). The public courses on Dialectics of Nature and Scientific Socialism were memorized for exams and then forgotten. As for专业课, it seemed the teachers wanted to skip class even more than the students. Skipping, canceling, and finding substitutes was completely normal — many classes ended hastily after only 3 or 4 sessions. The teacher teaching Software Engineering had actually heard of the term SQA (don’t worry, he won’t disappoint — he pronounced Struts as “si-zhua-ke-ta” and thought it was a CASE tool). Watching complacent computer science professors make fools of themselves is one of life’s great pleasures in university — another teacher claimed that with a few grad students he could develop Windows, and another said Java AWT contained graphics card drivers… But I don’t understand why schools don’t introduce an SQA (where S stands for Student) system into higher education. The most direct problem is that the quality of higher education’s “products” (students) is unguaranteed. There’s even a popular saying in academia: “There’s no master’s student who can’t graduate, and no PhD candidate who can’t get in.” I wonder what use these masters and PhDs are, other than being social parasites, once they graduate?

People often ask me whether to go to grad school or work directly. I think it depends on personal judgment. Blindly following the crowd into grad school without your own opinion is quite terrifying. To decide, just answer one question: Why do I want to go to grad school, or what is my purpose? If you can’t answer this, then even if you go, there’s a 90% chance you’ll be disappointed. Here are my ten motivations for grad school:

  1. To dedicate my life to great scientific research. (Good, you should go. And you should find the best school and best advisor.)
  2. To get a degree and make more money later. (This is probably the mindset of most current grad students. It’s complicated. A good school and degree might lead to higher income, but only possibly. And the most important issue is opportunity cost. There are many online discussions about this. The core issue is weighing pros and cons. I’ve seen someone who made 100k annually before grad school drop to 50k after.)
  3. I want to change my major. (“I don’t want to code anymore, I’ll take the economics/management exam.” This is the most common complaint I hear from software students. Changing majors is possible, but will it necessarily be better?)
  4. My undergrad school was “XX Chemical Engineering School,” I want to get a degree from a prestigious school to gild myself. (If that’s the mindset, grad school can probably satisfy it. If your undergrad school was really bad, grad school might be a way out.)
  5. I feel too young and want to mature a few more years in school. (Don’t kid yourself — you’ll never mature in school. It’ll just be 3 years wasted. You’ll still be immature, and eventually pushed into society.)
  6. Jobs are hard to find now, I’ll wait a few years. (Same — who knows what things will be like in 3 years? What if it’s even harder? Then PhD? Then postdoc? Then “martial saint”?)
  7. Work is too depressing, I want to go back to school. (This is basically逃避. You need to look at why you’re depressed. Usually, depression comes from your own attitude or mindset, not from work or environment.)
  8. I really feel my knowledge is insufficient / I feel like I know nothing and need to recharge. (The mindset and motivation are good. Just ask yourself: is there a better way to gain knowledge than grad school?)
  9. I was recommended for exemption, everyone else is going, so I’ll go too. (I’m in this category — still lacking my own opinion and following the crowd. I actually admire those who gave up their exemption — at least they have their own opinions or pursuits. Before accepting, ask yourself: being recommended doesn’t mean you’re excellent, but at least it means you’re not bad — will grad school really make you better?)
  10. I’m following my GF/BF, or I want to leave this sad place [Nanjing Beijing Shanghai] :-) (Don’t underestimate how many people do it for relationships — I won’t comment further.)

Back to pros and cons. Personally, here are some trade-offs for grad school:

  1. You get “that piece of paper” (like Harry Potter’s You-Know-What). Whether it’s useful depends on personal judgment. If you plan to enter industry, some companies do care about it at the beginning. But I believe after 10 or 20 years of work, nobody will care about your degree or school. If you plan to work in government/institutions, a good degree might help. But I’ve also seen “leaders” in institutions with only bachelor’s degrees refuse to hire masters, with the reasoning “How can you be better than me?”
  2. You get three years older. If you feel too young and inexperienced, spending more time in school might not be bad. But for some youth-focused industries (I won’t name them), wasting ages 22-25 in school requires careful consideration.
  3. About knowledge: Don’t expect to learn much from advisors or classes. It’s just a stage — you have to perform your own play.
  4. You get a peaceful environment to summarize and think about things. This is a motivation for many, especially those who’ve worked. Just one reminder: if you get an exploitative boss, you won’t have peace.
  5. You lose 3 years of work experience. Consider whether your dream company wants an inexperienced master or a bachelor with 3 years of experience.
  6. You can meet more people and have more experiences. Everything brings experiences — good or bad, you might only know years later. Those in the situation usually can’t see clearly.

There’s much more, but I won’t list everything. In short: don’t blindly follow, don’t go with the crowd, don’t listen to others. Weigh the pros and cons yourself. If you have a plan for your future and grad school helps implement it, then go.

Teaching

While studying, I also participated in a series of training activities in 2005. In March 2005, I attended Microsoft’s first domestic Windows Embedded TTT training at Beijing Jiaotong University and became a Microsoft Windows Embedded instructor. After that, public lectures and training opportunities came one after another. Most were volunteer work without pay. A quick summary:

2005.4 — Gave a technical presentation on Windows Mobile at the China IT Club Technology Forum. Thanks to Jianzhong’s invitation, I was back at the 19th floor of Metro Tower, a place where I’d spent a year. The audience was about 70 people, all frontline programmers from various companies. I spoke about Windows Mobile development for 3 hours. This was one of my best-prepared lectures — I borrowed PDAs and smartphones from the school. Since it was my first public appearance, and at my “old haunt,” the result was quite good.

2005.6 — Gave a special lecture at the “Microsoft Windows Embedded Teaching Seminar” jointly held by Microsoft Research Asia and Tongji University. This was probably the largest and most formal. After many delays, it finally happened in June. There were over 300 attendees from top universities nationwide. My presentation included a course experience introduction and two evenings of hands-on labs, plus project introductions to Xu Fengxiong and Ivan from MS US. This was my first English presentation — I prepared a lot and even had a grad student from the English department help edit my speech. It went well — no nerves.

2005.9 — Gave a special lecture on Windows CE system customization at a Microsoft Windows Embedded technical seminar. This had the most attendees — about 500. Since it was free online registration, the crowd was diverse. Mao Guohua from MS invited me to give a simple Windows CE 5.0 demo for 45 minutes. This was the most nerve-wracking talk. A demo I’d rehearsed countless times the night before suddenly stopped working just before the lecture. After I got on stage, the problem persisted, and I was sweating. Eventually, clicking some random button made it work — a narrow escape.

2005.11 — Gave a lecture on C++ in embedded systems at the first national Modern C++ Design & Programming technical seminar. I’ve attended many technical seminars, but this one was the most technically substantial and rewarding. I had the honor of meeting Bjarne Stroustrup, the father of C++, along with many renowned domestic peers like Meng Yan, Yunfeng, and others (including Chen Rong). Although I thought I had a deep understanding of C++’s language mechanisms and object model, along with some engineering experience, these few days of lectures were still immensely beneficial. I learned a lot and gained a deeper perspective on C++ itself. My talk was on the third day, titled “C++ in Embedded Systems.” I covered basic concepts and used Symbian, Windows Mobile, and an embedded graphics system as examples, without going too deep or having demos. It went smoothly, though time management wasn’t great — few people showed up at first, so I delayed by almost half an hour, making the end rushed.

2005.12 — Advantech Windows Embedded technical lecture. 2006.1.5 — ICOP Windows CE technical lecture. Both were introductory, basically literacy courses for people who’d never seen or used Windows CE. Not much technical depth.

Besides that, I continued my “teaching career” at school, teaching the Windows CE Embedded Systems course. The most challenging part was teaching the 2004 cohort of grad students at the Software School — since I was also a 2004 grad student :-). Although only 9 people took my course and the classroom was sometimes quiet, I still enjoyed it. In December, there was a “Microsoft-NDRC精品课程” project, and the school repackaged my course as “Introduction to Embedded Software Development” for application — I wonder if it passed.

I also supervised an exchange student from Uppsala University in Sweden. I assigned him the topic of developing a network card driver for Windows CE, mainly a CS8900A driver on the Freescale Dragonball development board. After six months, the work was basically complete. The foreign student, Christopher, left a deep impression with his conscientiousness. He was very skilled at research — every time we met, there was clear progress. This serious attitude is something many Chinese students lack.

Although I frequently gave external lectures, I increasingly felt the truth of “there is a hierarchy in knowledge, and each has their specialization.” Everyone has something worth learning from. Giving lectures doesn’t mean much — it’s just sharing what you know with others.

Traveling

Looking back, one thing I didn’t anticipate in 2005 was how many business trips I’d take. In one year, I went to Beijing five times, Hefei once, and Wuhan once. In the 22 years before 2005, I’d only ever traveled within the six provinces and one city of East China, never flown on a plane. In 2005 alone, I flew 7 times — five to Beijing and two to Wuhan.

March — Went to Beijing for Microsoft TTT training, stayed at Beijing Jiaotong University for a week. MS training was quite intense — locking people in a room doing experiments for a week — but the收获 was substantial.

April — Went to Hefei, round trip by train. Mainly to coordinate Windows CE BSP development with the Hefei Hualheng company. Stayed one day and visited USTC (University of Science and Technology of China).

May — Went to Beijing for Microsoft Research Asia’s annual themed symposium. I joined the Windows OS group and met professors in operating systems from various domestic universities. I also visited Sigma Tower on Zhichun Road for the first time — a legendary place.

June — Went to Beijing for the MS teaching package mid-term evaluation meeting and had a small reunion with classmates.

November — Went to Beijing for a Microsoft Windows Embedded symposium, staying at Fragrant Hills Hotel. It invited people from various CE-related industries — training, hardware, licensing, etc. I met many people and climbed Fragrant Hills.

December — Went to Beijing again, staying at Peking University, for the Citibank Cup software development competition. Also visited the Summer Palace.

Mid-December — Went to Wuhan for Intel’s “64-bit Computing Optimization Training.” Visited Yellow Crane Tower — Wuhan became the westernmost place in China I’d reached.

Traveling frequently feels great — seeing the famous mountains and rivers of our motherland. I wonder when I’ll get a chance to go abroad 🙂.

Technology

Technology is how we make a living. I won’t compare myself to others, just to my past self. Since switching majors in 2003, I feel I’ve made significant progress every year. Like all technical work, it’s a process of gradual accumulation. Looking back at 2005, what major advances did I make?

In the first half of the year, at school, I was able to settle down and study some things. I read the reference implementation of the Java Virtual Machine and .NET SSCLI code, gaining a deeper understanding of virtual machine language mechanisms. Rotor was something I’d been studying during my MS internship — supposedly similar to the commercial .NET — but I never had the opportunity or much documentation. Thanks to a classmate who brought back the classic SSCLI book from the US, I was able to have close contact with SSCLI. I gained deep understanding of GC, JIT, AppDomain, exception handling, IL code, and managed object models. (Honestly, I seem to have forgotten some of it now.)

In April, feeling that domestic Windows CE resources were very scarce and lacking a suitable reference book during my studies, I got the idea to write a Chinese reference. I started writing in April, but didn’t anticipate everything that would happen later. Almost a year later, I’m a bit over halfway done. Winter break is a good time to catch up.

In July, I started an internship at Ketai Century. Initially in the graphics group, their task was to port DirectFB to the Elastos OS and build a graphics system on top. Although I didn’t do much work (mainly unwilling rather than unable — lacked motivation), I studied DirectFB’s architecture and learned about graphics systems. I found DirectFB’s architecture quite similar to DirectX and GDI drivers, and gained a deeper understanding of Windows CE’s display driver model DDI.

After National Day, I participated in the Windows CE binary compatibility project at Ketai. “Participated” is generous — I was the only developer. The goal was to run Windows CE binary programs on Elastos, similar to Wine on Linux. But not exactly the same — Wine only needs to handle x86, while this project needed to support ARM, x86, MIPS, and other CPUs. Wine mimics Win95, but this project needed to mimic WinCE and the PPC, Smartphone platforms on top of it. Running binaries from one OS on another OS, across multiple CPUs — this was extremely challenging and required deep knowledge of low-level systems. Given my love for OS development and familiarity with CE, I gladly accepted the challenge, even though my monthly compensation was only 250 RMB.

After three months of work, on the Elastos 2.0 emulator, we could now properly run Windows CE solitaire games. I overcame numerous technical challenges along the way, including EXE loading (PE loader), structured exception handling (Elastos doesn’t have SEH), Windows CE API forwarding (how to redirect system calls to Elastos), WinMain’s four parameters (very nasty…), graphics system emulation (messages, windows, graphics implementation), and many other complex issues. It involved a lot of low-level system work — disassembly, reading machine code, even writing machine code were common tasks. I often couldn’t sleep due to certain problems. But as each problem was solved, the whole system grew like a baby, gradually maturing: the command-line Hello World ran; CRT programs could run; threads could be created; synchronization worked; virtual/logical memory could be manipulated; files could be read and written; DLL modules could be loaded… When the GUI Hello World finally ran, the project achieved a major breakthrough. Windows’ message mechanism, window mechanism, graphics device context — all were complete, though still with many issues. The product prototype was there. There’s still a long way to go — running programs on ARM, implementing a registry mechanism (for COM programs, including Pocket Word, Excel, etc.), making major changes to the graphics system (Windows Mobile’s custom shell)…

Thinking about it, being “captured” by a boss isn’t necessarily a bad thing — at least it proves I can still code and fight on the front lines, rather than being a “teacher” who only parrots textbooks.

Keep accumulating — the more I accumulate, the more secure my livelihood. For 2006, my goal is to understand some hardware mechanisms. Coming from a software school, in engineering I tend to “bully the soft and fear the hard.” I feel I can basically find and solve any software-level problem. But for hardware knowledge, I lack the necessary understanding. I hope to strengthen this in 2006. Otherwise, doing “embedded” work will remain superficial — might as well write Java/.NET and connect to databases… the money is pretty good too :-D.

Life

2005 was my zodiac year (benmingnian). Unknowingly, I’ve muddled through 24 years. 2005 was very turbulent — I moved 4 times — and through the turbulence, I learned many lessons.

My mother says my biggest flaw is never experiencing setbacks. From growing up to studying, everything went smoothly. In elementary school, I was always class monitor; exams were always first place; switching to computer science, I got into No. 1 Microsoft for internship within a year; working on Windows CE, I became somewhat well-known domestically within a year… But 2005 gave me a taste of hardship.

Starting in June, threatened with not being allowed to graduate, I was forced to “intern” at a company for two years (April 2005 to April 2007), working from 5 AM to 9 PM. Don’t be surprised — believe me, sleeping in a place where waking up at 5 AM is something to be thankful for. All day facing the cheapest monitor on the market, making your eyes tear up after 5 minutes, feeling like your head would explode after a full day. No internet access during the day. At night, 6 people squeezed into a room barely big enough for beds, with one person often singing in their dreams. Walking an hour each way to work every day, eating a steamed bun bought on the street for breakfast. Every time “salary” was paid — 250 RMB — receiving contempt from the old lady handing it out… These physical hardships could be endured with gritted teeth, but the biggest burden was mental pressure. No personal freedom — my carefully planned dream of interning at Microsoft Research/Engineering was crushed. Locked in the “company,” I even had to ask for leave to go out, with wages deducted from the 250. Graduate student life became dark and gloomy, completely different from the path to becoming a scientist I had imagined. The two goals I had when starting grad school (1. strengthening theoretical foundations, 2. finding some research feeling) were drifting further away. English wasn’t improving — I remember sending an English email that drew criticism from their VP. The biggest worry was feeling I wasn’t progressing. The things I did and programs I wrote in grad school, I could have done just as well two years earlier as an undergrad. If I stayed here, my future would be: skills deteriorating (if you don’t advance, you regress), wallet getting thinner (not expecting 250 RMB to make me rich — I bet the beggars at the subway entrance make more than this), temper getting worse (I didn’t want to talk to the people exploiting me, nor did I want them to know me), English fading (to avoid the VP’s criticism, I turned a blind eye when they translated “联系人” as “Linkman”), and age increasing (the golden years of 23-26 — coming out approaching 30).

In the first few months, I was very depressed. Coincidentally, two widely-reported news stories worsened my depression: one about a Jiaotong University PhD student jumping to his death unable to bear his advisor’s exploitation, and another about a Tsinghua PhD withdrawing on the last day before graduation. They surely shared the same confusion and不安 as me. I thought more than once about using the same method to find release and end my pain.

At the same time, I read history and philosophy voraciously, talked with others, and read literary works reflecting life, hoping to find answers. Gradually, from Li Ao’s speeches I learned about negative life attitudes; from “The Shawshank Redemption” I learned to save oneself; from “A Global History” I read about the悲惨 early lives of great men; from “Principles of Economics” I learned about opportunity cost and decision trees; from the “Jet Li’s Fearless” trailer I learned about correct life values… Gradually, I found an outlet for my heart and learned how to face everything positively.

Unable to practice English, I bought English novels from street stalls (pirated, forgive me) and read them under the covers when I couldn’t sleep (something I never did in middle or high school). I downloaded English movies, listened to the dialogue, downloaded New Concept English audio from the internet, and used it to “sharpen my ears” while programming.

Unable to learn new things, I downloaded大量 source code from the internet, studied it myself, summarized, and bought many technical books, including Lua, MicroWindow, Wine, etc.

Not earning enough to cover expenses (I hadn’t taken a cent from my family in 3 years), I took on freelance work, writing programs at night and on weekends. I couldn’t get rich, but at least I solved the food and clothing problem…

With one year left until graduation, when I get that master’s degree certificate, I will definitely write a line on the back to commemorate these days of struggle against the environment — and more importantly, against my own psychology.

Other

2005 was also very memorable. For me, there were many firsts:

First time having my own business cards — two kinds, even though the titles were nominal.

First business trip, first airplane ride.

First freelance project earning outside money — through an introduction, I made a Bluetooth-based billboard flashing software, released two versions, and earned about 15K. When this thing created real value at the Canton Fair, I knew my code could indeed be transformed into productivity.

First time writing a book, though not yet finished.

First time…

What are my hopes for 2006? I hope that book can be finished and published smoothly; hope I can gain freedom; hope I can accumulate more in technology and mature, ideally achieving a qualitative leap; hope I can spend this year happily; hope everyone around me is well…

This post is licensed under CC BY 4.0 by the author.