Resolver Hacks contains information and code for doing fun and useful things with Resolver One. This site is created and maintained by Michael Foord, not by Resolver Systems. Please read the disclaimer before using any of the code on this site.
Resolver: What and Why?

Introduction
Resolver is a new program created by Resolver Systems. Resolver is a 'rapid application development tool', for analysing and presenting business data using a familiar 'spreadsheet interface'.
From a superficial glance it looks just like another spreadsheet program, but it is radically different from conventional spreadsheets.
The Problem
Spreadsheets are enormously popular and used everywhere. This is because business data is often well suited to being collected and presented in table form. Spreadsheet formulae provide easy access to the data and allow simple sums and calculations on whole sets of data very easy.
The problem is that spreadsheets often grow into huge unwieldy beasts, or are used for tasks that they were never suited for. This is something that the industry is well aware of, and Resolver has been unveiled first at the annual conference of The European Spreadsheet Interest Group. This is an organisation dedicated to discussing and finding solutions to 'the spreadsheet problem'. You can read some of the horror stories they have collected about the millions of dollars and pounds lost because of spreadsheet errors.
The Resolver Way
Spreadsheets are actually a form of programming, in fact when programmed with formulae in cells they are actually an example of a slightly esoteric form of programming called 'functional programming'. So as spreadsheets are just interfaces to computer programming ('under the hood'), shouldn't it be easy to reorganise or extend spreadsheets with a programming language? Unfortunately, this is often a painful process - particularly as the means for doing this are usually 'bolted on' rather than being a core part of the spreadsheet.
With Resolver, data and formulae you enter into cells are actually turned into code. This code is then executed to produce the results.
The advantage of this approach is that you can add your own code at various stages of the calculation, and they have full access to the 'spreadsheet objects' [1] that actually become the results.
Note
The code that is created from data and formulae that you enter we call generated code.
Code that you add yourself we call user code.
In fact Resolver makes no distinction between the code you add yourself and the generated code. It is all executed to produce the final results. This includes creating new worksheets and all the formatting.
Even simple pieces of code can often massively reduce the complexity of large spreadsheets. You can also dynamically add data or change the way it is presented without having to painstakingly adjust formulae.
The programming language that Resolver uses is a mature and easy to learn language called Python. Specifically it is a version of Python that runs on the Microsoft .NET framework: IronPython. For more information about Python, turn to Python, IronPython and all that...
Your spreadsheet can be extended with code in any of the follow ways:
- Code you enter yourself directly into the code pane interface
- Code you create in external Python 'modules' (libraries) that could be used by many spreadsheet
- Existing .NET libraries, including those created by your IT department
- Third party Python modules, of which there are a great many to choose from
Application Development
So far I have talked about ways to extend a spreadsheet with code, either written yourself or from an external library. There is another important consequence of Resolver spreadsheets being code - you can save a spreadsheet as Python code.
This means that it is possible to implement business logic or rules using the spreadsheet interface, and then export it as code to be integrated with your IT systems.
It also means that turning a spreadsheet into a separate application (for example a web application) can be much easier, as it needn't be started from scratch. This is a task that whole IT departments are sometimes devoted to, and instead of taking weeks or months it should be possible in days (or even hours) with Resolver.
Resolver Features
Resolver has many more cool tricks up its sleeve. These include:
- An easy way to create worksheets from information in a databases
- Shared Worksheets - worksheets that can be edited simultaneously by people on different computers
- Worksheet Formulae - create worksheets from formulae that map or relate several worksheets to each other
- An 'audit mode' to quickly view the different types of data in your spreadsheet
- Recalculation is done in the background, so even slow to calculate spreadsheets don't interfere with the user interface
- A powerful set of builtin functions
- A formula language that includes powerful constructs like list expressions and generator expressions (inherited from Python and very useful)
- An output pane where debugging print statements appear and errors are reported
By far the most compelling feature of Resolver though, is simply how easy it is to experimentally manipulate data.
Resolver is still in beta but already a very powerful tool. As for the future, well. There are some features that still need to be added and some bugs to be fixed. More importantly there are many different ways that Resolver could evolve depending on what it gets used for. For an overview of all of these things, turn to Bugs, Features and Futures.
| [1] | These include the whole workbook, worksheets, cells, rows, columns and cell ranges (plus lots more). |
Last edited Mon Dec 10 20:46:03 2007.

IronPython in Action