Fellow and VP of Software EngineeringGroq Inc.
Edward spent most of his adult life trying to build reusable code in imperative languages before realizing he was building castles in sand. He converted to Haskell in 2006 while searching for better building materials. He is obsessed with finding better tools so that seven years from now he won’t be stuck solving the same problems with the same tools he was stuck using seven years ago.
He's currently leading the effort to build scalable machine learning software for novel AI accelerators at Groq.
In his spare time he sits on the boards of the Haskell Foundation and Topos Institute.
Talks I've Given
-
Unboxing Haskell
Featuring Edward Kmett
Haskell is infamous for its ubiquitous support for laziness. But we do have some primitive unlifted types: Int#s, unboxed tuples, and now unlifted data declarations. It is kind of annoying that anything you go to do with them is a one-off hack. What would it take to lift the Prelude to support...
-
Cadenza: Building Fast Functional Languages Fast
Featuring Edward Kmett
In this talk Ed will give live coding introduction to normalization by evaluation. He will then show how Graal and Truffle, on the JVM, can be (ab)used to JIT functional languages. He discussesd why this seems like a promising direction for evaluating dependently typed languages in particular.
haskell -
Let's Lens
Featuring Edward Kmett
Let's Lens presents a series of exercises, in a similar format to the Data61 functional programming course material. The subject of the exercises is around the concept of lenses, initially proposed by Foster et al., to solve the view-update problem of relational databases.
The theories around...
-
Logic Programming à la Carte
Featuring Edward Kmett
I've been working on a logic programming framework in Haskell, called guanxi (關係) with an eye towards scalability. To build it I leaned heavily on my previous work on propagators and a bunch of other little bits and pieces of algebra and category theory in the design process. A number of... -
Combinators Revisited
Featuring Edward Kmett
Back in the 80's, one approach to compiling functional programming languages was to compile down to combinators such as SKI. John Hughes' initial work on supercombinators changed the way folks thought about compiling functional languages and caused folks to turn away from this approach by...
language -
Transients
Featuring Edward Kmett
Haskell often lends other programming languages ideas, but what can Haskell learn from other functional programming languages?
In this talk I’ll adapt Clojure’s transients to Haskell, and fix them up along the way with the help of Haskell’s type system features.
Transients are...
concept -
Propagators
Featuring Edward Kmett
There are a lot of algorithms that revolve around iterating a form of information propagation until it attains a deterministic fixed point. CRDTs, Datalog, SAT solving, functional reactive programming, and constraint programming all fit into this mold.
One framework for these sorts of algorithms...
software-development -
Propagators
Featuring Edward Kmett
There are a lot of algorithms that revolve around iterating a form of information propagation until it attains a deterministic fixed point. CRDTs, Datalog, SAT solving, functional reactive programming, and constraint programming all fit into this mold.
One framework for these sorts of algorithms...
algorithm -
Discrimination is Wrong: Improving Productivity
Featuring Edward Kmett
This talk is a case study in library design in Haskell.
Fritz Henglein has shown through a number of excellent papers how to use “discrimination” to do lots of things in O(n): Sorting many more data types than you’d expect, table joins, etc.
In the process of optimizing this...
practice -
Functionally Oblivious and Succinct
Featuring Edward Kmett
This talk provides a whirlwind tour of some new types of functional data structures and their applications.
Cache-oblivious algorithms let us perform optimally for all cache levels in your system at the same time by optimizing for one cache for which we don’t know the parameters. While...
architecture-&-design -
Functionally Oblivious and Succinct
Featuring Edward Kmett
This talk provides a whirlwind tour of some new types of functional data structures and their applications.
Cache-oblivious algorithms let us perform optimally for all cache levels in your system at the same time by optimizing for one cache for which we don’t know the parameters. While...
architecture-&-design -
Functionally Oblivious and Succinct
Featuring Edward Kmett
This talk provides a whirlwind tour of some new types of functional data structures and their applications.
Cache-oblivious algorithms let us perform optimally for all cache levels in your system at the same time by optimizing for one cache for which we don’t know the parameters. While...
architecture-&-design -
Functionally Oblivious and Succinct
Featuring Edward Kmett
This talk provides a whirlwind tour of some new types of functional data structures and their applications.
Cache-oblivious algorithms let us perform optimally for all cache levels in your system at the same time by optimizing for one cache for which we don’t know the parameters. While...
technique