Halide and Python Quick-Start Guide
Mon 28 July 2025I spent a solid amount of my engineering time last year getting Halide's pip packaging up to snuff. Distributing binaries that are compatible with manylinux and use heavy, slow-to-build dependencies like LLVM is a particular sort of nightmare1... wiring up dozens of moving parts between GitHub Actions, Docker, cibuildwheel …
Continue reading »I'm Giving an Invited Talk on Halide at ASPLOS 2025!
Fri 28 March 2025I'm honored to be giving an invited talk at the inaugural User-Schedulable Languages (USL) workshop, part of ASPLOS 2025. If you'll be in Rotterdam for the conference, come say hi!
My talk, titled "Halide: Industrial Experience, Design Retrospective, and Future Directions," is scheduled for 11:20 AM local time and …
Continue reading »I'm at Adobe now!
Tue 28 May 2024It's been a while since I updated my website, or published anything on my blog, but there's no time like the present... yes, this announcement is back-dated.
As of today, I'm a Research Scientist/Engineer at Adobe! I'm working full-time on Halide research and engineering now. I've got two projects …
Continue reading »I Finished my Ph.D.!
Thu 22 December 2022It took six and a half years, but I'm happy to announce that I finally got my Ph.D. in Computer Science. Hooray! As I write this, I'm starting a short-term post-doc at MIT to wrap up a few research projects, but I'm actively applying to jobs. If you have …
How to Use CMake Without the Agonizing Pain - Part 2
Mon 31 May 2021Welcome back to Part 2 of this series! I was very happy to see the warm reception Part 1 got over on /r/cpp. Before we get started, I thought I would take this opportunity to clarify a couple of points about this series.
First, this series is not a …
Continue reading »How to Use CMake Without the Agonizing Pain - Part 1
Sat 22 May 2021Continue reading »When age fell upon the world, and wonder went out of the minds of men; when grey cities reared to smoky skies tall towers grim and ugly, in whose shadow none might dream of the sun or of spring's flowering meads; when learning stripped earth of her mantle of beauty …
Building a Faster Triangular Solver than MKL
Sat 20 March 2021A significant part of my research involves investigating algorithms with interesting properties and then trying to optimize them to fully understand how they work. One recent, and fairly successful, exploration was into triangular substitution solvers. In this blog post, I'm going to explain the algorithm and an unconventional recursive approach …
Continue reading »CMake IS a Build System
Sat 13 March 2021One of the most common things you'll hear when learning CMake is that "CMake is not a build system". This is technically correct, depending on one's definition of a "build system". However, this statement alone is meaningless on a practical level as it doesn't communicate anything actionable regarding how to …
Continue reading »Building a Dual Shared and Static Library with CMake
Sat 06 March 2021When packaging software libraries, it is a common requirement to deploy both a static and a shared version. However, CMake library targets are always either one or the other. How do we make it easy for our users to choose which one they want to link to, and why is …
Continue reading »