Hi, my name is Lenny
Languages: C/C++/C++11/C++20, Python, Java, C#, MATLAB, JavaScript, SQL Embedded: yocto, uboot, embedded Linux distributions, kernel modules, FreeRTOS SerDes: UCIe, Ethernet, PCIe, Verdi, cocotb, RTL sims, debugging custom ISA, UVM Networking: C sockets, wpa_supplicant, TCP/IP, Wireshark, tcpdump, nc Other: Qt, LLVM, ANTLR, Jenkins, Node, ASP.NET MVC, MongoDB, SQL Server, Docker, matplotlib, scikit-learn If you would like to connect, please feel free to email me at L43cheng@uwaterloo.ca.
I'm a Software Engineer building chiplet solutions at Alphawave. Before this, I worked with embedded systems and graduated from UWaterloo's Computer Engineering program.
Outside of work, I try to stay active through outdoor activities. During Winter, most weekends would be spent skiing or snowboarding in South Lake Tahoe (particularly Kirkwood). Once the weather warms up, I enjoy climbing, golfing, and diving.
Let's chat!
Cheers,
Lenny
Work & Research Experience
Staff Firmware Engineer | San Francisco Bay Area
March 2024 - present
Back to Alphawave; this time building UCIe chiplet solutions.
Software Engineer | San Francisco Bay Area
Dec 2022 - March 2024
Worked on the MX10k4 and MX10k8 platforms. This included designing a pipeline for reporting SerDes link threshold errors,
developing a flexible tool to extract insights from customer logs, and integrating gTest into a fabric module to facilitate unit testing.
Firmware Developer | Toronto, ON
Jan 2021 - Dec 2022
Alphawave specialized in designing SerDes IP. As an early employee, my main responsibility was to develop firmware for 100+Gbps Ethernet and PCIe chips,
but also had the opportunity to take on other tasks.
This included designing new features to our compiler, debugging RTL sims, providing support to AEs who interfaced with customers,
ensuring pre-silicon sanity checks and post-silicon verification through PVT conditions, and interviewing/onboarding new teammates.
Embedded Developer | Toronto, ON
July 2019 - Jan 2021
Ecobee is a smart-home IoT company. I worked mostly with embedded Linux, networking tools, and a bit on the EFR32 Gecko MCU. This included hacking kernel code,
writing user-space programs to control smart thermostats (eg, multi-speed fan controls), and playing with our build system.
Keywords: yocto, uboot, embedded Linux, Gecko EFR32, Micrium RTOS, networking tools, cross-platform development, Jenkins, custom UI toolkit, Python
Software Engineering Intern | San Francisco Bay Area
Sept - Dec 2018
This internship focused on building ML infrastructure, including designing a module to inject plugins into an asynchronous framework, exposing its public API, integrating services to extract outputs of a post-processing pipeline used on the 'Jobs' page, and attaching recovery logic to failed RPC operations.
Software Engineering Intern | Burlington, ON
Jan - Apr 2018
This internship was focused on video processing. This included implementing features using the open-source JM H.264 Reference Software, building a Python test framework to verify an H.264 encoder, writing an algorithm to compare distorted YUV videos, and validating MPEG TS used in ABR streaming.
UWaterloo Image & Vision Computing Lab
Undergraduate Research Assistant | Waterloo, ON
Sept - Dec 2017
Working as a Research Assistant, I assisted in evaluating the perceptual uniformity of the ICtCp colour space by implementing a subjective testing program with the Blackmagic DeckLink SDK, filtering pre-test data and analyzing post-test results.
Software Engineering Intern | San Francisco Bay Area
May - Aug 2017
OptumSoft is an IoT startup founded by the namesake of our School of Computer Science and former professor from Stanford University, David Cheriton. I worked on a Kalman-like algorithm that predicted the reliability of sensor readings, learned to use an in-house programming language, and wrote a test generator to validate our in-house compiler.
Software Engineering Intern | Calgary, AB
Sept - Dec 2016
The theme of this internship was to improve SMART Board© diagnostic tools on OS X and Windows computers. This included developing a cross-platform C++ API to change pen settings when pens touched a SMART Board and fixing cross-platform Qt bugs. Working with 4 other interns, we built an educational game with Node.js that demoed at the BETT 2017 trade show.
Application Developer Intern | Toronto, ON
Jan - Apr 2016
This internship was focused on improving an ASP.NET MVC-based communication platform used by 10+ traders, which included building an instant messaging prototype with SignalR and Oracle, reducing performance bottlenecks by over 80%, and developing a "What You See Is What You Get" (WYSIWYG) editor.
Software Developer Intern | Ottawa, ON
May - Aug 2015
This internship at a SaaS startup focused on building infrastructure with C#/ASP.NET MVC, JavaScript, SQL Server, and RESTful APIs.
Education
Computer Engineering | Bachelor of Applied Science - BASc.
Sept 2014 - June 2019
Eight academic terms, six internships, and countless cups of coffee later,
I graduated from UWaterloo with a BASc. in Computer Engineering. It was fun learning about software and hardware development.
Selected Courses: Image Processing, Autonomous Vehicles, Adaptive Algorithms, Computational Intelligence,
Operating Systems, Compilers, Security, Networks, Database Systems, Leadership and Influence, Personality Psychology
Technical Projects
Media
E-book
- Cool Things You Can Do With Python: 27-page e-book containing six starter Python projects, including a web scraper and a Word document generator. Introduces several concepts, including HTTP verbs and multithreading. Available on the Kindle Store.
Programming Articles
- Implementing Observer Pattern with Events (C#): uses event objects to implement the Observer Pattern
- Making GET Requests in Python - Tutorial: introduces Chrome DevTools,
urllib
andBeautifulSoup
to make GET requests from www.codeproject.com - Creating Forms in ASP.NET MVC 5: examines 4 synchronous and asynchronous ways to pass data between the client and the server
- Beginning TI-BASIC: Using Your TI-83/TI-84 to Solve Math Problems: shows how to program a graphing calculator to solve algebraic and geometric problems
Publication
- A Right Way to Use Inductive Reasoning: 5-page paper in "Pi in the Sky", a math magazine sponsored by the Pacific Institute for the Mathematical Sciences, that demonstrates how to find and prove with induction the formula that determines the maximum number of regions formed by an inscribed convex polygon and its intersecting diagonals
News
- [CBC] University of Waterloo students want two-ply toilet paper on campus, student councillors say : This is kind of funny. As elected student representatives, we usually advocate for more important issues on campus, such as legal service support (eg, against predatory housing), student outreach programs, and mental health initiatives. With that said, 1-ply toilet paper is quite unpleasant and students had enough of it ;p
- [Imprint] The breakdown of the 2018 Co-op Education fee raise : Co-op opens many doors, but there are legitimate reasons for advocating against a fee raise that doesn't improve service, especially when many students report being treated unethically by co-op staff. The petition referenced in the article drew 3000+ supporters in 3 weeks, and received attention from the Board of Governors, Provost's Office, our Student Union, and two student newspapers. Although the petition didn't stop the 18/19 co-op fee raise (3 Governors abstained and 1 objected to the fee raise!), the University decided not to increase co-op fees for 19/20, the first no-increase in many years.
Let's chat!
Whether you're a recruiter or a student, a writer or an engineer, a musician or a skydiver, let's explore how we can work together to accomplish greater challenges.
Please feel free to reach me at L43cheng@uwaterloo.ca.