I was retained to assist building systems in Perl for a fintech company who have recently been added to the stock market. In Feb 2014 FairFX started a recruitment drive (ahead of IPO), completed the paperwork requirements relating to listing in the UK in June, for the public sale on the 5th of August. Their stock symbol is FFX. I started working for them after this point on the 18th.
My work is inside an NDA, but the company tells me that is the financially focussed stuff that this really applies to. The company uses standard tools/libraries where pragmatic, in line with common sense. I will observe, that unless a successive company is in the same market place; the common tools and practices are all that others are interested in. Perl is a language used in many financial companies in London.
For this work, I built a large project. My initial brief was to build some search tools (a login is required to demo this). Perl uses TAP for testing, with only weak correlation to objects. I have skirted this issue at MT, but found it faster to API test from the JS side. Unit test technology in Perl is less sophisticated than other languages, so I built an MVP unit test framework inside two or three days. I @--will publish++have published@ a clean build @--in future@ as OSS.
I outlined plans and technical feasibility to be able to maximise use of meta data and database technology. Practical testing from my available datasets report that better use of indices would not make any difference in the users view. My time was better spent doing the rest of the development process (which I did). Postgres has a number of plugins to allow additional features; and some nice tools for building indexes. One may build an index on a metaphone of a users name, and build selects of this index. I could implement these algorithms myself, but the postgres code integrates well with the data; and is already tested.
The majority of the time went to a second objective. To be able to test possible DB structural changes, I needed a test database, containing a volume of data. This is a common business requirement, but most developers don't need a volume of data to know if their code is viable. In the UK, the DPA limits what companies may do; secondly financial companies need to honour PCI, and AML regulations. I built a tool to create test databases that complies to these requirements. Please note, none of the customers data left its secure storage on the live servers.
I extracted the schema using standard tools, but none of the DBA tools that I noticed allow partial extraction in a fashion that complies to PCI. It is quite expensive to build each of the RDBMS features again. The data was partially selected, partially generated, and inserted locally. The table indexes applied after this, as the primary keys have been copied from another DB, rather than computed from the local settings. The sequences need to be repaired, so later rows may be added. I create a user account with correct privileges on the new test DB.
As I was doing TDD, I changed the implementation of my classes several times, without side effect. The API didn't change, and this is where the unit tests ran. On completion of project budget I presented good quality code, and I think a useful asset to the company.
I was talking with people about a perm role in Perl, in March. I started this role after not having used Perl in nine months; and I had lost alot of syntax. Not that I use many typing assist features, but there aren't any for Perl, as its syntax is too complicated. I was initially quite slow, compounded by being ignorant about FairFX systems. After the first few weeks, I was operating at normal rates.
I now know more about Postgres, specifically SQL relating managing/updating Schema. I think this is a better featured DB than MySQL, although Maria etc would have more features than MySQL.