Formula Language
• The #1 functional language
• ok maybe not that functional
• but expression-based
• IF is not a statement
• and pure
Slide 11
Slide 11 text
Spreadsheets are cool
• Reactive
• Live feedback
• Declarative
• No one cares when/where evaluation
happens
• The grid is legacy though
Slide 12
Slide 12 text
Reinventing them
• Ken Tilton’s Cells (Common Lisp)
• clojurescript Javelin
• visi-lang
• SubText
• ...
Slide 13
Slide 13 text
Let’s leverage
what we already have!
Slide 14
Slide 14 text
I’m tired of
• reverse-engineering a spreadsheet to turn
in into real code
• only to get a revised version next morning
Slide 15
Slide 15 text
Double inefficiency
• More grunt work for devs
• Business users are not free/agile anymore
• Rules set in stone
• Update delays
Slide 16
Slide 16 text
Business excelers
• Business users able to model their stuff in a
spreadsheet should be an asset not a
liability for IT
• More power to them!
• unless you want more rogue IT
Slide 17
Slide 17 text
Upload Business Logic now!
The killer button
Slide 18
Slide 18 text
Spreadmap
• http://github.com/cgrand/spreadmap
• Based on POI
• But lightweight
• Workbook as data
Slide 19
Slide 19 text
POI
• Allow you to read/write/evaluate XLS
• Workbooks objects
• Expensive to create/clone
• Memory footprint
Slide 20
Slide 20 text
ForkedEvaluator
• Little hidden gem of POI
• Lightweight evaluation-only workbook
• Crippled impl
• Taught me how to rebuild it in Clojure
Slide 21
Slide 21 text
Here we go!
Demo
Slide 22
Slide 22 text
Power to the users!
• Allowing key users to customize apps
• Have their XLS logic tapping db, events,
etc.
• Always on
• A super IFTTT for the enterprise
Slide 23
Slide 23 text
Risk assessment
• You can efficiently test workbooks
• Unit tests
• Regression tests
• Compare with previous version based on
history