Amended - November 2008
![]() |
Nationality: Marital Status: Dependents: Location: |
English Married None Sutton, Surrey |
|
mailto:tony@marston-home.demon.co.uk http://www.tonymarston.net http://www.radicore.org |
||
| Applications experience Hardware / Software Education Summary of Positions Held Career History Additional information |
|
Log File Analysis Job Scheduling Nominal / General Ledger Purchase Ledger Sales Ledger Programme Costing Artist/Supplier Payments Sales Reporting Stock Control / Warehousing Stock Accounting subsystem Inventory Management Materials Costing (from Bill of Materials) Materials Explosion Credit Agreements MIRAS Direct Debits Subscriptions System Lease Accounting Purchase Order Processing Sales Order Processing Sales Invoicing Sales Invoice Register Purchase Invoice Register Commitment Accounting Multi-Period Accounting Package Handling and Tracking System Conversion Timesheet Recording and Invoicing |
Vehicle Contract Hire Incident/Assistance Tracking Credit Card Security Salesman Information System Document Tracking Staff Tracking Mobile Communications Menu/Security (Role Based Access Control) System Audit Trail System Study Systems Analysis System Design and Specification Data Analysis Database Design Structured Programming Object Oriented Programming COBOL Development Standards Project Development Standards UNIFACE Development Standards 3-Tier architecture Model-View-Controller (MVC) Design Pattern HTML (static/dynamic), CSS HTML from XML/XSL transformations Web applications Web Survey/Questionnaire Workflow Classroom Scheduling Shipments |
|
UNIVAC 1100 under Exec 8, using COBOL, Assembler, DMS/1100, TIP DATA GENERAL ECLIPSE under AOS, using COBOL and INFOS HEWLETT PACKARD 3000 under MPE (Classic and Native Mode) using COBOL, IMAGE, VIEW, KSAM, SPL, INSIGHT, POWERHOUSE (QUIZ, QUICK, QTP) HEWLETT PACKARD 9000 under HP-UX IBM-compatible PC under Windows 3.11, Windows 95/ME/XP UNIFACE version 5, using a CHUI on dumb terminals, and a GUI in a Client/Server network. Web applications using Apache/PHP4/PHP5/MySQL with all HTML being generated from XML/XSL transformations I have also worked with Visual Basic, (X)HTML and CSS. |
| 1962 - 1967 | Chichester High School for Boys | GCE 'O' Level in: English, Maths, French, Geography, History, Physics, Art |
| 1968 - 1971 | Chichester College of Further Education | Local Government Clerical, ONC in Public Administration (1st year) |
| 1968 - 1971 | West Sussex County Council | Junior Clerk |
| 1971 - 1972 | Shell International Petroleum Company | Trainee Computer Operator |
| 1972 | Wates Computer Services | Chief Operator |
| 1973 - 1979 | SMF Data Services | Operator, Shift Leader, Operations Supervisor, Programmer, Analyst/Programmer |
| 1979 - 1980 | Abbey National Building Society | Senior Programmer |
| 1980 - 1982 | Data Logic Ltd | Senior Programmer, Analyst/Programmer, Senior Analyst |
| Oct 1982 - Jul 1999 | Prolog Systems Ltd | Senior Analyst/Programmer, Project Leader, Project Manager, Senior Consultant, Senior Design Consultant |
| July 1999 - Sept 2000 | Sherwood International Group Limited | Implementation Consultant |
| Sept 2000 - April 2001 | Carphone Warehouse | Senior Analyst/Programmer |
| May 2001 - July 2001 Aug 2001 - Sept 2001 |
Raindrop Information Systems | Consultant |
| Nov 2002 - Dec 2002 | Lynx Financial Systems | Senior Developer |
| June 2003 - Jan 2004 | United Nations, Vienna | Uniface Development Specialist |
| Oct 2004 - Nov 2004 | Cable & Wireless | Uniface Contractor |
| Nov 2004 - Apr 2005 | River Island Clothing Company | Uniface Contractor |
| Apr 2005 - Jun 2005 | Cable & Wireless | Uniface Contractor |
| Aug 2005 - Jan 2006 | AMEC Group Limited | Uniface Contractor |
| Jan 2006 - Mar 2008 | Radicore Software Limited | PHP Contractor |
| Apr 2008 - present | Transition Engineering Limited | Director, part owner |
This was formerly known as Financial Data Services (FDS).
While in the Operations department I taught myself COBOL in order to make some changes to the overnight schedule print. I did this without the aid of any training courses or manuals. This impressed my manager so much that he arranged for me to move into the Middleware department where I took on the following tasks:
I taught myself Assembler without the aid of any training courses.
Unless specified otherwise the following projects were for HP3000's using COBOL, IMAGE and VIEW (known later as VPLUS), with some KSAM.
In 1992 I attended a UNIFACE training course, and unless specified otherwise the following projects were in UNIFACE:
I was head hunted for a project at Sherwood International because of my long experience of Uniface, and particularly my experience with creating a Uniface 7 development environment and development standards. I was supposed to join a development team immediately, but at the last minute the client put a hold on new additions pending a project review.
I was asked by the Project Manager to design and develop a small system to keep track of all the I.T. staff at the MAFF (now DEFRA) site, both permanent and contractors, and to record the projects to which they were assigned. This system required a database of 19 tables and 18 relationships, and 60 components (mostly forms, but some services). It took 1 week to design and 4 weeks to implement (in v7.2.04). This included unit testing, link testing, system testing, and the creation of basic help text for each component and field within the system. I had built systems of a similar size using Uniface 6, but the added feature of component templates in Uniface 7 meant that the development time was cut in half.
In December 1999 I joined the NURAD team (New Regional Administration Data Exchange) based at the MAFF site in Guildford. This was to develop a web-based solution (in v7.2.05) to allow farmers' data to be entered and verified over the internet, thus replacing paper-based forms. When I arrived a team of 6 people had spent 6 months in prototyping a development infrastructure which was based on the 3-tier architecture with a separate application model for the presentation layer. Although the concept was interesting their implementation was rather unwieldy and caused the development times to be much larger than expected. When the project plan was re-evaluated it was quickly realised that both the budget and the deadline would be blown by huge margins, so in July 2000 the client cancelled the entire project.
While awaiting reassignment I returned to the Woking office where I obtained access to a copy of the recently-released Uniface 7.2.06. I had read the release notes regarding the introduction of XML streams and considered this to be a more efficient method of implementing a 3-tier architecture with a separate application model for the presentation layer. I took my sample 2-Tier application and within 2 weeks had successfully converted part of it to 3-Tier. The results are available in the 'Articles' section of my website (http://www.tonymarston.net/uniface/index.html) in a document called '3 Tiers, 2 Models, and XML Streams' where you can also download my sample code.
I was recruited because I was one of the few individuals who had worked in a pure Uniface 7 environment. It would appear that almost everybody else may be compiling in Uniface 7, but their coding is still Uniface 6 (or even earlier!). I was supposed to be a senior member of a new project team that would start to redevelop their legacy Uniface 6 system into proper Uniface 7 components in a 3-tier architecture.
While waiting for them to decide of the structure and scope of this new team I did general maintenance work on their legacy system which included creating several new components. I also came up with a performance enhancement to their Price File lookup. By making a simple change to the database I eliminated a two-stage process using views and speeded up the time it took to access current product prices. I then investigated a performance problem in the main order entry program and pointed out several areas of concern.
However, after 6 months of talking about the new project the only outcome was that it was cancelled, so I decided to leave.
Following discussions about my article '3 Tiers, 2 Models, and XML Streams' I was invited to demonstrate its practicalities by modifying part of their legacy client/server system from 2-tier 'fat client' into 3-tier 'thin client'. As they are currently in the process of creating a web front-end the implementation of a 3-tier architecture with disconnected record sets, such as can now be achieved very easily using XML streams, would be of great benefit. I also demonstrated that the business layer components could be used by both the web and the client/server presentation layers, thus reducing the amount of duplicated effort.
After reviewing my previous work I was called back to develop a small new subsystem using the 3-tier architecture.
I was told at the interview that they were impressed with the contents of my website and felt that they could make use of my experience and abilities, but in reality all they wanted was someone who could write add-ons to their existing legacy system. As working on legacy systems with their out-dated methods and techniques does not fire me with enthusiasm or make the best use of my abilities I decided that there was no point in my staying. Before leaving I wrote a 17 page 9000 word report which identified the areas in their development infrastructure which were a hindrance to productivity and demonstrated how it was possible, using techniques that were properly designed and implemented, to create new components up to 10 times faster. I also reviewed their implementation of an audit trail which was causing problems and showed them a much simpler design that was easier to implement as well as having more flexible options in the online enquiry.
I was recruited by the United Nations Office on Drugs and Crime (UNODC) in Vienna, Austria to work on their system for the International Narcotics Control Board (INCB). This was a system developed by an outside company in UNIFACE 5 which has received minimal maintenance over the years. Although recompiled to run under UNIFACE 7.2.06 it has never been upgraded to take advantage of any of the new features in UNIFACE 7. Due to a lack of in-house expertise they were unable to implement some urgent changes required by the INCB, thus the need for an external contractor.
The system was written using a mixture of UNIFACE forms and SYBASE triggers and stored procedures. Due to the total lack of any sort of documentation my task involved a significant amount of investigation and analysis before any changes could be made. Despite this I was able to implement the changes within the deadline set by the INCB.
Having demonstrated by abilities I was invited to return for another 3 months to implement some less urgent changes and to start the process of writing some system documentation, a task which involves a great deal of reverse engineering. I was also invited to give a presentation on the advantages of Open Source software, and to demonstrate the development environment which I had created using PHP, MySQL and XSL.
Hired for a 1 month contract to amend an in-house system called DIVA. This is a multi-user client/server system which accesses a shared Oracle database. The software was originally developed in UNIFACE v5 but has subsequently been recompiled to run in UNIFACE v6. The task involved making changes to 50 forms.
Hired for a 3 month contract (which was extended for another month) to perform the following:
Converting a legacy character-mode application called MOSES from UNIFACE version 6 through version 7 and finally to version 8. This is so that it can be moved from an aging VAX server running VMS 6.2 and Oracle 7 to an ALPHA server running Open VMS 7.3 and Oracle 9.
Hired to work on an in-house system called SRINT, a procurement and contract cost management system. This is a multi-user client/server system which accesses a shared Oracle 9i database. The software was originally developed in UNIFACE v6, has been recompiled in v7, and is now being upgraded to v8. The work mostly involved creating new forms and reports as well as modifying a small number of existing components. There was also a requirement to create several new database triggers and stored procedures.
I formed Radicore Software Limited as a private limited company to handle all my contract work. My first project was to rebuild a web-based logistics application as the original was unable to keep up with the user's expanding requirements. The original version had been written by Agreeable Notion Ltd for one of their clients as a simple collection of screens to maintain the contents of a database to deal with products, customers and sales orders. The growth of the client's business resulted in a corresponding growth in requests for more features, among which was Role Based Access Control (RBAC). While searching the internet for information on RBAC implementations Agreeable Notion Ltd came across the various articles I had written, and my obvious expertise in this area prompted them to contact me for assistance. At this time my framework had not yet been released as open source, so I gave them a pre-release copy. Although this was of great benefit the approaching deadlines prompted them to ask for my assistance with the actual design and development of the new application, which I gladly provided. The resulting application was delivered on time and to budget, and the client was impressed with the quality and flexibility of the software.
The Radicore framework was released as open source under the GNU General Public License in April 2006. This was switched to the GNU Affero General Public License in May 2008.
Agreeable Notion Ltd then decided to use the Radicore framework to rebuild the back-office application for another of their clients, which again was delivered on time and to budget. Each of these applications allowed the client to handle their business more efficiently, which allowed their business to grow, and which eventually resulted in a growing number of enhancement requests.
Although the software for the two clients was different there were enough similarities - the need for products, customers, sales orders and invoices - that instead of having to maintain separate bespoke systems for each client it was suggested that a better idea might be to create a general purpose package which could service the needs of both clients. In fact, if the application were sufficiently flexible it could service the needs of many more clients. I had already built a Product prototype based on what I had found in the Data Model Resource Book by Len Silverston, so it was suggested that I write a complete ERP package based on more of the data models in that book, which I agreed to do.
I started this task in February 2007 and by July 2007 I had completed the following subsystems:
The Len Silverston book gave me a workable data model, the Radicore framework allowed me to quickly build the online screens, and my own experience allowed me to mold it all into a coherent application which, after just six months, contained 130 database tables, 230 relationships and 1000 tasks. This was later enhanced with the addition of subsystems for INVOICING, REQUESTS and REQUIREMENTS, and WORK EFFORT (timesheets).
I subsequently rewrote the website for one of the clients so that it used the new flexible database instead of its bespoke original, and added all the functionality to ensure that their list of enhancements was satisfied.
After implementing the ERP package for an online jewellery company, which involved adding more components to the software as well as converting their front-end web site to access the new database instead of their old one, it was decided to form a separate company to market the package using the product name TRANSIX with myself as one of the directors and primary shareholders.
To date the TRANSIX package consists of the following subsystems:
It currently contains 200 database tables, 350 relationships and 1600 tasks.
During this time the Radicore software was enhanced to include the following capabilities:
While searching for productive employment I have spent time doing the following:
I have been a software engineer, both designing and developing, since 1977. I have worked with a variety of 2nd, 3rd and 4th generation languages on a mixture of mainframes, mini- and micro-computers. I have worked with flat files, indexed files, hierarchical databases, network databases and relational databases. The user interfaces have included punched card, paper tape, teletype, block mode, CHUI, GUI and web. I have written code which has been procedural, model-driven, event-driven, component-based and object oriented. I have built software using the 1-tier, 2-tier, 3-tier and Model-View-Controller (MVC) architectures. After working with COBOL for 16 years I switched to UNIFACE in 1993, starting with version 5, then progressing through version 6 to version 7. In the middle of 2002 I decided to teach myself to develop web applications using PHP and MySQL.
I prefer being involved in the complete life cycle of a project - analysis, design, specification and development. My experience as a developer makes me aware of the strengths and weaknesses of the language, and how the various features can be used to best advantage. This gives me the ability to design systems that can actually be built as well as taking an active role in their development.
My particular forte is not just the development of end-user software, it is the creation of development infrastructures with which such software can be built. I did this in 1985 with COBOL, and I have done the same thing with UNIFACE (refer to my Building Blocks in UNIFACE stuff for more details). My library of reusable software includes a flexible Menu and Security (Role Based Access Control or RBAC) system which can be used as the front end to any application. Using this infrastructure I can create working transactions in timescales that can be measured with a watch, not a calendar as I have found with other development environments. Since the release of UNIFACE version 7.2.06 with its ability to handle XML streams I have upgraded my development environment to be totally 3-Tier, with the added flexibility of a separate application model for the presentation layer.
I have subsequently rebuilt my entire development environment as a web application using PHP and MySQL. This I have done using a combination of the 3-Tier and MVC architectures with object-oriented modules in the business and the data access layers, and with all HTML output in the presentation layer being generated via XML and XSL transformations using a small number of reusable XSL stylesheets. My PHP development infrastructure includes a Role Based Access Control system, an Audit Logging facility and an activity based Workflow Engine.
In April 2006, following a large number of requests, I made my entire PHP development framework available as open source. Full details are available at http://www.radicore.org.
The reason that I'm still in software development after all these years is because it is what I do best, and it is what I enjoy the most. I enjoy being able to produce high-quality software, and I like being able to share my knowledge and experience with others. My motivation is the pursuit of technical excellence and the satisfaction of a job well done.
Since the end of 1999 I have posted several articles, tips and solutions to the Uniface news group, and the positive response that I received from other Uniface users encouraged me to create my own web site in May 2000 and devote a major part of it to Uniface issues. You can see for yourself by selecting the following URL:
http://www.tonymarston.net/uniface/index.html
In May 2003 I added the following sections on PHP/MySQL and XML/XSL:
http://www.tonymarston.net/php-mysql/index.html
http://www.tonymarston.net/xml-xsl/index.html
In April 2006 I made my PHP development framework available as open source from a new website: