=

desalasworks presents:

a portfolio of work by steven de salas

Newcross Healthcare

Overview

Steven spent 18 months working as Lead Engineer for HFA team. “Uber for healthcare workers”. Processing payments for thousands of health workers in both home and residential care setting. Focused on performance and stability fixes, CICD pipelines, upskilling new engineers, removing blockers, backend deployments and troubleshooting/extending system.

Technology Stack

Express, FeathersJS, Kafka, Sequelize ORM, Promises, Asyc/Await, ES2021, RESTful APIs, Jest, React, Babel, Webpack, Redis, RabbitMQ, SQL Server, DB Replication, Bitbucket, Github Actions, Monorepos, Docker, Kubernetes, Test Automation, GitOps, DevOps, Jenkins, Bash, AWS, EC2, S3, SQS, Serverless, Lambdas, CloudFront, CloudFormation, SNS, IAM, Load Balancing, SonarQube, SSL/TLS Certificates, New Relic Analytics. OAuth, Single Sign-On. Performance optimization. Debugging Production. Code Reviews and mentoring.

Key Deliverables

Steven joined Newcross at a critical time of change. The initial intention was for him to continue the work of previous engineers in a small team maintaining a highly impactful healthcare platform that helped to improve people’s lives and was very much in demand. However it quickly became evident that the tech debt accumulated over years made the platform hard to maintain, let alone grow the business.

Steven went from being a Senior Engineer in a team of 2, to interviewing and leading a team of 10 engineers and testers. All the while helping to mentor and upskill new hires, removing blockers, automate deployments, track down issues in production, improve the platform to make sure it was performant and reliable, and being responsible for cross-functional collaboration.

Feedback

Here is feedback on Linkedin.

Working with Steven was great. He joined Newcross at a critical time and quickly became an essential part of the backend team. He then took charge of our platform backend and made significant contributions towards performance improvements, build automation, bug fixes and setting up a strong engineering practice within the team. He also helped in laying the foundations of migrating Monolith to Microservices. Very happy to recommend him.

Esteban is one of the most inspiring engineers I’ve ever worked with. His “Sherlock Holmes”-esqe team presentations, where he tracked down the most elusive bugs, were legendary at Newcross and had people actually applauding! Incredibly smart and a genuine pleasure to work with, his superpower is inspiring and lifting the whole team around him. I can’t recommend Mr De Salas highly enough.

 

SEEK Role Requirements

Full Stack JavaScript contract role working on SEEK User Interfaces and AWS hosted API’s.

Steven joined the ‘Role Requirements’ team to help deliver great candidate matching. Millions of job applications are now getting scored and ranked for role suitability every year, resulting in significant time savings to users of the SEEK platform.

The majority of the work involved various enhancements to the back-end capability in the form of AWS-hosted micro-service APIs, and some user interface updates to accommodate improvements to job-seeker and hirer experiences.

Working in a Continuosly Deployed, Agile environment with Node.Js, Angular, Knockout, Jasmine, Karma, Gulp, TeamCity, LESS, Microservices / APIs, PACT, Swagger, Golang, DynamoDB, C#, SQL Server, Docker, Serverless, SNS/SQS, Lambdas, AWS DevOps.

Markit Commission Manager

Commission Manager is a trade reconciliation tool enabling brokers and funds in the worlds largest financial institutions to settle their commission differences.

The Project

The project involved a standardized platform to aggregate and manage trade information, commission balances and vendor invoices and payments.

Functionality

Markit Commission Manager enables users to reconcile their trading commissions with multiple counterparties and then instruct those counterparties to pay for research and brokerage services – all from a single platform. This efficient workflow eases the administrative burden of managing multiple commission arrangements.

The functionality is centered around trade reconciliation, raising of invoices and managing balance differences.

  • Detailed reporting of balance, trade and invoice information
  • Efficient tools to manage and highlight trade breaks
  • Administrative configurations for new users, tolerance levels, and arrangements
  • Compliance tracking of interactions within the Commission Manager system

Business Partner Integration

In addition, it was necessary to provide systems integration with all broker-dealers that were involved in the project.

Comments on the Commission Manager platform

UserSofia Rossato – Head of Markit Research Manager at Markit

Markit Commission Manager is the latest addition to our Markit Research Manager range of services. Our objective is to enable investment firms to manage their entire research workflow – including sourcing research, tracking corporate access, voting on brokers and managing research commissions – from one single platform to bring greater efficiency and internal visibility to the whole process. Markit Commission Manager is the final piece in the jigsaw. We have partnered closely with BofA Merrill Lynch, Barclays Capital, Citi, Credit Suisse, Deutsche Bank, Goldman Sachs, J.P. Morgan and Morgan Stanley to ensure the platform meets the needs of the industry.

UserFrank Volino – Head of Global Commission Management Services at Citi

This platform is good news for buy-side and sell-side alike. It will allow the buy-side to use a standardised set of tools to manage their commission credits at multiple broker-dealers. We are very pleased to be part of this important industry initiative. This platform is in a strong position to become the industry standard.

Commission Manager in the News


07 Oct 2011
Markit launches commission management platform
http://www.bankingtech.com/bankingtech/article.do?articleid=20000213861


04 Oct 2011
Broker-Dealers Fund Markit’s New Commission Management Platform
http://www.securitiestechnologymonitor.com/news/markit-brokers-commission-29174-1.html

Markit Environmental Registry

The Markit Environmental Registry is a central repository for tracing the ownership of carbon credits anywhere in the world and is the 1st ranked registry in 2012 Environmental Finance’s survey.

Rich Application for Carbon Market Transactions

Development of a fully Object-Oriented Javascript interface using the latest version of the EXT JS framework, a fully featured AJAX and GUI widget library based on Yahoo UI.

This was a 6 month project going live in September 2010 as part of the Markit suite of environmental products. The Markit Environmental Registry is a central repository for tracing the ownership of carbon credits anywhere in the world and has helped Markit gain 1st place for ‘Best Registry Provider’ in 2012 Environmental Finance’s survey.

While the work was primarily focused on individual paid-for access, there is also a complimentary public view interface that allows non-users to query database directly (written in plain HTML for SEO optimization).

Registry Landing Page

Delivering Features with Optimal Usability

Deliverables include a fully-operating Graphic User Interface compatible with IE (6,7 and 8), Firefox (3.0 upwards), Chrome and Safari in the form of an 8,000 line JavaScript library with 43 compiled javascript classes using object-oriented inheritance for minimal code-repetition and Java nomenclature and namespace breakdown wherever possible (with a view to find a replacement Java programmer) .

AJAX Architecture

The end result is a rich interface for a data-driven web application, with look-and-feel similar to that of a desktop application like Excel or Outlook. The users of the registry can access the following features:

Advanced Dockable Components

Standardised components such as grids (for record lists) allow for easily building functionality with components that can be docked in tab panels or within a popup window. Base components provide key functionality, such as layout, ordering, paging and searching and can be extended depending on the requirements for each section of the application.

Advanced Dockable Components

Simplified Search Criteria

Search criteria is simplified and prioritised to hide items that are less relevant to the user. Searching requires minimal input from the user (usually mouse-scroll and click).

Simplified Search Criteria

Predictive Search

An AJAX favourite. The implementation within the Registry is done using DOM buffering (only the items displayed are being rendered in the browser) which allows for thousands of records to be quickly filtered down to those that fit relevant criteria in milliseconds.

Predictive Search

Context Menus (right mouse button)

Context menus are used for right-clicking on a piece of information to find out relevant actions that can be performed. This is ported from functionality found in desktop application such as Outlook or Excel.

Context Menus

Windowed Interface

Window “lightboxes” are used to display information about individual records. These are pop-ups rendered within the page as modal windows, which provide a high degree of responsiveness in the application and the look-and-feel of traditional desktop applications.

Windowed Interface

Server-Side Validation Messages

Intuitive and appealing server side validation messages (without needing to refresh the page). The fields a user has entered incorrectly are clearly highlighted and provide additional information when hovering above them.

Server Validation

Hierarchical Data Representation (expanding trees)

Data is presented hierarchically wherever relevant, for example a syndication “Basket” used for risk management, can be constructed to contain other items within in. The User Interface displays this as an expandable item, with other items within it.

Hierarchical Data Representation

Object-Oriented Inheritance

The interface is designed as a self-contained JavaScript class library with components (Classes) that inherit from each other. This is done to reduce code-duplication and make the software more manageable.

Object Inheritance

