Following up on last week’s tip, here’s a near-data-disaster from Rollen D’Souza:
I decided when I started grad school that I would always keep track of my research and general course notes in repositories. This wasn’t entirely just for backup purposes. It turns out that when you want to work on three different machines — work desktop, home desktop, surface laptop — making sure they are all synchronized with your latest work is non-trivial without some automated or manual tracking software. I use Mercurial (distributed vcs) because then there is an entirely cloneable copy of all my work on every machine I work on. (Why Mercurial versus git? Another story.) I’ve gotten into the habit of pulling, committing and pushing whatever I have whenever I work on a given machine.
What's Your Backup Strategy?
23 Feb 2020This week’s tip: have and execute a backup strategy for your data.
Here’s a picture of Mount Ngauruhoe (which stood in for Mount Doom). I’m sharing a picture from my phone (auto-enhanced by Google Photos) because the better pictures are on the camera that I spent an hour unsuccessfully looking for, and which my spouse was really unhappy about losing.
![]()
Devices get lost or fail all the time. While truly irreplacable data is rare, some data is inconvenient or expensive to replace. Maybe you can’t re-do the assignment in time for the deadline. Every so often this happens to someone’s PhD thesis, which represents years of work. Don’t let that be you!
Bring less stuff!
16 Feb 2020Happy Reading Week! This week’s life tip is, for now, most relevant to those of you not from the Greater Toronto Area, if you happen to be going home for the week. Experience shows that it will apply to many of you in the next few years.
- Tip: Bring less stuff!
There is often a skill versus stuff tradeoff. With more skill you can often improvise for having less stuff. A technical example is being able to use vim versus having to use a heavyweight editor that is tied to a particular operating system. And I say that as an emacs user. But vim works in resource-constrained environments over flaky connections (use mobile shell, mosh, for such connections).
Rock climbing in Wanaka
12 Feb 2020MP and I joined a NZAC Wellington club trip which was planned in two parts: Wanaka sport climbing and Darrans alpine granite. We only signed up for the sport climbing part. The granite part got rained out and people did more alpine objectives around Queenstown/Wanaka. Thanks to Derek for organizing!
Driving
We spent almost 0 time in Queenstown, driving directly to the Pak’N’Save grocery store just outside the airport and then to Wanaka over the Crown Range (highest main road in New Zealand!). On the way back we stopped at the “The Argonath on the Anduin River” (Lord of the Rings) and also apparently the birthplace of bungy jumping.
First month in Wellington
31 Jan 2020Sabbaticals are a large block of unscheduled time. Time always passes. Have I done stuff in my time in Wellington so far?
Professional
I’ve started a number of collaborations with colleagues in Wellington, and am thinking of a survey paper and an essay in particular. I’m excited about contributing to these projects. I hope to have more to report in my February update.
In other news I have a climbing-related submission to the Journal of Outdoor Recreation and Tourism (sadly an Elsevier journal) which got a revise-and-resubmit. Progress!
Look at the Details
26 Jan 2020
![]()
This week, we went to the Rangiwahia Hut for a walk (“tramp”) and then to some caves with glow worms. We have seen glow worms at night in Wellington but we were here four hours before sunset, so no glow worms for us.
Today’s tip: looking closely at things can reveal unexpected details.
Don't be a weka
19 Jan 2020
![]()
Kapiti Island is a nature reserve from which the New Zealand Department of Conservation has removed non-native predators (possums, rats, etc.)
Weka is not just a machine learning toolkit, but also a vulnerable flightless New Zealand bird. The bird will steal your lunch that is right in front of you on the table and run away with it if you don’t chase after it.
Life tip: Don’t be a weka. Cooperate generously with people. Good collaborations go two ways: make sure that both parties get something out of the collaboration.
January 2020 Reflections
13 Jan 2020Bryan Cantrill (of dtrace fame) writes about engineering performance management.
https://twitter.com/bcantrill/status/1216491216356823040
He suggests the following five questions for engineers to answer twice a year.
- What are you most proud of in the last six months?
- What did you learn?
- Where did you struggle?
- What are you anxious about in the coming six months?
- What are you excited about in the coming six months?
Most proud of
Having recently removed the se-director email from my Thunderbird, I realized that this role consumed a lot of time and energy. I am most proud of having completed my term and helping students, both in the moment (advising and leading the advising team) and through program changes.
Patrick Lam's Research Publications
1 Jan 2020
Refereed Publications
- Alex Le Blanc and Patrick Lam. VSTTE 2025: Lessons Learned So Far From Verifying the Rust Standard Library (work-in-progress). [arXiv, bib]
- Vinayak Sharma and Patrick Lam. SCAM 2025: Detecting Exception-Related Behavioural Breaking Changes with UnCheckGuard. [bib, artifact, slides]
- Karoliine Holter, Simmo Saan, Patrick Lam, and Vesal Vojdani. TOPLAS, with presentation at PLDI: Sound Static Data Race Verification for C: Is the Race Lost? [bib, artifact]
- Alex Le Blanc and Patrick Lam. HATRA 2024: Surveying the Rust Verification Landscape. [arXiv, bib]
- Mohammad Mahdi Abdollahpour, Jens Dietrich, and Patrick Lam. SCAM 2024: Enhancing Security through Modularization: A Counterfactual Analysis of Vulnerability Propagation and Detection Precision. [bib, slides pdf, google slides]
- Karoliine Holter, Juhan-Oskar Hennoste, Patrick Lam, Simmo Saan, Vesal Vojdani. Onward! 2024: Abstract Debuggers: Exploring Program Behaviors Using Static Analysis Results. [bib, slides]
- Karoliine Holter, Juhan-Oskar Hennoste, Simmo Saan, Patrick Lam, Vesal Vojdani. DEBT 2024: Abstract Debugging with GobPie (Demo). [slides, video, bib]
- Mohammad Robati Shirzad and Patrick Lam. Empirical Software Engineering, volume 29, issue 2, article 44. March 2024. A Study of Common Bug Fix Patterns in Rust (preprint). [bib]
- Dakota Wong, Austin Kothig, and Patrick Lam. HATRA 2022: Exploring the Verifiability of Code Generated with GitHub Copilot. [presentation, bib]
- Sruthi Venkatanarayanan, Jens Dietrich, Craig Anslow, and Patrick Lam. VISSOFT 2022 NIER: VizAPI: Visualizing Interactions between Java Libraries and Clients. [bib, dataset, demo]
- David Carter, Garrett Hutson, Patrick Lam, Nate Furman, and Jeff Rose. 2020. Journal of Outdoor Recreation and Tourism: The Self-Governance Challenges Facing Climbers, with Examples from Utah, Colorado, and Ontario (preprint). [bib, publisher site]
- Qian Liang and Patrick Lam. ICSME NIER 2020: SiblingClassTestDetector: Finding Untested Sibling Functions. [bib, video]
- Patrick Lam, Jens Dietrich, and David J. Pearce. Onward! Essays 2020: Putting the Semantics into Semantic Versioning. [bib, video, arXiv]
- Jon Eyolfson and Patrick Lam. ICSE 2019: How C++ Developers Use Immutability Declarations: an Empirical Study. [bib, artifact]
- Andrei Marian Dan, Patrick Lam, Torsten Hoefler, and Martin Vechev. OOPSLA 2016: Modeling and Analysis of Remote Memory Access Programming. [bib, artifact]
- Jon Eyolfson and Patrick Lam. ECOOP 2016: C++ const and Immutability: An Empirical Study of Writes-Through-const. [bib, artifact]
- Brian Demsky and Patrick Lam. OOPSLA 2015: SATCheck: SAT-Directed Stateless Model Checking for SC and TSO. [bib]
- Zheng (Felix) Fang and Patrick Lam. PPPJ 2015: Identifying Test Refactoring Candidates with Assertion Fingerprints. [bib]
- Quinn Hanam, Lin Tan, Reid Holmes and Patrick Lam. MSR 2014: Finding Patterns in Static Analysis Alerts: Improving Actionable Alert Ranking. [bib]
- Jon Eyolfson, Lin Tan and Patrick Lam. Empirical Software Engineering, volume 19, number 4, August 2014. Correlations between Bugginess and Time-Based Commit Characteristics. [bib]
- Supercedes: Jon Eyolfson, Lin Tan and Patrick Lam. MSR 2011: Do Time of Day and Developer Experience Affect Commit Bugginess?. [bib]
- Brian Demsky and Patrick Lam. ACM Transactions on Software Engineering and Methodology, vol. 22 no. 1, February 2013. Views: Synthesizing Fine-Grained Concurrency Control. [bib]
- Supercedes: Brian Demsky and Patrick Lam. ICSE 2010: Views: Object-Inspired Concurrency Control. [bib, source]
- Jon Eyolfson and Patrick Lam. RV 2012: Detecting Unread Memory using Dynamic Binary Translation. [bib]
- Eric Bodden, Patrick Lam and Laurie Hendren. ACM Transactions on Programming Languages and Systems, vol. 23 no. 2, June 2012. Partially evaluating finite-state runtime monitors ahead of time. [bib].
- Hang Chu and Patrick Lam. SOAP 2012: Collection Disjointness Analysis. [bib].
- Patrick Lam, Eric Bodden, Ondrej Lhotak, and Laurie Hendren. CETUS 2011: The Soot framework for Java program analysis: a retrospective. [bib, slides]
- Sebastian Fischmeister and Patrick Lam. IEEE Transactions on Industrial Informatics, vol. 6 no. 4, November 2010. Time-Aware Instrumentation of Embedded Software [bib].
- Supercedes: Sebastian Fischmeister and Patrick Lam. RTAS 2009: On Time-Aware Instrumentation of Programs [bib].
- Eric Bodden, Patrick Lam and Laurie Hendren. RV 2010: Clara: a Framework for Partially Evaluating Finite-state Runtime Monitors Ahead of Time. [bib]
- Jeff Zarnett, Mahesh Tripunitara, and Patrick Lam. SACMAT 2010: Role-Based Access Control (RBAC) in Java via Proxy Objects using Annotations [bib].
- Jeff Zarnett, Patrick Lam and Mahesh Tripunitara. ICISS 2009: Method-Specific Java Access Control via RMI Proxy Objects using Annotations (Short Paper) [bib].
- Eric Bodden, Patrick Lam and Laurie Hendren. FSE 2008: Finding Programming Errors Earlier by Evaluating Runtime Monitors Ahead-of-Time [pdf, bib].
- Eric Bodden, Patrick Lam and Laurie Hendren. BCS 2008: Object Representatives: a uniform abstraction for pointer information [pdf, bib, slides].
- Eric Bodden, Laurie Hendren, Patrick Lam, Ondrej Lhotak, and Nomair A. Naeem. Journal of Logic and Computation 2010: Collaborative runtime verification with tracematches [bib]
- Supercedes: Eric Bodden, Laurie Hendren, Patrick Lam, Ondrej Lhotak, Nomair A. Naeem. RV 2007: Collaborative runtime verification with tracematches [pdf, bib].
- Patrick Lam and Martin Rinard. Next Generation Software Workshop at the International Parallel and Distributed Processing Symposium. Static Verification of Design Constraints and Software Correctness Properties in the Hob System.
- Viktor Kuncak, Patrick Lam, Karen Zee and Martin Rinard. Transactions on Software Engineering, December 2006. Modular Pluggable Analyses for Data Structure Consistency [pdf, bib].
- Thomas Wies, Viktor Kuncak, Patrick Lam, Andreas Podelski and Martin Rinard. VMCAI 2006: Field Constraint Analysis [pdf, bib].
- Viktor Kuncak, Patrick Lam, Karen Zee and Martin Rinard. VSTTE 2005: Implications of a Data Structure Consistency Checking System [pdf, bib].
- Patrick Lam, Viktor Kuncak and Martin Rinard. Tool Demo at CC 2005: Hob: A Tool for Verifying Data Structure Consistency [pdf, bib].
- Patrick Lam, Viktor Kuncak and Martin Rinard. AOSD 2005: Cross-cutting Techniques in Program Specification and Analysis [pdf, bib].
- Patrick Lam, Viktor Kuncak and Martin Rinard. VMCAI 2005: Generalized Typestate Checking for Data Structure Consistency [pdf, bib].
- Karen Zee, Patrick Lam, Viktor Kuncak and Martin Rinard. SVV 2004: Combining Theorem Proving with Static Analysis for Data Structure Consistency [pdf, bib].
- Patrick Lam and Martin Rinard. ECOOP 2003: A Type System and Analysis for the Automatic Extraction and Enforcement of Design Information [pdf, bib]. The slides are also available. ([ps] [pdf])
- Viktor Kuncak, Patrick Lam and Martin Rinard. POPL 2002: Role Analysis [bib].
- Viktor Kuncak, Patrick Lam and Martin Rinard. LCPC 2001: A Language for Role Specifications.
- Vijay Sundaresan, Laurie Hendren, Chrislain Razafimahefa, Raja Vallée-Rai, Patrick Lam, Etienne Gagnon and Charles Godin. OOPSLA 2000: Practical Virtual Method Resolution for Java [bib].
- Raja Vallée-Rai, Etienne Gagnon, Laurie Hendren, Patrick Lam, Patrice Pominville, and Vijay Sundaresan. CC 2000: Optimizing Java Bytecode using the Soot Framework: Is it Feasible? [bib] (I gave the presentation for this paper.)
- Raja Vallée-Rai, Phong Co, Etienne Gagnon, Laurie Hendren, Patrick Lam, and Vijay Sundaresan. CASCON 1999: Soot: A Java bytecode optimization framework.
Posters and Presentations
- Patrick Lam. Hot Takes on Machine Learning for Program Analysis. Invited talk at UCalgary, May 2025. [PDF]
- Patrick Lam. Hot Takes on Machine Learning for Program Analysis (Director's Cut). Invited talk at UBC, May 2023. [video, PDF]
- Patrick Lam. Hot Takes on Machine Learning for Program Analysis. Keynote at PNW-PLSE, May 2023.
- Patrick Lam. Are Ownership Types Reaching the World Yet? Invited talk at 7th International Workshop on Aliasing, Capabilities and Ownership.
- Patrick Lam. Static and Dynamic Analysis of Test Suites. Invited talk at 3rd Annual ETH Zurich Software Reliability Workshop. [video]
- Patrick Lam. Test Suites and Program Analysis. Contributed talk at 2015 Google Test Automation Conference. [video]
- Patrick Lam. Beyond Coverage: What Lurks in Test Suites? Contributed talk at 2014 Google Test Automation Conference. [video]
- Patrick Lam, Viktor Kuncak and Martin Rinard. Hob: A Tool for Verifying Data Structure Consistency. Tool demo at Compiler Construction 2005.
- Patrick Lam. Colloque du Département d'Informatique et recherche opérationnelle: The Hob System for Verifying Data Structure Consistency Properties. [pdf, handout front: svg, png, back: svg, png]
- Patrick Lam. Québec Programming Languages Seminaire, Fall 2004: The Hob System for Verifying Data Structure Consistency Properties [sxi].
- Patrick Lam, Viktor Kuncak and Martin Rinard. IBM Programming Languages Day, 2004: Modular Pluggable Analysis.
- Patrick Lam. CRS Retreat, 2004: Modular Pluggable Analysis (overview). (How to bike to a workshop).
- Patrick Lam and Martin Rinard. ECOOP 2003: A Typestate System for Simultaneous and Changing Data Structure Participation.
- Patrick Lam and Martin Rinard. Eclipse Technology eXchange at ICSE 2003: A Type System and Analysis for the Automatic Extraction and Enforcement of Design Information.
Theses
- Patrick Lam. PhD thesis, MIT, February 2007: The Hob System for Verifying Software Design Properties. [ps, bib]
- Patrick Lam. MSc thesis, McGill University, August 2000: A Generalized Framework for the Flow Analysis of Concurrent Programs. [pdf, bib]
Other publications
- Patrick Lam, Viktor Kuncak and Martin Rinard. Technical Report 933, MIT Computer Science and Artificial Intelligence Laboratory: On Modular Pluggable Analyses Using Set Interfaces [ps, bib].
- Patrick Lam, Viktor Kuncak and Martin Rinard. Generalized Typestate Checking Using Set Interfaces and Pluggable Analyses [ps, bib]. SIGPLAN Notices, Volume 39, Issue 3 (March 2004), pages 46-55.
2019 retrospective
31 Dec 2019New year, new website! I hope to start breaking out of Associate Professor Purgatory in 2020 and what I’ve accomplished in 2019 will lay the groundwork for that.
Professional
I completed my 3 year 4 month term as SE Director. It’s been rewarding but work/work balance means that I’ve had less time to spend on research.
SE Director
I was thrilled that my students successfully nominated me for the Friend of EngSoc award. It was a great token of appreciation.