Hi! I'm Patrick (Tao) Wang. I'm glad you've visited my website. As you may know, this is a place where I can share my thoughts, interests, and understanding of things.
What guides me on this career path? Actually, I always wanted to be a CS student since I was in middle school. Because I admire Steve Jobs and his great accomplishments. Besides, I believe technology is the thing that can change the world and help people of all kinds. Yes, my dream hasn't changed, I still want to influence the world in some ways that I'm capable of.
Who am I? I know what a good candidate for a job should look like, but, I always believe there is something that should always come before that - Personality.
I'm an extroverted, brave, resilient, altruistic, and diligent person.
I can appreciate the world in a beautiful way even though others don't think so.
I'm passionate about everything that happens in my life no matter good or bad.
I believe failure is the mother of success, and I would not be stuck in failures, once they already happen, rather, I try to learn from them, because I know I can't change things that already happened and I can only eye into the future.
I know opportunities are important, but without hard-working, you gain nothing from them. Therefore, I value hard-working, meanwhile waiting for my opportunities to come and take the shot.
I would prefer going into a win-win situation rather than getting into zero-sum games because I'm competitive, not selfish.
As a candidate, who is seeking a job, I displayed that I'm a fast learner during all my past internship experiences. I'm also proactive. I'm not afraid of expressing my thoughts and ideas and would love to share them with colleagues. I can collaborate with my colleagues, mentor, and manager well. They also feel comfortable working with me.
Technical-wise, I love things related to computer systems, especially distributed systems and cloud computing. However, as a good engineer, I think the ability to write high-quality code, handle errors elegantly, and build highly reusable software by following design patterns also plays an important role.
The philosophy of life and the computer world are similar to each other - it's an art that is all about making trade-offs.
Carnegie Mellon Univerisity Pittsburgh, PA
Master of Science in Mobile and IoT Engineering Aug 2021 - Present
Taken Courses
15-513 Introduction of Computer Systems
15-746 Storage Systems
15-618 Parallel Computer Architecture and Programming
15-640 Distributed System
14-741 Introduction to Information Security
14-740 Computer Networks
14-642 Introduction to Embedded Systems
14-848 Cloud Infrastructure
Proceeding Courses
15-645 Database Systems
6.824 Distributed Systems
6.828 Operating Systems
Interested Courses
10-601 Introduction to Machine Learning
10-605 Machine Learning with Large Datasets
11-785: Introduction to Deep Learning
15-619 Cloud Computing
15-605 Operating System Design and Implementation
15-719 Advanced Cloud Computing
Raft Dec 2022 - Feb 2023
Ongoing
Kernel Sep 2022 - Nov 2022
development of a bootloader and other components
implementation of interfaces, MMIO, and a sensor-driven application
implementation of interrupt-based functionality, user-space programs, and system calls
implementation of context switching and task management, rate-monotonic scheduling, priority-ceiling protocol, isolation, and synchronization
MapReduce Sep 2022 - Nov 2022
Implemented MapReduce with peer-to-peer file transfer from scratch.
Provides fault tolerance, concurrency, and safe file transfer functionality.
Two-Phase Commit Apr 2022 - May 2022
Designed a Two-Phase Commit protocol by using write-ahead logging that can tolerate message delay, message loss, node failures, and cascading failures during recovery.
Auto Scaling Mar 2022 - Apr 2022
Thoroughly analyze the time for different operations, utilize system properties, and identify bottlenecks in a distributed system by using metrics like arrival rate, queue length, and response time to make scaling decisions.
Design identification system, sampling system, auto-scaling system, cool-down system, smart-drop system, and cache system to improve system performance and handle special cases.
Distributed File System Feb 2022 - Mar 2022
Designed and implemented a check-on-use cache consistency protocol at whole file granularity, while maintaining one-copy semantic.
Utilized Java RMI and Java threading to handle multiple concurrent clients robustly and ensured open-close session semantics on concurrent file access.
Used LRU to manage a fixed-size cache containing variable-sized files and support open, close, read, write, sleek, and unlink system calls.
RPC-Based File System Jan 2022 - Feb 2022
Designed serialization protocol and implemented distributed file system that supports some basic syscalls and multiple concurrent clients.
Hybrid File System Oct 2021 - Dec 2021
Designed hybrid file system with FUSE to support 20+ syscalls using local SSD and AWS S3 for persistent storage.
Implemented deduplication (Rabin Fingerprinting), client caching, file system snapshot and crash recovery.
Flash Translation Layer Sept 2021 - Oct 2021
Developed a fully functional FTL for SSD in C++ supporting read/write address translation and garbage collection using improved cost-benefit analysis with deviation from average erases as additional parameters from scratch.
Implemented wear-leveling mechanism by data blocks remapping, which drops erase times by 1/3 and write amplification by 1/2, and data migration by data temperature, which supports full-range wear leveling.
Dynamic Memory Allocator May 2021 - Aug 2021
Implemented a fast and efficient dynamic memory allocator by small blocks and segregated free lists, which realized important memory operations including malloc, free, realloc, etc from scratch.
Achieved 74.3% memory utilization and 11803 Kops/sec throughput.
Movie Rating Web Application May 2018 - May 2019
As the team leader, implemented a web application with movie search, recommendation, and rating features.
Designed and implemented the search module with KMP for metadata pattern matching, the security program using MD5 hashing to store user passwords, and the back-end administrator module.
Code refactoring by applying design patterns to make the project more maintainable and achieve high performance.
NVIDIA May 2022 - Aug 2022
Position: Software Engineer Intern - Map Engine Santa Clara, CA, US
Worked on a project in an autonomous-vehicle data pipeline called track-selection. It consumes updated road data, runs complicated algorithms, and generates a new regional map, which requires lots of computing resources.
Re-architected the track-selection workflow preventing clusters from getting stuck due to resource limitations by moving Flink workers out of the loop and combining Flink as a Job Scheduler and AWS as computing units.
Dockerized the track-selection module by using a multi-stage build, and integrating it into the CICD pipeline.
Implemented a job scheduler client, which schedules tasks and enables a retry mechanism with scaling up, when failures happen.
Shanghai Digital Intelligence System Technology Co.,Ltd. Jul 2020 - Sep 2020
Position: Software Engineer Chengdu, CN
Worked on SuperMap GIS software back-end module improvements and DevOps cleaning. (Techstack: Dubbo, eureka, JAVA, Spring boot, Nacos, RESTful)
Implemented an iObject resolution module to resolve MDB type object correctly in Linux
Solved the resource download feature issue by exporting as bit stream, and implemented a feature to generate downloadable URL to prompt browser.
Optimized the SuperMap GIS server log extraction by implementing I/O stream operation to reduce the memory cost of the log generation process, and built a better data modeling schema for exporting specific data types, and significantly improved log download speed from minutes to several seconds.
Implemented an algorithm module for the internal GIS system that is later used by all sub-companies.
Machine Learning Application in Disaster Risk Assessment Feb 2020 - Jun 2020
Thesis (supervised by Prof. Leng) Chengdu, CN
Researched on predicting mud-rock flow disaster through data mining on disaster dataset
Implemented disaster data labeling by applying K-means algorithm
Integrated the multi-class SVM and BRF neural network model. Used Gaussian kernel function on both modules to implement the prediction model and applied a genetic algorithm for hyper-parameter tuning to optimize for the highest prediction accuracy.
Achieved prediction accuracy of 83.98% on real-world data set. Achieved higher model performance and accuracy than ordinary SVM model or BRF neural network alone.
An Improved SMT-Based Scheduling for Overloaded Real-Time Systems May 2018 - May 2019
Research Assistant (supervised by Prof. Liao ) Chengdu, CN
Significantly improved the system performance of SMT scheduling algorithm for over-loaded real-time systems proposed by Cheng et al., by efficiently eliminated redundant encoding and successive calls of the SMT solver.
Designed and implemented an automatic function call and statistics module for the overloaded real-time system to visualize the system performance by illustrating task number, average and mean time cost, the number of timeout and successful tasks, etc.
Eliminated the encoding redundancy of C3 extra assertion by removing the cycle calls of the Z3 solver. Implemented the optimization by using soft assertion and reduced the time cost over 2 orders of magnitude.
Vice President, Student Union, School of Cyber Security Feb 2018 - Feb 2019
In charge of Innovation and Entrepreneurship organization. Organized student events and promotion on innovation and entrepreneurship policies.
National Scholarship 2019
Bronze Medal, Sichuan Province, Internet plus Innovation and Entrepreneurship Contest 2019
Honorable Mention, Mathematical Contest in Modeling, COMAP 2017
Programming Language & Platform: Java, C/C++, SQL, JavaScrip, MongoDB, PostgreSQL, CUDA, ISPC, OpenMP
Frameworks & Tools: Git, Linux, Dubbo, Spring, Spring Boot, RESTful API, Eureka, Nacos, Tensorflow, Docker