What is this page for?
This page is to make my potential recruiters/colleagues/friends to know me better. As we all know, due to the limitation of the resume, people cannot fully present their education background, projects, and other cool things in their resume. So, in this page, I will try my best to break that limitation and present some cool stuffs I made.
Anyway, hope you enjoy it.
Here is my most recent resume, you can directly download it if you need it: Resume (last updated at Sept.22, 2017)
Who am I?
I am Tianmu Lan, a current computer science master student in Brown University. (I have the exactly the same look as the picture on the right! Amazing!)
Although I’m a computer science student, software is not the only focus of mine. I prefer to define myself as a combination of software engineer, hardware engineer, photographer and designer.
I love new things, like learning new knowledge, making new friends, moving to new places. So, don’t hesitate to be my new friend!
Now you know me 🙂
In September 2017, I started to pursue my masters degree in Computer Science at Brown University.
In August 2017, I graduated from Shanghai Jiao Tong University (SJTU) as a bachelor in Electrical and Computer Engineering at UM-SJTU Joint Institute.
From May 2017 to August 2017, I, together with Yuchen Wang (Duke University), Miaomiao Chen (SJTU), Jiaqi Huang (Amazon) and Xinyi Wu (SJTU), made the Encoder Automation Fuzz Test Suite as our major design project, which was sponsored and mentored by Intel.
In this project, I was the group leader and responsible for communication between our group and the company representatives. I also developed the performance test module for this project. In the performance test module, I completed the multi-threads and multiple times tests and added a GPU usage detector within.
Because of my work, the whole performance test could be done in one command line. Our group successfully reduced the workload for testing an encoder from over hundreds of command lines (manually input) to just import an database and do some simple clicks. For a general introduction, you can watch the following video:
In April 2017, I graduated from University of Michigan (UM) as a bachelor in Computer Engineering.
From January 2017 to April 2017, together with Shuo Chen (Amazon), I developed a top 3 Decaf compiler and got A for the compiler course.
From October 2016 to December 2016, together with Yilei An (Google), Yulin Xie (Amazon), and Yanda Huang (CMU), we developed a computer vision project – The Great Arm.
The picture on the right represents what we achieved. Simply speaking, our project can detect the human arm and calculate the intersection point between the arm line and the screen plane. Then, it projects that point on the screen plane and marks it on the camera.
In this project, I came up with this great idea, collected the data set for training the skin detector, did the camera calibration by using MATLAB, and implemented the pointing point calculation module.
For more technical details, you can read the ppt and there is a gif demo inside: EECS442- The Great Arm (although inside the PPT we called it Smart Pointing Detector) .
From September 2016 to December 2016, I took the most exciting course in my life: Game Design. In this course, I really learned a lot about Unity, game mechanisms, animation (although it has 30 hours workload per week, it is really fun) and finished the following four games:
- 1. The Replica of Metroid
- In this project, Hua Zhu (UM) and I built a replica of Metroid (a famous NES game) in Unity with a special level called Metroid in Mario (put the main character and enemies of Metroid into Mario’s first level). In this project, I was fully responsible for AI, movement and animation of the enemies. It helped me learn a lot about how to use Unity to build a 2D game.
- 2. Rocket Soccer
- This game is a kind of table football like, 2-player competitive game with a lot of interesting mechanisms. Due to this game, I recognized an extremely talented developer, Dapeng Xu (UM). Since we always designed, built and tested the game together, it is hard to distinguish which part was done by mine and which one was not. Anyway, it is an amazing and juicy game, and you must have a try!
- For the game, you can directly download here: Rocket Soccer (Windows Only)
- 3. Falling to the Depth
- This game is fully done by myself in one week, and it was the top game in this personal game project! Basically speaking, it is an endless running game and you need to control a accelerating ball to avoid traps. In this game, I solved the problem about how to present depth information to player in a 2D screen plane and how to build an random, endless but interesting game.
- For the game, you can directly download here: Falling to the Depth (Windows and Mac)
- 4. Sub-zero Escape
- I, together with Jinlei Chen (Jing Dong), Dapeng Xu (UM), and Hua Zhu (UM), spent over a month to finish this second prize and the best game in the course. It is a 2-player puzzle solving ice-skating game. Maybe this trailer (made by me) can explain what I mean:
Since I was the only one in this team who know something about art, I was responsible for nearly all art design things instead of doing a lot of coding. I designed main characters and their animations by using 3Ds Max (learning it from scratch was really hard), the art style of the game, and one third of the levels and traps.
- In the Design Expo, over hundreds of people played our game, and our game won the second prize. (Since our game was harder to get start than a gun fight game, that group won the first prize and we lost the chance to get a disk of Civilization VI signed by Sid Meier, sign….) Due to our outstanding performance, our game was permanently saved in the UM game machine, which could be found on the first floor of BBB building now. If you have any chance to go there, please try our game! If you don’t have a chance, don’t worry. You can directly download it here: Sub-zero Escape (Windows Only.) However, this is not the final version due to an accident, and it has some bugs. To play it, you need to prepare two screens and two JoySticks.
- 1. The Replica of Metroid
From May 2016 to July 2016, I worked for Chinese Academy of Science (CAS), the greatest science and technology institution in China, as a researcher in Big Data Department. Here, with the instruction from Doctor Xuezhi Wang, I did the following things in this two month internship:
1. Programmed a web crawler for UCAR Geography Database
The source database can only allow searching by keyword or id and downloading data set online. Each time we can only download one data set, but we need to get a copy of source database into the UCAR Geography Database. However, because there was over 100TB of data, it was meaningless to copy them all.
So, I built a web crawler to grab the description and id for each data set. Besides, I added the download module within the web crawler. The user just need to read the description, add the id of the data sets that they want to a list. Then, all data will be directly downloaded from the source database.
2. Helped to develop the Shiny App to visualize geological data sets
Shiny APP is a famous open source visualization program in R. The CAS wanted to build it inside the server and let people access and use it from the website. Since Shiny App was a new thing for the whole department, we had to learn to use it from zero. For my part, I researched about how to use Shiny and help Dr. Wang to develop the Shiny App on the server.
3. Researched on how to simultaneously run and control multiple R programs though a single C program
Since each Shiny APP can serve only one user at a time and we needed to keep opening and closing it to serve all users, we needed to build a control system. Dr. Wang wanted to use a single C program to control it by using multi-threads method to open and close Shiny Apps and give parameters to them, so that users just need to interact with the C program. Before doing it, he asked me to research on it.
In fact, I built a prototype at that time and it worked perfectly for small size input/output programs. However, for big I/O program, the result showed that it is impossible to do it perfectly. This is because, for C, the buffer for transferring data between threads has limited size, and if we exceed that limitation, some data will lose. Since we needed to deal with big data, Dr. Wang had to change his idea 🙁
4. Solved the callback errors for the website and research on how to build the server on Cloudman
The callback errors were caused by improper setting of host file and improper setting of http/https. It was easy to solve but hard to find and, as a result, it took me several days to add break points and check the variables’ values. Then, I knew how to be patient and successfully solved the problem.
Cloudman is a glue platform that adapt its configuration to different cloud servers, if you build your things on top of this platform. Since the CAS didn’t want to keep configuring cloud servers when it wants to move to another could server, Cloudman was their choice. So, I spent several days to read documents and try to find the limitation of Cloudman. The result showed that CAS cannot use it, because it cannot provide the support for a key tool of CAS. Although Couldman didn’t work, my searching and summarizing abilities got praised by the whole department.
From January 2016 to May 2016, I had my most tough time. Since I chose four courses (two of them had extremely heavy workload) and became TA for another course, I had to work around 15 hours per day. Unfortunately, my GPA went down from 3.7 to 3.4 since I didn’t have time to have a review for my exams in this term. Fortunately, I got survived and finished the following two cool projects:
1. Arithmetic and Athletic Battle
Together with Yanda Huang (CMU), Shijia Yang (UM), Siying Feng (UM), we built a brain training exercise game. Simply speaking, two competitors need to do either push-ups or sit-ups to accelerate a colored tape tracing car toward them. They should calculate the math problem to find the number of push-ups or sit-ups that they need to do. Here is a video which shows the demo of our project:
In this project, I coded the whole tape tracing, car accelerating and turning control system. I also assembled the circuit and all parts of the car. The motor controller used Verilog to code while the other parts were mainly based on C. Anyway, it was a really interesting and funny project.
2. 2-way SMT Out-of-order Pipeline
Nothing special, just as the name says, we built a pipeline (or it could be called a CPU?). It was a major design project written in Verilog and we formed a 5 people group (cannot remember all of them, but one in Facebook, one in GIT and one in Google now). In this project, I was responsible for cache, LSQ and Map Table implementation, and with my work, the whole pipeline reduced 15% of CPI (comparing with the most common way). However, due to an extremely critical bug caused by my teammate, we had to reduce our pipeline from 4-way to 2-way in the last minute, which means the efficiency became half of what we should had. Due to this accident, all of us nearly failed this course…… (since this project values around 50% grades of the course)
From September 2015 to December 2015, Da Fang (UM), Yilin Guo (UM) and I designed and built the Fast 8-bit Full Adder by using Cadence.
In September 2015, I went to University of Michigan to attend the dual degree program.
In July 2015, I was selected as one of the seven Merit Student (Three Good Student), one of the highest prize for Chinese university students, over the Joint Institute.
From September 2014 to September 2015, I was selected as the Minister of the Student Union Media Department of UM-SJTU Joint Institute. During this time, I leaded our department to be awarded the Outstanding Student Organization Prize, and administered the website of JI Media Department, which has over 165,000 browsing volume till now. The page could be found here: JI News Department
In August 2014, I became the “Mayor of Beijing” in “Joint Departure” program, a social practice to expand university influences, with over 700 students from 4 senior high schools to participate my lecture.
From September 2013 to December 2014, together with Xi Chen (UM), Feng Yu, Dazhi Wang (UM), Ruchen Zhen, we build the Glove Keyboard, which could be used to type on any plane. Simply speaking, we detected the degree of bend for each finger by using resistance and used that resistance value to know which row the user is typing. The whole project was based on Arduino, and it was the first engineering project of mine!
From September 2013 to September 2014, I became a member of Student Union Media Department, and participated the making of all short films and writed around half of the news for UM-SJTU Joint Institute in this year.
In September 2013, I became a student in Shanghai Jiao Tong University, one of the top 5 universities in China.
In May 2013, I graduated from High School Affiliated to Renmin University of China, the best high school in China.
Before May 2013, I was just a kid. 🙂
Main language for coding:
C/C++/C#(Unity), python, Matlab
Something I have learnt for coding:
R, SQL, MongoDB, Verilog, ARM, JAVA
Xilinx ISE, OrCAD, Cadence, Microsemi SoftConsole IDE
Lightroom, photoshop and Premiere
I love ACGN (animation, comic, game, and novel). Especially for SLG game, Japanese animation and comic, and Chinese web novel. Before 2013, I have played all PSP games which have Chinese localization and all SLG games on IOS. At my most crazy moment, I keep tracking the most recent updates for over 100 Chinese web novels and over 300 Japanese comics (manga) at the same time. For animation, I think I have watched all famous/interesting Japanese animations between 2005 and 2015.
Currently, I’m not that crazy for these things. For now, I’m focus on playing games made by Paradox in my spare time (if I have it). However, I’m still a big fan of ACGN. If you would like to discuss these things with me, I will be very happy.
How to Contact me
Just leave a massage inside this blog!