Ben Lippmeier
email: benl (AT) ouroborus.net
freenode: benl23
(dblp profile)
(GitHub profile)
(misc code bin)
(Haskellers profile)
(Google Scholar profile)
(YouTube demo channel)
About Me
- I work at Ghost Locomotion
in machine learning for self driving cars.
- I have previously worked at
Digital Asset
in smart contracts and programming language theory,
as a private consultant in financial data processing,
at the Commonwealth Bank of Australia in data science and machine learning,
and as a lecturer at the University of Sydney and Australian National University
and as a postdoc at the University of New South Wales.
- Most of my research and development is based around the
Haskell
family of languages.
- I am a regular at
fp-syd.
- I have kept a variety of aquarium fish, though
not always successfully.
- When I'm not doing the above I practice Aikido
and Iaijutsu
- In a past life I studied electronics and communications engineering, before software ate the world.
Publications
-
Smart Contracts as Authorized Production Rules
PPDP 2019 (project github site)
with Amos Robinson and Andrae Muys
-
Machine Fusion: Merging merges, more or less
PPDP 2017
with Amos Robinson
-
Polarized Data Parallel Data Flow
FHPC 2016 (reference implementation)
with Amos Robinson and Fil Mackay
-
Icicle: write once, run once
FHPC 2016
with Amos Robinson
-
Fusing Filters with Integer Linear Programming
FHPC 2014 (slides),
with Amos Robinson and Gabriele Keller.
-
Data Flow Fusion with Series Expressions in Haskell
Haskell 2013 (slides),
with Manuel Chakravarty, Gabriele Keller and Amos Robinson.
-
Optimising Purely Functional GPU Programs
ICFP 2013
with Trevor McDonell, Manuel Chakravarty and Gabriele Keller.
-
Guiding Parallel Array Fusion with Indexed Types
Haskell 2012 (slides), (video),
with Manuel Chakravarty, Gabriele Keller and Simon Peyton Jones.
-
Vectorisation Avoidance
Haskell 2012
with Gabriele Keller, Manuel Chakravarty, Roman Leshchinskiy and Simon Petyon Jones.
-
Work Efficient Higher-Order Vectorisation
ICFP 2012, (slides), (video), (tech report), (dph-reference-array.tgz),
with Manuel Chakravarty, Gabriele Keller, Roman Leshchinskiy and Simon Peyton Jones.
-
Efficient Parallel Stencil Convolution in Haskell
Haskell 2011 (slides), (demo video),
with Gabriele Keller.
-
Regular, shape-polymorphic, parallel arrays in Haskell
ICFP 2010, (slides),
with Gabriele Keller, Manuel Chakravarty, Roman Leshchinskiy and Simon Peyton Jones.
-
Type Inference and Optimisation for an Impure World
ANU 2010 (PhD thesis)
-
Witnessing Purity, Constancy and Mutability
APLAS 2009 (slides),
Reports
-
Don't Substitute into Abstractions
(coq script and interpreter)
-
Mechanized soundness for a type and effect system with region deallocation
(coq script)
-
An AMPLE Implementation
Abstract Machine for Parallel Lazy Evaluation (AMPLE)
with Clem Baker-Finch, 2003
-
A High Temperature Superconducting Microwave Filter for the Narrabri Radio Telescope
work done at the Australia Telescope National Facility (ATNF), 2001
Talks
-
Types (are/want to be) Calling Conventions
2019/5/14. LambdaJam
2019/1/23. FP-Syd: Functional Programming Sydney
-
Smart Contracts as Authorized Production Rules
2019/4/26. FP-Syd: Functional Programming Sydney
-
Machine Fusion is not Associative (or Commutative)
2018/10/22. Shonan Meeting on Functional Stream Libraries and Fusion
-
Polarized Data Parallel Data Flow
2016/9/17. FHPC: Functional High Performance Computing
-
Automatically Escaping Monads
2017/2/08. HaskellZ: Zurich Haskell Meetup (slides) (video)
2016/9/23. HIW: Functional Programming Sydney (slides) (video)
-
Data Parallel Data Flow in Repa 4
2015/5/22. LambdaJam
2015/2/25. FP-Syd: Functional Programming Sydney
-
Stream Fusion in Continuation Passing Style
2014/12/09. SAWDAP: Sydney Area Workshop on Data Science and Programming Languages
-
Query Fusion
2014/10/03. Macquarie University
-
Data Flow Fusion
2014/10/03. CBA: Commonwealth Bank of Australia
-
Flattening Nested Database Queries
2014/05/28. FP-Syd: Functional Programming Sydney
-
Capabilities and Coeffects
2013/12/16. SAPLING: Sydney Area Programming Languages Interest Group
... more Talks
Projects
Discus
Discus is an experimental dialect of Haskell which investigates
static typing and program transformation in the presence of computational effects.
Programs can be written in either a pure/functional or effectful/imperative style,
and one of our goals is to provide both styles coherently in the same language.
Update data without state monads, write putStr "foo" and mean it,
learn to live again.
- (wiki)
Project wiki
- (code) GitHub page
- (blog)
Development blog
- (paper) Witnessing Purity, Constancy and Mutability
- (thesis)
Type Inference and Optimisation for an Impure World
- (talk) Capabilities and Coeffects, SAPLING December 2013
- (talk) Head Lazy but Shapely, and Deeply Mutable, SAPLING November 2010
- (talk) PeekOn and PokeOn, (video), HIW October 2010
- (talk) The Poisoning Problem, FP-Syd June 2009
- (talk) The Disciplined Disciple Compiler, University of Melbourne May 2008
Rainfall
Rainfall is a smart contract programming model that allows mutually
distrusting parties to manage assets on a distributed ledger. The model
consists of a tuple space of authorized facts, and a set of production rules.
Rules match on authorized facts, gaining their authority, and produce new facts
with a subset of the gained authority. Rainfall allows assets such as crypto
currencies to be defined in user code, rather than being baked directly into
the ledger framework. Our authorization model also provides a natural privacy
model, where not all rules or facts need to be revealed to all parties.
- (code)
Github page
- (talk) Smart Contracts as Authorized Production Rules, FP-Syd April 2019
Gloss
Gloss hides the pain of drawing simple 2D graphics in Haskell behind a
nice data structure and a couple of display functions. Used in 1st year
CompSci at the ANU and UNSW. The library uses the GHC OpenGL binding,
but you won't have to worry about any of that. Get something cool on
the screen in under 10 minutes.
- (wiki) Development wiki
- (code) GitHub page
- (hacks) Hackage page
Repa
Repa is a Haskell library that provides high performance, regular, multi-dimensional,
shape polymorphic parallel arrays. All numeric data is stored unboxed. Functions
written with the Repa combinators are automatically parallel provided you supply
+RTS -Nwhatever on the command line when running the program. Repa means "turnip"
in Russian. If you don't like turnips then this library probably isn't for you.
- (wiki) Development Wiki
- (code) GitHub page
- (hacks)
Hackage page
- (paper) Guiding Parallel Array Fusion with Indexed Types
- (paper) Efficient Parallel Stencil Convolution in Haskell
- (paper)
Regular, shape-polymorphic, parallel arrays in Haskell
- (talk) Practical Parallel Array Fusion with Repa, LambdaJam 2013
- (talk) Practical Parallel Array Fusion with Repa (Workshop), LambdaJam 2013
- (talk) Efficient Parallel Stencil Convolution in Haskell, FP-SYD March 2011
- (talk) Regular Shape Polymorphic Parallel Arrays in Haskell, FP-SYD August 2010, ICFP September 2010
Iron Lambda
Iron Lambda is a collection of Coq
formalisations for functional languages of increasing complexity. It fills
part of the gap between the end of the
Software Foundations course
and what appears in current research papers.
Stockholm syndrome for semanticists, or at least the ones that can't Ltac.
- (wiki) Development Wiki
- (code)
GitHub page
- (paper)
Mechanized soundness for a type and effect system with region deallocation
- (talk) Contextual Equivalence and the CIU-Theorem FP-Syd March 2012
- (talk) Unhygenic letregion and the Region Phase Change, (video) FP-Syd August 2011
- (talk) Joint Evaluation Contexts, (video) FP-Syd July 2011
- (talk) Falling Down the Naming Well, FP-Syd April 2011
... more Projects
Students
- Amos Robinson
The stuff that streams are made of (PhD thesis, 2019)
Rewrite Rules for the Disciplined Disciple Compiler (honours thesis, 2012)
- Chris Hall (2017 - 2019)
Side-effect inference and control in modern imperative programming languages
- Hui (Matthew) Yu
Combining garbage collection and region allocation in DDC (honours thesis, 2018)
- Michael Sproul
A Library Based Approach to the Verification of Languages with Linear Types (honours thesis, 2016)
- Arthur Gan
Raytracing Minecraft style octrees in parallel Haskell (honours thesis, 2013)
- Tran Ma
Type Based Aliasing Control for the Disciplined Disciple Compiler (honours thesis, 2012)
- Ben Lambert-Smith
A Parallel Fluid Flow Simulator in Haskell (honours thesis, 2011)
Events
- 2022: PC: ICFP
- 2021: PC: Haskell Reviewer: PLDI.
- 2020: AEC co-chair: ICFP.
- 2019: PC: IFL. AEC co-chair: ICFP.
- 2018: PC: PPDP.
- 2017: PC: ICFP.
- 2016: PC: FHPC. ERC: ICFP. Reviewer: SCICO.
- 2015: PC chair: Haskell. Reviewer: JFP.
- 2014: PC: FHPC, TFP. Reviewer: Haskell, ICFP, JFP.
- 2013: Reviewer: APLAS, FHPC, PEDS.
- 2012: PC: Haskell. Reviewer: ESOP JFP, TOPLAS.
- 2011: PC co-chair: HIW. Reviewer: HOSC, ICALP, JFP.
- 2010: PC: HIW. Reviewer: APLAS, PLDI.
- 2008: Reviewer: CC.
Teaching
At USyd- 2015: Programming Languages and Paradigms
- 2014: Programming Languages and Paradigms
At UNSW
- 2012: Advanced Algorithms (guest lecturer)
- 2010: Computing 1 (bonus lectures in Haskell)
At ANU
- 2009: Principles of Programming Languages
- 2009: Relational Databases (query optimisation unit)
- 2009: Multicore Computing (supervised masters project group)
- 2008: Formal Methods for Software Engineering (lecturer for half of course)
- 2008: Relational Databases (lecturer for query optimisation)
- 2008: Data Structures and Algorithms I (Haskell unit)
- 2007: Data Structures and Algorithms I (Haskell unit)
- 2006: Introduction to Programming and Algorithms