My CV


A Resume of Recent Projects

2022-2024

Period               : Mar 2022 – 2024

Client                : RG Carter

Position            : System Architect
 
Development
Environment    : Azure .NET, .NET Core, SQL Server, Razor pages

Languages     :  C# / Razor pages / Blazor .NET 8/ HTML / JavaScript / T-SQL

Database        :  SQL Server 

Developing     :  Custom solutions as per clients requirements
  
RG Carter uses Deltek PIM (Project Information Management) to support them in their construction management business. At RG Carter I designed and completed a number of solutions, some of the highlights of that work are below:

Viewpoint Collaboration Project

RG Carter uses Viewpoint (for Projects) primarily for their Project teams, who use it to manage their Project technical documents. RG Carter wanted to create an automated solution that would sync the Viewpoint documents (and subsequent document revisions) from specific Viewpoint Projects into RG Carter’s own internal system Deltek PIM.
 
Initially Teams meetings with Viewpoint consultants to establish the feasibility of the requirements and identified that they have a Web API that can be used to manage the documents. Using the API we could query and download the documents from Viewpoint. Next we came up with a way to get the downloaded documents into Deltek PIM. It turned out that they can be emailed into PIM using a proprietary mechanism, this required a custom .net solution to pick up the notification for an incoming email, the email contained enough information to identify the file, and the project target entity.

Finally the solution needed to be automated; after running tests to determine the optimal rate at which we could process documents we concluded that the service would run every 5 minutes, (running 24 hrs./day 7 days/week). I created a set of SQL database tables to hold the state of the sync and the files downloaded and imported, created a  number of .NET C# scheduled tasks as well as a Web API project to query Viewpoint, download the files and send the custom emails into Deltek PIM. I created a separate Queue Processor .NET component at the Deltek PIM end which would fire when an incoming email was detected and enable is to complete the correct insertion and integration of the document as file and a Project Document entity along with accompanying meta-data into the Deltek PIM database.


C# .NET PIM Scheduled task to query the Viewpoint Web API for new documents to download – to run every 5 minutes

C# .NET PIM Scheduled task to download the queued list of docs that need downloading – to run every 5 minutes

C# .NET PIM Scheduled task to send notification emails to the Project team alerting them to the need to create a missing Viewpoint Project to PIM Project mapping

C# .NET PIM Queue Processor – to pick up on and process incoming emails relating to the files that have been emailed in to PIM

Additional PIM pages to manage Project and Enquiry entities participation in the Viewpoint collaboration and Mappings


Thrive KPI Data – Publish RG Carter Project data to KPI Platform

Thrive (Thrive-platform.com) are a cloud service provider offering a Web API that enables companies to publish their social value and impact to the cloud with the aim of fulfilling a government initiative of driving companies towards global, social and environmental sustainability.

Teams meetings with Thrive (Thrive-platform.com) consultants team to learn about their Web API and how we could use it publish RG Carter data.

After some prototyping using a Thrive sandbox that we could publish to, I proposed and then built a solution consisting of the following:

SQL Server Tables to support the cache of data to publish as well as the definition of Thrive metrics

C# .NET scheduled task to publish RG Carter Project data via the Thrive Web API to the Thrive platform

C# .NET component to manage the CRUD operations on SQL Server tables for the Thrive metrics

C# .NET component to provide Bulk Publishing of Thrive data for instances where we want to POST adhoc historical data to Thrive.


SmarterPay automated Credit payments

RG Carter wanted to automate part of their payment process from the Payroll and Purchase Ledger accounts. This service would process credits to the value of several million pounds per month. 

We identified SmarterPay (Smarterpay.com) as a cloud based payment platform that offer credit payments solutions to clients wanting to automate payments. 

I had Teams meetings with SmarterPay consultants to identify and learn about their Web API and how we could use it to build a system for our requirements.

I designed a solution and it was agreed that I would build the following:

SQL Server tables to support the concept of a credit payment batch, credit payment batch lines, bank account and credit queue. Because the various types of payment are coming from different ledgers we had the concept of a batch file types, each type would need to implement a 1st then 2nd level approval. We also needed to support the concept of file submitters so we could manage the persons in payroll assigned to batch types.

We built the initial system inside a sandbox so that we could test the solution before going live. 

The other key components:

C# .NET PIM scheduled task to service the “drop” folders, credit queue, and to process credit batches. Emails sent to relevant parties for Approvals, full detailed debug logging throughout the run for sanity. Schedule was set to run every 5 minutes unless a Batch is being processed.

C# .NET Secure PIM Pages providing UI for payroll staff only to view all Credit Batches in the system

C# .NET secure PIM pages to provide details of a specific Batch and process 1st and 2nd level approval

C# .NET PIM Scheduled task to service credit batch associated emails


Subcontract Portal

RG Carter wanted to create an external facing portal for use by their on-site subcontractors. The Portal would over time offer more services.

Extensive conversations with RG Carter to establish the requirements and service functions, highlights of these below:

    Login to Portal 
    Request a permit (there are many different types of permit)
    See my Permits
    Book a site Delivery
    View site Deliveries
    Create an observation
    My Observations (enables the subcontractor to complete and submit observations)
    Utility to convert PDF’s to image (for the floor plans to be used in observations)
    Drawing app that allows user to identify Observation locations by dropping Pin(s) onto a floor plan, freehand mark-up, text mark-up, colour selector and erase functions

I looked at a couple of options (PHP and Blazor) for the development stack as this would be a new site. I liked the idea of .NET 8 and Blazor and did some initial work to establish how this might work. Blazor looks good but timescales for the first release (the Permits) was only around one month. I didn’t feel comfortable committing to these timescales with a new development environment though I could see the advantages of using .NET 8 and Blazor, just to add to the unknowns it wasn’t clear how to implement drag and drop and freehand mark-up with Blazor. We went with .NET Razor pages and SQL Server.

We had established early in the requirements stage that I would need to design for two types of permit, those that are of a fixed type with fixed set of questions and custom permits where new permits can be created with an adhoc number of questions and question types. The biggest initial task therefore was to build a data model that supported the concept of permits where permits could have versions (to allow for change) where a permit could have a header and a body and the body would consist of an adhoc number of questions (and therefore answers). 

In addition each question can be defined as one of the following types:

Signature
File upload single or Multi
Text
Textarea 
SELECT (dropdown list)
Checkbox
Radio Button
Date/Time
User picker
Popup Text
Plain text in a panel
 

I needed put together composite components for the Signature, DateTime and FileUpload types. 

The subcontractor portal system has gone Live and is used on a daily basis by the Subcontractors for their Permit, Site Delivery and Observation needs.

Portal prototype ideas C# Blazor .NET 8 Web App
Portal C# Razor pages 
SQL Server – for the database
Azure Blob storage
Azure Site deployment
C# .NET Core – for the PDF to Image utility
 

2011-22

Period              :  Jun 2012 – Jan 2022

Client               :  MIDAS (construction)
Position            :  Senior Developer / Consultant  
Development
Environment    : SQL Server, ASP.NET, Azure, Sharepoint

Languages       : C# / Razor/ VB.NET /.NET framework / ASP.NET/ WinForms/ WebForms/ XML/Javascript, Blazor Server/WASM / Web API

Database         :  SQL Server

Developing      :  Internal Systems (Alchemy), Sharepoint Online sites and systems, Including PowerApps, Other Web and Desktop Apps
  
My role at Midas has been primarily to support the business by developing new software applications as per Midas requirements as well as maintaining and developing new Entities, modules and processes for their core systems (Alchemy and Invoice-Workflow as described above).

Midas is a construction management company with a turnover of around £250 million and employing almost 500 people. 

The primary software used is a solution from Deltek this is a .NET and SQL Server Knowledge management solution primarily consisting of a customisable CMS with comprehensive document management, internally Midas calls this Alchemy. 

The platform though flexible is mainly targeted at the Construction and Engineering Projects has many pre-constructed entities and modules key ones being Contacts/ Organisations and Projects. In addition to the core system, there is an Invoice Workflow (.Net) web application.


Examples below include some of the highlights (but are not limited to):

Highlights of my development work during this time include:


Sharepoint:
Automated provisioning of Teams / Metadata, Custom Document Folders Structure and Auto Updating Lookup Lists

Midas’ primary workstream  revolves around Enquiries which may then become Construction Projects. They start of with an initial Enquiry, if they win the bid a Project is created. 

Midas have many projects ranging in size up to around £20 million. The goal of this development was part of our move to Sharepoint and so to automate the creation of new Sharepoint Team sites for each Enquiry or Project as and when a trigger is detected.

