Category

Uncategorised

Nimble, Quick and Focussed

By | Uncategorised | No Comments

The work we’re doing for the LM TOM Innovation Council is going well and getting noticed. Yesterday, the tomsupports.london website profiled Paul Richmond of Price Forbes, who had this to say:

What do you consider to be the most exciting InsurTech business today?

I deal with a number of technology vendors that are looking to deal with changes that I’m sure most of the market will be facing.

One firm, in particular, that stands out is WhiteSpace Software. This firm is really nimble, has a great attitude to innovation, is quick to produce a proof of concept and always focusses on quicker, easier transactions for the market.

Read the profile of Paul Richmond.

From Word to iPad

By | Uncategorised | No Comments

Brokers tell us that Microsoft Word is still the primary tool for drafting policies. We built an add-in for Microsoft Word to make their lives easier. The add-in analyses a document, identifies Market Reform Contract headings and spots variables such as amounts and dates. It then uploads that to our trading platform where the policy can be discussed easily with an underwriter.

Word Screenshot

Our add-in identifies MRC headings and variables like figures, dates and percentages

 

iPad Screenshot

The contract viewed on an iPad, ready for sharing with underwriters

Testable code shared between C# and Swift

By | Uncategorised | No Comments

We developed an idiom for writing tests in Swift which can be pasted into C# for running. It needs one search-and-replace, but that’s it. If you’re wondering “why?” you’re probably not a programmer. The need was to be able to establish that a Windows app written in C# does exactly the same thing as an iOS app written in Swift. That way we can guarantee compatibility and inter-operability of a hybrid system working across the two platforms.

For the programmer-folks in the audience, here’s some code:

    func testShowToLeadUnderwriterSuccess() {
        beBroker();
        var contract = makeContract( Status.NotFinalised, 
            makeBuyer().channel, makeBroker().channel );
        var opResult = contract.showToLeadUnderwriter( makeUnderwriter() );
        XCTAssertTrue( opResult.result );
        XCTAssertEqual( 3, count(contract.channels) );
        XCTAssertEqual( toString(Status.QuotationRequest), contract.status );
    }

We pick up the test functions from Swift and paste them into a suitable class in C#. We then search for fund and replace it with [TestMethod] public void and we’re done. Back into the red-green-refactor TDD cycle.

Our recommendations are:

  • use semi-colons in Swift
  • use var instead of let, and ignore the Swift complaints
  • write lots of functions in the base class, like beBroker() and makeContract() above
  • tell Swift not to require named arguments for the test functions
  • implement equivalent XCTAssert functions in C#
  • use parameter list functions: Swift’s string… and C#’s params string[]
  • be patient with the compile and run time in Swift – it will get there in the end

 

A python ate my brackets

By | Uncategorised | No Comments

Every programmer should have a scripting language to hand. Yes, the big system may be compiled and ingeniously installed, but there are day to day tasks which should be edit and run, edit and run.

Working on Macs, with Couchbase as a database, we needed a scripted way of creating test data. Then we could quickly refine the logic and push a better document. When Rohit suggested using Python, my reaction was yes, let’s give it a go.

It worked a treat. I’m reeling from a language without curly brackets, but I will get over that. I changed my mind from uploading the files to writing them locally (for a later batch upload) and Rohit was able to comment out a line, add a file naming convention and run it again. How many thousand new documents did I want?

def generateRandomClaim(claimType, push):
    surname = Randomizer.pickFrom(surnames)
    firstName = ""
    if Randomizer.oneChanceIn(2):
        firstName = Randomizer.pickFrom(femaleFirstNames)
    else:
        firstName = Randomizer.pickFrom(maleFirstNames)
    os.system("python RandomClaimGenerator.py " + claimType + " " + firstName + " " + surname + " " + push)

Test Coverage in Swift

By | Uncategorised | No Comments

We’re using the Xcode unit testing framework, and then gathering our test coverage statistics. It’s a great encouragement to see 100% coverage of the code you’re writing. Personally, I like to see the results big and bold, so I use the Slather tool to see them as a web page, alongside Apple’s too-cool-by-half understated bar graph.

Slather020616TestCoverage020616