Environmental Registry in the News

Markit Environmental Registry named ‘Best Registry Provider
April 2012

 

Feedback on the Registry

Some of the feedback received on this project:

UserEli Goncalves (End User)
www.personalco2zero.com

13 Sep 2010 – Your new platform really became more practical. Congrats!

UserHelen Robinson (Founder)
www.markitenvironmental.com

20 Sep 2010 – You guys have done a wonderful job, thank you very much!

Faster Web Applications with Indexed Views

A short introduction into ‘Indexed Views’ a really handy performance-improvement tool available in SQL Server.

I’ve generally tried to stay clear of using traditional (non-indexed) SQL Views as they severely hinder performance when building applications that query a large set of data.

Traditional SQL Views and the Problems they Cause

Here is what happens when you create a View on a large database: Typically you’ll want to see data from several tables aggregated into just the results you are looking for, and while it is true that this happens, the view is a virtual query that takes up no space so every query you make to the View will be passed on to the underlying tables. Worst of all, if you try to use View in one of your stored procedures, the view needs to be fully resolved to all underlying records even if you use a WHERE clause outside it to limit a subset of data, however the same does not happen if you get rid of the View and use the same SELECT query with a WHERE clause!

SQL Views are slow because a query affects every underlying table

SQL Views are slow because a query affects every underlying table

You can imagine that if you are trying to build a ‘dashboard’ on a web application that gives you some totals and gets hit every 2-3 seconds, that means that millions of rows will be traversed over and over again. This can be somehow mitigated with cached output on stored procedures but its still murder on the database.

Improving Performance with ‘Indexed Views’

Now here comes the exciting bit:

  • What if you could automatically store just the records you need to create your dashboard?

That is exactly what happens when you create an index in one of your views. The data becomes materialized to disk and the results you are after are available (ie. ‘cached’) without having to query the underlying tables every time you are after some data.

Indexed Views are faster because only the view itself gets queried.

Indexed Views are faster because only the view itself gets queried.

The Downside of Using Indexed Views

Be aware that here are a couple of drawbacks in using this type of construct.

  1. First, your underlying tables become ‘schema-bound’, this means that you can no longer get rid of them or change their structure (add an extra column for example) without dropping the view first.
  2. Second, any insert or update into the underlying tables will be slowed down because they cause a refresh of the indexed view. This means transactions involving INSERT, DELETE or UPDATE into these tables will ideally have to be batched (ie, try to avoid inserting/updating one row at a time, insert/update many rows at a time instead)

However, in my opinion, the drawbacks may be well worth it, as most applications involve many database reads and few database writes.

More about Indexed Views

Support for Indexed Views in other database systems.

Oracle 8i and upwards have Materialized Views which are a very similar feature, MySQL however is one of those database systems that do not support Materialized (or Indexed) Views.

If you want to have similar functionality in MySQL and you use Stored Procedures for inputting data into your database, you can enhance the Stored Procedures that update/insert data by running an extra calculation at the end of the procedure that updates a summary table which acts as your view. This is essentially doing the same thing as an Indexed View but keeping it updated manually.

Hope the explanation was useful.

Value Trader

Value Trader is a tool that calculates stock prices based on value fundamentals from Balance Sheet and Profit and Loss statements. Feel free to use it to determine the financial health and estimated value of your stocks.

Live Address

http://www.valuetrader.net

The Landing Page

The landing page provides concise information on a few selected companies based on a “Watchlist”. These are chosen by investors so that they feature every time they come and visit.

Company Details Page

When drilling down into an individual company. The system provides information by looking at financial data over the past few years to determine general health of the company, as well as provide recommendations based on price (by comparing it to the book value and earnings of the company).

Designed for iPhone

The design has been further enhanced to look good on mobile devices, using a mix of small and large type so the important information is clearly displayed even on a small screen.

IP Based Security

The website makes use of IP addresses to authenticate users. The following advantages:

  • Only need to authenticate once (per location).
  • User locations are traced by a collection of IP addresses associated to an email.
  • There are measures in place to detect SQL Injection, Denial of Service and Dictionary Attacks. If a single location tries to hack the site all associated IP addresses are automatically denied access.

Pepsi Project Refresh

