Employed by a company that is technically groundbreaking; and holds patents for new process (at time of press, patent pending; but this is new as far as anyone knows). Hoptroff London is a single-product startup and new sub-company that was founded to supply timekeeping solutions to banks and trading organisations, which as of mid 2017 must be compliant to MIFID2 legislation. This law 1 is to limit organisations ability to frontrun trades. This is not a normal e-commerce employer, they will only be selling to large banks and trading organisations.
I was hired as “the developer” for the user interface for this solution. Most of the companies tech staff are C++ engineers doing the internal mechanisms for really precise distributed timing. I think most of the value that I supplied was building a user centric perspective to the product. In this company 'frontend' starts at the datastore, which my code doesn't populate (so including PHP & some server setup). I am not claiming the user interface is the patented section. I like this project as it is complex, demanding and has a quantifiable definition of correct. The heavy volumes of data mean it will be a challenge to render on mobile (not a core userstory).
This entire project is very clearly NDA-d, the tech challenges that I am solving/ have solved are:
- The MIFID2 terms state that data must be held for seven years, and as these companies trade all the time, every second must be covered. This requires a volume of data for every relevant machine, sampled on each metric, each second. I designed most of the DB Schema. The DB is written to continuously, and reads mostly as aggregate operations.
- There are plenty of metrics being recorded for suitably upgraded business applications; so trading organisations can view the performance of different sections of their business process.
- There are two dominant story epics; report anything abnormal that is happening now (so remedial action can be performed); secondly report for legal or audit purposes, any particular event that happened in the past. Some of the C++ code is managing clock adjustments, but that is not a feature of the frontend.
- I have created all the graphic design that this site uses.
- To make the volume of data easier to see, I integrated a JS/HTML5 graphing library. As there are alot of graphs, and many UX-optimisations that are not present in the library, I have spent months adding features to the graph rendering.
- To do necessary statistics, so that the viewer has a clear vision of the trends, and therefore the frontend must do calculations to display this. Secondly must run the statistics quickly.
- This project is atypical for e-commerce, in that only specialised & authorised users will be using it. I am displaying a lot of numerical data in various fashions; and can use academic norms for data representation.
- Being able to render a large volume of data (e.g. a 10^6 recordset); as most platforms allow over a month to be on screen. For the analysts or auditors to be able to see this data in a clear numerically-valid fashion.
- Another standard feature of platforms like this, is the creation of alerts. Hoptroff London also has configurable alert generator to report when the current state exceeds various boundaries. Obviously I took care that the data which resembles white noise a) raises enough alerts, b) doesn't raise too many. This means that alerts should be actionable. As banks are natural users of enterprise software, and so are expected to already have at least one SNMP server, alerts are emitted as SNMP or a plain SMTP.
- A clear challenge is being able to perform statistics on fairly large datasets, without exceeding “maximum user wait time”, or available RAM. I performed careful management of RAM, in particular; as many RAM uses are not visible in PHP source code, and in less data heavy situations would be unnoticeable.
- More recently I have been creating the process to allow users to evaluate the product. This is quite heavy in people and release management.
- Also, after most user stories; I am increasing the levels of code maturity, i.e. automated build scripts to reduce repeated testing on deployment configuration.
- I am managing work/user stories via JIRA.
As this is a small company unit, I am doing a wide range of professional behaviour as is common in small companies. This is not a demotion from my previous job title, unless you look at the title alone.