The creation of the Teams would happen overnight using a schedulesd task.
The entire setup of Sharepoint Teams for the corresponding Enquiries or Projects was automated including adding all relevent Contacts into the Teams with appropriate permissions, Custom Document folders with Metadata were provided along with Lookup lists – this enabled new and advanced searching and filtering of the typically hundreds of thousands of documents that Midas hold on a project.


Integration of Internal Systems to Outlook using MS GRAPH API


Sharepoint On-Boarding System
Using SQL Server, Layer2, Sintel forms, Shortpoint, PowerAutomate (workflow)
Created cost savings to Midas by automating much of the complexity surrounding the process of on-boarding new employees.


KPI Suite.

Working with the finance director to build suite of business KPI’s (Key performance indicators), this was a conversion from a complex set of Excel Spreadsheets to .NET web pages written in C# using SQL Server, this suite involved the creation of appropriate data model, Tables, SPROCs..NET pages were developed  to capture and validate input along with other pages to view the data as graphical charts. Over 20 KPI’s were created including CO2 usage, Cashflow, Division Turnover, Group Turnover, Profit, Outstanding Sums owing to Suppliers, Unpaid Client Invoices, Direct and Indirect Overhead, Tenders.

All Midas companies and regions were catered for and for the first time the board had easy access to up-to-date KPI information.

Invoice workflow 
Maintained and created new functionality for this .Net EF web forms application which is a key application underpinnning the day-to-day management of Midas Invoicing. 

Payment Schedule System

Designed and built C# .Net solution to fulfill new government requirements whereby a company now needs to notify a subcontractor when they are to be paid. This new web based system plays a crucial role in ensuring Midas does not risk legal action from Subcontractors. In the process Midas saved a lot of money as they apparently investigated the potential to buy a product in which would of cost around £20k/year.

Axim Summit Upgrade 
Migrated and Upgraded Accounts away from unsupported ODBC driver connections to a native SQL Server solution.

RFA Subcontract Approvals re-write
Complete rewrite of the old subcontractor approval approval system from ASP  to .NET along with a new approval security model based on Job title rather than Project role. 

Subcontractor Payment re-write
Complete rewrite of the subcontractor payment modules from ASP  to .NET along with a new approval security model based on Job title rather than Project role. 


Subcontract Workpackages re-write

Large scale conversion of one of Midas core systems – legacy ASP code needed to be ported to a 64 bit .NET web and be crosss browser compatable
 

2007-09

    Period              Oct 07 – Jan 09

    Client             :  Sellicks / Cards & Stationery South West
    Position          : Architect / Senior Developer / Consultant  
    Development
    Environment  : .NET 2.5 framework, XP, SQL Server 2008

    Languages     : C# / VB.NET /.NET framework / ASP.NET/XHTML/ Javascript / Winforms/ .Net / XML / Ajax

    Database       : SQL Server 2008 and 2005 

    Developing     : Cards & Stationery web application
  
Sellicks of Plymouth are one of the UK’s leading Cards and Stationery retailers selling to Trade only. They required a new Web platform as an outlet for their products. Until now they had no web presence, what they did have was a Mini Mainframe that hosted and ran their product line. My role then was to design and build a large scale web application as an outlet for their products; the following describes what I built.

The product called iblad would work like a shopping Mall that hosts a number of shops. Each shop is a white label solution with its own branding logos, customers, products, offers etc. The Webmaster can create a new Shop (White labelled site), then supply them with everything they need to setup and manage their own unique shop including ‘Image Processor' and 'iBladSync' the new site will have its own set of profiles for administrator(s) Company Rep(s) and Customer(s), the new site is in complete control of its own branding, products, special offers everything.    

Customers shopping at an iBlad site can seamlessly navigate between other different iBlad sites (shops), there are no additional registration process to go through, once a customer is registered at a site and they visit a different site the different sites administrator is notified by email and the customer just continues shopping.

The key features of the iBlad ecommerce suite are summarised below.

* A complete white labelled ecommerce solution specifically written for large scale product lines.
 
* Consists of three components
            * Image processing software (custom app for bulk import, image optimisation and manual or automated data upload to the internet).
            * The iBlad website - the retail outlet for the products
            * iBladSync - a desktop windows application designed to be run on laptops that synchronises a local version of iBlad with the Website designed for company reps. 

iBlad - Website

