About

me.png
(Left) After holding a lecture at my high school Information Study Club (2002). (Middle) Preparing lab material for EE summer camp (2006). (Right) Presenting at a poster session at IEEE/ACM Workshop on Variability Modeling and Characterization (2013).

I first learned to program in GW-BASIC when I was 10. To me, it was like open-ended Lego – I could use it to build a lot of things, and there were even more possibilities than using Lego. I recall learning about prime numbers and greatest common divisors at school, and I went home to write programs to do these computations for large numbers that I didn’t want to do by hand. At high school, I took elective Computer Programming courses and first learned about object-oriented programming (OOP) in C++. I worked with a classmate on a class project, Photo Montage, which is to use smaller pictures to make up a large one. My classmate had connections with a college professor, who introduced us to the concept of image feature extraction and pattern recognition, and we eventually implemented it in the project. The completed project still left much to be desired, but it was a nice research and learning experience. I also joined the Information Study Club, where we learned from peers and senior students. I was introduced to a great variety of things such as C/C++, PHP, Perl, Java, Visual Basic, CSS, Linux, and big-O analysis. I was eventually appointed as the academic officer and held introductory classes to C++ programming for junior members.

I majored in Electrical Engineering at National Taiwan University and was very soon drawn to the Electronic Design Automation (EDA) area, which is to develop software solutions for problems encountered in all aspects of Integrated Circuit (IC) design. It combined my passion for software programming and my specialized knowledge for circuits and hardware studied in college. There are a lot of fascinating and challenging algorithmic and optimization problems in EDA. Many can be modeled as a graph or formulated as a SAT or integer linear programming (ILP) problem. I participated in implementing a Verilog language parsing and compile software for synthesis and verification in my senior year. Apart from EDA, I also worked on a speech processing project, where we adapted a quantization algorithm of speech features to improve speech recognition quality on edge devices. Some other team projects I greatly enjoyed include building a PDA poker game that supports multiplayer with network connection, and implementing a pipelined RISC processor.

It was during this time that I found my passion in building software products and working on cutting-edge technologies. My senior project advisor, who had both academia and industry experiences, encouraged me to pursue a Ph.D. degree, because “it opens up many more opportunities for research and development work.” Soon after, I started an M.S./Ph.D. program at University of Illinois at Urbana-Champaign with a focus in the EDA field. The projects I worked on at graduate school all heavily involve C++ programming and algorithms. Moreover, data modeling also played an important role in my research projects of clock tree routing and graphene transistor modeling. I also worked on a side project with a group of friends, where we tried to use machine learning to predict the stock market. In 2013, I took a data mining course, which I found to be very interesting, so I continued to work on our class project of Wikipedia text and image joint classification after the semester ended, and turned it into a published paper. Apart from the technical skills I learned, the training at graduate school helped me develop an analytical mindset and boosted my confidence in working on new, challenging problems.

After earning my Ph.D. degree in 2015, I joined Synopsys’s ZeBu Compile Team, where I worked on a Verilog/SystemVerlog/VHDL mixed-language compiler for FPGA, implemented in C++. It was like the Verilog compiler college project I greatly enjoyed, but at an industry scale. I learned a great deal of invaluable software engineering skills from my colleagues during my time there. I also greatly enjoyed going into the enormous code base and learned about how an industry-leading mixed-language compiler was implemented. However, I felt that my career growth in the EDA industry was somewhat limited, as a lot of the EDA technologies are already mature today.

I observed that a lot of the ground-breaking tech products today involve data science and machine learning. Machine learning is also a fast-growing field, opening up new opportunities for products never thought of before every day. I realized that although I focused on EDA previously, I have been interested in data science and machine learning and worked on related projects for a long time. I left Synopsys in 2018 to dedicate more time on solidifying my machine learning and deep learning skills.

I joined the Onboarding Team 🚀 at Twitter in 2019 where I get to work on applying machine learning at scale to improve new user experience and retention rate.

Apart from the technical stuff, I enjoy birding, photography, gardening, and Wikipedia surfing in my free time.

birding.JPG
Photographing Canada geese on Northerly Island in Chicago, IL.