A global-reach social media campaign for renown household brand. This project involved designing an interface for a competition mechanics application with some of the latest technologies such as RESTful AJAX, jQuery, jQT, Qunit, HTML5, GitHub, Ruby on Rails all delivered over Amazon’s E2 Cloud delivery network.

The Pepsi Project Refresh

Pepsi Project Refresh – Global Competition Campaign

The Pepsi Refresh Project is an international social-media campaign aimed principally at teenagers and young adults, Pepsi’s main consumer base.

The project involved working with other skilled interface developers to customize the GUI and enhance an existing competition-mechanics platform (supplied by Global Dawn, a London-based specialist software developer) to provide Pepsi with the ability to create and judge competition rounds using bespoke rules, giving users have the ability to upload content and rate other user’s content all using Pepsi’s familiar blue branding.

Rich User Interface Technology

The principal technology stack of the project was RESTful AJAX over Ruby on Rails, this meant a highly-responsive UI that required minimal refreshing of the browser’s window. The main frameworks used for this were jQuery and QUnit(for unit testing).

Compatibility requirements meant unit-testing across various browser platforms.

A distributed team across several geographical areas meant using a robust and well-known Source Control and Bug-tracking platforms, GitHub, the platform of choice for many open-source projects was used for this purpose. Jira, another excellent solution provided by Atlassian, was used mostly for bug-tracking and task management.

Amazon Cloud

Various Technologies used for the Project

In order to improve high-volume delivery across all international location, the project used Amazons EC2 CloudDelivery Network.

Global Release

At then end of the project, the platform was localised and released across various international site. Russia and Italy being the first two participants in the competition.

Russian Site: platform was localised and delivered across various International Sites.

User-Generated Content

The key to the low-maintenance requirements of the competition is that users generate their own content. They upload videos and images, and they get to vote on videos and images provided by other users. According to Global Dawn’s 1-9-90 competition technology, some users tend to provide the majority of traffic and content in a site, hence these users are rewarded with ‘points’ to spend across the site as they see fit.

Italian Site: Users upload their own content and vote on other people’s content.

Competition mechanics are designed by brand managers (Pepsi in this case), they choose different parameters such as the duration of the competition, number of stages etc.

Imperial College Service Desk

A web front end for existing Imperial College Service Desk software so that users can access the problem ticketing system and check status directly.

Designing the Landing Page

  • Contents of landing page are largely dictated by existing application
  • Marval API is used to link up with core CGI and database.
  • Users are able to create tickets or view existing requests.

Imperial College Service Desk

Template for Adding Incidents to the Database

  • Query information is largely based on existing database fields
  • Interaction via CGI into Marval Database
  • Once form completed, a new incident is flagged and forwarded to the Service Desk or the appropriate IT person.

Imperial College Service Desk - New Problem

Template for Viewing Current Incidents in the Database

  • Screen allows current users to read into existing Service Desk database.
  • Its possible to update current problems so as to notify relevant staff in charge of this problem.

Imperial College Service Desk - View Problem


Imperial College PC Shop

Online PC shop for Imperial College staff and departmental needs. Featuring a bespoke administration interface capable of expanding the product range.

Developing the Landing Page

  • Purchasing Process based on a 5 step “wizard” configuration to improve user experience
  • Project Developed in ASP Classic, Javascript and SQL Server

Imperial College PC Shop - Main

Completing the Purchasing Process (Confirm Order)

  • Pruchase process completed
  • Order Confirmation Email sent to user
  • Details of the order are stored and forwarded to procurement department

IC PC Shop Confirm Order

Designing the Administration Interface

  • Add New Products, Edit and Delete Existing Products.
  • Integrated into existing Imperial College web templates.
  • User Interface simple and easy to use.

Imperial College PC Shop - Admin

Nandos’ End of Day Uploads

A daily upload process carried out by each of Nandos’ stores that copies daily Point-of-Sale information into a central database repository for analysis.

Start of Process

  • Nightly process run by store manager
  • Launched as a popup with pass-though authentication (POST variables)
  • Pushes data from local Point-of-Sale system into central database

Nan

Nandos End of Day Completed

  • Wages Information, Cash Registry & Inventory File uploaded from local till system into central database
  • Data insert using BULK INSERT (TRANSACT-SQL)
  • Data parsing is performed on SQL server using stored procedures for faster execution.

Nandos - End of Day Completed