* Full Back office CMS (content management system), where site data is maintained including 
            Password maintenance
            Profile creation, 
            Webpage new and maintenance, 
            Create Users
            Manage Users
            Re-Ordering Webpages
            Customer maintenance, 
            Publications, 
            Products, 
            Product Index
            Brands
            Carriage bands, 
            Orders, 
            Suppliers,
            Supplier codes 
            Stock etc.
            Help
            Mailing lists

*    Can be configured to run on laptops (for company Reps) and in combination with the iBladsync product the laptop version and main web-site are kept in sync.

* Four profiles - each profile is specific to a certain type of user on the system and contains the facilities to which the user level has access.
            * Webmaster 
            * administrators 
            * company reps
            * customer

* Administrators can create orders for customers. Useful if for whatever reason is unable to create the order themselves.
* Comprehensive Order history
            * Webmasters see everything
            * Administrators see all orders for their site
            * Customers can see all the orders they have created
            * Print Orders
* Reports 
            * Adhoc reports - 
            * Powerful reporting system 
            * Administrators and Webmasters full query access to the iBlad database 
            * View the results in a browser 
            * Optionally export to spreadsheet or csv and print
            * Optionally include column headers

* Optional Customer specific pricing model

* View products 
            * By Department (where the list departments is a generic category determined by the site e.g. Christmas/Halloween/Diaries & Calendars/Clearance Stock/Gifts)
            * By Publication
            * By Supplier
            * By Brand
            * By Index
* Sort By
            Description A-Z
            Description Z-A
            Price Low-High
            Price High-Low
            Catalogue Number
            Manufacturers Ref No
            
*iPlan - so called iPlans - users of the site can create their own mini catalogues and put in them any products they wish, this helps customers who frequently re-order and don’t wish to keep searching through the iBlad site for the products they are looking for, simply create an iPlan look for the products you’re interested in, hit a button and the product goes into your iPlan mini catalogue. At any time the user can choose to view one of their iPlans and order from there.

* All search functions are available whilst in iPlan mode.

* Stock availability indicators and search filters

* Shopping basket and Checkout

            

Iblad - Image Processor

Importing data into an ecommerce solution is one of the first tasks to deal with. To this end iBlad - Image Processor was written as a custom dedicated application optimised and tuned to enabling you to import images and upload them to the iBlad website. 

* Import multiple images at one into the system for processing
* Configure multiple images at once 
* Configure multiple Images pr product
* For publication type products such as cards to be able to state the Front ,Back, Inside-left, Inside-right, and Back of a product
* Uniquely identify which workstation (and user) did the import and upload.
* Upload multiple images at once to the iBlad website.
* Manual Uploads of Customer, Stock, Discounts, prices, catalogues to website
* Automated Uploads of Customer, Stock, Discounts, prices, and catalogues to website - Uploads can be set to occur at given frequencies on specified days and times.
* Notification emails sent to site administrator when data is uploaded.

IBladSync

* A desktop application designed to synchronise a standalone version of iBlad with the Main iBlad website
* Targeted at Company Reps who require offline version of Site to either demo or take orders.
* Can be run manually
* Can be configured to synchronise automatically on given days and times.
* Can sync the iBlad database or Images or both.


2005-07

    Period               Sep 05 – Aug 07

    Client             : Nexus for Laserforms Int / Bishops Move
    Position         : Senior Developer / Consultant 
    Development
    Environment : .NET 2.0 framework, XP, SQL Server 2005

    Languages     : C# / VB.NET /.NET framework / ASP.NET/ ASP / ADO.NET/VBScript / Javascript / Winforms/ .Net Remoting / Windows Services / XML / Ajax

    Database       : SQL Server 2005 and 2000 / Reporting Services

    Developing     : Human Resource Software / Removal Company Software 
  
