I think I know what it must be like being a contractor. It’s a bit like having a baby and ten giving it away. Well, that’s what it feels like when you work on a project and then have to abandon it. I’ve been working on an ‘innovation’ project around driving excel through its JavaScript API. More specifically I was tasked to write a Add-in using the new ‘Universal App’ approach which basically says, write once and run anywhere, be that Mac, Windows, Linux or Office 365,

You basically start off writing a website, then you load the website into Excel and then you tell your website to load a JavaScript library which will talk to Excel. Quite interesting, Its been tough though, seeing that I’m not a JavaScript developer but I am a developer who when he puts his mind to it, can do most things. Anyway, the idea behind this idea of using a JavaScript plugin was to explore firstly how its done, and then what it can do and what it might afford us. Currently, we have a native c# excel add-in which basically created user-defined functions and allows you to upload/download data from the Lusid API. This is fine and it works but what you don’t get is a UI. The user is expected to know or read up on how the functions work, what parameters need to be passed in and how to format the data results – for example, if like me, you don’t know how an array of results appears only on one cell and then needs to manually be expanded – then you’re missing something. A UI might better direct you as to what should be done…

So I decided to build an Angular4 web application to represent the add-in and then call/load the JavaScript excel library to interact with it.

My job was to explore how to interpret and represent information coming from Lusid and see how it could be represented in excel and more importantly how the UI might work and how we could use it.

The way I decided to do things was quite different to the default Excel mentality as represented by our C# plugin, I decided to fetch information from Lusid and present it in the plugin and allow the user to ‘synchonise’ or send that information over to the excel sheet, effectively dumping it as a table. A nicely formatted table. You could browse through the website, selecting and drilling down into the data and when you want to use that data simply send it to the spreadsheet and I’d convert the data to a table. This was a far throw from typing in formulas and expanding array results. The data just appeared on the sheet.

To create new entries, simply adding new rows to the existing table and ‘synchronising’  would automatically create those entities in Lusid. Quite interesting approach. I showed this to the CTO and basically he rubbed his hands together and said perfect, stop there and shelve it – now I know what can be done, thanks very much.

In one respect, that's great but in another, its like I’m closing down shop, moving on and leaving something behind. I know its not lost, I’d checked it into the repository and it will be resurrected in the future apparently but that is that – no more work on it.  I kinda want to work on it more. Why? I love doing working and doing different stuff with technology. I want to do it differently now, perhaps come up with a new novel way of interacting with excel and Lusid.

So that’s why I think I know what being a contractor is like. Not sure I’d want to be a contractor. For one, I’ve put my heart and soul into this project, I’ve written it on the train to work, on the train from work, just before bed, on the weekends – its been a labour of love… But there is one thing that is worth noting, I’ve gained valuable experience and that is something that isn’t left behind. I’ve written an Angular 4, Boostrap enabled application that uses typescript and webpack to deliver a web application that is embeddable into Excel. I’ve worked with the API, I know how it works and its little quirks – like its Promise-Like structures. I’ve learned about Okta authentication(which was tricky in a hash-location based angular app – required by excel api) and I’ve practised using the Lusid API using raw POSTs/GETs and I’ve been able to visualise how to consume the data and then try define it in a UI. Not bad for leaving it all behind and shelving the project!

Comments powered by CComment