Kevin Laeufer

98 Followers
153 Following
257 Posts
Research Associate at Cornell University
PhD from UC Berkeley
Websitehttps://kevinlaeufer.com/
Thinking about my fall teaching, an upper-division undergrad systems programming course. And I am at 75% planning to use Rust (it was in C++ when Ken Birman taught it the past several years). Pointers to good models are welcome -- text is likely to still be Bryant and O'Halloran CS:APP3e, though I am sure that I will add some things.

Our synthetic Euclidean Geometry proof assistant is now open for public contributions! We created this together as a class in my Build Your Own Proof Assistant course this semester. Please give it a spin and consider contributing! https://github.com/nicegeo/nicegeo

Some features:

- Dependent-type-theory-based proof kernel
- Synthetic Euclidean geometry layer (axiomatization of System E) with elaboration exhaustively tested
- Tactic-based interactive proofs
- Holes, bidirectional type checking, and unification
- Proof state management
- Custom tactic framework in OCaml
- Pretty-printing and error reporting
- Kind error messages
- Standard library (Euclib) for Euclidean geometry
- VSCode IDE plugin with many novel usability features
- Some geometry-specific proof automation

What's next:

- Interactive visual proofs
- Tabular proofs
- More geometry-specific & advanced automation
- Better support for user-written automation (e.g., a tactic language)
- Stronger IDE integration
- Expansions to Euclib
Please see our GitHub issues for more!

Our proof assistant is MIT licensed. Please see our contributor's guide if you would like to contribute. We especially welcome contributions addressing any of our open GitHub issues! https://github.com/nicegeo/nicegeo?tab=contributing-ov-file

This was a very impressive collaboration of about 20 students from many different backgrounds, who all came together for a semester to build something real. Everything from the domain to the design philosophy to the kernel to the automation was built from scratch collaboratively!

GitHub - nicegeo/nicegeo

Contribute to nicegeo/nicegeo development by creating an account on GitHub.

GitHub

I'm giving a talk at NJPLS (5/22 at Penn)! Itโ€™s about cool things you can do with a DSL for specifying hardware communication protocols!

Joint work w/ @nikilshyamsunder, Francis Pham, @adrian & @ekiwi

https://njpls.org/may2026.html

NJPLS May 2026 @ Penn

New Jersey Programming Languages and Systems Seminar

I'm deeply honored to have received one of this year's ASPLOS Most Influential Paper awards, for the Overshadow paper from way back in ASPLOS 2008.

This was a really fun project to work on with a really great group of people at VMware.

I shared some retrospective thoughts on the project at the conference today; I'll share some more here once I have time to write them up!

One of my favorite things about this yearโ€™s ASPLOS is how many papers are named after food items
@jbigham @yacc143 "professors need people to implement their ideas" doesn't describe how it works in my group at all. Most of the good ideas come from my students. My job is to provide the kind of environment in which those ideas can develop; to push back on the flaws; to point out relationships between their ideas and other work I know about; to help them figure out how to explain their work in various fora; and to convince funding sources that all this is worthwhile.

๐Ÿ„ Today we released Surfer 0.6.0 ๐ŸŽ‰ This release contains a bunch of improvements including configurable key bindings, mapping translators, new commands and much more! Oh, and we have a new icon!

Also, some students will work on better annotations in Surfer soon. They asked for opinions here: https://forms.gle/CKqtgemjrNsfE7XY7

You can read the full change-log for the new release over at https://gitlab.com/surfer-project/surfer/-/releases/v0.6.0

Oh, and we have a new logo!

Finally, we have a proper journal paper about Spade ๐ŸŽ‰!

It is a pretty complete description of the current state of the language, but I'm honestly more excited about the way we managed to argue for having a new HDL at Spade's abstraction level, roughly RTL but with zero cost abstractions on top

https://dl.acm.org/doi/10.1145/3793550

I'm giving this agentic coding another try. I can give Claude Sonnet 4.5 the HTML versions of the reference manuals and the CMSIS headers and it'll actually use them. And it understands Jinja2 templates. And it's actually fairly accurate. This is getting uncomfortably useful?

For those who missed my #Asahilinux #39c3 talk, it's available at https://media.ccc.de/v/39c3-asahi-linux-porting-linux-to-apple-silicon now.

I've also just pushed my slides to https://github.com/svenpeter42/39c3 and uploaded them as PDF to https://cfp.cccv.de/39c3/talk/YGHB9K/

Asahi Linux - Porting Linux to Apple Silicon

media.ccc.de