An interesting and challenging role. Laserforms International are the undisputed market leaders in the electronic legal forms marketplace and are now also a major supplier of legal accounts and practice management systems to the UK legal profession. This project was based on major further development of their established personnel system designed specifically for law firms, called HRNet . 
HRNet consists of over 150 SQL Server Tables and over 250 stored procedures. The new development used a combination of ASP.NET /  SQL Server and Reporting Services 2005, outputs included Excel / Outlook and Exchange.. 
As a senior developer my role was to help gather requirements from key client law firms such as Ashfords Solicitors, and then implement these as appropriate SQL Server tables / Stored Procedures, and ASP.NET pages.  The development included but was not limited to full implementations for Life Assurance, Medical Insurance, Pensions, Long Term Sickness, Permanent Health Insurance and a complete document management solution. 
Further development involved designing and implementing a custom multithreaded Windows scheduling Service that could be used to automate tasks within HRNet and develop an Interface to HRNet using  .Net Remoting.     
Further development – HRnet Exchange Integration, I designed and implemented a .Net Remoting solution to handle communication from the Scheduling Service (described above) to a further Windows Service that we named HRNetExchangeManager.   This service was located on the Exchange server and used CDOEX to talk to Exchange.  The implementation was designed to Manage Emails/Appointments and Tasks.
Other work involved porting existing parts of of HRNet from classic ASP to .NET and supporting the entire application suite through the company’s Web Portal/help desk.
All documentation and coding was written in accordance with internal company guidelines and standards. 
Bishops Move is one of UK’s leading removal companies.  The job here was to re-write their Bishops Move Microsoft Access based software as a Web site. We used SQL 2005 .NET 2, Ajax and Reporting Services. Their old software really was creaking at the seams, each branch had its own version of the software that had become customised over time the new version needed to redesign the database model and cater for all branches personnel vans equipment and quotes around the country. In essence the software manages Bishops move core business by managing customers corporate and non-corporate, at the heart of it is a UK and International Quote and Move management system with invoicing and reports. 
 

 

1998-2003
    Period        : Jan 98 – Jan 2003

    Client        : (National Westminster Bank)
    Position    : Technical Team Leader/Consultant Programmer/Analyst    
    
    Development
    Environment    : Windows NT 4 Client PC’s on an NT4.0 Server Network

    Languages    : .NET Framework C#, DCOM, COM Visual C++ 6/5 & ATL, Win32 SDK /   Visual Basic 6/5 / Active Documents / Visual        Interdev /  DHTML / JavaScript / VBScript    

    Database      MS SQL Server  / MS Access 

    Developing    :  Account Management, ATL Controls, Intranet Applications, NT Services,

NatWest have been busy. I have been involved in a number of projects.   Primarily my work for the bank centred around developing and maintaining application functionality for the RBP (Retail Banking Platform). As part of the Banks RTP implementation strategy, NatWest has being rationalizing its business and as part of this process we have written an entire new suite of software for the new large RTP sites.    
This new software includes what’s known as the ‘Account Management’ process, which includes Account Opening,   Regular payments,  Plastic Cards and Core Data Maintenance.    

My primary role was Technical Team Leader for AM (Account Management), and our tasks in Account Management were twofold; to develop new functionality inline with NatWest’s RTP requirements and to maintain and fix bugs in the existing code and so maintain the live system. 

We used UML for the USE Cases; Sequence Diagrams to express scenarios and object interaction and we implemented the objects using the Microsoft C++ ATL library.

NatWest has developed its own C++ AF (Applications Framework) which is based on COM for the ‘local Agents’ and ‘Views’ and DCOM for the ‘Remote Agents’. The Account Management software was developed using this Framework so we had in depth experience using C++, ATL COM and DCOM.  I wrote ‘Card Markers’ as a new extension to the Plastic Cards stream of Account Management using the AF.   Card markers consist of Hot and Control Markers that can be set against Plastic Cards and represent different out of order states that a card may be in.   Card Markers is represented on the client NT machine as a number of C++ COM ATL ‘agent’ components and, the application communicates via TCP/IP interface and encryption wrapper to a remote NT box called the DAM which is a SQL Server Meta Data server, it’s the job of the DAM to map the client messages to actual MVS HOST mainframe FIFI and MFI transaction requests.  In addition the DAM maps the response from the HOST to NT COM data structures and passes them back to the client.
One key part of any in a large scale Live System (one that is often overlooked on the Client) and one that will pay itself back over and over is a good well thought out trace mechanism.  When IT systems fail often the hard part is in identifying and proving what’s going wrong and under what scenarios the failure happens.   Without trace this process can and normally does take considerable time and effort not to mention often the use of test beds that don’t always reflect a ‘like live’ situation. On the other hand the ability to pick up a trace log file can at best provide sufficient evidence to immediately identify the cause of the problem.
 
