Skip to content
0:00 / 0:00

#ermine#edwardkmett#scala

CUFP 2013: Edward Kmett: Functional Reporting

CUFP 2013

161 subscribers • 3 videos on Hallway

YouTube
  • Recommended by 5 people: 5 in engineering communities.
  • A classic. People kept recommending it from 2013 to 2020.
  • Presented by Edward Kmett, software engineer
  • Linked in the descriptionSlides on cufp.org

Intermediate. Assumes working knowledge.

5.9K views12 years ago5 recommendations

Programming languagesSoftware designHaskellLanguage design and type systemsFunctional programming

Edward Kmett discusses using functional programming and the custom language Ermine for financial reporting at S&P Capital IQ.

We have been using functional programming here at S&P Capital IQ in Scala, Haskell, and our homegrown reporting language Ermine, since 2008. We'll spotlight two of the projects we've worked on in the past five years and cover the challenges that drove us to write our own programming language. The first project we'll cover is our portfolio analytics (PA) engine, used on capitaliq.com for performance and risk attribution and in ClariFI, a quant-focused desktop product. The engine evaluates jobs consisting of batches of PA calculations, which we represent monoidally and optimize to process in a streaming fashion using a minimal number of passes over input data. The second is how we've used Scala and Haskell in a multi-year project to build a general purpose reporting and visualization framework for constructing useful views and reports from CapitalIQ datasets. That framework consists of several components, the most novel of which is a Haskell-like programming language with row types, called Ermine, designed for working with and manipulating relational data. Upon Ermine we have layered a combinator library for building interactive reports and visualizations from these data. These reports are abstract descriptions of layout, with pointers to the data, and we've written several interpreters for this DSL to export to a variety of formats: a report can be rendered as an interactive HTML+JS page, a Java FX UI, or exported to PDF or Excel from a simple declarative specification. Along the way we've had to face many challenges including interoperating with the web and the JVM, getting monadic code in scala to scale, fostering adoption in a predominantly imperative workplace, and selling management on a custom programming language. Edward discovered Haskell in 2006 after many years of writing compilers for toy imperative languages that somehow all looked like a mishmash of Perl, Python and C++. Upon realizing the error of his ways and after briefly flirting with dependent and substructural type systems he switched to Haskell and ever since has sought to make up for his past crimes by giving back to the community. He currently maintains more Haskell packages than anyone, sits on the haskell.org committee, chairs the Haskell core libraries committee, organizes Boston Haskell, has managed the Google Summer of Code for the Haskell community for the last 4 years and doesn't get to sleep much. Slides are at cufp.org/2013/slides/kmett.pdf

Why it's here

5 people recommend this

What people say. Recommended as a real-world example of using functional programming and custom DSLs for business reporting.

u/edwardkmettin r/haskell • Recommends

Video CUFP 2013: Functional Reporting by Edward Kmett

u/pipocaQuemadain r/haskell • Recommends

On “Any Haskell companies hiring interns for the summer of 2016?”

> I'm specifically looking for internships in New York Are you open to using non-Haskell languages? Jane street uses OCaml, and has an internship program. The ClariFI team at S&P Capital IQ uses an in-house language called ermine. /u/edwardkmett gave a talk at CUFP a few years ago about the use of FP at ClariFI (he works at the Boston office). The NY office has a summer internship program and I know that the ClariFI team has had interns in the past. If you're interested, /u/sclv is probably the right person to get in touch with.

u/n00bombin r/haskell • Recommends

On “DSLs / libraries for reporting?”

Maybe u will interested in Ermine and the presentation by Edward Kmett

u/silverCloud7in r/haskell • Recommends

On “Where can I find examples of Haskell's features being applied to BLOBA (Boring Line Of Business Application) development?”

Edward Kmett & team designed a reporting language, Ermine. The data is financial, but the improvements have to do with not needing to have the entire data set in memory (vs. Java), being able to do more in each pass over the data, being able to more easily extend the system, more robust end user report creation, etc. CUFP 2013: Edward Kmett: Functional Reporting [video

u/Mentioned_Videosin r/haskell • Recommends

On “Where can I find examples of Haskell's features being applied to BLOBA (Boring Line Of Business Application) development?”

Videos in this thread: Watch Playlist ▶ VIDEO|COMMENT -|- [video - One of the most "idiomatic" examples of BLOBA is this one I think. The title of the presentation is "Painless software development with Haskell" for a good reason [video - This recent very good talk has a payroll system example used: [video - Edward Kmett & team designed a reporting language, Ermine. The data is financial, but the improvements have to do with not needing to have the entire data set in memory (vs. Java), being able to do more in each pass over the data, being able to more ... I'm a bot working hard to help Redditors find related videos to watch. I'll keep this updated as long as I can. *** Play…

u/pthierryin r/haskell • Mentions

On “ermine presentation”

CUFP 2013: Edward Kmett: Functional Reporting