Ben Lippmeier

Steggles now spends more time hacking Coq than fixing bugs.
Mail:
Ben Lippmeier
School of Computer Science and Engineering
University of New South Wales
UNSW Sydney NSW 2052
Australia
Google Maps
email:
benl (wibble) cse.unsw.edu.au
(code bin)
(youtube demo channel)
About Me
- I am a Research Associate
in the Programming Languages and Systems group
in the School of Computer Science and Engineering
at the University of New South Wales.
- I spend most of my time implementing Functional Programming Languages.
- I am a regular at fp-syd.
- I have been spotted at Dorkbot.
- I have kept a variety of aquarium fish, though not always successfully.
- When I'm not doing the above I practice Aikido.
- I was previously a PhD student and lecturer
at the School of Computer Science
at the Australian National University.
Publications
-
Optimising Purely Functional GPU Programs
Submitted to ICFP 2013
with Trevor McDonell, Manuel Chakravarty and Gabriele Keller.
-
Guiding Parallel Array Fusion with Indexed Types
(slides), (video), Haskell 2012
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
(slides), (video), (tech report), (dph-reference-array.tgz), ICFP 2012,
with Manuel Chakravarty, Gabriele Keller, Roman Leshchinskiy and Simon Peyton Jones.
-
Efficient Parallel Stencil Convolution in Haskell
(slides), (demo video), Haskell 2011
with Gabriele Keller.
-
Regular, shape-polymorphic, parallel arrays in Haskell
(slides), ICFP 2010,
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
(slides), APLAS 2009
Students
- Amos Robinson (PhD 2013 - present)
Rewrite Rules for the Disciplined Disciple Compiler (honours thesis, 2012)
- 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)
Projects
DDC - The Disciplined Disciple Compiler
Disciple is an explicitly lazy dialect of Haskell. DDC uses effect and closure
typing to allow destructive update and arbitrary side-effects to play nicely
with laziness and compiler optimisations. It also supports real (object.field)
type-directed projections and some other useful features. DDC is still a research
project, but it'll compile some programs if you're nice to it. Update data without
state monads. Write putStr "foo" and mean it. Learn to live again.
- (wiki) Project page
- (blog) Disciple Development
- (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
GHC - The Glasgow Haskell Compiler
GHC is the industrial strength Haskell compiler.
As a research associate at UNSW my main job is to help with the
Data Parallel Haskell project.
In Q1 2009 I spent three months working on the
GHC on OpenSPARC project,
where I repaired GHC's support for the SPARC architecture and benchmarked it on the
highly multi-threaded UltraSPARC T2
(Niagra 2) architecture.
In Q3 2007 I spent three months working at
GHC HQ
where I wrote a new
graph coloring register allocator for the native code generator.
- (blog) GHC on SPARC
- (wiki)
The GHC Register Allocator
- (talk) Flattening and Replication in Data Parallel Haskell, FP-SYD May 2011
- (talk) Beyond Haskell, HIW 2010
- (talk) GHC on the OpenSPARC T2, (video), HIW 2009
- (talk) Graph Colouring Register Allocation in the Glasgow Haskell Compiler, SAPLING November 2007
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.
- Hackage page
- Development Wiki
- (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.
- Development Wiki
- (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
Gloss (formerly ANUPlot)
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.
Photon Exchange
Video projections based on a hacked fluid flow simulator.- Serial Space 002, 27th July 2012
Collar Weights
Code and switching hardware for the Collar Weights mixed media installation.
Inside each of the collars are electroluminescent lamps that are programmed
to switch on, illuminating texts that become visible through the fabric.
Phrases from interviews with the owners of the collars are played.
With Alexandra Gillespie and Somaya Langley.
With Alexandra Gillespie and Somaya Langley.
- Alex's photostream
- Bathurst Regional Art Gallery, 7th August - 20th September 2009
- Canberra Contemporary Art Space (CCAS) Gorman House, 7th February - 14th March 2009
- Canberra Contemporary Art Space (CCAS) Manuka, 6th - 16th November 2008
AMPLE - An Abstract Machine for Parallel Lazy Evaluation
An experimental environment that can be used to study the behavior of parallel
functional programs in terms of an abstract machine, without needing to
worry about details specific to a native implementation. Can
execute programs fully speculatively to determine the maximum
embodied parallelism in a piece of code.
- Project Page
-
An AMPLE Implementation,
IFL 2003 (draft proceedings)
with Clem Baker-Finch
Sunshine II RISC CPU Simulator
A simulator for a classic 5 stage pipelined RISC processor. Visualisation of pipeline
stalls, calculation of cpi, single step mode, breakpoints, instruction counts,
memory mapped file and console IO. Pipeline setup is easy to change.
High temperature superconducting microwave filters
Design and implementation of a filter intended to block interference that the
Australia Telescope Compact Array
was suffering from a nearby microwave distribution service (MDS).
A summer vacation scholarship position, supervised by Russell Gough
and Graham Gay of the
Receivers Group.
- Project Report (in MSWord format)
Events
- 2014: TFP (PC)
- 2012: Haskell (PC), JFP (reviewer), TOPLAS (reviewer), ESOP (reviewer)
- 2011: HIW (PC co-chair), ICALP (reviewer), HOSC (reviewer), JFP (reviewer)
- 2010: HIW (PC), PLDI (reviewer), APLAS (reviewer)
- 2008: CC (reviewer)
Teaching
At UNSW:
- 2010: COMP1917: Computing 1 (bonus lectures in Haskell)
- 2009: COMP3610: Principles of Programming Languages (lecturer in charge)
- 2009: COMP2400: Relational Databases (query optimisation unit)
- 2009: COMP8320: Multicore Computing (supervised masters project group)
- 2008: COMP2600: Formal Methods for Software Engineering (lecturer for half of course)
- 2008: COMP2400: Relational Databases (lecturer for query optimisation)
- 2008: COMP1130: Data Structures and Algorithms I (Haskell unit)
- 2007: COMP1130: Data Structures and Algorithms I (Haskell unit)
- 2006: COMP1100: Introduction to Programming and Algorithms (lecturer in charge)