As part of the extension with NatWest I wrote a Trace/Debug control with the following features.   The control should be able to plug into the existing Account Management suite and further more be a general purpose control so that it can be used by other projects.   The switching on or off of trace should be controlled via the registry.   There should be multiple trace levels so that an analyst could switch between various levels of detailed trace output.   The trace level should be configurable via the registry.   If trace is switched off and an application using the trace control throws an exception under normal circumstances the evidence would be lost; the trace control should handle this scenario by using a memory buffer (size configurable in the registry), subsequently if the application using the control exceptions and trace is currently switched off debug should be overridden and trace temporarily switched on, the buffer written to disk then trace switched off (restored to original state),  in this way we don’t need to leave trace ‘active’ in the live system.   There should be multiple trace log files written to disk so that for example trace would be written to a 1mb file, when the file is full a new file is started and so on only recycling the first log after a period of time thus making the process of investigation and trace log retrieval more effective.   Every line of the trace should start with a date, time, module name, method name stamp.    

In addition to the Account Management suite I was technical lead on the LARS project; this was an Intranet application with the following functionality.   The USE Cases, Analysis, static model and sequence diagrams were created using Rational’s UML tool, Rose98.  The application would be delivered through the Web Browser and Staff would be able to book absences, buy holiday, sell holiday; the application would email the staff Team Leader or SGM (Manager) via email. The application would also provide Team Leaders and Managers with a suggested approval/disapproval sanctioning based on the remaining ‘cover’ in the team if the person requesting the absence was to be absent.  The application would be presented in the Internet Explorer.    I also wrote a key control for this project which consisted of a special calendar control that would enable users to be able to highlight an absence period, the control had interfaces to support menus, support special properties to represent different types of absence, the control would know about standard holidays (i.e. weekends/bank holidays) as well as having an interface to set other standard holidays.   The control had many properties to expose internal values such as the currently selected person (row), the absence start date, end date, absence record id for SQL server lookup and much more.  The technology used to implement the project was a combination of HTML, ASP, JavaScript, and Active Documents, COM and DCOM. 
Other work I completed at NatWest included writing an NT Service as part of the mechanism for implementing Credit Scoring on the client,  a Web site which served as the support and maintenance centre  for the Account Management suite,   amongst other things this included a SQL Server backend, ASP pages, and ADO connections, so I have worked with much of the Internet development tools such as Interdev NOTE: I have also been using Java to develop a CHAT Server and client again using UML for the design; we also explored the various options for implementing the  e-Commerce site  through discussions with TDA (Technical Design Authority).  In addition to this work I have completed code maintenance on other RBP components including the Page, MessageBox and Paragraph OCX custom controls.
Recently NatWest wanted to look at how C# and the dot NET framework could handle the following task.   Each day we pull back across the network around half a million application Exception log files.  These files are are generated when the applications at the branches throw various exceptions.  Once the logs have been retrieved we need an application to read them and parse them all and output the data into a database so we can generate stats for management.   We decided to use C# for this parsing task.   I designed a simple GUI that took as inputs the a root path to the logs, a filepath for outputs and a thread count, so that we could play with tweak the application.   The GUI also had controls to stop, pause, resume and abort any of the worker threads.   The class model consisted of a form, a DirectoryWalker a CSVFile, a Worker and a Queue.  I used raw delegates instead of the more abstract ‘event’ mechanism to see how the Callback plumbing worked.  The GUI once configured creates a DirWalker object which in turn creates the identified number of Workers, each also a thread.   The DirWalker recurses through the exception log directory tree collecting exception log files into a Queue object.   The Worker objects retrieve an item from the Queue open it, parse it and send output results to a CSVFile object.  The project was successful wih some interesting results.


1997-1997
    Period               : Sep 97 – Dec 97

    Client                : London International Financial Futures Exchange (LIFFE)
    Position            : Consultant Programmer/Analyst    
    
    Development
    Environment    : Windows NT 4 Client PC’s on an NT4.0 Server Network

    Languages       :Visual C++ 6/5 & ATL, Win32 SDK /COM/ Visual Basic 6    

    Database          MS SQL Server  6.5 

    Developing    :  Bug fixing and problem solving during rollout of new COM components and software tools.


Liffe are in the process of rolling out new financial software products as part of the core toolset used by employees and traders on a daily basis, my role with knowledge of c++ com atl and vb6 was to assist in the cycle of rollout, by tackling general purpose issues, problem solving and bug fixing. For my part Windows System programming proved to be essential with issues relating to Sockets, Windows Services, Multi-Threading and COM Remote Callbacks. 


 1995-97
    Period        : March 95 - Dec 95
    Extension 1      Jan 96 Nov 96
    Extension 2      Feb 97 Sep 97

    Client        : BOSCH Telecom ( in Frankfurt/Germany )
    Position    : Team Lead /Consultant Programmer/Analyst    
    Development

    Environment    : Windows NT 4 Client PC’s on an NT4.0 Server Network

    Languages    : Visual C++ 5 & Microsoft Foundation Classes. Win32                     SDK / Visual Basic 5.0 (Enterprise) & 3.0 / Delphi 2    

    Database      MS SQL Server to 6.5 / Access 97/95/2.0

    Developing    : Custom Controls ( VBX's ) , (OCX/ActiveX) Custom                       Controls and OLE Server's and VB ODBC 

Bosch Telecom produce almost everything that they require, from the Operating System in the PBX to the Hardware that makes up the PBX, including all of the Account Management and PBX administration software.    
The department in which I worked specialised in the development and maintenance of the Suite of Communications software that a customer would typically require to maintain and run their internal communications.   This software includes an Electronic Telephone book and Bill Accounting Software, Network management and Database Maintenance tools. 

During my time with BOSCH I completed many different pieces of work and fulfilled several roles.

ActiveX and VBX Custom Controls

A: A (VBX) Custom Control written in Visual C++ to provide a communications component in aid of the VisualBASIC developers, where the Custom Control provided VisualBASIC with telephone CALL STATE information, INCOMING CALL information and CALLDATA information. This was a key component in the development of one of their systems named 'ETBDesk'   (Electronic Telephone Book).  This Telephone Book application could now be enhanced to provide additional Call State functionality and provide the operator with a more powerful communications feedback and control software.

B: An ActiveX (OCX) Custom Control to monitor directory contents, when a file of a certain type appeared the control would open the file parse it, then store the information in a SQL Server database then, when completed would fire a VisualBASIC event with relevant information and the VisualBASIC app could respond with the further appropriate actions. Written using MS Visual C++.

C: A (VBX) Custom Control to provide 3D appearance to all relevant VisualBASIC version 3 controls.  Written using MS Visual C++, this control was invisible at runtime, subclassed all controls on a form and responded to the subclassed controls paint event by painting a 3d border around them, this feature is now a standard part of the Win95 WinNT 4.0 Operating System DLL’s.

D: This was a 32bit OCX version of the CALLSTATE Monitor custom control developed earlier in the year as a VBX Custom Control. (see above). Again MS Visual C++.

E: A Message Spy Custom Control, that would enable the Developers to write code that reacted to Window messages not normally available to the VisualBASIC development environment.   We considered using a third party control but BOSCH required a couple of  implementation specific features not found in the more general purpose commercial products, and of course writing there own meant they would own the source code. Written in MS Visual C++.

Electronic Telephone Book (ETB)

In addition to the controls that were written I also changed an existing application, The   Electronic Telephone Book (ETB), from being Microsoft Access 1.1 based, to both Microsoft DAO and MS SQL Server 6.5 based. During this period I took full opportunity to revamp the existing code introducing a more Object Oriented design based on VisualBasic’s Classes and introduced much needed Windows Interface standards.   

Electronic Telephone Book (ETBFast)

I created the design specification then implemented a second, smaller version of the Electronic Telephone Book.  This new version had fewer features and smaller result sets, but was designed to be very fast, MDI and far simpler to use.  This version of the Telephone Book ( ETBFast ) has proved to be very popular with customers mainly because of the extremely fast response times for searches (fractions of a second as opposed to 3-45 or more seconds) and the easy to use Interface.

Other

In addition to the coding activities I also acted as a general consultant to the permanent members of staff, on a number of programming related topics including...

•    Programming standards for MS VisualBASIC and VisualC++  

•    Help on design and implementation issues for other developers relating to OCX technology.

•    Knowledge on getting the benefits from using VisualBASIC. VisualBASIC 5 is not only an upgrade but provides many new and better ways of doing things, so I played a role in showing them how to use some the new features effectively.

•    Trouble shooting and General knowledge Help and tips relating Windows Programming SDK / Win32 and VisualC++ / MS SQLServer the MFC 

•    A Data Integrity Check application, enabling the department to check the Integrity, i.e. all of the relational rules, links, deletions, indices etc of their central TIMA database.   This application was written in VB5 and used the MS DAO to verify all tables fields, types and relationships within the database structure.    

•    A generic import application that would read data from various sources including MS SQL Server, MS Access, Dbase, Paradox and Excel, and using mapping techniques import the data to a Target SQL Server or MS Access database.

•    Created a program that would take the binary files from the PABX and import them into a MS SQL Server database.   The application was written in VB5. Stage 1 of the application involved getting appropriate data from the binary files into a temporary Access database.  Stage 2 could now use the new temporary database and apply Relational techniques to gather the information required for each Target table in the SQL Server database. 

•    During my time with BOSCH I also had the opportunity to develop tools and utilities for the department including a ‘Directory Space Viewer’ application for the Network administrator, which saved him a great deal of time, this was used to determine the amount of Used Disk Space for any Hard Disk on any PC on the network written in Borland’s Delphi 2.0.


1994-95
    Period             : January 94 - Jan 95
    Client              : National Westminster Bank
    Position          : Consultant Programmer/Analyst    
    Development
    Environment  : Windows 3.11 and Windows NT 3.1 & 3.5 on an NT 3.5                   Server Network
    
    Languages    : Visual C++  & Microsoft Foundation Classes. / Windows                   SDK Visual Basic 4.0 & 3.0
    Developing    : Custom Controls ( VBX's ) , OLE custom controls (OCX's)                   and OLE Server's
    
NatWest RBP (Retail Banking Platform) are developing a new suite of applications for their customer service applications.    Object Oriented principles are being used wherever possible to this end custom controls was the chosen method of delivering the reusable components of the RBP applications.   
    I became a member of the ‘Custom Control Development Team’, one of six people, and over the course of the year we produced 25 controls and delivered them to RPB (Retail Banking Platform) where a small army of Visual Basic developers used them to construct the RBP software.
In this context the Page & Paragraph controls played a significant role in providing a re-usable object that not provides not only the RBP user interface standards look and feel for an RBP application but also provide valuable extensive functionality. 
     My first role then was to evaluate the requirements, then design and build the Page & Paragraph VBX Custom controls.  In addition I later wrote the Message Box custom control, which was to be the RBP standard replacement for the standard Windows Message box.

Highlights of the Page control are outlined below.
•    Auto Page turning ( via clicking on bitmap of page corner or programmatically)
•    Standard running headers ( i.e. components that appear at top of each page)
•    Standard running footer ( i.e. components that appear at the foot of each page)
•    The ability to dynamically create new paragraphs at runtime
•    Methods to:
    Auto 3d painting of Standard windows controls
    Set / Get the current paragraph
    Allow the Page to be dragged about the screen
    Automatic page corner facility (via bitmap)
    2 status bar properties
    Minimise button

In use a Visual Basic programmer would load the Page Layout controls into the their project place an instance of the Page control onto a VB form, and then draw upon this any number of Paragraph controls.   Onto the paragraph controls can be placed any number of additional standards custom controls.   At runtime the display sequence and resulting metaphor of a Pages and Paragraphs comes alive in an intuitive attractive user interface.  

Visual C++ / Visual Basic 4.0 / OLE Servers, and OCX custom control/Chicago

During this same, I have been involved in a number of other projects:

Visual Basic 4.0 (and OLE servers)
I joined the Beta test program for Visual Basic 4.0, and have been using the product since early October 94, because of this valuable experience I am able to provide detailed knowledge about the product including all the goodies such as creating OLE servers the new Jet database engine, and of course the new OCX custom controls (which are to replace the VBX custom control). 

Visual C++ 1.5 - 2.0
We switched to the Visual C++ 2.0 environment when the Beta was made available to NatWest. And have been using the product to write RBP custom controls.   I gained experience of creating OLE server components using VC++ .

OCX Custom controls
I have been familiar with the OCX CDK (control development kit) since the early beta version in June 94.   Have developed a small number of test controls in the process of both testing the product and in looking into development techniques for future controls, i.e. the future of the Page and Paragraph indeed all of the controls that we developed during the year is to turn them into OLE controls (OCX's).

Chicago - Windows 95
I am fully familiar with the next version of Windows; codenamed Chicago more recently named Windows 95.   Having used the early beta version since May 94 and on the Microsoft Beta Testing program.